Skip to content

Commit e77cc53

Browse files
author
slavara
committed
Merged branch develop into feature/fix_center_to_parent_after_show
2 parents 48f6ca9 + 83c1d41 commit e77cc53

File tree

5 files changed

+71
-67
lines changed

5 files changed

+71
-67
lines changed

QuickNavigate/Forms/Nodes.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,33 @@
11
using System.IO;
22
using System.Text.RegularExpressions;
33
using System.Windows.Forms;
4+
using ASCompletion;
45
using ASCompletion.Model;
56
using JetBrains.Annotations;
67

78
namespace QuickNavigate.Forms
89
{
10+
public class NodeFactory
11+
{
12+
public static TreeNode CreateTreeNode(FileModel inFile, bool isHaxe, MemberModel it)
13+
{
14+
var flags = it.Flags;
15+
var icon = PluginUI.GetIcon(flags, it.Access);
16+
var constrDecl = isHaxe && (flags & FlagType.Constructor) > 0 ? "new" : it.FullName;
17+
var node = new MemberNode(it.ToString(), icon, icon)
18+
{
19+
InFile = inFile,
20+
Tag = $"{constrDecl}@{it.LineFrom}"
21+
};
22+
return node;
23+
}
24+
25+
public static TreeNode CreateTreeNode(ClassModel classModel)
26+
{
27+
return new ClassNode(classModel, PluginUI.GetIcon(classModel.Flags, classModel.Access));
28+
}
29+
}
30+
931
public class MemberNode : TreeNode
1032
{
1133
public FileModel InFile;

QuickNavigate/Forms/QuickOutlineForm.cs

Lines changed: 27 additions & 25 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;
@@ -98,67 +97,70 @@ void RefreshTree()
9897
{
9998
tree.BeginUpdate();
10099
tree.Nodes.Clear();
101-
FillTree();
100+
FillTree(input.Text.Trim());
102101
tree.ExpandAll();
103102
tree.EndUpdate();
104103
}
105104

106-
void FillTree()
105+
void FillTree(string search)
107106
{
108107
var isHaxe = InFile.haXe;
109-
if (InFile.Members.Count > 0) AddMembers(tree.Nodes, InFile, InFile.Members, isHaxe);
108+
if (InFile.Members.Count > 0) FillNodes(tree.Nodes, InFile, InFile.Members, isHaxe, search);
110109
foreach (var classModel in InFile.Classes)
111110
{
112-
var node = FormHelper.CreateTreeNode(classModel);
111+
var node = NodeFactory.CreateTreeNode(classModel);
113112
tree.Nodes.Add(node);
114-
AddMembers(node.Nodes, InFile, classModel.Members, isHaxe, classModel.Equals(InClass));
113+
FillNodes(node.Nodes, InFile, classModel.Members, isHaxe, classModel.Equals(InClass), search);
115114
}
116115
if (SelectedNode != null || tree.Nodes.Count == 0) return;
117-
var search = input.Text.Trim();
118116
if (search.Length == 0)
119117
{
120-
if (InClass.Equals(ClassModel.VoidClass)) tree.SelectedNode = tree.Nodes[0];
118+
if (InClass.Equals(ClassModel.VoidClass)) tree.SelectedNode = tree.TopNode;
121119
else tree.SelectedNode = tree.Nodes.OfType<ClassNode>().FirstOrDefault(it => it.Model.Equals(InClass));
122120
}
123121
else
124122
{
125-
var nodes = tree.Nodes.OfType<TreeNode>().ToList().FindAll(it =>
123+
var nodes = tree.Nodes.OfType<ClassNode>().ToList().FindAll(it =>
126124
{
127-
var word = ((ClassNode) it).Model.QualifiedName;
125+
var word = it.Model.QualifiedName;
128126
var score = PluginCore.Controls.CompletionList.SmartMatch(word, search, search.Length);
129127
return score > 0 && score < 6;
130128
});
131129
tree.Nodes.Clear();
132130
if (nodes.Count == 0) return;
133131
tree.Nodes.AddRange(nodes.ToArray());
134-
tree.SelectedNode = tree.Nodes[0];
132+
tree.SelectedNode = tree.TopNode;
135133
}
136134
}
137135

138-
void AddMembers(TreeNodeCollection nodes, FileModel inFile, MemberList members, bool isHaxe)
136+
void FillNodes(TreeNodeCollection nodes, FileModel inFile, MemberList members, bool isHaxe, string search)
139137
{
140-
AddMembers(nodes, inFile, members, isHaxe, true);
138+
FillNodes(nodes, inFile, members, isHaxe, true, search);
141139
}
142140

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

153+
[NotNull]
154+
List<MemberModel> FilterTypes(List<MemberModel> list)
155+
{
156+
if (CurrentFilter != null)
157+
{
158+
var flags = (FlagType) CurrentFilter.Tag;
159+
list.RemoveAll(it => (it.Flags & flags) == 0);
160+
}
161+
return list;
162+
}
163+
162164
protected override void Navigate()
163165
{
164166
if (SelectedNode != null) DialogResult = DialogResult.OK;

QuickNavigate/Forms/TypeExplorerForm.cs

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
using System.IO;
55
using System.Linq;
66
using System.Windows.Forms;
7-
using ASCompletion;
87
using ASCompletion.Context;
98
using ASCompletion.Model;
109
using JetBrains.Annotations;
@@ -137,40 +136,40 @@ void RefreshTree()
137136
ClassNode selectedNode = null;
138137
if (search.Length > 1 && search.Contains('.') && tree.Nodes.Count > 0)
139138
{
140-
var node = SelectedNode as ClassNode ?? (ClassNode)tree.Nodes[0];
139+
var node = SelectedNode as ClassNode ?? (ClassNode) tree.TopNode;
141140
var parts = search.Split('.');
142-
if (node.Name == parts[0])
141+
if (node.Name.Equals(parts[parts.Length - 2], StringComparison.OrdinalIgnoreCase))
143142
{
144143
selectedNode = node;
145-
search = parts[1];
144+
search = parts.Last();
146145
}
147146
}
148147
tree.BeginUpdate();
149148
tree.Nodes.Clear();
150149
if (selectedNode == null)
151150
{
152-
if (search.Length == 0) FillTree();
153-
else FillTree(search);
154-
if (tree.Nodes.Count > 0) tree.SelectedNode = tree.Nodes[0];
151+
if (search.Length == 0) FillNodes(tree.Nodes);
152+
else FillNodes(tree.Nodes, search);
153+
tree.SelectedNode = tree.TopNode;
155154
}
156155
else
157156
{
158157
selectedNode.Nodes.Clear();
159158
tree.Nodes.Add(selectedNode);
160-
FillTree(selectedNode, search);
159+
FillNodes(selectedNode.Nodes, selectedNode.Model, search);
161160
tree.SelectedNode = selectedNode.FirstNode ?? selectedNode;
162161
}
163162
tree.ExpandAll();
164163
tree.EndUpdate();
165164
}
166165

167-
void FillTree()
166+
void FillNodes(TreeNodeCollection nodes)
168167
{
169168
var openedTypes = FilterTypes(this.openedTypes.ToList());
170-
if (openedTypes.Count > 0) tree.Nodes.AddRange(CreateNodes(openedTypes, string.Empty).ToArray());
169+
if (openedTypes.Count > 0) nodes.AddRange(CreateNodes(openedTypes, string.Empty).ToArray());
171170
}
172171

173-
void FillTree(string search)
172+
void FillNodes(TreeNodeCollection nodes, string search)
174173
{
175174
var openedTypes = FilterTypes(this.openedTypes.ToList());
176175
var closedTypes = FilterTypes(this.closedTypes.ToList());
@@ -190,23 +189,20 @@ void FillTree(string search)
190189
else closedMatches = SearchUtil.FindAll(closedTypes, search);
191190
var hasOpenedMatches = openedMatches.Count > 0;
192191
var hasClosedMatches = closedMatches.Count > 0;
193-
if (hasOpenedMatches) tree.Nodes.AddRange(CreateNodes(openedMatches, search).ToArray());
192+
if (hasOpenedMatches) nodes.AddRange(CreateNodes(openedMatches, search).ToArray());
194193
if (Settings.EnableItemSpacer && hasOpenedMatches && hasClosedMatches)
195-
tree.Nodes.Add(Settings.ItemSpacer);
196-
if (hasClosedMatches) tree.Nodes.AddRange(CreateNodes(closedMatches, search).ToArray());
194+
nodes.Add(Settings.ItemSpacer);
195+
if (hasClosedMatches) nodes.AddRange(CreateNodes(closedMatches, search).ToArray());
197196
}
198197

199-
void FillTree(ClassNode node, string search)
198+
void FillNodes(TreeNodeCollection nodes, ClassModel inClass, string search)
200199
{
201-
var nodes = node.Nodes;
202-
var currentClass = node.Model;
203-
var inFile = currentClass.InFile;
200+
var inFile = inClass.InFile;
204201
var isHaxe = inFile.haXe;
205-
var items = currentClass.Members.Items;
206-
if (search.Length > 0) items = SearchUtil.FindAll(items, search);
202+
var items = SearchUtil.FindAll(inClass.Members.Items, search);
207203
foreach (var it in items)
208204
{
209-
nodes.Add(FormHelper.CreateTreeNode(inFile, isHaxe, it));
205+
nodes.Add(NodeFactory.CreateTreeNode(inFile, isHaxe, it));
210206
}
211207
}
212208

@@ -232,7 +228,7 @@ static IEnumerable<ClassNode> CreateNodes([NotNull] IEnumerable<string> matches,
232228
static ClassNode CreateNode([NotNull] string type)
233229
{
234230
var classModel = TypeToClassModel[type];
235-
return (ClassNode) FormHelper.CreateTreeNode(classModel);
231+
return (ClassNode) NodeFactory.CreateTreeNode(classModel);
236232
}
237233

238234
[NotNull]

QuickNavigate/Helpers/FormHelper.cs

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -123,24 +123,6 @@ static T GetPluginUI<T>(string pluginGUID)
123123
}
124124
return default(T);
125125
}
126-
127-
public static TreeNode CreateTreeNode(FileModel inFile, bool isHaxe, MemberModel it)
128-
{
129-
var flags = it.Flags;
130-
var icon = PluginUI.GetIcon(flags, it.Access);
131-
var constrDecl = isHaxe && (flags & FlagType.Constructor) > 0 ? "new" : it.FullName;
132-
var node = new MemberNode(it.ToString(), icon, icon)
133-
{
134-
InFile = inFile,
135-
Tag = $"{constrDecl}@{it.LineFrom}"
136-
};
137-
return node;
138-
}
139-
140-
public static TreeNode CreateTreeNode(ClassModel classModel)
141-
{
142-
return new ClassNode(classModel, PluginUI.GetIcon(classModel.Flags, classModel.Access));
143-
}
144126
}
145127

146128
class ShortcutId

QuickNavigate/SearchUtil.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@ namespace QuickNavigate
77
internal static class SearchUtil
88
{
99
[NotNull]
10-
public static List<string> FindAll([NotNull] List<string> source, [NotNull] string search)
10+
public static List<string> FindAll([NotNull] List<string> items, [NotNull] string search)
1111
{
1212
var length = search.Length;
13-
var result = source.FindAll(it =>
13+
if (length == 0) return items;
14+
var result = items.FindAll(it =>
1415
{
1516
var score = PluginCore.Controls.CompletionList.SmartMatch(it, search, length);
1617
return score > 0 && score < 6;
@@ -22,6 +23,7 @@ public static List<string> FindAll([NotNull] List<string> source, [NotNull] stri
2223
public static List<MemberModel> FindAll([NotNull] List<MemberModel> items, [NotNull] string search)
2324
{
2425
var length = search.Length;
26+
if (length == 0) return items;
2527
var result = items.FindAll(it =>
2628
{
2729
var score = PluginCore.Controls.CompletionList.SmartMatch(it.FullName, search, length);

0 commit comments

Comments
 (0)