Beispiel #1
0
        private UserControl HandleUserControl(FormControlSettings formControlSettings)
        {
            var control = BuildControl(formControlSettings);

            if (control != null)
            {
                var fieldConditionsPropertyInfos = Helpers.GetFieldConditions(formControlSettings.ClassType, formControlSettings.FieldFullName);

                fieldConditionsPropertyInfos.ForEach(info =>
                {
                    var FieldConditions = info.GetCustomAttributes(typeof(FieldCondition), true).Cast <FieldCondition>().ToList();

                    OnPropertyModified += (name, value) =>
                    {
                        HandleFieldConditions(FieldConditions, formControlSettings.ClassType, name, value, control);
                    };
                });

                if (!ControlFields.ContainsKey(formControlSettings.FieldFullName))
                {
                    ControlFields.Add(formControlSettings.FieldFullName, (IControlField)control);
                }

                return(control);
            }

            return(null);
        }
Beispiel #2
0
        private UserControls.ListControls.Item AddNewItemListItem(FormControlSettings controlSettings, UserControls.ListControls.GroupCard rootFieldGroupCard, System.Collections.IList list, string fieldName)
        {
            var userControl = HandleUserControl(controlSettings);

            if (userControl != null)
            {
                var listControlItem = new UserControls.ListControls.Item();
                listControlItem.ControlWrapPanel.Children.Add(userControl);

                listControlItem.DeleteItemIcon.MouseLeftButtonUp += (s, e) =>
                {
                    var deleteItemMessageBox = new Windows.AFG_MessageBox("Remove Item?", "Are you sure you want to remove this?");
                    deleteItemMessageBox.ShowDialog();
                    if (deleteItemMessageBox.MessageBoxResult == MessageBoxResult.Yes)
                    {
                        rootFieldGroupCard.ControlsWrapPanel.Children.Remove(listControlItem);
                        list.Remove(controlSettings.Value);
                        OnPropertyModified?.Invoke(fieldName, null);
                    }
                };

                return(listControlItem);
            }

            return(null);
        }
        public void BuildDisplay(FormControlSettings formControlSettings)
        {
            _formControlSettings = formControlSettings;

            SetVisibility(formControlSettings.IsVisible);

            Width  = formControlSettings.ControlWidth;
            Height = formControlSettings.ControlHeight;

            DisplayNameTextBlock.Text = formControlSettings.DisplayValue;
            ValuePasswordBox.Password = (string)formControlSettings.Value;
            ValueTextBox.Text         = (string)formControlSettings.Value;

            if (formControlSettings.FixedWidth)
            {
                DisplayNameTextBlock.Width = formControlSettings.DisplayNameWidth;
            }
            else
            {
                Margin = new Thickness(0, 0, 30, 0);
            }

            ValuePasswordBox.Width = formControlSettings.ValueWidth;
            ValueTextBox.Width     = formControlSettings.ValueWidth;

            if (!formControlSettings.CanEdit)
            {
                ValuePasswordBox.IsEnabled = false;
            }

            if (formControlSettings.Required)
            {
                DisplayNameTextBlock.ToolTip = formControlSettings.RequiredText;
            }

            if (formControlSettings.ToolTip != string.Empty)
            {
                ValuePasswordBox.ToolTip = formControlSettings.ToolTip;
                ValueTextBox.ToolTip     = formControlSettings.ToolTip;
            }

            ValuePasswordBox.PasswordChanged += (sen, e) =>
            {
                formControlSettings.SetValue(ValuePasswordBox.Password);

                OnControlModified?.Invoke(ValuePasswordBox.Password);

                ValueTextBox.Text = ValuePasswordBox.Password;
            };

            ValuePasswordBox.LostKeyboardFocus += (sender, args) =>
            {
                if (HasUpdated)
                {
                    OnControlFinishedEditing?.Invoke(ValuePasswordBox.Password);
                }
            };
        }
