void ApplyFilterToChild(ILSpyTreeNode child) { FilterResult r; if (this.FilterSettings == null) r = FilterResult.Match; else r = child.Filter(this.FilterSettings); switch (r) { case FilterResult.Hidden: child.IsHidden = true; break; case FilterResult.Match: child.FilterSettings = StripSearchTerm(this.FilterSettings); child.IsHidden = false; break; case FilterResult.Recurse: child.FilterSettings = this.FilterSettings; child.EnsureChildrenFiltered(); child.IsHidden = child.Children.All(c => c.IsHidden); break; case FilterResult.MatchAndRecurse: child.FilterSettings = StripSearchTerm(this.FilterSettings); child.EnsureChildrenFiltered(); child.IsHidden = child.Children.All(c => c.IsHidden); break; default: throw new InvalidEnumArgumentException(); } }
/// <summary> /// Retrieves a node using the NodePathName property of its ancestors. /// </summary> public ILSpyTreeNode FindNodeByPath(FullNodePathName fullPath) { ILSpyTreeNode node = this; foreach (var name in fullPath.Names) { if (node == null) { break; } node.EnsureChildrenFiltered(); node = (ILSpyTreeNode)node.Children.FirstOrDefault(c => ((ILSpyTreeNode)c).NodePathName == name); } return(node == this ? null : node); }