Exemplo n.º 1
0
        public static void DeleteNodeAndChildren(this TreeNodeAsset self)
        {
            //self.UnattachFromParent();

            var removedContent = self.Preorder();

            self._hierarchy.DeleteHierarchy();

            foreach (var node in removedContent)
            {
            }
        }
Exemplo n.º 2
0
        private static RTN CreateNodeRecursively(RT tree, TreeNodeAsset nodeAsset, int height, ref int nextNodeId, out CachedTreeNode <RT, TA, TNA, RTN> .NodeHierarchy myData)
        {
            var childrenList = new List <RTN>();

            myData = new CachedTreeNode <RT, TA, TNA, RTN> .NodeHierarchy();

            var me = new RTN();

            myData.Depth         = height;
            myData.NodeId        = nextNodeId;
            myData.Asset         = (TNA)nodeAsset;
            myData.SibilingIndex = 0;
            myData.SubtreeDepth  = myData.Depth;
            myData.Tree          = tree;
            nextNodeId++;

            RTN prev = null;

            CachedTreeNode <RT, TA, TNA, RTN> .NodeHierarchy prevHierarchy = null;
            int index = 0;

            foreach (var child in nodeAsset._hierarchy.Children)
            {
                CachedTreeNode <RT, TA, TNA, RTN> .NodeHierarchy childHierarchy;
                RTN node = CreateNodeRecursively(tree, child._content, height + 1, ref nextNodeId, out childHierarchy);

                childHierarchy.Parent        = me;
                childHierarchy.Left          = prev;
                childHierarchy.SibilingIndex = index;

                childrenList.Add(node);
                myData.SubtreeDepth = Math.Max(myData.SubtreeDepth, childHierarchy.SubtreeDepth);

                if (prev != null)
                {
                    prevHierarchy.Right = node;
                    prev.InitializeHierarchy(prevHierarchy);
                }
                prev          = node;
                prevHierarchy = childHierarchy;
                index++;
            }
            if (prev != null)
            {
                prev.InitializeHierarchy(prevHierarchy);
            }

            myData.Children = childrenList.AsReadOnly();

            return(me);
        }
Exemplo n.º 3
0
 public static void UnattachFromParent(this TreeNodeAsset node)
 {
     node._hierarchy.UnattachFromParent();
 }
Exemplo n.º 4
0
 public static void ChangeParentTo(this TreeNodeAsset node, TreeNodeAsset newParent, int index)
 {
     node._hierarchy.ChangeParentTo(newParent._hierarchy, index);
 }