private void LoadNodeChildren(TreeNode node, int recursionDepth)
{
// Don't auto-recurse to deep (performance)
if (recursionDepth <= 0)
{
INode theNode = node.Tag as INode;
if (theNode.GetType() == typeof(Administrator.Nodes.NodeDomain))
{
// Don't actually list all sub-nodes to all domains. Do it later
// instead (see a few lines below)
NodeDummy dummy = new NodeDummy();
AddNode(node, dummy, 0);
return;
}
return;
}
// check if sub items are already loaded
if (node.Nodes.Count > 0)
return;
INode internalNode = (INode)node.Tag;
List<INode> subNodes = internalNode.SubNodes;
if (subNodes != null)
{
bool lockUpdate = node.IsExpanded;
if (lockUpdate)
treeNodes.BeginUpdate();
foreach (INode subNode in subNodes)
{
AddNode(node, subNode, recursionDepth-1);
}
if (lockUpdate)
treeNodes.EndUpdate();
}
}