1 // Copyright 2001-2019 Crytek GmbH / Crytek Group. All rights reserved.
4 using System
.Collections
.Generic
;
7 using System
.Windows
.Forms
;
9 namespace Aga
.Controls
.Tree
11 internal class ReorderColumnState
: ColumnState
15 private Point _location
;
18 get { return _location; }
21 private Bitmap _ghostImage
;
22 public Bitmap GhostImage
24 get { return _ghostImage; }
27 private TreeColumn _dropColumn
;
28 public TreeColumn DropColumn
30 get { return _dropColumn; }
33 private int _dragOffset
;
36 get { return _dragOffset; }
41 public ReorderColumnState(TreeViewAdv tree
, TreeColumn column
, Point initialMouseLocation
)
44 _location
= new Point(initialMouseLocation
.X
+ Tree
.OffsetX
, 0);
45 _dragOffset
= tree
.GetColumnX(column
) - initialMouseLocation
.X
;
46 _ghostImage
= column
.CreateGhostImage(new Rectangle(0, 0, column
.Width
, tree
.ColumnHeaderHeight
), tree
.Font
);
49 public override void KeyDown(KeyEventArgs args
)
52 if (args
.KeyCode
== Keys
.Escape
)
56 public override void MouseDown(TreeNodeAdvMouseEventArgs args
)
60 public override void MouseUp(TreeNodeAdvMouseEventArgs args
)
65 public override bool MouseMove(MouseEventArgs args
)
68 _location
= new Point(args
.X
+ Tree
.OffsetX
, 0);
70 foreach (TreeColumn c
in Tree
.Columns
)
74 if (_location
.X
< x
+ c
.Width
/ 2)
86 private void FinishResize()
89 if (Column
== DropColumn
)
93 Tree
.Columns
.Remove(Column
);
94 if (DropColumn
== null)
95 Tree
.Columns
.Add(Column
);
97 Tree
.Columns
.Insert(Tree
.Columns
.IndexOf(DropColumn
), Column
);
99 Tree
.OnColumnReordered(Column
);