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; }
 | |
|             }
 | |
| 		}
 | |
| 	}
 | |
| }
 |