#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 /// /// Initializes a new instance of the PropertyNodeFactory class. /// /// 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