Browse Source

PropertyGrid: refactored editors

pull/1645/head
brianlagunas_cp 15 years ago
parent
commit
e40b78ec0c
  1. 9
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/CheckBoxEditor.cs
  2. 5
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/ColorEditor.cs
  3. 11
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/ComboBoxEditor.cs
  4. 5
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/DateTimeUpDownEditor.cs
  5. 19
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/EnumComboBoxEditor.cs
  6. 11
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/IntegerUpDownEditor.cs
  7. 11
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/NumericUpDownEditor.cs
  8. 14
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/TextBlockEditor.cs
  9. 5
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/TextBoxEditor.cs
  10. 27
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/TypeEditor.cs

9
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/CheckBoxEditor.cs

@ -3,12 +3,15 @@ using System.Windows.Controls;
namespace Microsoft.Windows.Controls.PropertyGrid.Editors
{
public class CheckBoxEditor : TypeEditor
public class CheckBoxEditor : TypeEditor<CheckBox>
{
protected override void Initialize()
protected override void SetControlProperties()
{
Editor = new CheckBox();
Editor.Margin = new Thickness(5, 0, 0, 0);
}
protected override void SetValueDependencyProperty()
{
ValueProperty = CheckBox.IsCheckedProperty;
}
}

5
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/ColorEditor.cs

@ -2,11 +2,10 @@
namespace Microsoft.Windows.Controls.PropertyGrid.Editors
{
public class ColorEditor : TypeEditor
public class ColorEditor : TypeEditor<ColorPicker>
{
protected override void Initialize()
protected override void SetValueDependencyProperty()
{
Editor = new ColorPicker();
ValueProperty = ColorPicker.SelectedColorProperty;
}
}

11
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/ComboBoxEditor.cs

@ -3,11 +3,10 @@ using System.Windows.Controls;
namespace Microsoft.Windows.Controls.PropertyGrid.Editors
{
public abstract class ComboBoxEditor : TypeEditor
public abstract class ComboBoxEditor : TypeEditor<ComboBox>
{
protected override void Initialize()
protected override void SetValueDependencyProperty()
{
Editor = new ComboBox();
ValueProperty = ComboBox.SelectedItemProperty;
}
@ -17,11 +16,11 @@ namespace Microsoft.Windows.Controls.PropertyGrid.Editors
base.Attach(propertyItem);
}
protected abstract IList<object> CreateItemsSource(PropertyItem propertyItem);
private void SetItemsSource(PropertyItem propertyItem)
{
(Editor as ComboBox).ItemsSource = CreateItemsSource(propertyItem);
Editor.ItemsSource = CreateItemsSource(propertyItem);
}
protected abstract IList<object> CreateItemsSource(PropertyItem propertyItem);
}
}

5
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/DateTimeUpDownEditor.cs

@ -2,11 +2,10 @@
namespace Microsoft.Windows.Controls.PropertyGrid.Editors
{
public class DateTimeUpDownEditor : TypeEditor
public class DateTimeUpDownEditor : TypeEditor<DateTimeUpDown>
{
protected override void Initialize()
protected override void SetValueDependencyProperty()
{
Editor = new DateTimeUpDown();
ValueProperty = DateTimeUpDown.ValueProperty;
}
}

19
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/EnumComboBoxEditor.cs

@ -2,27 +2,14 @@
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Windows.Controls;
namespace Microsoft.Windows.Controls.PropertyGrid.Editors
{
public class EnumComboBoxEditor : TypeEditor
public class EnumComboBoxEditor : ComboBoxEditor
{
protected override void Initialize()
protected override IList<object> CreateItemsSource(PropertyItem propertyItem)
{
Editor = new ComboBox();
ValueProperty = ComboBox.SelectedItemProperty;
}
public override void Attach(PropertyItem propertyItem)
{
SetItemsSource(propertyItem);
base.Attach(propertyItem);
}
private void SetItemsSource(PropertyItem propertyItem)
{
(Editor as ComboBox).ItemsSource = GetValues(propertyItem.PropertyType);
return GetValues(propertyItem.PropertyType);
}
private static object[] GetValues(Type enumType)

11
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/IntegerUpDownEditor.cs

@ -4,13 +4,12 @@ namespace Microsoft.Windows.Controls.PropertyGrid.Editors
{
public class IntegerUpDownEditor : NumericUpDownEditor
{
protected override void SetEditorProperties()
protected override void SetControlProperties()
{
NumericUpDown nud = (NumericUpDown)Editor;
nud.Maximum = int.MaxValue;
nud.Minimum = int.MinValue;
nud.ValueType = typeof(int);
nud.FormatString = "F0";
Editor.Maximum = int.MaxValue;
Editor.Minimum = int.MinValue;
Editor.ValueType = typeof(int);
Editor.FormatString = "F0";
}
}
}

11
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/NumericUpDownEditor.cs

@ -2,18 +2,11 @@
namespace Microsoft.Windows.Controls.PropertyGrid.Editors
{
public class NumericUpDownEditor : TypeEditor
public class NumericUpDownEditor : TypeEditor<NumericUpDown>
{
protected override void Initialize()
protected override void SetValueDependencyProperty()
{
Editor = new NumericUpDown();
ValueProperty = NumericUpDown.ValueProperty;
SetEditorProperties();
}
protected virtual void SetEditorProperties()
{
//TODO: override in derived classes to specify custom value type
}
}
}

14
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/TextBlockEditor.cs

@ -1,18 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Controls;
namespace Microsoft.Windows.Controls.PropertyGrid.Editors
{
public class TextBlockEditor : TypeEditor
public class TextBlockEditor : TypeEditor<TextBlock>
{
protected override void Initialize()
protected override void SetValueDependencyProperty()
{
Editor = new TextBlock();
(Editor as TextBlock).Margin = new System.Windows.Thickness(5, 0, 0, 0);
ValueProperty = TextBlock.TextProperty;
}
protected override void SetControlProperties()
{
Editor.Margin = new System.Windows.Thickness(5, 0, 0, 0);
}
}
}

5
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/TextBoxEditor.cs

@ -3,11 +3,10 @@ using System.Windows.Controls;
namespace Microsoft.Windows.Controls.PropertyGrid.Editors
{
public class TextBoxEditor : TypeEditor
public class TextBoxEditor : TypeEditor<TextBox>
{
protected override void Initialize()
protected override void SetValueDependencyProperty()
{
Editor = new TextBox();
ValueProperty = TextBox.TextProperty;
}
}

27
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/TypeEditor.cs

@ -4,11 +4,12 @@ using System.Windows.Data;
namespace Microsoft.Windows.Controls.PropertyGrid.Editors
{
public abstract class TypeEditor : ITypeEditor
public abstract class TypeEditor<T> : ITypeEditor
where T : FrameworkElement, new()
{
#region Properties
protected FrameworkElement Editor { get; set; }
protected T Editor { get; set; }
protected DependencyProperty ValueProperty { get; set; }
#endregion //Properties
@ -17,7 +18,9 @@ namespace Microsoft.Windows.Controls.PropertyGrid.Editors
public TypeEditor()
{
Initialize();
Editor = new T();
SetValueDependencyProperty();
SetControlProperties();
}
#endregion //Constructors
@ -26,7 +29,7 @@ namespace Microsoft.Windows.Controls.PropertyGrid.Editors
public virtual void Attach(PropertyItem propertyItem)
{
ResolveBinding(propertyItem);
ResolveValueBinding(propertyItem);
}
public virtual FrameworkElement ResolveEditor()
@ -38,24 +41,30 @@ namespace Microsoft.Windows.Controls.PropertyGrid.Editors
#region Methods
protected abstract void Initialize();
protected virtual IValueConverter CreateValueConverter()
{
return null;
}
protected virtual void ResolveBinding(PropertyItem propertyItem)
protected virtual void ResolveValueBinding(PropertyItem propertyItem)
{
var _binding = new Binding("Value");
_binding.Source = propertyItem;
_binding.ValidatesOnExceptions = true;
_binding.ValidatesOnDataErrors = true;
_binding.Mode = propertyItem.IsWriteable ? BindingMode.TwoWay : BindingMode.OneWay;
_binding.Converter = CreateConverter();
_binding.Converter = CreateValueConverter();
BindingOperations.SetBinding(Editor, ValueProperty, _binding);
}
protected virtual IValueConverter CreateConverter()
protected virtual void SetControlProperties()
{
return null;
//TODO: implement in derived class
}
protected abstract void SetValueDependencyProperty();
#endregion //Methods
}
}

Loading…
Cancel
Save