Beispiel #4
0
        public void BuildDisplay(FormControlSettings formControlSettings)
        {
            SetVisibility(formControlSettings.IsVisible);

            Width  = formControlSettings.ControlWidth;
            Height = formControlSettings.ControlHeight;

            DisplayNameTextBlock.Text = formControlSettings.DisplayValue;
            ValueCheckBox.IsChecked   = (bool)formControlSettings.Value;

            if (formControlSettings.FixedWidth)
            {
                DisplayNameTextBlock.Width = formControlSettings.DisplayNameWidth;
            }
            else
            {
                Margin = new Thickness(0, 0, 30, 0);
            }

            //DisplayNameTextBlock.Width = formControlSettings.ValueWidth;
            if (!formControlSettings.CanEdit)
            {
                ValueCheckBox.IsEnabled = false;
            }

            if (formControlSettings.Required)
            {
                DisplayNameTextBlock.ToolTip = formControlSettings.RequiredText;
            }

            if (formControlSettings.ToolTip != string.Empty)
            {
                ValueCheckBox.ToolTip = formControlSettings.ToolTip;
            }

            ValueCheckBox.Checked += (sen, e) =>
            {
                formControlSettings.SetValue(ValueCheckBox.IsChecked);
                OnControlModified?.Invoke(ValueCheckBox.IsChecked);
                OnControlFinishedEditing?.Invoke(ValueCheckBox.IsChecked);
            };

            ValueCheckBox.Unchecked += (sen, e) =>
            {
                formControlSettings.SetValue(ValueCheckBox.IsChecked);
                OnControlModified?.Invoke(ValueCheckBox.IsChecked);
                OnControlFinishedEditing?.Invoke(ValueCheckBox.IsChecked);
            };
        }
Beispiel #5
0
 public DummyConstructor
 (
     DetailFormSettings form,
     DetailFieldSetting field,
     DetailGroupSetting group,
     DetailListSetting list,
     FormControlSettings formControlSettings,
     FormGroupArraySettings formGroupArraySettings,
     FormGroupSettings formGroupSettings,
     MultiSelectFormControlSettings multiSelectFormControlSettings,
     CommandButtonData commandButtonData,
     ValidatorArgument validatorArguments
 )
 {
 }
        public void BuildDisplay(FormControlSettings formControlSettings)
        {
            SetVisibility(formControlSettings.IsVisible);

            Width  = formControlSettings.ControlWidth;
            Height = formControlSettings.ControlHeight;

            DisplayNameTextBlock.Text = formControlSettings.DisplayValue;

            DisplayNameTextBlock.Text = formControlSettings.DisplayValue.ToString();
            TimePicker.SelectedTime   = new DateTime() + TimeSpan.FromSeconds((double)formControlSettings.Value);

            if (formControlSettings.FixedWidth)
            {
                DisplayNameTextBlock.Width = formControlSettings.DisplayNameWidth;
            }
            else
            {
                Margin = new Thickness(0, 0, 30, 0);
            }

            TimePicker.Width = formControlSettings.ValueWidth;

            if (!formControlSettings.CanEdit)
            {
                TimePicker.IsEnabled = false;
            }

            if (formControlSettings.Required)
            {
                DisplayNameTextBlock.ToolTip = formControlSettings.RequiredText;
            }

            if (formControlSettings.ToolTip != string.Empty)
            {
                TimePicker.ToolTip = formControlSettings.ToolTip;
            }

            TimePicker.SelectedTimeChanged += (sender, args) =>
            {
                var CurrentValue = TimePicker.SelectedTime?.TimeOfDay.TotalSeconds ?? 0;

                formControlSettings.SetValue(CurrentValue);

                OnControlModified?.Invoke(CurrentValue);
                OnControlFinishedEditing?.Invoke(CurrentValue);
            };
        }
Beispiel #7
0
        public void BuildDisplay(FormControlSettings formControlSettings)
        {
            SetVisibility(formControlSettings.IsVisible);

            Width  = formControlSettings.ControlWidth;
            Height = formControlSettings.ControlHeight;

            DisplayNameTextBlock.Text = formControlSettings.DisplayValue;

            if (formControlSettings.FixedWidth)
            {
                DisplayNameTextBlock.Width = formControlSettings.DisplayNameWidth;
            }
            else
            {
                Margin = new Thickness(0, 0, 30, 0);
            }

            SelectComboBox.Width = formControlSettings.ValueWidth;

            if (!formControlSettings.CanEdit)
            {
                SelectComboBox.IsEnabled = false;
            }

            if (formControlSettings.Required)
            {
                DisplayNameTextBlock.ToolTip = formControlSettings.RequiredText;
            }

            if (formControlSettings.ToolTip != string.Empty)
            {
                SelectComboBox.ToolTip = formControlSettings.ToolTip;
            }

            SelectComboBox.SelectionChanged += (sen, e) =>
            {
                var selectedItem = (ComboBoxItem)SelectComboBox.SelectedItem;
                if (selectedItem != null)
                {
                    var DropdownItem = (FormDropdownItem)selectedItem.Content;
                    formControlSettings.SetValue(DropdownItem.Value);
                    OnControlModified?.Invoke(DropdownItem.Value);
                    OnControlFinishedEditing?.Invoke(DropdownItem.Value);
                }
            };
        }
