95 lines
1.9 KiB
C#
95 lines
1.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.ComponentModel.Design;
|
|
using System.Collections.ObjectModel;
|
|
using System.ComponentModel;
|
|
using System.Drawing.Design;
|
|
|
|
namespace Aga.Controls.Tree.NodeControls
|
|
{
|
|
internal class NodeControlsCollection : Collection<NodeControl>
|
|
{
|
|
private TreeViewAdv _tree;
|
|
|
|
public NodeControlsCollection(TreeViewAdv tree)
|
|
{
|
|
_tree = tree;
|
|
}
|
|
|
|
protected override void ClearItems()
|
|
{
|
|
_tree.BeginUpdate();
|
|
try
|
|
{
|
|
while (this.Count != 0)
|
|
this.RemoveAt(this.Count - 1);
|
|
}
|
|
finally
|
|
{
|
|
_tree.EndUpdate();
|
|
}
|
|
}
|
|
|
|
protected override void InsertItem(int index, NodeControl item)
|
|
{
|
|
if (item == null)
|
|
throw new ArgumentNullException("item");
|
|
|
|
if (item.Parent != _tree)
|
|
{
|
|
if (item.Parent != null)
|
|
{
|
|
item.Parent.NodeControls.Remove(item);
|
|
}
|
|
base.InsertItem(index, item);
|
|
item.AssignParent(_tree);
|
|
_tree.FullUpdate();
|
|
}
|
|
}
|
|
|
|
protected override void RemoveItem(int index)
|
|
{
|
|
NodeControl value = this[index];
|
|
value.AssignParent(null);
|
|
base.RemoveItem(index);
|
|
_tree.FullUpdate();
|
|
}
|
|
|
|
protected override void SetItem(int index, NodeControl item)
|
|
{
|
|
if (item == null)
|
|
throw new ArgumentNullException("item");
|
|
|
|
_tree.BeginUpdate();
|
|
try
|
|
{
|
|
RemoveAt(index);
|
|
InsertItem(index, item);
|
|
}
|
|
finally
|
|
{
|
|
_tree.EndUpdate();
|
|
}
|
|
}
|
|
}
|
|
|
|
internal class NodeControlCollectionEditor : CollectionEditor
|
|
{
|
|
private Type[] _types;
|
|
|
|
public NodeControlCollectionEditor(Type type)
|
|
: base(type)
|
|
{
|
|
_types = new Type[] { typeof(NodeTextBox), typeof(NodeIntegerTextBox), typeof(NodeDecimalTextBox),
|
|
typeof(NodeComboBox), typeof(NodeCheckBox),
|
|
typeof(NodeStateIcon), typeof(NodeIcon), typeof(NodeNumericUpDown), typeof(ExpandingIcon) };
|
|
}
|
|
|
|
protected override System.Type[] CreateNewItemTypes()
|
|
{
|
|
return _types;
|
|
}
|
|
}
|
|
}
|