62 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Drawing;
 | |
| using System.Collections;
 | |
| 
 | |
| namespace DevComponents.Tree.Layout
 | |
| {
 | |
| 	/// <summary>
 | |
| 	/// Internal class that orders one level of the nodes in list like layout. Nodes are ordered from top to bottom.
 | |
| 	/// </summary>
 | |
| 	internal class NodeListLayout:Layout.NodeLayout
 | |
| 	{
 | |
| 		public NodeListLayout(TreeGX treeControl, Rectangle clientArea):base(treeControl,clientArea)
 | |
| 		{
 | |
| 		}
 | |
| 
 | |
| 		public override void PerformLayout()
 | |
| 		{
 | |
| 			if(m_Tree.Nodes.Count==0)
 | |
| 				return;
 | |
| 
 | |
| 			this.PrepareStyles();
 | |
| 			System.Drawing.Graphics graphics=this.GetGraphics();
 | |
| 			m_Width=0;
 | |
| 			m_Height=0;
 | |
| 
 | |
| 			try
 | |
| 			{
 | |
| 				NodeCollection nodes=this.GetLayoutNodes();
 | |
| 				NodeLayoutContextInfo layoutInfo=this.GetDefaultNodeLayoutContextInfo(graphics);
 | |
| 				foreach(Node childNode in nodes)
 | |
| 				{
 | |
| 					if(!childNode.Visible)
 | |
| 						continue;
 | |
| 					layoutInfo.ContextNode=childNode;
 | |
| 					ProcessNode(layoutInfo);
 | |
| 					if(childNode.BoundsRelative.Width>this.Width)
 | |
| 						m_Width=childNode.BoundsRelative.Width;
 | |
| 				}
 | |
| 				m_Height=layoutInfo.Top-this.NodeVerticalSpacing;
 | |
| 			}
 | |
| 			finally
 | |
| 			{
 | |
| 				if(this.DisposeGraphics)
 | |
| 					graphics.Dispose();
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		private void ProcessNode(NodeLayoutContextInfo layoutInfo)
 | |
| 		{
 | |
| 			LayoutNode(layoutInfo);
 | |
| 			layoutInfo.ContextNode.SetBounds(new Rectangle(layoutInfo.Left,layoutInfo.Top,layoutInfo.ContextNode.BoundsRelative.Width,layoutInfo.ContextNode.BoundsRelative.Height));
 | |
| 			//OffsetNodeLocation(layoutInfo.ContextNode,layoutInfo.Left,layoutInfo.Top);
 | |
| 			layoutInfo.Top+=(layoutInfo.ContextNode.BoundsRelative.Height+this.NodeVerticalSpacing);
 | |
| 		}
 | |
| 
 | |
| 		private NodeCollection GetLayoutNodes()
 | |
| 		{
 | |
| 			return m_Tree.Nodes;
 | |
| 		}
 | |
| 	}
 | |
| }
 |