public static FormViewModel CreateForm() { var htmlContent = new HtmlElementBuilder().SetName("HtmlContent").SetContent( "<h2 style=\"text-align: center;\"><strong>Demo Form<br /></strong></h2>\r\n<p>Test HTML Content embedded in the demo form</p>\r\n<ul>\r\n<li>FirstName / LastName</li>\r\n<li>Years of experiance</li>\r\n<li>Accept Terms and Conditions</li>\r\n<li>Submit</li>\r\n</ul>") .Build(); var firstNameText = new TextElementBuilder() .SetName("First Name") .SetLabel(ElementLabel.Left("First Name: ")) .SetDefaultValue("First Name") .AddRules( ValidationRule <ITextElementViewModel> .Create(new TextElement_MaximumLength_Validator(10)) .WithFailMessage("First Name must be less then 10 characters"), ValidationRule <ITextElementViewModel> .Create(new TextElement_MinimunLength_Validator(2)) .WithFailMessage("First Name must be greater then 2 characters")) .Build(); var lastNameText = new TextElementBuilder() .SetName("Last Name") .SetLabel(ElementLabel.Left("Last Name: ")) .SetDefaultValue("Last Name") .AddRules( ValidationRule <ITextElementViewModel> .Create(new TextElement_MaximumLength_Validator(10)) .WithFailMessage("Last Name must be less then 10 characters"), ValidationRule <ITextElementViewModel> .Create(new TextElement_MinimunLength_Validator(2)) .WithFailMessage("Last Name must be greater then 2 characters")) .Build(); var personalDetails = new ColumnBuilder().SetName("personalDetails") .AddChildren(firstNameText, lastNameText).Build(); var experienceSelection = new SelectElementBuilder().SetName("experienceSelection") .SetLabel(ElementLabel.Left("How many years experience have you got?")).AddValues("0-1", "1-5", "5+") .SetDefaultValue("Select a value").Build(); var termsAndConditions = new CheckElementBuilder().SetName("TermsAndConditions") .SetLabel(ElementLabel.Left("Do you accept the terms and conditions?")).SetContent("Yes / No").AddRules( ValidationRule <ICheckElementViewModel> .Create(new CheckElement_IsChecked_Validator()) .WithFailMessage("You must accept the terms and conditions")).Build(); var submitButton = new ButtonElementBuilder().SetName("Submit Button").SetContent("Submit") .SetVerticalAlignment(VerticalAlignment.Bottom).Build(); var submitEventListener = new EventListener("submit", new ElementNameEventSpecification("submit").And( new TypeNameEventSpecification(nameof(ButtonElementClickedEvent))), new IdentitySpecification <FormViewModel>()); var rowGroup1 = new RowBuilder().SetName("Data Entry Rows") .AddChildren(htmlContent, personalDetails, experienceSelection, termsAndConditions).Build(); var rootGroup = new GroupBuilder().SetName("Test Group 1").SetTitle("Demo Form Title") .AddChildren(rowGroup1, submitButton).Build(); var newForm = new FormBuilder().SetName("Demo Form").SetTitle("Demo Form Title").SetRoot(rootGroup) .AddEventListeners(submitEventListener) .Build(); return(new FormViewModel(newForm)); }
private void AddButtonConfigurationRows(ICompositeElementViewModel group, ButtonElementViewModel button) { var textField = new TextElementViewModel( new TextElementBuilder() .SetName("buttonContentTextBox") .SetLabel(ElementLabel.Left("Content")) .SetDefaultValue(button.Content).Build()); textField.OnFormEvent += (s, e) => { if (e is TextElementChangedEvent eventArgs) { button.Content = eventArgs.NewValue; } }; group.Children.Add(textField); }
public FormElementEditorViewModel() { _elementNameTextBox = new TextElementViewModel( new TextElementBuilder().SetName("elementNameTextBox") .SetLabel(ElementLabel.Left("Control Name")).Build()); _elementLabelTextBox = new TextElementViewModel( new TextElementBuilder().SetName("elementLabelTextBox") .SetLabel(ElementLabel.Left("Label Text")).Build()); _elementTypeComboBox = new SelectElementViewModel( new SelectElementBuilder().SetName("elementTypeComboBox") .SetLabel(ElementLabel.Left("Control Type")).AddValues("Button", "Html", "CheckBox", "ComboBox", "TextBox", "Columns", "Rows", "Group").Build()); _elementLabelPosition = new SelectElementViewModel( new SelectElementBuilder().SetName("elementLabelPosition") .SetLabel(ElementLabel.Left("Label Position")) .AddValues("Hidden", "Above", "Below", "Left", "Right").SetDefaultValue("Hidden").Build()); _elementVerticalAlignment = new SelectElementViewModel( new SelectElementBuilder().SetName("elementVerticalAlignment") .SetLabel(ElementLabel.Left("Vertical Alignment")) .AddValues("Center", "Top", "Bottom", "Stretch") .SetDefaultValue("Stretch").Build()); _elementHorizontalAlignment = new SelectElementViewModel( new SelectElementBuilder().SetName("elementHorizontalAlignment") .SetLabel(ElementLabel.Left("Horizontal Alignment")).AddValues("Center", "Left", "Right", "Stretch") .SetDefaultValue("Stretch").Build()); _elementTypeComboBox.OnFormEvent += ElementTypeComboBoxOnOnFormEvent; _elementNameTextBox.OnFormEvent += ElementNameTextBoxOnOnFormEvent; _elementLabelTextBox.OnFormEvent += ElementLabelTextBoxOnOnFormEvent; _elementLabelPosition.OnFormEvent += _elementLabelPosition_OnFormEvent; _elementVerticalAlignment.OnFormEvent += _elementVerticalAlignment_OnFormEvent; _elementHorizontalAlignment.OnFormEvent += _elementHorizontalAlignment_OnFormEvent; }
private void AddTextConfigurationRows(ICompositeElementViewModel group, TextElementViewModel element) { var textField = new TextElementViewModel( new TextElementBuilder() .SetName("htmlContent") .SetLabel(ElementLabel.Left("Content")) .SetDefaultValue(element.DefaultContent).Build()); textField.OnFormEvent += (s, e) => { if (e is TextElementChangedEvent eventArgs) { element.DefaultContent = eventArgs.NewValue; element.Content = eventArgs.NewValue; } }; group.Children.Add(textField); }
private void AddCheckBoxConfigurationRows(ICompositeElementViewModel group, ICheckElementViewModel element) { var textField = new TextElementViewModel( new TextElementBuilder() .SetName("contentTextField") .SetLabel(ElementLabel.Left("Default Content")) .SetDefaultValue(element.Content).Build()); var checkedField = new CheckElementViewModel( new CheckElementBuilder() .SetName("checkbox") .SetLabel(ElementLabel.Left("Default Value")) .SetDefaultValue(element.DefaultIsChecked) .SetContent(element.Content).Build()); textField.OnFormEvent += (s, e) => { if (e is TextElementChangedEvent eventArgs) { element.Content = eventArgs.NewValue; } }; checkedField.OnFormEvent += (s, e) => { if (e is CheckElementChangedEvent eventArgs) { element.DefaultIsChecked = eventArgs.NewValue; element.IsChecked = eventArgs.NewValue; } }; group.Children.Add(textField); group.Children.Add(checkedField); }
private void AddHtmlConfigurationRows(ICompositeElementViewModel group, HtmlElementViewModel element) { var buttonField = new ButtonElementViewModel( new ButtonElementBuilder() .SetName("editHtml") .SetLabel(ElementLabel.Left("Edit")) .SetContent("Edit").Build()); buttonField.OnFormEvent += (s, e) => { if (e is ButtonElementClickedEvent eventArgs) { var htmlEditor = new HtmlEditorDialog(element.Content); htmlEditor.ShowDialog(); element.Content = htmlEditor.ViewModel.Content; Refresh(); } }; group.Children.Add(buttonField); }
private void AddComboBoxConfigurationRows(ICompositeElementViewModel group, ISelectElementViewModel element) { var optionsField = new TextElementViewModel( new TextElementBuilder() .SetName("options") .SetLabel(ElementLabel.Left("Options")) .SetDefaultValue(string.Join(",", element.Items)).Build()); var defaultSelectedText = new TextElementViewModel( new TextElementBuilder() .SetName("defaultText") .SetLabel(ElementLabel.Left("Default Text")) .SetDefaultValue(element.DefaultSelectedItem).Build()); var defaultSelectedItem = new SelectElementViewModel( new SelectElementBuilder() .SetName("defaultItem") .SetLabel(ElementLabel.Left("Default Item")) .SetDefaultValue(element.DefaultSelectedItem) .AddValues(element.Items).Build()); optionsField.OnFormEvent += (s, e) => { if (e is TextElementChangedEvent eventArgs) { element.Items.Clear(); element.Items.AddRange(eventArgs.NewValue.Split(',')); defaultSelectedItem.Items.Clear(); defaultSelectedItem.Items.AddRange(eventArgs.NewValue.Split(',').ToList()); if (!defaultSelectedItem.Items.Contains(element.DefaultSelectedItem)) { defaultSelectedItem.DefaultSelectedItem = string.Empty; element.DefaultSelectedItem = string.Empty; } } }; defaultSelectedItem.OnFormEvent += (s, e) => { if (e is SelectElementChangedEvent eventArgs && element.SelectedItem != eventArgs.NewValue) { element.DefaultSelectedItem = eventArgs.NewValue; element.SelectedItem = eventArgs.NewValue; defaultSelectedText.Content = eventArgs.NewValue; } }; defaultSelectedText.OnFormEvent += (s, e) => { if (e is TextElementChangedEvent eventArgs && element.SelectedItem != eventArgs.NewValue) { element.DefaultSelectedItem = eventArgs.NewValue; element.SelectedItem = string.Empty; defaultSelectedItem.SelectedItem = string.Empty; defaultSelectedItem.DefaultSelectedItem = eventArgs.NewValue; } }; group.Children.Add(optionsField); group.Children.Add(defaultSelectedItem); group.Children.Add(defaultSelectedText); }