// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
//
-#if NET_2_0
using System;
using System.Web.UI;
node.Tree = tree;
}
- public TreeNode this [int i] {
- get { return (TreeNode) items [i]; }
+ public TreeNode this [int index] {
+ get { return (TreeNode) items [index]; }
}
public void Add (TreeNode child)
internal void Add (TreeNode child, bool updateParent)
{
int index = items.Add (child);
+
+ if (parent != null)
+ parent.HadChildrenBeforePopulating = true;
if (!updateParent)
return;
}
}
- public bool Contains (TreeNode child)
+ public bool Contains (TreeNode c)
{
- return items.Contains (child);
+ return items.Contains (c);
}
public void CopyTo (TreeNode[] nodeArray, int index)
return items.GetEnumerator ();
}
- public int IndexOf (TreeNode node)
+ public int IndexOf (TreeNode value)
{
- return items.IndexOf (node);
+ return items.IndexOf (value);
}
- public void Remove (TreeNode node)
+ public void Remove (TreeNode value)
{
- int i = IndexOf (node);
+ int i = IndexOf (value);
if (i == -1) return;
items.RemoveAt (i);
if (tree != null)
- node.Tree = null;
+ value.Tree = null;
if (marked) {
SetDirty ();
}
items.Clear ();
for (int n = 1; n < its.Length; n++) {
- TreeNode item = new TreeNode ();
+ var pair = its [n] as Pair;
+ if (pair == null)
+ throw new InvalidOperationException ("Broken view state (item " + n + ")");
+
+ TreeNode item;
+ Type type = pair.First as Type;
+
+ if (type == null)
+ item = new TreeNode ();
+ else
+ item = Activator.CreateInstance (pair.First as Type) as TreeNode;
Add (item);
- object ns = its [n];
+ object ns = pair.Second;
if (ns != null)
((IStateManager) item).LoadViewState (ns);
}
}
else {
for (int n = 1; n < its.Length; n++) {
- Pair pair = (Pair) its [n];
+ var pair = its [n] as Pair;
+ if (pair == null)
+ throw new InvalidOperationException ("Broken view state " + n + ")");
+
int oi = (int) pair.First;
TreeNode node = (TreeNode) items [oi];
((IStateManager) node).LoadViewState (pair.Second);
for (int n = 0; n < items.Count; n++) {
TreeNode node = items [n] as TreeNode;
object ns = ((IStateManager) node).SaveViewState ();
- state [n + 1] = ns;
+ Type type = node.GetType ();
+ state [n + 1] = new Pair (type == typeof (TreeNode) ? null : type, ns);
}
}
} else {
}
}
-#endif