public void CollapseExpandAll() { if (NodeQuery.AllNodes.Any(x => ListView.IsExpanded(x))) { ListView.CollapseAll(); } else { foreach (FolderTreeNode folderTreeNode in NodeQuery.FolderNodes) { ListView.Expand(folderTreeNode); } } }
public FolderData(FolderTreeNode treeNode, NlmTreeListView owner) { // Node Properties ID = treeNode.ID; if (treeNode.Parent != null) { ParentID = treeNode.Parent.ID; } Expanded = owner.IsExpanded(treeNode); // Column Properties Name = treeNode.Name; Visible = treeNode.Visible; Freeze = treeNode.Freeze; Render = treeNode.Render; Color = treeNode.Color; Box = treeNode.Box; }
// Filtering does not take into consideration nodes that are not currently visible. // This ensures that all nodes are visible that match the search string. private void ExpandParentsOfMatchedChildren(String text) { HashSet <BaseTreeNode> NodesToExpand = new HashSet <BaseTreeNode>(); foreach (BaseTreeNode treeNode in ListView.Roots) { SearchChildrenAndExpandByName(treeNode, text, NodesToExpand); } if (NodesToExpand.Count > 0) { foreach (BaseTreeNode nodeToExpand in NodesToExpand.ToList <BaseTreeNode>()) { if (!ListView.IsExpanded(nodeToExpand)) { ListView.Expand(nodeToExpand); } } } }
public LayerData(LayerTreeNode treeNode, NlmTreeListView listView, HandleMap handleMap) { ParentIDs = new List <Guid>(); // Node Properties ID = treeNode.ID; if (treeNode.Parent == null) { ParentIDs.Add(new Guid()); } else { ParentIDs.Add(treeNode.Parent.ID); } foreach (LayerTreeNode instanceParent in handleMap.GetTreeNodesByHandle(treeNode.Handle)) { if (instanceParent != treeNode) { if (instanceParent.Parent == null) { ParentIDs.Add(new Guid()); } else { ParentIDs.Add(instanceParent.Parent.ID); } } } // Column Properties Visible = treeNode.Visible; Freeze = treeNode.Freeze; Render = treeNode.Render; Box = treeNode.Box; Expanded = listView.IsExpanded(treeNode); }
// Move nodes to new parent after a drag drop operation. private void DragDropMoveNodes(BaseTreeNode target, IList dragNodes) { IList selection = ListView.SelectedObjects; ListView.BeginUpdate(); MaxEvents.NodeEvents.Unregister(); IEnumerable <BaseTreeNode> dragNodesEnum = dragNodes.Cast <BaseTreeNode>(); // Are layers or folders being dropped on layers? // If so, make the target the parent of the target. if (dragNodesEnum.All(x => x is LayerTreeNode) && target is LayerTreeNode || dragNodesEnum.All(x => x is FolderTreeNode) && target is LayerTreeNode) { target = target.Parent; } // Are objects being dropped on objects? // If so, make the target the parent of the target. if (dragNodesEnum.All(x => x is ObjectTreeNode) && target is ObjectTreeNode) { target = target.Parent; } // Do we move to the root or move under a treeNode? // If the target is null, we have to move to root. if (target != null && target is LayerTreeNode) { // Move the treenodes in the listView. NodeParentEngine.MoveTreeNodes(dragNodes.Cast <BaseTreeNode>().ToList(), target); //TODO: //IEnumerable<UIntPtr> handles = dragNodes.Cast<IEnumerable<BaseTreeNode>>() // .Where(x => x is ObjectTreeNode) // .Cast<ObjectTreeNode>() // .Select(x => x.Handle); // Move nodes to new layer in max. List <UIntPtr> handles = new List <UIntPtr>(); foreach (BaseTreeNode child in dragNodes) { ObjectTreeNode objectChild = child as ObjectTreeNode; if (objectChild != null) { handles.Add(objectChild.Handle); } } IILayer layer = MaxAnimatable.GetAnimByHandle(((LayerTreeNode)target).Handle) as IILayer; if (layer != null) { MaxNodes.MoveNodesToLayer(handles, layer); } } else { NodeParentEngine.MoveTreeNodes(dragNodes.Cast <BaseTreeNode>().ToList(), target); } MaxEvents.NodeEvents.Register(); // Default after drop behaviour tries to select nodes based on itemIndex. As nodes have moved this does not work. // Instead, return saved selection to SelectedObjects property, and make sure dropped Objects are visible. if (!ListView.IsExpanded(target)) { ListView.Expand(target); } ListView.Sort(ListView.NlmColumns.NameColumn, SortOrder.Ascending); ListView.SelectedObjects = selection; ListView.EndUpdate(); }