Пример #1
0
 private void OnRemoveChildComplete(LazinatorGeneralTree <T> child)
 {
     InitializeLocationsIfNecessary();
     Locations.Remove(child.Item);
     foreach (var grandchild in child.GetChildren())
     {
         OnRemoveChildComplete(grandchild);
     }
 }
Пример #2
0
 protected internal void InsertChildTree(LazinatorGeneralTree <T> childTree, int index)
 {
     if (Children == null)
     {
         Children = new LazinatorList <LazinatorGeneralTree <T> >();
     }
     Children.Insert(index, childTree);
     OnAddChild(childTree);
     ResetDescendantIndices();
 }
Пример #3
0
 public LazinatorGeneralTree <T> AddChildTree(LazinatorGeneralTree <T> childTree)
 {
     if (Children == null)
     {
         Children = new LazinatorList <LazinatorGeneralTree <T> >();
     }
     Children.Add(childTree);
     SetChildInformation(childTree, Children.Count - 1, true);
     return(childTree);
 }
Пример #4
0
        public LazinatorGeneralTree <T> AddChild(T child)
        {
            if (Children == null)
            {
                Children = new LazinatorList <LazinatorGeneralTree <T> >();
            }
            LazinatorGeneralTree <T> childTree = CreateTree(child);

            return(AddChildTree(childTree));
        }
Пример #5
0
        private void OnAddChildComplete(LazinatorGeneralTree <T> child)
        {
            InitializeLocationsIfNecessary();
            var location = ConvertToLazinatorList(child.GetLocationInTree());

            Locations[child.Item] = location;
            foreach (var grandchild in child.GetChildren())
            {
                OnAddChildComplete(grandchild);
            }
        }
Пример #6
0
        private void MergeInSingleNode(LazinatorLocationAwareTree <T> nodeToMergeIn, LazinatorGeneralTree <T> placeInTreeToMergeIn)
        {
            LazinatorLocationAwareTree <T> parentInThisTree = (LazinatorLocationAwareTree <T>)GetTreeForItem(placeInTreeToMergeIn.Item);
            var originalChildren = nodeToMergeIn.Children;

            nodeToMergeIn.Children = null;
            var descendantClone = nodeToMergeIn.CloneNoBuffer();

            parentInThisTree.AddChildTree(descendantClone);
            nodeToMergeIn.Children = originalChildren;
        }
Пример #7
0
        public bool RemoveChildTree(LazinatorGeneralTree <T> childTree)
        {
            bool removeSuccessful = Children.Remove(childTree);

            if (removeSuccessful)
            {
                OnRemoveChild(childTree);
                ResetDescendantIndices();
                return(true);
            }
            return(false);
        }
Пример #8
0
        protected void SetChildInformation(LazinatorGeneralTree <T> child, int index, bool addingChild)
        {
            child.ParentTree = this;
            child.Level      = Level + 1;
            child.Index      = index;
            if (addingChild)
            {
                OnAddChild(child);
                child.ResetDescendantIndices();
            }

            Initialized = true;
        }
Пример #9
0
        public virtual LazinatorGeneralTree <T> InsertChild(T child, int index)
        {
            if (Children == null)
            {
                Children = new LazinatorList <LazinatorGeneralTree <T> >();
            }
            int childrenCount = Children.Count();
            LazinatorGeneralTree <T> childTree = null;

            if (Children == null || index == childrenCount)
            {
                childTree = AddChild(child);
            }
            else
            {
                if (index < 0 || index > childrenCount)
                {
                    throw new ArgumentException("Invalid index");
                }
                childTree = CreateTree(child);
                InsertChildTree(childTree, index);
            }
            return(childTree);
        }
Пример #10
0
 protected override void OnRemoveChild(LazinatorGeneralTree <T> child)
 {
     GetLocationAwareRoot().OnRemoveChildComplete(child);
 }
Пример #11
0
 protected virtual void OnRemoveChild(LazinatorGeneralTree <T> child)
 {
 }