예제 #1
0
 private void ReparentChild(Supremes.Nodes.Node child)
 {
     if (child.parentNode != null)
     {
         child.parentNode.RemoveChild(child);
     }
     child.SetParentNode(this);
 }
예제 #2
0
        internal void RemoveChild(Supremes.Nodes.Node @out)
        {
            Validate.IsTrue(@out.parentNode == this);
            int index = @out.SiblingIndex;

            childNodes.RemoveAt(index);
            ReindexChildren();
            @out.parentNode = null;
        }
예제 #3
0
 internal void AddChildren(int index, params Node[] children)
 {
     Validate.NoNullElements(children);
     for (int i = children.Length - 1; i >= 0; i--)
     {
         Supremes.Nodes.Node @in = (Supremes.Nodes.Node)children[i];
         ReparentChild(@in);
         childNodes.Insert(index, @in);
     }
     ReindexChildren();
 }
예제 #4
0
 internal void AddChildren(params Node[] children)
 {
     //most used. short circuit addChildren(int), which hits reindex children and array copy
     foreach (Node child in children)
     {
         Supremes.Nodes.Node childImpl = (Supremes.Nodes.Node)child;
         ReparentChild(childImpl);
         childNodes.Add(childImpl);
         childImpl.SiblingIndex = childNodes.Count - 1;
     }
 }
예제 #5
0
        internal void ReplaceChild(Supremes.Nodes.Node @out, Supremes.Nodes.Node @in)
        {
            Validate.IsTrue(@out.parentNode == this);
            Validate.NotNull(@in);
            if (@in.parentNode != null)
            {
                @in.parentNode.RemoveChild(@in);
            }
            int index = @out.SiblingIndex;

            childNodes[index] = @in;
            @in.parentNode    = this;
            @in.SiblingIndex  = index;
            @out.parentNode   = null;
        }