Beispiel #8
0
        public void BuildDisplay(FormControlSettings formControlSettings, Interfaces.ICustomControl customControlClass)
        {
            SetVisibility(formControlSettings.IsVisible);

            CustomControlClass = customControlClass;

            var customControl = (UserControl)customControlClass;

            Width  = formControlSettings.ControlWidth;
            Height = formControlSettings.ControlHeight;

            customControl.Width = formControlSettings.ValueWidth;
            customControlClass.SetValue(formControlSettings.Value);


            DisplayNameTextBlock.Text = formControlSettings.DisplayValue;

            if (formControlSettings.FixedWidth)
            {
                DisplayNameTextBlock.Width = formControlSettings.DisplayNameWidth;
            }
            else
            {
                Margin = new Thickness(0, 0, 30, 0);
            }

            if (formControlSettings.Required)
            {
                DisplayNameTextBlock.ToolTip = formControlSettings.RequiredText;
            }

            CustomControlCanvas.Children.Add(customControl);

            customControlClass.OnPropertyFinishedEditing += (name, o) =>
            {
                OnControlFinishedEditing?.Invoke(o);
            };

            customControlClass.OnPropertyModified += (name, o) =>
            {
                formControlSettings.SetValue(o);
                OnControlModified?.Invoke(o);
            };
        }
Beispiel #9
0
 public void BuildDisplay(FormControlSettings formControlSettings)
 {
 }
