1 // Copyright 2001-2019 Crytek GmbH / Crytek Group. All rights reserved.
4 using System
.Collections
.Generic
;
7 using Aga
.Controls
.Properties
;
8 using System
.Windows
.Forms
;
9 using System
.Windows
.Forms
.VisualStyles
;
11 namespace Aga
.Controls
.Tree
.NodeControls
13 internal class NodePlusMinus
: NodeControl
15 public const int ImageSize
= 9;
16 public const int Width
= 16;
18 private Bitmap _minus
;
20 private VisualStyleRenderer _openedRenderer
;
21 private VisualStyleRenderer OpenedRenderer
25 if (_openedRenderer
== null)
26 _openedRenderer
= new VisualStyleRenderer(VisualStyleElement
.TreeView
.Glyph
.Opened
);
27 return _openedRenderer
;
32 private VisualStyleRenderer _closedRenderer
;
33 private VisualStyleRenderer ClosedRenderer
37 if (_closedRenderer
== null)
38 _closedRenderer
= new VisualStyleRenderer(VisualStyleElement
.TreeView
.Glyph
.Closed
);
39 return _closedRenderer
;
43 public NodePlusMinus()
45 _plus
= Resources
.plus
;
46 _minus
= Resources
.minus
;
49 public override Size
MeasureSize(TreeNodeAdv node
, DrawContext context
)
51 return new Size(Width
, Width
);
54 public override void Draw(TreeNodeAdv node
, DrawContext context
)
58 Rectangle r
= context
.Bounds
;
59 int dy
= (int)Math
.Round((float)(r
.Height
- ImageSize
) / 2);
60 if (Application
.RenderWithVisualStyles
)
62 VisualStyleRenderer renderer
;
64 renderer
= OpenedRenderer
;
66 renderer
= ClosedRenderer
;
67 renderer
.DrawBackground(context
.Graphics
, new Rectangle(r
.X
, r
.Y
+ dy
, ImageSize
, ImageSize
));
76 context
.Graphics
.DrawImageUnscaled(img
, new Point(r
.X
, r
.Y
+ dy
));
81 public override void MouseDown(TreeNodeAdvMouseEventArgs args
)
83 if (args
.Button
== MouseButtons
.Left
)
86 if (args
.Node
.CanExpand
)
87 args
.Node
.IsExpanded
= !args
.Node
.IsExpanded
;
91 public override void MouseDoubleClick(TreeNodeAdvMouseEventArgs args
)
93 args
.Handled
= true; // Supress expand/collapse when double click on plus/minus