External/Aga.Controls/Tree/Input/InputWithShift.cs
author sl
Thu, 01 Jan 2015 23:35:49 +0100
changeset 405 5715aefd2bcc
permissions -rw-r--r--
SharpDisplay: Migrating to new robust client scheme.
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
}