140 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			140 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System.Drawing;
 | 
						|
using System.Drawing.Drawing2D;
 | 
						|
using DevComponents.DotNetBar;
 | 
						|
 | 
						|
namespace DevComponents.AdvTree
 | 
						|
{
 | 
						|
	namespace Display
 | 
						|
	{
 | 
						|
		/// <summary>
 | 
						|
		/// Base class for node expand button display.
 | 
						|
		/// </summary>
 | 
						|
		public abstract class NodeExpandDisplay
 | 
						|
		{
 | 
						|
			/// <summary>Creates new instance of the class</summary>
 | 
						|
			public NodeExpandDisplay()
 | 
						|
			{
 | 
						|
			}
 | 
						|
 | 
						|
			/// <summary>Draws expand button.</summary>
 | 
						|
			/// <param name="e">Context parameters for drawing expand button.</param>
 | 
						|
			public abstract void DrawExpandButton(NodeExpandPartRendererEventArgs e);
 | 
						|
 | 
						|
			protected Pen GetBorderPen(NodeExpandPartRendererEventArgs e)
 | 
						|
			{
 | 
						|
                if(!e.BorderColor.IsEmpty)
 | 
						|
                    return new Pen(e.BorderColor,1);
 | 
						|
                if (_ColorTable != null)
 | 
						|
                {
 | 
						|
                    bool expanded = e.Node.Expanded;
 | 
						|
                    TreeExpandColorTable ct = GetExpandColorTable(e);
 | 
						|
                    if (ct == null) return null;
 | 
						|
                    if (expanded)
 | 
						|
                    {
 | 
						|
                        // Collapse node colors
 | 
						|
                        if (!e.IsMouseOver && ct.CollapseBorder != null)
 | 
						|
                            return ct.CollapseBorder.CreatePen();
 | 
						|
                        else if (e.IsMouseOver && ct.CollapseMouseOverBorder != null)
 | 
						|
                            return ct.CollapseMouseOverBorder.CreatePen();
 | 
						|
                    }
 | 
						|
                    else
 | 
						|
                    {
 | 
						|
                        // Expand node colors
 | 
						|
                        if (!e.IsMouseOver && ct.ExpandBorder != null)
 | 
						|
                            return ct.ExpandBorder.CreatePen();
 | 
						|
                        else if (e.IsMouseOver && ct.ExpandMouseOverBorder != null)
 | 
						|
                            return ct.ExpandMouseOverBorder.CreatePen();
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                return null;
 | 
						|
			}
 | 
						|
 | 
						|
            private TreeExpandColorTable GetExpandColorTable(NodeExpandPartRendererEventArgs e)
 | 
						|
            {
 | 
						|
                TreeExpandColorTable ct = null;
 | 
						|
                if (e.ExpandButtonType == eExpandButtonType.Rectangle)
 | 
						|
                    ct = _ColorTable.ExpandRectangle;
 | 
						|
                else if (e.ExpandButtonType == eExpandButtonType.Triangle)
 | 
						|
                    ct = _ColorTable.ExpandTriangle;
 | 
						|
                else if (e.ExpandButtonType == eExpandButtonType.Ellipse)
 | 
						|
                    ct = _ColorTable.ExpandEllipse;
 | 
						|
                return ct;
 | 
						|
            }
 | 
						|
 | 
						|
			protected Pen GetExpandPen(NodeExpandPartRendererEventArgs e)
 | 
						|
			{
 | 
						|
                if (e.ExpandLineColor.IsEmpty)
 | 
						|
                {
 | 
						|
                    TreeExpandColorTable ct = GetExpandColorTable(e);
 | 
						|
                    if (ct != null)
 | 
						|
                    {
 | 
						|
                        bool expanded = e.Node.Expanded;
 | 
						|
                        if (expanded)
 | 
						|
                        {
 | 
						|
                            // Collapse node colors
 | 
						|
                            if (!e.IsMouseOver && ct.CollapseForeground != null)
 | 
						|
                                return ct.CollapseForeground.CreatePen(Dpi.Width1);
 | 
						|
                            else if (e.IsMouseOver && ct.CollapseMouseOverForeground != null)
 | 
						|
                                return ct.CollapseMouseOverForeground.CreatePen(Dpi.Width1);
 | 
						|
                        }
 | 
						|
                        else
 | 
						|
                        {
 | 
						|
                            // Collapse node colors
 | 
						|
                            if (!e.IsMouseOver && ct.ExpandForeground != null)
 | 
						|
                                return ct.ExpandForeground.CreatePen(Dpi.Width1);
 | 
						|
                            else if (e.IsMouseOver && ct.ExpandMouseOverForeground != null)
 | 
						|
                                return ct.ExpandMouseOverForeground.CreatePen(Dpi.Width1);
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
 | 
						|
                    return GetBorderPen(e);
 | 
						|
                }
 | 
						|
 | 
						|
				return new Pen(e.ExpandLineColor,1);
 | 
						|
			}
 | 
						|
 | 
						|
			protected Brush GetBackgroundBrush(NodeExpandPartRendererEventArgs e)
 | 
						|
			{
 | 
						|
                if (e.BackColor.IsEmpty && e.BackColor2.IsEmpty)
 | 
						|
                {
 | 
						|
                    bool expanded = e.Node.Expanded;
 | 
						|
                    TreeExpandColorTable ct = GetExpandColorTable(e);
 | 
						|
                    if (ct == null) return null;
 | 
						|
                    if (expanded)
 | 
						|
                    {
 | 
						|
                        // Collapse node colors
 | 
						|
                        if (!e.IsMouseOver && ct.CollapseFill != null)
 | 
						|
                            return ct.CollapseFill.CreateBrush(e.ExpandPartBounds);
 | 
						|
                        else if (e.IsMouseOver && ct.CollapseMouseOverFill != null)
 | 
						|
                            return ct.CollapseMouseOverFill.CreateBrush(e.ExpandPartBounds);
 | 
						|
                    }
 | 
						|
                    else
 | 
						|
                    {
 | 
						|
                        // Expand node colors
 | 
						|
                        if (!e.IsMouseOver && ct.ExpandFill != null)
 | 
						|
                            return ct.ExpandFill.CreateBrush(e.ExpandPartBounds);
 | 
						|
                        else if (e.IsMouseOver && ct.ExpandMouseOverFill != null)
 | 
						|
                            return ct.ExpandMouseOverFill.CreateBrush(e.ExpandPartBounds);
 | 
						|
                    }
 | 
						|
 | 
						|
                    return null;
 | 
						|
                }
 | 
						|
 | 
						|
				if(e.BackColor2.IsEmpty)
 | 
						|
					return new SolidBrush(e.BackColor);
 | 
						|
			
 | 
						|
				System.Drawing.Drawing2D.LinearGradientBrush brush=DisplayHelp.CreateLinearGradientBrush(e.ExpandPartBounds,e.BackColor,e.BackColor2,e.BackColorGradientAngle);
 | 
						|
				//brush.SetSigmaBellShape(0.8f);
 | 
						|
				return brush;
 | 
						|
			}
 | 
						|
 | 
						|
            private TreeColorTable _ColorTable;
 | 
						|
            public TreeColorTable ColorTable
 | 
						|
            {
 | 
						|
                get { return _ColorTable; }
 | 
						|
                set { _ColorTable = value; }
 | 
						|
            }
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |