/// <summary>
        /// Replace one node with another.
        /// </summary>
        /// <param name="rootNode">The root node.</param>
        /// <param name="replaceThisNode">The node to replace.</param>
        /// <param name="replaceWith">What to replace with.</param>
        public static void Process(ITreeNode rootNode, ITreeNode replaceThisNode, ITreeNode replaceWith)
        {
            bool done = false;

            DepthFirstTraversal trav = new DepthFirstTraversal();
            trav.Traverse(rootNode, (n) =>
            {
                if (done)
                {
                    return false;
                }

                for (int i = 0; i < n.ChildNodes.Count; i++)
                {
                    ITreeNode childNode = n.ChildNodes[i];
                    if (childNode == replaceThisNode)
                    {
                        n.ChildNodes[i] = replaceWith;
                        done = true;
                        return false;
                    }
                }
                return true;
            });
        }
        /// <summary>
        /// Replace one node with another.
        /// </summary>
        /// <param name="rootNode">The root node.</param>
        /// <param name="replaceThisNode">The node to replace.</param>
        /// <param name="replaceWith">What to replace with.</param>
        public static void Process(ITreeNode rootNode, ITreeNode replaceThisNode, ITreeNode replaceWith)
        {
            bool done = false;

            DepthFirstTraversal trav = new DepthFirstTraversal();

            trav.Traverse(rootNode, (n) =>
            {
                if (done)
                {
                    return(false);
                }

                for (int i = 0; i < n.ChildNodes.Count; i++)
                {
                    ITreeNode childNode = n.ChildNodes[i];
                    if (childNode == replaceThisNode)
                    {
                        n.ChildNodes[i] = replaceWith;
                        done            = true;
                        return(false);
                    }
                }
                return(true);
            });
        }
        /// <summary>
        /// Count the nodes from this tree node.
        /// </summary>
        /// <param name="node">The tree node.</param>
        /// <returns>The node count.</returns>
        public static int Process(ITreeNode node)
        {
            int result = 0;

            DepthFirstTraversal trav = new DepthFirstTraversal();
            trav.Traverse( node, (n) =>
            {
                result++;
                return true;
            });

            return result;
        }
Example #4
0
        /// <summary>
        /// Count the nodes from this tree node.
        /// </summary>
        /// <param name="node">The tree node.</param>
        /// <returns>The node count.</returns>
        public static int Process(ITreeNode node)
        {
            int result = 0;

            DepthFirstTraversal trav = new DepthFirstTraversal();

            trav.Traverse(node, (n) =>
            {
                result++;
                return(true);
            });

            return(result);
        }
        /// <summary>
        /// Obtain the specified tree node for the specified index.
        /// </summary>
        /// <param name="index">The index.</param>
        /// <param name="node">The tree node to search from.</param>
        /// <returns>The tree node for the specified index.</returns>
        public static ITreeNode process(int index, ITreeNode node)
        {
            ITreeNode result = null;
            int nodeCount = 0;

            DepthFirstTraversal trav = new DepthFirstTraversal();
            trav.Traverse(node, (n) =>
            {
                if ( nodeCount >= index)
                {
                    if (result == null)
                    {
                        result = n;
                    }
                    return false;
                }

                nodeCount++;
                return true;
            });

            return result;
        }
Example #6
0
        /// <summary>
        /// Obtain the specified tree node for the specified index.
        /// </summary>
        /// <param name="index">The index.</param>
        /// <param name="node">The tree node to search from.</param>
        /// <returns>The tree node for the specified index.</returns>
        public static ITreeNode process(int index, ITreeNode node)
        {
            ITreeNode result    = null;
            int       nodeCount = 0;

            DepthFirstTraversal trav = new DepthFirstTraversal();

            trav.Traverse(node, (n) =>
            {
                if (nodeCount >= index)
                {
                    if (result == null)
                    {
                        result = n;
                    }
                    return(false);
                }

                nodeCount++;
                return(true);
            });

            return(result);
        }