Skip to content

Commit ae4f800

Browse files
author
SlavaRa
committed
WIP
1 parent 20ed6d2 commit ae4f800

File tree

1 file changed

+25
-23
lines changed

1 file changed

+25
-23
lines changed

QuickNavigate/Forms/QuickOutlineForm.cs

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
using System.Drawing;
44
using System.Linq;
55
using System.Windows.Forms;
6-
using ASCompletion;
76
using ASCompletion.Context;
87
using ASCompletion.Model;
98
using JetBrains.Annotations;
@@ -101,67 +100,70 @@ void RefreshTree()
101100
{
102101
tree.BeginUpdate();
103102
tree.Nodes.Clear();
104-
FillTree();
103+
FillTree(input.Text.Trim());
105104
tree.ExpandAll();
106105
tree.EndUpdate();
107106
}
108107

109-
void FillTree()
108+
void FillTree(string search)
110109
{
111110
var isHaxe = InFile.haXe;
112-
if (InFile.Members.Count > 0) AddMembers(tree.Nodes, InFile, InFile.Members, isHaxe);
111+
if (InFile.Members.Count > 0) FillNodes(tree.Nodes, InFile, InFile.Members, isHaxe, search);
113112
foreach (var classModel in InFile.Classes)
114113
{
115114
var node = NodeFactory.CreateTreeNode(classModel);
116115
tree.Nodes.Add(node);
117-
AddMembers(node.Nodes, InFile, classModel.Members, isHaxe, classModel.Equals(InClass));
116+
FillNodes(node.Nodes, InFile, classModel.Members, isHaxe, classModel.Equals(InClass), search);
118117
}
119118
if (SelectedNode != null || tree.Nodes.Count == 0) return;
120-
var search = input.Text.Trim();
121119
if (search.Length == 0)
122120
{
123-
if (InClass.Equals(ClassModel.VoidClass)) tree.SelectedNode = tree.Nodes[0];
121+
if (InClass.Equals(ClassModel.VoidClass)) tree.SelectedNode = tree.TopNode;
124122
else tree.SelectedNode = tree.Nodes.OfType<ClassNode>().FirstOrDefault(it => it.Model.Equals(InClass));
125123
}
126124
else
127125
{
128-
var nodes = tree.Nodes.OfType<TreeNode>().ToList().FindAll(it =>
126+
var nodes = tree.Nodes.OfType<ClassNode>().ToList().FindAll(it =>
129127
{
130-
var word = ((ClassNode) it).Model.QualifiedName;
128+
var word = it.Model.QualifiedName;
131129
var score = PluginCore.Controls.CompletionList.SmartMatch(word, search, search.Length);
132130
return score > 0 && score < 6;
133131
});
134132
tree.Nodes.Clear();
135133
if (nodes.Count == 0) return;
136134
tree.Nodes.AddRange(nodes.ToArray());
137-
tree.SelectedNode = tree.Nodes[0];
135+
tree.SelectedNode = tree.TopNode;
138136
}
139137
}
140138

141-
void AddMembers(TreeNodeCollection nodes, FileModel inFile, MemberList members, bool isHaxe)
139+
void FillNodes(TreeNodeCollection nodes, FileModel inFile, MemberList members, bool isHaxe, string search)
142140
{
143-
AddMembers(nodes, inFile, members, isHaxe, true);
141+
FillNodes(nodes, inFile, members, isHaxe, true, search);
144142
}
145143

146-
void AddMembers(TreeNodeCollection nodes, FileModel inFile, MemberList members, bool isHaxe, bool currentClass)
144+
void FillNodes(TreeNodeCollection nodes, FileModel inFile, MemberList members, bool isHaxe, bool currentClass, string search)
147145
{
148-
var items = members.Items.ToList();
149-
if (CurrentFilter != null)
150-
{
151-
var flags = (FlagType) CurrentFilter.Tag;
152-
items.RemoveAll(it => (it.Flags & flags) == 0);
153-
}
154-
var search = input.Text.Trim();
155-
var searchIsNotEmpty = search.Length > 0;
156-
if (searchIsNotEmpty) items = SearchUtil.FindAll(items, search);
146+
var items = FilterTypes(members.Items.ToList());
147+
items = SearchUtil.FindAll(items, search);
157148
foreach (var it in items)
158149
{
159150
nodes.Add(NodeFactory.CreateTreeNode(inFile, isHaxe, it));
160151
}
161-
if ((searchIsNotEmpty && SelectedNode == null || currentClass) && nodes.Count > 0)
152+
if ((search.Length > 0 && SelectedNode == null || currentClass) && nodes.Count > 0)
162153
tree.SelectedNode = nodes[0];
163154
}
164155

156+
[NotNull]
157+
List<MemberModel> FilterTypes(List<MemberModel> list)
158+
{
159+
if (CurrentFilter != null)
160+
{
161+
var flags = (FlagType) CurrentFilter.Tag;
162+
list.RemoveAll(it => (it.Flags & flags) == 0);
163+
}
164+
return list;
165+
}
166+
165167
protected override void Navigate()
166168
{
167169
if (SelectedNode != null) DialogResult = DialogResult.OK;

0 commit comments

Comments
 (0)