External/Aga.Controls/Tree/Input/InputWithShift.cs
author moel.mich
Mon, 02 Jul 2012 21:14:40 +0000
changeset 357 fb8dc26f65a4
permissions -rw-r--r--
Added mainboard specific configurations for the following Gigabyte mainboards: EX58-UD3R, G41M-Combo, G41MT-S2, G41MT-S2P, GA-MA770T-UD3P, GA-MA785GM-US2H, GA-MA78LM-S2H, GA-MA790X-UD3P, H55-USB3, H55N-USB3, H61M-DS2 REV 1.2, H61M-USB3-B3 REV 2.0, H67A-USB3-B3, P55A-UD3, P67A-UD3-B3, P67A-UD3R-B3, Z68A-D3H-B3, Z68AP-D3, Z68X-UD3H-B3.
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
}