void FillTree(string search) { var isHaxe = InFile.haXe; if (InFile.Members.Count > 0) { FillNodes(tree.Nodes, InFile, InFile.Members, isHaxe, search); } foreach (var classModel in InFile.Classes) { var node = NodeFactory.CreateTreeNode(classModel); tree.Nodes.Add(node); FillNodes(node.Nodes, InFile, classModel.Members, isHaxe, classModel.Equals(InClass), search); } if (SelectedNode != null || tree.Nodes.Count == 0) { return; } if (search.Length == 0) { if (InClass.Equals(ClassModel.VoidClass)) { tree.SelectedNode = tree.TopNode; } else { tree.SelectedNode = tree.Nodes.OfType <ClassNode>().FirstOrDefault(it => it.Model.Equals(InClass)); } } else { var nodes = tree.Nodes.OfType <ClassNode>().ToList().FindAll(it => { var word = it.Model.QualifiedName; var score = PluginCore.Controls.CompletionList.SmartMatch(word, search, search.Length); return(score > 0 && score < 6); }); tree.Nodes.Clear(); if (nodes.Count == 0) { return; } tree.Nodes.AddRange(nodes.ToArray()); tree.SelectedNode = tree.TopNode; } }