//Methods private void PropertyFieldValueChanged <ValueType>(IPropertyField <ValueType> pPropertyField) where ValueType : IConvertible { if (onValueChange != null) { onValueChange(this); } }
//Properties //Functions public void AddProperty <ValueType>(string pPropertyName, ValueType pValue) where ValueType : IConvertible { if (!dicEditorFields.ContainsKey(pPropertyName)) { IPropertyField iPropertyField = null; if (typeof(ValueType) == typeof(bool)) { PropertyField_Boolean PropertyField = new PropertyField_Boolean(pPropertyName, (bool)((IConvertible)pValue), CalculateWidth()); PropertyField.ValueChanged += this.PropertyFieldValueChanged; this.Children.Add(PropertyField); iPropertyField = PropertyField; } else if (typeof(ValueType) == typeof(DateTime)) { PropertyField_DateTime PropertyField = new PropertyField_DateTime(pPropertyName, (DateTime)((IConvertible)pValue), CalculateWidth()); PropertyField.ValueChanged += this.PropertyFieldValueChanged; this.Children.Add(PropertyField); iPropertyField = PropertyField; } else if (typeof(ValueType).IsEnum) { PropertyField_Enum <ValueType> PropertyField = new PropertyField_Enum <ValueType>(pPropertyName, pValue, CalculateWidth()); PropertyField.ValueChanged += this.PropertyFieldValueChanged; this.Children.Add(PropertyField); iPropertyField = PropertyField; } else { PropertyField_Default <ValueType> PropertyField = new PropertyField_Default <ValueType>(pPropertyName, pValue, CalculateWidth()); PropertyField.ValueChanged += this.PropertyFieldValueChanged; this.Children.Add(PropertyField); iPropertyField = PropertyField; } dicEditorFields.Add(pPropertyName, iPropertyField); } else { throw new DuplicatePropertyException("Property \"" + pPropertyName + "\" already exist."); } }