protected VerticalPositioning( TreeNodeCollection nodes, IRenderer renderer, ITreeInfo treeInfo, ITreeEvents treeEvents ) { _nodes = nodes; _renderer = renderer; _treeInfo = treeInfo; _treeEvents = treeEvents; }
public void ProcessClick( Graphics g, TreeNode treeNode, Rectangle nodeRectangle, Point p, ITreeInfo treeInfo, ITreeEvents treeEvents ) { Size ecSize = GetGlyphSize( g, treeNode.IsExpanded ); Rectangle ecBounds = new Rectangle( nodeRectangle.X + _leftSep, nodeRectangle.Y + (nodeRectangle.Height - ecSize.Height) / 2, ecSize.Width, ecSize.Height ); if( ecBounds.Contains( p ) && treeNode.ChildNodes.Count > 0 ) { if( !treeInfo.IsAnimating() ) { treeEvents.ToggleNodeExpansion( treeNode ); } } else { treeEvents.SelectNode( treeNode ); } }
public Size MeasureTreeNode( Graphics g, ITreeInfo treeInfo, TreeNode treeNode, bool needsWidth, bool needsHeight ) { Size textSize = WinFormsUtility.Drawing.GdiPlusEx.MeasureString( g, treeNode.Text, treeNode.Font, int.MaxValue ); Size ecSize = GetGlyphSize( g, treeNode.IsExpanded ); int width = (int) textSize.Width + _leftSep + _ecSep + ecSize.Width + _rightSep; int height = (int) textSize.Height; if( treeNode.Icon != null ) { width += _imageSep + treeNode.Icon.Size.Width; height = Math.Max( height, treeNode.Icon.Size.Height ); } height += _verticalSep; return new Size( width, height ); }
public void PreRender( ITreeInfo treeInfo, ITreeEvents treeEvents ) { }
public int MeasureIndent( Graphics g, ITreeInfo treeInfo, TreeNode node ) { return node.Depth * _indent; }
public void RenderTreeNode( Graphics g, ITreeInfo treeInfo, TreeNode treeNode, Rectangle nodeRectangle, Rectangle clip ) { bool isLast = (treeNode.Index == treeNode.ParentCollection.Count - 1); Size ecSize = GetGlyphSize( g, treeNode.IsExpanded ); Point ecCenter = new Point( nodeRectangle.X + _leftSep + ecSize.Width / 2, nodeRectangle.Y + (nodeRectangle.Height - ecSize.Height) / 2 + ecSize.Height / 2 ); using( Brush brush = new HatchBrush( HatchStyle.Percent50, SystemColors.Window, SystemColors.GrayText ) ) using( Pen pen = new Pen( brush ) ) { g.DrawLine( pen, ecCenter, new Point( ecCenter.X + 12, ecCenter.Y ) ); g.DrawLine( pen, ecCenter, new Point( ecCenter.X, nodeRectangle.Y ) ); if( !isLast ) { g.DrawLine( pen, ecCenter, new Point( ecCenter.X, nodeRectangle.Bottom ) ); } } int textX = nodeRectangle.X + ecSize.Width + _leftSep + _ecSep; if( treeNode.Icon != null ) { Icon image = treeNode.Icon; g.DrawIconUnstretched( image, new Rectangle( textX, nodeRectangle.Y + (nodeRectangle.Height - image.Height) / 2, image.Width, image.Height ) ); textX += image.Width + _imageSep; } if( treeInfo.IsSelected( treeNode ) ) { Brush brush = treeInfo.IsTreeFocused() ? SystemBrushes.Highlight : SystemBrushes.Control; g.FillRectangle( brush, textX, nodeRectangle.Y, nodeRectangle.Right - textX + 2, nodeRectangle.Height - 1 ); if( treeInfo.IsTreeFocused() ) { using( Brush hatchBrush = new HatchBrush( HatchStyle.Percent50, SystemColors.Highlight ) ) using( Pen pen = new Pen( hatchBrush ) ) { g.DrawRectangle( pen, textX, nodeRectangle.Y, nodeRectangle.Right - textX + 2, nodeRectangle.Height - 1 ); } } } WinFormsUtility.Drawing.GdiPlusEx.DrawString ( g, treeNode.Text, treeNode.Font, SystemColors.ControlText , new Rectangle( textX + 2, nodeRectangle.Y + _verticalSep, int.MaxValue, int.MaxValue ) , WinFormsUtility.Drawing.GdiPlusEx.TextSplitting.SingleLineEllipsis, WinFormsUtility.Drawing.GdiPlusEx.Ampersands.Display ); if( treeNode.ChildNodes.Count > 0 ) { DrawGlyph( g, new Point( nodeRectangle.X + _leftSep, nodeRectangle.Y + (nodeRectangle.Height - ecSize.Height) / 2 ), treeNode.IsExpanded ); } }
internal AnimatedVerticalPositioning( TreeNodeCollection nodes, IRenderer renderer, ITreeInfo treeInfo, ITreeEvents treeEvents ) : base(nodes, renderer, treeInfo, treeEvents) { _from = new StaticVerticalPositioning( nodes, renderer, treeInfo, treeEvents ); _to = new StaticVerticalPositioning( nodes, renderer, treeInfo, treeEvents ); }
public ITreeInfo GetFromTree(string prompt, ITreeInfo options) { throw new NotImplementedException(); }