public void MoveElements(TreeItem parentItem, int insertionIndex, List <TreeItem> elements) { if (insertionIndex < 0) { throw new ArgumentException(Maintainer.ConstructError("Invalid input: insertionIndex is -1, client needs to decide what index elements should be reparented at!")); } if (parentItem == null) { return; } if (insertionIndex > 0) { insertionIndex -= parentItem.Children.GetRange(0, insertionIndex).Count(elements.Contains); } foreach (var draggedItem in elements) { draggedItem.Parent.Children.Remove(draggedItem); draggedItem.Parent = parentItem; } if (parentItem.Children == null) { parentItem.Children = new List <TreeItem>(); } parentItem.Children.InsertRange(insertionIndex, elements); TreeItemUtility.UpdateDepthValues(root); TreeItemUtility.TreeToList(root, data); Changed(); }
public void AddElements(IList <T> elements, TreeItem parent, int insertPosition) { if (elements == null) { throw new ArgumentNullException("elements", Maintainer.ConstructError("elements is null!")); } if (elements.Count == 0) { throw new ArgumentNullException("elements", Maintainer.ConstructError("elements Count is 0: nothing to add!")); } if (parent == null) { throw new ArgumentNullException("parent", Maintainer.ConstructError("parent is null!")); } if (parent.Children == null) { parent.Children = new List <TreeItem>(); } parent.Children.InsertRange(insertPosition, elements.Cast <TreeItem> ()); foreach (var element in elements) { element.Parent = parent; element.depth = parent.depth + 1; TreeItemUtility.UpdateDepthValues(element); } TreeItemUtility.TreeToList(root, data); Changed(); }
public void RemoveElements(IList <T> elements) { foreach (var element in elements) { if (element == root) { throw new ArgumentException(Maintainer.ConstructError("It is not allowed to remove the root element!")); } } var commonAncestors = TreeItemUtility.FindCommonAncestorsWithinList(elements); foreach (var element in commonAncestors) { element.Parent.Children.Remove(element); element.Parent = null; } TreeItemUtility.TreeToList(root, data); Changed(); }
public void AddElement(T element, TreeItem parent, int insertPosition) { if (element == null) { throw new ArgumentNullException("element", Maintainer.ConstructError("element is null!")); } if (parent == null) { throw new ArgumentNullException("parent", Maintainer.ConstructError("parent is null!")); } if (parent.Children == null) { parent.Children = new List <TreeItem> (); } parent.Children.Insert(insertPosition, element); element.Parent = parent; TreeItemUtility.UpdateDepthValues(parent); TreeItemUtility.TreeToList(root, data); Changed(); }