Beispiel #10
0
        private UserControl BuildControl(FormControlSettings formControlSettings)
        {
            UserControl userControl = null;

            switch (formControlSettings.ObjectType)
            {
            case ObjectTypes.String:
                var stringField = new StringField();

                stringField.BuildDisplay(formControlSettings);

                if (formControlSettings.Required)
                {
                    OnValidate += stringField.Validate;
                }

                stringField.OnControlModified        += s => OnPropertyModified?.Invoke(formControlSettings.FieldFullName, s);
                stringField.OnControlFinishedEditing += s => OnPropertyFinishedEditing?.Invoke(formControlSettings.FieldFullName, s);

                OnAddFieldInsertItems += (Name, Items) =>
                {
                    if (Name == formControlSettings.FieldFullName)
                    {
                        stringField.AddDropdownItems(Items, formControlSettings.Value);
                    }
                };

                //OnSpecialDropdownDisplaying?.Invoke(formControlSettings.FieldFullName);

                userControl = stringField;
                break;

            case ObjectTypes.Password:
                var passwordField = new PasswordField();

                passwordField.BuildDisplay(formControlSettings);

                if (formControlSettings.Required)
                {
                    OnValidate += passwordField.Validate;
                }

                passwordField.OnControlModified        += s => OnPropertyModified?.Invoke(formControlSettings.FieldFullName, s);
                passwordField.OnControlFinishedEditing += s => OnPropertyFinishedEditing?.Invoke(formControlSettings.FieldFullName, s);

                userControl = passwordField;
                break;

            case ObjectTypes.Double:
                var doubleField = new DoubleField();

                doubleField.BuildDisplay(formControlSettings);

                if (formControlSettings.Required)
                {
                    OnValidate += doubleField.Validate;
                }

                doubleField.OnControlModified        += s => OnPropertyModified?.Invoke(formControlSettings.FieldFullName, s);
                doubleField.OnControlFinishedEditing += s => OnPropertyFinishedEditing?.Invoke(formControlSettings.FieldFullName, s);

                userControl = doubleField;
                break;

            case ObjectTypes.Int32:
                var intField = new IntField();

                intField.BuildDisplay(formControlSettings);

                if (formControlSettings.Required)
                {
                    OnValidate += intField.Validate;
                }

                intField.OnControlModified        += s => OnPropertyModified?.Invoke(formControlSettings.FieldFullName, s);
                intField.OnControlFinishedEditing += s => OnPropertyFinishedEditing?.Invoke(formControlSettings.FieldFullName, s);

                userControl = intField;
                break;

            case ObjectTypes.Single:
                var floatField = new FloatField();

                floatField.BuildDisplay(formControlSettings);

                if (formControlSettings.Required)
                {
                    OnValidate += floatField.Validate;
                }

                floatField.OnControlModified        += s => OnPropertyModified?.Invoke(formControlSettings.FieldFullName, s);
                floatField.OnControlFinishedEditing += s => OnPropertyFinishedEditing?.Invoke(formControlSettings.FieldFullName, s);

                userControl = floatField;
                break;

            case ObjectTypes.Boolean:
                var booleanField = new BooleanField();

                booleanField.BuildDisplay(formControlSettings);

                if (formControlSettings.Required)
                {
                    OnValidate += booleanField.Validate;
                }

                booleanField.OnControlModified        += s => OnPropertyModified?.Invoke(formControlSettings.FieldFullName, s);
                booleanField.OnControlFinishedEditing += s => OnPropertyFinishedEditing?.Invoke(formControlSettings.FieldFullName, s);

                userControl = booleanField;
                break;

            case ObjectTypes.SpecialDropdown:
                var specialDropdown = new SpecialDropdownField();

                specialDropdown.BuildDisplay(formControlSettings);

                if (formControlSettings.Required)
                {
                    OnValidate += specialDropdown.Validate;
                }

                OnAddSpecialDropdownItems += (Name, Items) =>
                {
                    if (Name == formControlSettings.FieldFullName)
                    {
                        specialDropdown.AddDropdownItems(Items, formControlSettings.Value);
                    }
                };

                OnSpecialDropdownDisplaying?.Invoke(formControlSettings.FieldFullName, (Name, Items) =>
                {
                    if (Name == formControlSettings.FieldFullName)
                    {
                        specialDropdown.AddDropdownItems(Items, formControlSettings.Value);
                    }
                });

                specialDropdown.OnControlModified        += s => OnPropertyModified?.Invoke(formControlSettings.FieldFullName, s);
                specialDropdown.OnControlFinishedEditing += s => OnPropertyFinishedEditing?.Invoke(formControlSettings.FieldFullName, s);

                userControl = specialDropdown;
                break;

            case ObjectTypes.FolderBrowser:
                var folderStringField = new FolderBrowserField();

                folderStringField.BuildDisplay(formControlSettings);

                if (formControlSettings.Required)
                {
                    OnValidate += folderStringField.Validate;
                }

                folderStringField.OnControlModified        += s => OnPropertyModified?.Invoke(formControlSettings.FieldFullName, s);
                folderStringField.OnControlFinishedEditing += s => OnPropertyFinishedEditing?.Invoke(formControlSettings.FieldFullName, s);

                userControl = folderStringField;
                break;

            case ObjectTypes.TimePicker:
                var timePickerField = new TimePickerField();

                timePickerField.BuildDisplay(formControlSettings);

                timePickerField.OnControlModified        += s => OnPropertyModified?.Invoke(formControlSettings.FieldFullName, s);
                timePickerField.OnControlFinishedEditing += s => OnPropertyFinishedEditing?.Invoke(formControlSettings.FieldFullName, s);

                userControl = timePickerField;
                break;

            case ObjectTypes.Custom:
                if (formControlSettings.FormField.CustomControl != null && formControlSettings.FormField.CustomControl.GetInterface(typeof(ICustomControl).FullName) != null)
                {
                    var customControlClass = (ICustomControl)Activator.CreateInstance(formControlSettings.FormField.CustomControl);
                    if (!(customControlClass is UserControl))
                    {
                        break;
                    }

                    var customControlBase = new CustomControlBase();

                    customControlBase.BuildDisplay(formControlSettings, customControlClass);

                    customControlBase.OnControlModified        += s => OnPropertyModified?.Invoke(formControlSettings.FieldFullName, s);
                    customControlBase.OnControlFinishedEditing += s => OnPropertyFinishedEditing?.Invoke(formControlSettings.FieldFullName, s);

                    userControl = customControlBase;
                }
                break;
            }

            return(userControl);
        }
