Skip to content

Commit 7d609d1

Browse files
committed
restored Code Explorer navigation / closes #230.
1 parent f1534b3 commit 7d609d1

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

RetailCoder.VBE/VBA/ParseTreeListeners/TreeViewListener.cs

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
using System.Collections.Generic;
22
using System.Linq;
33
using System.Windows.Forms;
4+
using Antlr4.Runtime;
5+
using Rubberduck.Extensions;
46
using Rubberduck.Inspections;
57
using Rubberduck.VBA.Grammar;
68
using Rubberduck.VBA.Nodes;
@@ -9,11 +11,13 @@ namespace Rubberduck.VBA.ParseTreeListeners
911
{
1012
public class TreeViewListener : IVBBaseListener, IExtensionListener<TreeNode>
1113
{
14+
private readonly QualifiedModuleName _name;
1215
private readonly TreeNode _tree;
1316
private bool _isInDeclarationsSection = true;
1417

1518
public TreeViewListener(QualifiedModuleName name)
1619
{
20+
_name = name;
1721
_tree = new TreeNode(name.ModuleName);
1822
}
1923

@@ -40,6 +44,7 @@ public override void EnterVariableSubStmt(VBParser.VariableSubStmtContext contex
4044
: "PrivateField";
4145

4246
node.SelectedImageKey = node.ImageKey;
47+
node.Tag = context.GetQualifiedSelection(_name);
4348
_tree.Nodes.Add(node);
4449
}
4550

@@ -61,6 +66,7 @@ public override void EnterConstSubStmt(VBParser.ConstSubStmtContext context)
6166
: "PrivateConst";
6267

6368
node.SelectedImageKey = node.ImageKey;
69+
node.Tag = context.GetQualifiedSelection(_name);
6470
_tree.Nodes.Add(node);
6571
}
6672

@@ -73,6 +79,7 @@ public override void EnterEnumerationStmt(VBParser.EnumerationStmtContext contex
7379
var memberNode = node.Nodes.Add(member.GetText());
7480
memberNode.ImageKey = "EnumItem";
7581
memberNode.SelectedImageKey = memberNode.ImageKey;
82+
memberNode.Tag = member.GetQualifiedSelection(_name);
7683
}
7784

7885
var accessibility = context.visibility() == null
@@ -84,7 +91,7 @@ public override void EnterEnumerationStmt(VBParser.EnumerationStmtContext contex
8491
: "PrivateEnum";
8592

8693
node.SelectedImageKey = node.ImageKey;
87-
94+
node.Tag = context.GetQualifiedSelection(_name);
8895
_tree.Nodes.Add(node);
8996
}
9097

@@ -97,6 +104,7 @@ public override void EnterTypeStmt(VBParser.TypeStmtContext context)
97104
var memberNode = node.Nodes.Add(member.GetText());
98105
memberNode.ImageKey = "PublicField";
99106
memberNode.SelectedImageKey = memberNode.ImageKey;
107+
memberNode.Tag = member.GetQualifiedSelection(_name);
100108
}
101109

102110
var accessibility = context.visibility() == null
@@ -107,6 +115,7 @@ public override void EnterTypeStmt(VBParser.TypeStmtContext context)
107115
? "PublicType"
108116
: "PrivateType";
109117

118+
node.Tag = context.GetQualifiedSelection(_name);
110119
node.SelectedImageKey = node.ImageKey;
111120
}
112121

@@ -121,6 +130,7 @@ public override void EnterSubStmt(VBParser.SubStmtContext context)
121130
: accessibility == VBAccessibility.Friend
122131
? "FriendMethod"
123132
: "PublicMethod";
133+
124134
_tree.Nodes.Add(CreateProcedureNode(context, imageKey));
125135
}
126136

@@ -182,10 +192,10 @@ public override void EnterPropertySetStmt(VBParser.PropertySetStmtContext contex
182192

183193
private TreeNode CreateProcedureNode(dynamic context, string imageKey)
184194
{
185-
var procedureName = context.ambiguousIdentifier().GetText();
195+
var procedureName = context.AmbiguousIdentifier().GetText();
186196
var node = new TreeNode(procedureName);
187197

188-
var args = context.argList().arg() as IReadOnlyList<VBParser.ArgContext>;
198+
var args = context.ArgList().Arg() as IReadOnlyList<VBParser.ArgContext>;
189199
if (args == null)
190200
{
191201
return node;
@@ -196,12 +206,13 @@ private TreeNode CreateProcedureNode(dynamic context, string imageKey)
196206
var argNode = new TreeNode(arg.GetText());
197207
argNode.ImageKey = "Parameter";
198208
argNode.SelectedImageKey = argNode.ImageKey;
199-
209+
argNode.Tag = arg.GetQualifiedSelection(_name);
200210
node.Nodes.Add(argNode);
201211
}
202212

203213
node.ImageKey = imageKey;
204214
node.SelectedImageKey = node.ImageKey;
215+
node.Tag = ((ParserRuleContext)context).GetQualifiedSelection(_name);
205216
return node;
206217
}
207218
}

0 commit comments

Comments
 (0)