private void ReparentChild(Supremes.Nodes.Node child) { if (child.parentNode != null) { child.parentNode.RemoveChild(child); } child.SetParentNode(this); }
internal void RemoveChild(Supremes.Nodes.Node @out) { Validate.IsTrue(@out.parentNode == this); int index = @out.SiblingIndex; childNodes.RemoveAt(index); ReindexChildren(); @out.parentNode = null; }
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(); }
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; } }
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; }