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 |