diff -r 3145aadca3d2 -r 0c551e8818e0 External/Aga.Controls/Tree/Input/ReorderColumnState.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/External/Aga.Controls/Tree/Input/ReorderColumnState.cs Sun May 27 15:16:19 2012 +0000 @@ -0,0 +1,101 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Drawing; +using System.Windows.Forms; + +namespace Aga.Controls.Tree +{ + internal class ReorderColumnState : ColumnState + { + #region Properties + + private Point _location; + public Point Location + { + get { return _location; } + } + + private Bitmap _ghostImage; + public Bitmap GhostImage + { + get { return _ghostImage; } + } + + private TreeColumn _dropColumn; + public TreeColumn DropColumn + { + get { return _dropColumn; } + } + + private int _dragOffset; + public int DragOffset + { + get { return _dragOffset; } + } + + #endregion + + public ReorderColumnState(TreeViewAdv tree, TreeColumn column, Point initialMouseLocation) + : base(tree, column) + { + _location = new Point(initialMouseLocation.X + Tree.OffsetX, 0); + _dragOffset = tree.GetColumnX(column) - initialMouseLocation.X; + _ghostImage = column.CreateGhostImage(new Rectangle(0, 0, column.Width, tree.ColumnHeaderHeight), tree.Font); + } + + public override void KeyDown(KeyEventArgs args) + { + args.Handled = true; + if (args.KeyCode == Keys.Escape) + FinishResize(); + } + + public override void MouseDown(TreeNodeAdvMouseEventArgs args) + { + } + + public override void MouseUp(TreeNodeAdvMouseEventArgs args) + { + FinishResize(); + } + + public override bool MouseMove(MouseEventArgs args) + { + _dropColumn = null; + _location = new Point(args.X + Tree.OffsetX, 0); + int x = 0; + foreach (TreeColumn c in Tree.Columns) + { + if (c.IsVisible) + { + if (_location.X < x + c.Width / 2) + { + _dropColumn = c; + break; + } + x += c.Width; + } + } + Tree.UpdateHeaders(); + return true; + } + + private void FinishResize() + { + Tree.ChangeInput(); + if (Column == DropColumn) + Tree.UpdateView(); + else + { + Tree.Columns.Remove(Column); + if (DropColumn == null) + Tree.Columns.Add(Column); + else + Tree.Columns.Insert(Tree.Columns.IndexOf(DropColumn), Column); + + Tree.OnColumnReordered(Column); + } + } + } +} \ No newline at end of file