author | Stephane Lenclud |
Sat, 30 Jan 2016 23:01:51 +0100 | |
branch | MiniDisplay |
changeset 454 | f84878f52cd9 |
permissions | -rw-r--r-- |
moel@345 | 1 |
using System; |
moel@345 | 2 |
using System.Collections.Generic; |
moel@345 | 3 |
using System.Text; |
moel@345 | 4 |
|
moel@345 | 5 |
namespace Aga.Controls.Tree |
moel@345 | 6 |
{ |
moel@345 | 7 |
internal class InputWithShift: NormalInputState |
moel@345 | 8 |
{ |
moel@345 | 9 |
public InputWithShift(TreeViewAdv tree): base(tree) |
moel@345 | 10 |
{ |
moel@345 | 11 |
} |
moel@345 | 12 |
|
moel@345 | 13 |
protected override void FocusRow(TreeNodeAdv node) |
moel@345 | 14 |
{ |
moel@345 | 15 |
Tree.SuspendSelectionEvent = true; |
moel@345 | 16 |
try |
moel@345 | 17 |
{ |
moel@345 | 18 |
if (Tree.SelectionMode == TreeSelectionMode.Single || Tree.SelectionStart == null) |
moel@345 | 19 |
base.FocusRow(node); |
moel@345 | 20 |
else if (CanSelect(node)) |
moel@345 | 21 |
{ |
moel@345 | 22 |
SelectAllFromStart(node); |
moel@345 | 23 |
Tree.CurrentNode = node; |
moel@345 | 24 |
Tree.ScrollTo(node); |
moel@345 | 25 |
} |
moel@345 | 26 |
} |
moel@345 | 27 |
finally |
moel@345 | 28 |
{ |
moel@345 | 29 |
Tree.SuspendSelectionEvent = false; |
moel@345 | 30 |
} |
moel@345 | 31 |
} |
moel@345 | 32 |
|
moel@345 | 33 |
protected override void DoMouseOperation(TreeNodeAdvMouseEventArgs args) |
moel@345 | 34 |
{ |
moel@345 | 35 |
if (Tree.SelectionMode == TreeSelectionMode.Single || Tree.SelectionStart == null) |
moel@345 | 36 |
{ |
moel@345 | 37 |
base.DoMouseOperation(args); |
moel@345 | 38 |
} |
moel@345 | 39 |
else if (CanSelect(args.Node)) |
moel@345 | 40 |
{ |
moel@345 | 41 |
Tree.SuspendSelectionEvent = true; |
moel@345 | 42 |
try |
moel@345 | 43 |
{ |
moel@345 | 44 |
SelectAllFromStart(args.Node); |
moel@345 | 45 |
} |
moel@345 | 46 |
finally |
moel@345 | 47 |
{ |
moel@345 | 48 |
Tree.SuspendSelectionEvent = false; |
moel@345 | 49 |
} |
moel@345 | 50 |
} |
moel@345 | 51 |
} |
moel@345 | 52 |
|
moel@345 | 53 |
protected override void MouseDownAtEmptySpace(TreeNodeAdvMouseEventArgs args) |
moel@345 | 54 |
{ |
moel@345 | 55 |
} |
moel@345 | 56 |
|
moel@345 | 57 |
private void SelectAllFromStart(TreeNodeAdv node) |
moel@345 | 58 |
{ |
moel@345 | 59 |
Tree.ClearSelectionInternal(); |
moel@345 | 60 |
int a = node.Row; |
moel@345 | 61 |
int b = Tree.SelectionStart.Row; |
moel@345 | 62 |
for (int i = Math.Min(a, b); i <= Math.Max(a, b); i++) |
moel@345 | 63 |
{ |
moel@345 | 64 |
if (Tree.SelectionMode == TreeSelectionMode.Multi || Tree.RowMap[i].Parent == node.Parent) |
moel@345 | 65 |
Tree.RowMap[i].IsSelected = true; |
moel@345 | 66 |
} |
moel@345 | 67 |
} |
moel@345 | 68 |
} |
moel@345 | 69 |
} |