95 lines
3.5 KiB
C#
95 lines
3.5 KiB
C#
#if FRAMEWORK20
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using DevComponents.AdvTree;
|
|
using System.ComponentModel;
|
|
using System.Drawing;
|
|
|
|
namespace DevComponents.DotNetBar
|
|
{
|
|
internal class PropertyNodeFactory
|
|
{
|
|
#region Constructors
|
|
/// <summary>
|
|
/// Initializes a new instance of the PropertyNodeFactory class.
|
|
/// </summary>
|
|
/// <param name="categoryStyle"></param>
|
|
public PropertyNodeFactory(IPropertyElementStyleProvider styleProvider)
|
|
{
|
|
_StyleProvider = styleProvider;
|
|
}
|
|
#endregion
|
|
|
|
#region Internal Implementation
|
|
public PropertyNode CreatePropertyNode(PropertyDescriptor item, object targetComponent, IPropertyGridLocalizer localizer, PropertySettingsCollection propertySettings, bool isMultiObject)
|
|
{
|
|
PropertySettings settings = propertySettings[item, item.Name];
|
|
return CreatePropertyNode(item, targetComponent, localizer, settings, isMultiObject);
|
|
}
|
|
public PropertyNode CreatePropertyNode(PropertyDescriptor item, object targetComponent, IPropertyGridLocalizer localizer, PropertySettings settings, bool isMultiObject)
|
|
{
|
|
PropertyNode node = null;
|
|
|
|
if (item.PropertyType == typeof(Color) && (settings == null || settings.ValueEditor == null))
|
|
node = new PropertyNodeColor(item);
|
|
else if (item.PropertyType == typeof(bool) && (settings == null || settings.ValueEditor == null))
|
|
node = new PropertyCheckBoxNode(item);
|
|
else if (settings != null && settings.PropertyNodeType == ePropertyNodeType.RadioButtonList)
|
|
node = new PropertyOptionListNode(item);
|
|
else
|
|
node = new PropertyNode(item);
|
|
|
|
node.IsMultiObject = isMultiObject;
|
|
node.NodesIndent = _ChildPropertiesIndent;
|
|
node.ImageAlignment = eCellPartAlignment.FarCenter;
|
|
string name = localizer.GetPropertyName(item.Name);
|
|
if (string.IsNullOrEmpty(name)) name = item.DisplayName;
|
|
node.Text = name;
|
|
node.TargetComponent = targetComponent;
|
|
Cell cell = new Cell();
|
|
cell.Selectable = false;
|
|
cell.TextMarkupEnabled = false;
|
|
node.Cells.Add(cell);
|
|
|
|
node.PropertySettings = settings;
|
|
|
|
return node;
|
|
}
|
|
public Node CreateCategoryNode(string category, IPropertyGridLocalizer localizer)
|
|
{
|
|
PropertyCategoryNode node = new PropertyCategoryNode();
|
|
if (_StyleProvider != null)
|
|
node.Style = _StyleProvider.CategoryStyle;
|
|
string name = localizer.GetCategoryName(category);
|
|
if (string.IsNullOrEmpty(name)) name = category;
|
|
node.Text = name;
|
|
node.Expanded = true;
|
|
node.FullRowBackground = true;
|
|
node.Selectable = true;
|
|
node.CellNavigationEnabled = false;
|
|
return node;
|
|
}
|
|
|
|
private int _ChildPropertiesIndent = 9;
|
|
public int ChildPropertiesIndent
|
|
{
|
|
get { return _ChildPropertiesIndent; }
|
|
set
|
|
{
|
|
_ChildPropertiesIndent = value;
|
|
}
|
|
}
|
|
|
|
private IPropertyElementStyleProvider _StyleProvider;
|
|
public IPropertyElementStyleProvider StyleProvider
|
|
{
|
|
get { return _StyleProvider; }
|
|
set { _StyleProvider = value; }
|
|
}
|
|
#endregion
|
|
|
|
|
|
}
|
|
}
|
|
#endif |