hMailServer.Administrator.formMain.LoadNodeChildren C# (CSharp) Method

LoadNodeChildren() private method

private LoadNodeChildren ( TreeNode node, int recursionDepth ) : void
node System.Windows.Forms.TreeNode
recursionDepth int
return void
        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();
            }
        }