コード例 #1
0
        public void MoveElements(TreeElement parentElement, int insertionIndex, List <TreeElement> 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 (parentElement == null)
            {
                return;
            }

            if (insertionIndex > 0)
            {
                insertionIndex -= parentElement.children.GetRange(0, insertionIndex).Count(elements.Contains);
            }

            foreach (var draggedItem in elements)
            {
                draggedItem.parent.children.Remove(draggedItem);
                draggedItem.parent = parentElement;
            }

            if (parentElement.children == null)
            {
                parentElement.children = new List <TreeElement>();
            }

            parentElement.children.InsertRange(insertionIndex, elements);

            TreeElementUtility.UpdateDepthValues(root);
            TreeElementUtility.TreeToList(root, data);

            Changed();
        }
コード例 #2
0
        public void AddElements(IList <T> elements, TreeElement 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 <TreeElement>();
            }

            parent.children.InsertRange(insertPosition, elements.Cast <TreeElement> ());
            foreach (var element in elements)
            {
                element.parent = parent;
                element.depth  = parent.depth + 1;
                TreeElementUtility.UpdateDepthValues(element);
            }

            TreeElementUtility.TreeToList(root, data);

            Changed();
        }
コード例 #3
0
        public void AddElement(T element, TreeElement 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 <TreeElement> ();
            }

            parent.children.Insert(insertPosition, element);
            element.parent = parent;

            TreeElementUtility.UpdateDepthValues(parent);
            TreeElementUtility.TreeToList(root, data);

            Changed();
        }