External/Aga.Controls/Tree/Input/InputWithShift.cs
author StephaneLenclud
Thu, 18 Apr 2013 23:25:10 +0200
branchMiniDisplay
changeset 444 9b09e2ee0968
permissions -rw-r--r--
Front View plug-in does not init if no sensor added.
Fixing some format to make strings shorter.
Now trying to start SoundGraphAccess.exe process from same directory.
Packed mode now can display three sensors along with the current time.
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Text;
     4 
     5 namespace Aga.Controls.Tree
     6 {
     7 	internal class InputWithShift: NormalInputState
     8 	{
     9 		public InputWithShift(TreeViewAdv tree): base(tree)
    10 		{
    11 		}
    12 
    13 		protected override void FocusRow(TreeNodeAdv node)
    14 		{
    15 			Tree.SuspendSelectionEvent = true;
    16 			try
    17 			{
    18 				if (Tree.SelectionMode == TreeSelectionMode.Single || Tree.SelectionStart == null)
    19 					base.FocusRow(node);
    20 				else if (CanSelect(node))
    21 				{
    22 					SelectAllFromStart(node);
    23 					Tree.CurrentNode = node;
    24 					Tree.ScrollTo(node);
    25 				}
    26 			}
    27 			finally
    28 			{
    29 				Tree.SuspendSelectionEvent = false;
    30 			}
    31 		}
    32 
    33 		protected override void DoMouseOperation(TreeNodeAdvMouseEventArgs args)
    34 		{
    35 			if (Tree.SelectionMode == TreeSelectionMode.Single || Tree.SelectionStart == null)
    36 			{
    37 				base.DoMouseOperation(args);
    38 			}
    39 			else if (CanSelect(args.Node))
    40 			{
    41 				Tree.SuspendSelectionEvent = true;
    42 				try
    43 				{
    44 					SelectAllFromStart(args.Node);
    45 				}
    46 				finally
    47 				{
    48 					Tree.SuspendSelectionEvent = false;
    49 				}
    50 			}
    51 		}
    52 
    53 		protected override void MouseDownAtEmptySpace(TreeNodeAdvMouseEventArgs args)
    54 		{
    55 		}
    56 
    57 		private void SelectAllFromStart(TreeNodeAdv node)
    58 		{
    59 			Tree.ClearSelectionInternal();
    60 			int a = node.Row;
    61 			int b = Tree.SelectionStart.Row;
    62 			for (int i = Math.Min(a, b); i <= Math.Max(a, b); i++)
    63 			{
    64 				if (Tree.SelectionMode == TreeSelectionMode.Multi || Tree.RowMap[i].Parent == node.Parent)
    65 					Tree.RowMap[i].IsSelected = true;
    66 			}
    67 		}
    68 	}
    69 }