External/Aga.Controls/Tree/TreeColumnCollection.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.
moel@345
     1
using System;
moel@345
     2
using System.Collections.Generic;
moel@345
     3
using System.Text;
moel@345
     4
using System.Collections.ObjectModel;
moel@345
     5
using System.ComponentModel;
moel@345
     6
using System.Windows.Forms;
moel@345
     7
moel@345
     8
namespace Aga.Controls.Tree
moel@345
     9
{
moel@345
    10
	internal class TreeColumnCollection : Collection<TreeColumn>
moel@345
    11
	{
moel@345
    12
		private TreeViewAdv _treeView;
moel@345
    13
moel@345
    14
		public TreeColumnCollection(TreeViewAdv treeView)
moel@345
    15
		{
moel@345
    16
			_treeView = treeView;
moel@345
    17
		}
moel@345
    18
moel@345
    19
		protected override void InsertItem(int index, TreeColumn item)
moel@345
    20
		{
moel@345
    21
			base.InsertItem(index, item);
moel@345
    22
			BindEvents(item);
moel@345
    23
			_treeView.UpdateColumns();
moel@345
    24
		}
moel@345
    25
moel@345
    26
		protected override void RemoveItem(int index)
moel@345
    27
		{
moel@345
    28
			UnbindEvents(this[index]);
moel@345
    29
			base.RemoveItem(index);
moel@345
    30
			_treeView.UpdateColumns();
moel@345
    31
		}
moel@345
    32
moel@345
    33
		protected override void SetItem(int index, TreeColumn item)
moel@345
    34
		{
moel@345
    35
			UnbindEvents(this[index]);
moel@345
    36
			base.SetItem(index, item);
moel@345
    37
			item.Owner = this;
moel@345
    38
			BindEvents(item);
moel@345
    39
			_treeView.UpdateColumns();
moel@345
    40
		}
moel@345
    41
moel@345
    42
		protected override void ClearItems()
moel@345
    43
		{
moel@345
    44
			foreach (TreeColumn c in Items)
moel@345
    45
				UnbindEvents(c);
moel@345
    46
			Items.Clear();
moel@345
    47
			_treeView.UpdateColumns();
moel@345
    48
		}
moel@345
    49
moel@345
    50
		private void BindEvents(TreeColumn item)
moel@345
    51
		{
moel@345
    52
			item.Owner = this;
moel@345
    53
			item.HeaderChanged += HeaderChanged;
moel@345
    54
			item.IsVisibleChanged += IsVisibleChanged;
moel@345
    55
			item.WidthChanged += WidthChanged;
moel@345
    56
			item.SortOrderChanged += SortOrderChanged;
moel@345
    57
		}
moel@345
    58
moel@345
    59
		private void UnbindEvents(TreeColumn item)
moel@345
    60
		{
moel@345
    61
			item.Owner = null;
moel@345
    62
			item.HeaderChanged -= HeaderChanged;
moel@345
    63
			item.IsVisibleChanged -= IsVisibleChanged;
moel@345
    64
			item.WidthChanged -= WidthChanged;
moel@345
    65
			item.SortOrderChanged -= SortOrderChanged;
moel@345
    66
		}
moel@345
    67
moel@345
    68
		void SortOrderChanged(object sender, EventArgs e)
moel@345
    69
		{
moel@345
    70
			TreeColumn changed = sender as TreeColumn;
moel@345
    71
			//Only one column at a time can have a sort property set
moel@345
    72
			if (changed.SortOrder != SortOrder.None)
moel@345
    73
			{
moel@345
    74
				foreach (TreeColumn col in this)
moel@345
    75
				{
moel@345
    76
					if (col != changed)
moel@345
    77
						col.SortOrder = SortOrder.None;
moel@345
    78
				}
moel@345
    79
			}
moel@345
    80
			_treeView.UpdateHeaders();
moel@345
    81
		}
moel@345
    82
moel@345
    83
		void WidthChanged(object sender, EventArgs e)
moel@345
    84
		{
moel@345
    85
			_treeView.ChangeColumnWidth(sender as TreeColumn);
moel@345
    86
		}
moel@345
    87
moel@345
    88
		void IsVisibleChanged(object sender, EventArgs e)
moel@345
    89
		{
moel@345
    90
			_treeView.FullUpdate();
moel@345
    91
		}
moel@345
    92
moel@345
    93
		void HeaderChanged(object sender, EventArgs e)
moel@345
    94
		{
moel@345
    95
			_treeView.UpdateView();
moel@345
    96
		}
moel@345
    97
	}
moel@345
    98
}