Exemplo n.º 1
0
        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));
        }
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);

            // TODO: use this.Content to load your game content here
            spriteFont    = Content.Load <SpriteFont>("Arial");
            myFirstButton = new ElementButton(new Vector2(graphics.PreferredBackBufferWidth / 4, graphics.PreferredBackBufferHeight / 4), spriteFont, "Click me", Content.Load <Texture2D>("dev4-practical-button"));
            myFirstLabel  = new ElementLabel(new Vector2(graphics.PreferredBackBufferWidth / 4, graphics.PreferredBackBufferHeight / 2), spriteFont, "Click the button to animate it.");
            controls.Add(myFirstButton);
            controls.Add(myFirstLabel);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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;
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        public ViewModelLabel(Point point, Canvas surface, int id = -1)
        {
            BaseComponentUI componentUi;

            if (id < 0)
            {
                componentUi = new ComponentLabel(point, BaseElement.IdCounter);
                element     = new ElementLabel(BaseElement.IdCounter);
            }
            else
            {
                componentUi = new ComponentLabel(point, id);
                element     = new ElementLabel(id);
            }

            componentUi.DataContext = this;
            Panel.SetZIndex(componentUi, -10000);
            surface.Children.Add(componentUi);
            componentUi.OnPinDropped             += OnPinDrop;
            componentUi.OnDeleteElement          += OnDelete;
            ((ComponentLabel)componentUi).OnEdit += OnEdit;
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        private void CreateInput(Point point, Canvas surface, int id = -1, string text = "")
        {
            ComponentUIInput componentUi;
            ElementInput     element;
            ElementLabel     elementLabel;

            var labelVM = new ViewModelLabel();

            if (id < 0)
            {
                componentUi  = new ComponentUIInput(point, BaseElement.IdCounter);
                element      = new ElementInput(BaseElement.IdCounter);
                elementLabel = new ElementLabel(BaseElement.IdCounter);
                text         = "Подпись";
            }
            else
            {
                componentUi  = new ComponentUIInput(point, id);
                element      = new ElementInput(id);
                elementLabel = new ElementLabel(id);
            }
            BaseViewModelComponent baseViewModelComponent = new BaseViewModelComponent {
                element = element
            };

            baseViewModelComponent.strength = text;
            componentUi.DataContext         = element;
            surface.Children.Add(componentUi);
            componentUi.OnPinDropped     += baseViewModelComponent.OnPinDrop;
            componentUi.OnDeleteElement  += baseViewModelComponent.OnDelete;
            labelVM.element               = elementLabel;
            componentUi.Label.DataContext = baseViewModelComponent;
            componentUi.Label.OnEdit     += baseViewModelComponent.OnEdit;
            _elements.Add(baseViewModelComponent);
            _elements[_elements.Count - 1].OnPinElementDropped += OnElementPinDropped;
            _elements[_elements.Count - 1].OnElementDelete     += Delete;
        }
Exemplo n.º 10
0
 public ElementLabelViewModel(ElementLabel model)
 {
     Model    = model;
     Text     = Model.Text;
     Position = Model.Position;
 }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
 public TBuilder FromTemplate(ControlElement element)
 {
     Label = element.Label;
     return(base.FromTemplate(element));
 }
Exemplo n.º 13
0
 public override void Reset()
 {
     Label = ElementLabel.None;
     base.Reset();
 }
Exemplo n.º 14
0
 public TBuilder SetLabel(ElementLabel label)
 {
     Label = label;
     return(this as TBuilder);
 }