Browse Source

PropertyGrid: refactored editors

pull/1645/head
brianlagunas_cp 16 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 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); Editor.Margin = new Thickness(5, 0, 0, 0);
}
protected override void SetValueDependencyProperty()
{
ValueProperty = CheckBox.IsCheckedProperty; ValueProperty = CheckBox.IsCheckedProperty;
} }
} }

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

@ -2,11 +2,10 @@
namespace Microsoft.Windows.Controls.PropertyGrid.Editors 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; 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 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; ValueProperty = ComboBox.SelectedItemProperty;
} }
@ -17,11 +16,11 @@ namespace Microsoft.Windows.Controls.PropertyGrid.Editors
base.Attach(propertyItem); base.Attach(propertyItem);
} }
protected abstract IList<object> CreateItemsSource(PropertyItem propertyItem);
private void SetItemsSource(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 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; ValueProperty = DateTimeUpDown.ValueProperty;
} }
} }

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

@ -2,27 +2,14 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
using System.Windows.Controls;
namespace Microsoft.Windows.Controls.PropertyGrid.Editors 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(); return GetValues(propertyItem.PropertyType);
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);
} }
private static object[] GetValues(Type enumType) 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 public class IntegerUpDownEditor : NumericUpDownEditor
{ {
protected override void SetEditorProperties() protected override void SetControlProperties()
{ {
NumericUpDown nud = (NumericUpDown)Editor; Editor.Maximum = int.MaxValue;
nud.Maximum = int.MaxValue; Editor.Minimum = int.MinValue;
nud.Minimum = int.MinValue; Editor.ValueType = typeof(int);
nud.ValueType = typeof(int); Editor.FormatString = "F0";
nud.FormatString = "F0";
} }
} }
} }

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

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

Loading…
Cancel
Save