This closes #99.
This commit is contained in:
Phyxion
2019-09-23 19:29:10 +02:00
committed by GitHub
parent 63dcfe94b5
commit 73378f7c7b
632 changed files with 89302 additions and 88070 deletions
+98
View File
@@ -0,0 +1,98 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Windows.Forms;
namespace Aga.Controls.Tree
{
internal class TreeColumnCollection : Collection<TreeColumn>
{
private TreeViewAdv _treeView;
public TreeColumnCollection(TreeViewAdv treeView)
{
_treeView = treeView;
}
protected override void InsertItem(int index, TreeColumn item)
{
base.InsertItem(index, item);
BindEvents(item);
_treeView.UpdateColumns();
}
protected override void RemoveItem(int index)
{
UnbindEvents(this[index]);
base.RemoveItem(index);
_treeView.UpdateColumns();
}
protected override void SetItem(int index, TreeColumn item)
{
UnbindEvents(this[index]);
base.SetItem(index, item);
item.Owner = this;
BindEvents(item);
_treeView.UpdateColumns();
}
protected override void ClearItems()
{
foreach (TreeColumn c in Items)
UnbindEvents(c);
Items.Clear();
_treeView.UpdateColumns();
}
private void BindEvents(TreeColumn item)
{
item.Owner = this;
item.HeaderChanged += HeaderChanged;
item.IsVisibleChanged += IsVisibleChanged;
item.WidthChanged += WidthChanged;
item.SortOrderChanged += SortOrderChanged;
}
private void UnbindEvents(TreeColumn item)
{
item.Owner = null;
item.HeaderChanged -= HeaderChanged;
item.IsVisibleChanged -= IsVisibleChanged;
item.WidthChanged -= WidthChanged;
item.SortOrderChanged -= SortOrderChanged;
}
void SortOrderChanged(object sender, EventArgs e)
{
TreeColumn changed = sender as TreeColumn;
//Only one column at a time can have a sort property set
if (changed.SortOrder != SortOrder.None)
{
foreach (TreeColumn col in this)
{
if (col != changed)
col.SortOrder = SortOrder.None;
}
}
_treeView.UpdateHeaders();
}
void WidthChanged(object sender, EventArgs e)
{
_treeView.ChangeColumnWidth(sender as TreeColumn);
}
void IsVisibleChanged(object sender, EventArgs e)
{
_treeView.FullUpdate();
}
void HeaderChanged(object sender, EventArgs e)
{
_treeView.UpdateView();
}
}
}