Beispiel #11
0
        private List <UserControl> BuildUserControls(object Class, List <PropertyInfo> props)
        {
            var userControls = new List <UserControl>();

            var SortedControls = new List <PropInfoSorterClass>();

            var classType = Class.GetType();

            double displayNameWidth = 0;
            double valueWidth       = 100;

            foreach (var propInfo in props)
            {
                var formField = (FormField)propInfo.GetCustomAttributes(typeof(FormField), true).FirstOrDefault();

                var displayValue = propInfo.Name;

                if (formField.DisplayName != string.Empty)
                {
                    displayValue = formField.DisplayName;
                }

                if ((displayValue.Length * 10) > displayNameWidth)
                {
                    displayNameWidth = (displayValue.Length * 10);
                }

                SortedControls.Add(new PropInfoSorterClass()
                {
                    Order        = formField.Order,
                    PropertyInfo = propInfo
                });
            }

            if (Attribute.IsDefined(classType, typeof(FormClass)))
            {
                var formClass = classType.GetCustomAttribute <FormClass>();

                if (formClass.FormValueWidth != -1)
                {
                    valueWidth = formClass.FormValueWidth;
                }

                if (formClass.WidthOverride)
                {
                    displayNameWidth = Double.NaN;
                }
            }

            var PropInfoSorterClasses = SortedControls.OrderBy(a => a.Order).ToList();

            foreach (var propInfo in PropInfoSorterClasses)
            {
                var FormField = (FormField)propInfo.PropertyInfo.GetCustomAttributes(typeof(FormField), true).FirstOrDefault();
                if (FormField == null)
                {
                    continue;
                }

                var ObjectType = FormField.ObjectTypeName;
                if (FormField.ObjectTypeName == ObjectTypes.Default)
                {
                    if (!Enum.IsDefined(typeof(ObjectTypes), propInfo.PropertyInfo.PropertyType.Name))
                    {
                        continue;
                    }

                    ObjectType = (ObjectTypes)Enum.Parse(typeof(ObjectTypes), propInfo.PropertyInfo.PropertyType.Name);
                }

                var formControlSettings = new FormControlSettings
                {
                    DisplayNameWidth = displayNameWidth,
                    ValueWidth       = valueWidth,
                    FieldName        = propInfo.PropertyInfo.Name,
                    Value            = propInfo.PropertyInfo.GetValue(Class),
                    ObjectType       = ObjectType,
                    FormField        = FormField,
                    ClassType        = classType
                };

                formControlSettings.OnValueChanged += value =>
                {
                    try
                    {
                        propInfo.PropertyInfo.SetValue(Class, value);
                    }
                    catch
                    {
                    }
                };

                var userControl = HandleUserControl(formControlSettings);
                if (userControl != null)
                {
                    userControls.Add(userControl);
                }
            }

            PropInfoSorterClasses.ForEach(clase =>
            {
                OnPropertyModified?.Invoke(classType.FullName + "." + clase.PropertyInfo.Name, clase.PropertyInfo.GetValue(Class));
            });

            return(userControls);
        }
Beispiel #12
0
        private IEnumerable <UserControl> HandleItemList(object rootClass)
        {
            var rootClassType = rootClass.GetType();
            var userControls  = new List <UserControl>();

            var normalItems = Helpers.GetProperties(rootClassType, Types.ItemList);

            foreach (var info in normalItems)
            {
                var formField = (FormField)info.GetCustomAttributes(typeof(FormField), true).FirstOrDefault();
                if (formField == null)
                {
                    continue;
                }

                var rootFieldGroupCard = new UserControls.ListControls.GroupCard();

                var list      = (System.Collections.IList)info.GetValue(rootClass, null);
                var listType  = info.PropertyType.GetGenericArguments()[0];
                var fieldName = rootClassType.FullName + "." + info.Name;

                var objectType = formField.ObjectTypeName;
                if (formField.ObjectTypeName == ObjectTypes.Default)
                {
                    if (!Enum.IsDefined(typeof(ObjectTypes), listType.Name))
                    {
                        continue;
                    }

                    objectType = (ObjectTypes)Enum.Parse(typeof(ObjectTypes), listType.Name);
                }

                var displayNameWidth = 50;

                if ((formField.DisplayName.Length * 10) > displayNameWidth)
                {
                    displayNameWidth = (formField.DisplayName.Length * 10);
                }

                foreach (var o in list)
                {
                    var formControlSettings = new FormControlSettings
                    {
                        DisplayNameWidth = displayNameWidth,
                        ClassType        = rootClassType,
                        FieldName        = "Item",
                        ObjectType       = objectType,
                        FormField        = formField,
                        Value            = o
                    };

                    var controlItem = AddNewItemListItem(formControlSettings, rootFieldGroupCard, list, fieldName);
                    if (controlItem != null)
                    {
                        rootFieldGroupCard.ControlsWrapPanel.Children.Add(controlItem);
                    }
                }

                rootFieldGroupCard.AddItemIcon.MouseLeftButtonUp += (s, e) =>
                {
                    var formControlSettings = new FormControlSettings
                    {
                        DisplayNameWidth = displayNameWidth,
                        ClassType        = rootClassType,
                        FieldName        = "Item",
                        ObjectType       = objectType,
                        FormField        = formField,
                        Value            = ""
                    };

                    var controlItem = AddNewItemListItem(formControlSettings, rootFieldGroupCard, list, fieldName);
                    if (controlItem != null)
                    {
                        rootFieldGroupCard.ControlsWrapPanel.Children.Add(controlItem);
                    }
                };


                var displayName = info.Name;
                if (formField.DisplayName != string.Empty)
                {
                    displayName = formField.DisplayName;
                }
                rootFieldGroupCard.DisplayNameTextBlock.Text = displayName;

                userControls.Add(rootFieldGroupCard);
            }

            return(userControls);
        }