예제 #1
0
        private void AddElementConfigurationRows(ICompositeElementViewModel group, IFormElementViewModel formElement)
        {
            switch (formElement)
            {
            case ButtonElementViewModel buttonElement:
                AddButtonConfigurationRows(group, buttonElement);
                break;

            case HtmlElementViewModel htmlElement:
                AddHtmlConfigurationRows(group, htmlElement);
                break;

            case CheckElementViewModel checkBox:
                AddCheckBoxConfigurationRows(group, checkBox);
                break;

            case TextElementViewModel textField:
                AddTextConfigurationRows(group, textField);
                break;

            case SelectElementViewModel comboBox:
                AddComboBoxConfigurationRows(group, comboBox);
                break;
            }
        }
예제 #2
0
        public static ICompositeElementViewModel TransformInto(this ICompositeElementViewModel viewModel,
                                                               string destinationTypeName)
        {
            switch (destinationTypeName)
            {
            case nameof(GroupElement):
                return(new GroupElementViewModel(new GroupBuilder().FromTemplate(viewModel.Model).Build()));

            case nameof(LinearLayoutElement):
                return(new LinearLayoutElementViewModel(new LinearLayoutBuilder().FromTemplate(viewModel.Model)
                                                        .Build()));
            }

            return(viewModel);
        }
예제 #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);
        }
예제 #4
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);
        }
예제 #5
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);
        }
예제 #6
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);
        }
예제 #7
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);
        }