コード例 #1
0
 protected VerticalPositioning( TreeNodeCollection nodes, IRenderer renderer, ITreeInfo treeInfo, ITreeEvents treeEvents )
 {
     _nodes = nodes;
     _renderer = renderer;
     _treeInfo = treeInfo;
     _treeEvents = treeEvents;
 }
コード例 #2
0
        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 );
            }
        }
コード例 #3
0
        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 );
        }
コード例 #4
0
 public void PreRender( ITreeInfo treeInfo, ITreeEvents treeEvents )
 {
 }
コード例 #5
0
 public int MeasureIndent( Graphics g, ITreeInfo treeInfo, TreeNode node )
 {
     return node.Depth * _indent;
 }
コード例 #6
0
        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 );
            }
        }
コード例 #7
0
 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 );
 }
コード例 #8
0
 public ITreeInfo GetFromTree(string prompt, ITreeInfo options)
 {
     throw new NotImplementedException();
 }