/// <summary> /// Retrieves a node using the .ToString() representations of its ancestors. /// </summary> public SharpTreeNode FindNodeByPath(string[] path, bool returnBestMatch) { if (path == null) { return(null); } SharpTreeNode node = treeView.Root; SharpTreeNode bestMatch = node; foreach (var element in path) { if (node == null) { break; } bestMatch = node; node.EnsureLazyChildren(); var ilSpyTreeNode = node as ILSpyTreeNode; if (ilSpyTreeNode != null) { ilSpyTreeNode.EnsureChildrenFiltered(); } node = node.Children.FirstOrDefault(c => c.ToString() == element); } if (returnBestMatch) { return(node ?? bestMatch); } else { return(node); } }
void Search(PEFile module, Resource resource, SharpTreeNode parent, SharpTreeNode node, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); if (node is ResourceTreeNode treeNode) { if (!CheckVisibility(treeNode.Resource)) { return; } resource = treeNode.Resource; } if (node.Text != null && IsMatch((string)node.Text)) { OnFoundResult(module, resource, node, parent); } if (!searchInside) { return; } node.EnsureLazyChildren(); foreach (var child in node.Children) { Search(module, resource, node, child, cancellationToken); } }
private SharpTreeNode GetLastGrandChild(SharpTreeNode node) { while (true) { var item = node as ObjectViewModel; if (!CanLoadChildrenForSearch(item)) { return(node); } if (searchExpandNodes) { if (!item.IsChildrenLoaded) { item.IsChildrenLoadedBySearch = true; } node.EnsureLazyChildren(); } if (node.Children.Count == 0) { if (item.IsChildrenLoadedBySearch == true) { item.UnloadChildren(); item.IsChildrenLoadedBySearch = false; } return(node); } node = node.Children.Last(); } }
private SharpTreeNode GetFirstChild(SharpTreeNode node) { var item = node as ObjectViewModel; if (!CanLoadChildrenForSearch(item)) { return(null); } if (!searchExpandNodes && !node.IsExpanded) { return(null); } if (searchExpandNodes) { if (!item.IsChildrenLoaded) { item.IsChildrenLoadedBySearch = true; } node.EnsureLazyChildren(); } foreach (var child in node.Children) { return(child); } return(null); }
//--------------------------------------------------------------------- static void ExpandAllNodes(SharpTreeNode node) { node.EnsureLazyChildren(); foreach (var child in node.Children) { ExpandAllNodes(child); } }
static SharpTreeNodeCollection ExpandAndGetChildren(SharpTreeNode node) { if (node is not PackageFolderTreeNode) { return(null); } node.EnsureLazyChildren(); return(node.Children); }