/// <summary> /// Adds a project tree node as a child of another project tree node /// </summary> /// <param name="node">The project node to add as a child of another node</param> /// <param name="parent">The parent node to child the first node</param> /// <param name="operation">The operation to perform</param> protected void InternalSetParent(ProjectTreeNode node, NestedProjectTreeNode parent, SetParentOperation operation) { if (operation == SetParentOperation.Add) { if (node.parentNode != parent) { throw new ArgumentException(@"The provided node is not a child of this node", nameof(node)); } } else { if (node.parentNode != null) { throw new ArgumentException(@"Cannot add as a child a node that is already parented by another node", nameof(node)); } } node.parentNode = parent; }
/// <summary> /// Removes a project tree node as a child of this project tree node /// </summary> /// <param name="node">The project node to remove as a child of this node</param> public void RemoveChild(ProjectTreeNode node) { InternalSetParent(node, this, SetParentOperation.Remove); childrenNodes.Remove(node); }
/// <summary> /// Adds a project tree node as a child of this project tree node /// </summary> /// <param name="node">The project node to add as a child of this node</param> public void AddChild(ProjectTreeNode node) { InternalSetParent(node, this, SetParentOperation.Add); childrenNodes.Add(node); }