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); }
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); } }; }
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); }; }
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); }; }
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); } }; }
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); }; }
public void BuildDisplay(FormControlSettings formControlSettings) { }
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); }
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); }
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); }