public void AddUserOption(IUserOption userOption) { Events.RaiseDataChangedEvent(GetType(), (MethodInfo)MethodBase.GetCurrentMethod(), null, UserOptions); UserOptions.Add(userOption); userOption.Owner = this; _VirtualPropertiesAreSet = true; }
public void Refresh() { foreach (IGrouping <IOptionCategory, IUserOptionReaderWriter> grouping in this) { var category = grouping.Key; category.Refresh(); var groupedList = grouping as GroupedList <IOptionCategory, IUserOptionReaderWriter>; groupedList?.RaiseOnTitlePropertyChanged(); foreach (IUserOptionReaderWriter writer in grouping) { IUserOption userOption = writer.UserOption; if (userOption != null) { userOption.Refresh(); } else { Debug.WriteLine("Warning: UserOptionsService.Refresh - user option is null."); } writer.Refresh(); } } }
private Control AddEnumInputControl(IUserOption option) { ComboBox box = new ComboBox(); box.DropDownStyle = ComboBoxStyle.DropDownList; foreach (object val in Enum.GetValues(option.DataType)) { //if (ExtensionAttributeHelper.HasNullValueAttribute(option.DataType, val)) //{ // box.Items.Add(new ComboBoxItemEx<object>(val, o => "")); // if (option.Value == null || option.Value == val) // box.SelectedIndex = box.Items.Count - 1; //} //else //{ box.Items.Add(new ComboBoxItemEx <object>(val, o => Enum.GetName(option.DataType, o))); if (option.Value != null && option.Value.Equals(val)) { box.SelectedIndex = box.Items.Count - 1; } //} } box.SelectedIndexChanged += (sender, e) => OnVirtualPropertyValueChanged(sender as Control); return(box); }
private Control AddPropertySelectorInputControl(IUserOption option) { ComboBox box = new ComboBox(); box.DropDownStyle = ComboBoxStyle.DropDownList; Entity entity = IsEnd1 ? Reference.Entity2 : Reference.Entity1; box.Items.Add(new ComboBoxItemEx <object>(null, p => GetPropertyName(null, ""))); foreach (Property prop in entity.Properties) { box.Items.Add(new ComboBoxItemEx <object>(prop, p => GetPropertyName(p, ""))); if (!(option.Value is string)) { if (!(option.Value is ArchAngel.Interfaces.NHibernateEnums.PropertiesForThisEntity)) { ArchAngel.Providers.EntityModel.Model.EntityLayer.Property optionProp = (ArchAngel.Providers.EntityModel.Model.EntityLayer.Property)option.Value; if (option.Value != null && optionProp.Name.Equals(prop.Name, StringComparison.InvariantCultureIgnoreCase)) { box.SelectedIndex = box.Items.Count - 1; } } } } box.SelectedIndexChanged += (sender, e) => OnVirtualPropertyValueChanged(sender as Control); return(box); }
public static void TestXml(IUserOption virtualProperty, string xml) { VirtualPropertySerialiser serialiser = new VirtualPropertySerialiser(); string result = serialiser.SerialiseVirtualProperty(virtualProperty).RemoveWhitespaceBetweenXmlElements(); Assert.That(result, Is.EqualTo(xml)); }
public static void TestDeserialisation(string xml, string name, Type type, object expectedValue) { VirtualPropertyDeserialiser serialiser = new VirtualPropertyDeserialiser(); IUserOption virtualProperty = serialiser.DeserialiseVirtualProperty(xml.GetXmlDocRoot()); Assert.That(virtualProperty.Value, Is.EqualTo(expectedValue)); Assert.That(virtualProperty.Name, Is.EqualTo(name)); Assert.That(virtualProperty.DataType, Is.EqualTo(type)); }
public void Register(IEnumerable <IUserOption> userOptions, IOptionCategory optionCategory) { AssertArg.IsNotNull(userOptions, nameof(userOptions)); AssertArg.IsNotNull(optionCategory, nameof(optionCategory)); /* We regect all options if any are already registered. */ Tuple <IOptionCategory, List <IUserOption> > existingCategoryOptions = null; foreach (KeyValuePair <IOptionCategory, List <IUserOption> > pair in categoryDictionary) { foreach (IUserOption userOption in userOptions) { IUserOption existingOption = null; foreach (IUserOption option in pair.Value) { if (!string.IsNullOrEmpty(option.SettingKey) && object.Equals(option.SettingKey, userOption.SettingKey)) { existingOption = option; break; } } //IUserOption existingOption = (from option in pair.Value // where object.Equals(option.SettingKey, userOption.SettingKey) // select option).FirstOrDefault(); if (existingOption != null) { throw new DuplicateItemException(existingOption, userOption); } } if (pair.Key.Id == optionCategory.Id) { existingCategoryOptions = new Tuple <IOptionCategory, List <IUserOption> >(pair.Key, pair.Value); } } List <IUserOption> list; if (existingCategoryOptions != null) { list = existingCategoryOptions.Item2; } else { list = new List <IUserOption>(); categoryDictionary.Add(optionCategory, list); } foreach (IUserOption userOption in userOptions) { list.Add(userOption); } }
public void It_Should_Serialise_To_This() { IUserOption virtualProperty = MockRepository.GenerateStub <IUserOption>(); virtualProperty.DataType = typeof(String); virtualProperty.Name = "VP1"; virtualProperty.Value = "some string"; TestHelper.TestXml(virtualProperty, Xml); }
private Control AddStringInputControl(IUserOption option) { TextBox tbOptionInput = new TextBox(); tbOptionInput.Text = option.Value != null?option.Value.ToString() : ""; tbOptionInput.TextChanged += (sender, e) => OnVirtualPropertyValueChanged(sender as Control); return(tbOptionInput); }
private Control AddDecimalInputControl(IUserOption option) { DoubleInput tbOptionInput = new DoubleInput(); tbOptionInput.Text = option.Value != null?option.Value.ToString() : ""; tbOptionInput.TextChanged += (sender, e) => OnVirtualPropertyValueChanged(sender as Control); return(tbOptionInput); }
public FormVirtualPropertyEdit(IUserOption virtualProperty, IScriptBaseObject iteratorObject) { InitializeComponent(); this.BackColor = Slyce.Common.Colors.BackgroundColor; ucHeading1.Text = ""; VirtualProperty = virtualProperty; OriginalValue = VirtualProperty.Value; Interfaces.Events.ShadeMainForm(); Populate(); }
public void It_Should_Serialise_To_This() { IUserOption virtualProperty = MockRepository.GenerateStub <IUserOption>(); virtualProperty.DataType = typeof(Test_Classes.VirtualPropEnum); virtualProperty.Name = "VP1"; virtualProperty.Value = Test_Classes.VirtualPropEnum.FileNotFound; TestHelper.TestXml(virtualProperty, Xml); }
public bool Deregister(IUserOption userOption) { bool result = false; foreach (var list in categoryDictionary.Values) { result |= list.Remove(userOption); } return(result); }
private Control AddBoolInputControl(IUserOption option) { CheckBox cbOptionInput = new CheckBox(); cbOptionInput.Checked = (bool)option.Value; cbOptionInput.CheckedChanged += (sender, e) => OnVirtualPropertyValueChanged(sender as Control); cbOptionInput.AutoEllipsis = true; //cbOptionInput.Text = option.Text; return(cbOptionInput); }
public static bool IsIntegerNumericType(IUserOption opt) { return opt.DataType.Equals(typeof(int)) || opt.DataType.Equals(typeof(uint)) || opt.DataType.Equals(typeof(long)) || opt.DataType.Equals(typeof(ulong)) || opt.DataType.Equals(typeof(short)) || opt.DataType.Equals(typeof(ushort)) || opt.DataType.Equals(typeof(sbyte)) || opt.DataType.Equals(typeof(byte)); }
public static bool IsIntegerNumericType(IUserOption opt) { return(opt.DataType.Equals(typeof(int)) || opt.DataType.Equals(typeof(uint)) || opt.DataType.Equals(typeof(long)) || opt.DataType.Equals(typeof(ulong)) || opt.DataType.Equals(typeof(short)) || opt.DataType.Equals(typeof(ushort)) || opt.DataType.Equals(typeof(sbyte)) || opt.DataType.Equals(typeof(byte))); }
private Control AddIntegerInputControl(IUserOption option) { IntegerInput tbOptionInput = new IntegerInput(); tbOptionInput.Text = option.Value != null?option.Value.ToString() : ""; tbOptionInput.ValueChanged += (sender, e) => OnVirtualPropertyValueChanged(sender as Control); tbOptionInput.ForeColor = Color.Black; return(tbOptionInput); }
protected virtual IUserOptionReaderWriter GetReaderWriter(IUserOption userOption) { var result = userOption.ReaderWriter; if (result == null) { var strategy = Dependency.Resolve <IReaderWriterCreationStrategy, ReaderWriterCreationStrategy>(false); result = strategy.Create(userOption); } return(result); }
public void RefreshVisibilities() { for (int i = 0; i < virtualProperties.Count; i++) { IUserOption virtualProperty = virtualProperties[i]; bool display = virtualProperty.DisplayToUser; //Control control = this.Controls[(i * 2) + 1]; Control control = UserOptionLookups[virtualProperty]; // this.Controls[virtualProperty.Name]; control.Visible = display; //if (display == false) //{ // Label label = (Label)this.Controls[i * 2]; // SetTooltip(label, "Disabled", virtualProperty.Description); //} } LayoutOptions(); }
private object GetValueFrom(Control control, IUserOption option) { if (VirtualPropertyHelper.IsEnumType(option)) { ComboBoxItemEx <object> item = ((ComboBox)control).SelectedItem as ComboBoxItemEx <object>; if (item == null) { return(null); } return(item.Object); } if (VirtualPropertyHelper.IsStringType(option)) { return(control.Text); } if (VirtualPropertyHelper.IsIntegerNumericType(option)) { return(control.Text.As <int>()); } if (VirtualPropertyHelper.IsCharType(option)) { return(control.Text[0]); } if (VirtualPropertyHelper.IsDecimalNumericType(option)) { return(control.Text.As <decimal>()); } if (VirtualPropertyHelper.IsBoolType(option)) { return(((CheckBox)control).Checked); } return(null); }
public string SerialiseVirtualProperty(IUserOption virtualProperty) { StringBuilder sb = new StringBuilder(80); using (XmlWriter writer = XmlWriter.Create(sb, new XmlWriterSettings() { OmitXmlDeclaration = true, IndentChars = "\t" })) { if (writer == null) { throw new SerialisationException("Could not aquire an XmlWriter"); } writer.WriteStartDocument(); SerialiseVirtualPropertyInternal(writer, virtualProperty); writer.WriteEndDocument(); } return(sb.ToString()); }
private void SerialiseVirtualPropertyInternal(XmlWriter writer, IUserOption virtualProperty) { writer.WriteStartElement("VirtualProperty"); writer.WriteAttributeString("name", virtualProperty.Name); writer.WriteAttributeString("type", virtualProperty.DataType.FullName); if (virtualProperty.DataType == TypePropertiesForThisEntity) { if (virtualProperty.Value is string) { writer.WriteElementString("Value", virtualProperty.Value.ToString()); } else { writer.WriteElementString("Value", ((ArchAngel.Providers.EntityModel.Model.EntityLayer.Property)virtualProperty.Value).Name); } } else { writer.WriteElementString("Value", virtualProperty.Value.ToString()); } writer.WriteEndElement(); }
public static bool IsEntityPropertyType(IUserOption option) { return option.DataType.Equals(typeof(ArchAngel.Interfaces.NHibernateEnums.PropertiesForThisEntity)); }
public static bool IsStringType(IUserOption opt) { return(opt.DataType.Equals(typeof(string))); }
public static bool IsDecimalNumericType(IUserOption opt) { return(opt.DataType.Equals(typeof(float)) || opt.DataType.Equals(typeof(double)) || opt.DataType.Equals(typeof(decimal))); }
private Control AddStringInputControl(IUserOption option) { TextBox tbOptionInput = new TextBox(); tbOptionInput.Text = option.Value != null ? option.Value.ToString() : ""; tbOptionInput.TextChanged += (sender, e) => OnVirtualPropertyValueChanged(sender as Control); return tbOptionInput; }
private object GetValueFrom(Control control, IUserOption option) { if (VirtualPropertyHelper.IsEnumType(option)) { ComboBoxItemEx<object> item = ((ComboBox)control).SelectedItem as ComboBoxItemEx<object>; if (item == null) return null; return item.Object; } if (VirtualPropertyHelper.IsStringType(option)) return control.Text; if (VirtualPropertyHelper.IsIntegerNumericType(option)) return control.Text.As<int>(); if (VirtualPropertyHelper.IsCharType(option)) return control.Text[0]; if (VirtualPropertyHelper.IsDecimalNumericType(option)) return control.Text.As<decimal>(); if (VirtualPropertyHelper.IsBoolType(option)) return ((CheckBox)control).Checked; return null; }
public static bool IsStringType(IUserOption opt) { return opt.DataType.Equals(typeof(string)); }
private int AddVirtualProperty(IUserOption option, int top, int labelWidth) { virtualProperties.Add(option); Label labelPropertyName = new Label(); labelPropertyName.Name = string.Format("label{0}", option.Name); labelPropertyName.Font = this.Font; labelPropertyName.Text = option.Text.Replace("End1:", "").Replace("End2:", "").Trim(); labelPropertyName.BackColor = BackColor; labelPropertyName.ForeColor = ForeColor; Control inputControl; if (VirtualPropertyHelper.IsEntityPropertyType(option)) { inputControl = AddPropertySelectorInputControl(option); } else if (VirtualPropertyHelper.IsEnumType(option)) { inputControl = AddEnumInputControl(option); } else if (VirtualPropertyHelper.IsStringType(option)) { inputControl = AddStringInputControl(option); } else if (VirtualPropertyHelper.IsIntegerNumericType(option)) { inputControl = AddIntegerInputControl(option); } else if (VirtualPropertyHelper.IsCharType(option)) { inputControl = AddCharInputControl(option); } else if (VirtualPropertyHelper.IsDecimalNumericType(option)) { inputControl = AddDecimalInputControl(option); } else if (VirtualPropertyHelper.IsBoolType(option)) { inputControl = AddBoolInputControl(option); } else { throw new NotImplementedException("Not handled yet"); } //return; inputControl.Font = this.Font; labelPropertyName.Left = 5; labelPropertyName.AutoSize = false; labelPropertyName.Width = labelWidth; labelPropertyName.TextAlign = ContentAlignment.MiddleRight; inputControl.Left = labelPropertyName.Right + 5; inputControl.Top = labelPropertyName.Top = top; inputControl.Width = Width - inputControl.Left - 5; bool propertyEnabled = option.DisplayToUser; inputControl.Visible = propertyEnabled; labelPropertyName.Visible = propertyEnabled; labelPropertyName.Anchor = AnchorStyles.Left | AnchorStyles.Top; inputControl.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top; inputControl.Name = option.Name; if (inputControl is ComboBox) { inputControl.Width = Math.Min(inputControl.Width, 200); inputControl.Anchor = AnchorStyles.Left | AnchorStyles.Top; } else if (inputControl is IntegerInput || inputControl is DoubleInput) { inputControl.Width = 50; inputControl.Anchor = AnchorStyles.Left | AnchorStyles.Top; } this.Controls.Add(labelPropertyName); this.Controls.Add(inputControl); if (propertyEnabled) { SetTooltip(labelPropertyName, "", option.Description); SetTooltip(inputControl, "", option.Description); } else { SetTooltip(labelPropertyName, "Disabled", option.Description); SetTooltip(inputControl, "Disabled", option.Description); } //CurrentRowHeight += 40; //Height = CurrentRowHeight + 50; UserOptionLookups.Add(option, inputControl); ControlLookups.Add(inputControl, option); this.Height = labelPropertyName.Bottom + 10; labelPropertyName.Refresh(); inputControl.Refresh(); if (propertyEnabled) { return(Math.Max(labelPropertyName.Bottom, inputControl.Bottom)); } else { return(top); } }
public static bool IsDecimalNumericType(IUserOption opt) { return opt.DataType.Equals(typeof(float)) || opt.DataType.Equals(typeof(double)) || opt.DataType.Equals(typeof(decimal)); }
public IUserOptionReaderWriter Create(IUserOption userOption) { AssertArg.IsNotNull(userOption, nameof(userOption)); BooleanUserOption booleanUserOption = userOption as BooleanUserOption; if (booleanUserOption != null) { return(new UserOptionReaderWriter <bool>(userOption)); } DoubleUserOption doubleUserOption = userOption as DoubleUserOption; if (doubleUserOption != null) { return(new UserOptionReaderWriter <double>(userOption)); } IntUserOption intUserOption = userOption as IntUserOption; if (intUserOption != null) { return(new UserOptionReaderWriter <int>(userOption)); } StringUserOption stringUserOption = userOption as StringUserOption; if (stringUserOption != null) { return(new UserOptionReaderWriter <string>(userOption)); } var provider = userOption as IProvider <IUserOptionReaderWriter>; if (provider != null) { return(provider.ProvidedItem); } var optionBase = userOption as UserOptionBase; if (optionBase != null) { Type templateType = typeof(UserOptionReaderWriter <>); Type genericType = templateType.MakeGenericType(optionBase.SettingType); try { var readerWriter = Activator.CreateInstance(genericType, userOption); return((IUserOptionReaderWriter)readerWriter); } catch (Exception) { /* Ignore and return outside this block. */ } } return(new UserOptionReaderWriter <object>(userOption)); // Type template = typeof(UserOptionBase<>); // var b = userOption.GetType().GetGenericArguments(); // if (b != null && b.Any()) // { // Type genericType = template.MakeGenericType(b.First()); // var genericUserOption = userOption as UserOptionBase<>; // } //return new UserOptionReaderWriter<object>(userOption); }
public static bool IsCharType(IUserOption opt) { return(opt.DataType.Equals(typeof(char))); }
public static bool IsEnumType(IUserOption option) { return option.DataType.IsEnum; }
private Control AddBoolInputControl(IUserOption option) { CheckBox cbOptionInput = new CheckBox(); cbOptionInput.Checked = (bool)option.Value; cbOptionInput.CheckedChanged += (sender, e) => OnVirtualPropertyValueChanged(sender as Control); cbOptionInput.AutoEllipsis = true; //cbOptionInput.Text = option.Text; return cbOptionInput; }
private Control AddEnumInputControl(IUserOption option) { ComboBox box = new ComboBox(); box.DropDownStyle = ComboBoxStyle.DropDownList; foreach (object val in Enum.GetValues(option.DataType)) { if (ExtensionAttributeHelper.HasNullValueAttribute(option.DataType, val)) { box.Items.Add(new ComboBoxItemEx<object>(val, o => "")); if (option.Value == null || option.Value == val) box.SelectedIndex = box.Items.Count - 1; } else { box.Items.Add(new ComboBoxItemEx<object>(val, o => Enum.GetName(option.DataType, o))); if (option.Value != null && option.Value.Equals(val)) box.SelectedIndex = box.Items.Count - 1; } } box.SelectedIndexChanged += (sender, e) => OnVirtualPropertyValueChanged(sender as Control); return box; }
public static bool IsBoolType(IUserOption opt) { return opt.DataType.Equals(typeof(bool)); }
private int AddVirtualProperty(IUserOption option, int top, int labelWidth) { virtualProperties.Add(option); Label labelPropertyName = new Label(); labelPropertyName.Text = option.Text; labelPropertyName.BackColor = BackColor; labelPropertyName.ForeColor = ForeColor; Control inputControl; if (VirtualPropertyHelper.IsEnumType(option)) inputControl = AddEnumInputControl(option); else if (VirtualPropertyHelper.IsStringType(option)) inputControl = AddStringInputControl(option); else if (VirtualPropertyHelper.IsIntegerNumericType(option)) inputControl = AddIntegerInputControl(option); else if (VirtualPropertyHelper.IsCharType(option)) inputControl = AddCharInputControl(option); else if (VirtualPropertyHelper.IsDecimalNumericType(option)) inputControl = AddDecimalInputControl(option); else if (VirtualPropertyHelper.IsBoolType(option)) inputControl = AddBoolInputControl(option); else throw new NotImplementedException("Not handled yet"); //return; labelPropertyName.Left = 5; labelPropertyName.AutoSize = false; labelPropertyName.Width = labelWidth; labelPropertyName.TextAlign = ContentAlignment.MiddleRight; inputControl.Left = labelPropertyName.Right + 5; inputControl.Top = labelPropertyName.Top = top; inputControl.Width = Control.Width - inputControl.Left - 5; bool propertyEnabled = option.DisplayToUser; inputControl.Enabled = propertyEnabled; labelPropertyName.Anchor = AnchorStyles.Left | AnchorStyles.Top; inputControl.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top; Control.Controls.Add(labelPropertyName); Control.Controls.Add(inputControl); if (propertyEnabled) { SetTooltip(labelPropertyName, "", option.Description); SetTooltip(inputControl, "", option.Description); } else { SetTooltip(labelPropertyName, "Disabled", option.Description); SetTooltip(inputControl, "Disabled", option.Description); } //CurrentRowHeight += 40; //Height = CurrentRowHeight + 50; UserOptionLookups.Add(option, inputControl); ControlLookups.Add(inputControl, option); return Math.Max(labelPropertyName.Bottom, inputControl.Bottom); }
public static bool IsBoolType(IUserOption opt) { return(opt.DataType.Equals(typeof(bool))); }
public object GetVirtualPropertyValue(IUserOption userOption) { return GetValueFrom(UserOptionLookups[userOption], userOption); }
public static bool IsCharType(IUserOption opt) { return opt.DataType.Equals(typeof(char)); }
public string SerialiseVirtualProperty(IUserOption virtualProperty) { StringBuilder sb = new StringBuilder(80); using (XmlWriter writer = XmlWriter.Create(sb, new XmlWriterSettings() { OmitXmlDeclaration = true, IndentChars = "\t" })) { if (writer == null) throw new SerialisationException("Could not aquire an XmlWriter"); writer.WriteStartDocument(); SerialiseVirtualPropertyInternal(writer, virtualProperty); writer.WriteEndDocument(); } return sb.ToString(); }
private void SerialiseVirtualPropertyInternal(XmlWriter writer, IUserOption virtualProperty) { writer.WriteStartElement("VirtualProperty"); writer.WriteAttributeString("name", virtualProperty.Name); writer.WriteAttributeString("type", virtualProperty.DataType.FullName); if (virtualProperty.DataType == TypePropertiesForThisEntity) { if (virtualProperty.Value is string) writer.WriteElementString("Value", virtualProperty.Value.ToString()); else writer.WriteElementString("Value", ((ArchAngel.Providers.EntityModel.Model.EntityLayer.Property)virtualProperty.Value).Name); } else writer.WriteElementString("Value", virtualProperty.Value.ToString()); writer.WriteEndElement(); }
public static bool IsEnumType(IUserOption option) { return(option.DataType.IsEnum); }
public static bool IsEntityPropertyType(IUserOption option) { return(option.DataType.Equals(typeof(ArchAngel.Interfaces.NHibernateEnums.PropertiesForThisEntity))); }
public object GetVirtualPropertyValue(IUserOption userOption) { return(GetValueFrom(UserOptionLookups[userOption], userOption)); }