Skip to content

Commit 00063c7

Browse files
author
SlavaRa
committed
Merge pull request #141 from SlavaRa/feature/140
fixes #140
2 parents ac3b323 + f2bb440 commit 00063c7

File tree

7 files changed

+396
-302
lines changed

7 files changed

+396
-302
lines changed

QuickNavigate/Forms/ClassHierarchyForm.cs

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,11 @@
99
using ASCompletion.Model;
1010
using JetBrains.Annotations;
1111
using PluginCore;
12+
using QuickNavigate.Helpers;
1213

1314
namespace QuickNavigate.Forms
1415
{
15-
public sealed partial class ClassHierarchyForm : ClassModelExplorerForm
16+
public sealed partial class ClassHierarchyForm : QuickForm
1617
{
1718
readonly ClassModel curClass;
1819
readonly Dictionary<string, List<ClassModel>> extendsToClasses;
@@ -61,17 +62,14 @@ static IEnumerable<ClassModel> GetExtends([NotNull] ClassModel theClass)
6162
public ClassHierarchyForm([NotNull] ClassModel model, [NotNull] Settings settings) : base(settings)
6263
{
6364
curClass = model;
64-
Font = PluginBase.Settings.DefaultFont;
6565
InitializeComponent();
66-
if (settings.HierarchyExplorerSize.Width > MinimumSize.Width) Size = settings.HierarchyExplorerSize;
6766
extendsToClasses = GetAllProjectExtendsClasses();
6867
InitializeTree();
6968
InitializeTheme();
7069
RefreshTree();
7170
}
7271

73-
[CanBeNull]
74-
public TypeNode SelectedNode => tree.SelectedNode as TypeNode;
72+
public override TreeNode SelectedNode => tree.SelectedNode;
7573

7674
void InitializeTree()
7775
{
@@ -163,7 +161,7 @@ TreeNode GetPrevEnabledNode()
163161
}
164162

165163
[CanBeNull]
166-
TreeNode GetUpEnabledNode()
164+
TreeNode GetFirstEnabledNode()
167165
{
168166
TreeNode result = null;
169167
var node = tree.SelectedNode;
@@ -197,8 +195,13 @@ protected override void ShowContextMenu()
197195
protected override void ShowContextMenu(Point position)
198196
{
199197
if (SelectedNode == null) return;
200-
ContextMenuStrip.Items[2].Enabled = !curClass.Equals(SelectedNode.Model);
201-
ContextMenuStrip.Items[4].Enabled = File.Exists(SelectedNode.Model.InFile.FileName);
198+
var classModel = ((TypeNode) SelectedNode).Model;
199+
ContextMenuStrip.Items.Clear();
200+
ContextMenuStrip.Items.Add(QuickContextMenuItem.GotoPositionOrLineMenuItem);
201+
ContextMenuStrip.Items.Add(QuickContextMenuItem.ShowInQuickOutlineMenuItem);
202+
if (!curClass.Equals(classModel)) ContextMenuStrip.Items.Add(QuickContextMenuItem.ShowInClassHierarchyMenuItem);
203+
ContextMenuStrip.Items.Add(QuickContextMenuItem.ShowInProjectManagerMenuItem);
204+
if (File.Exists(classModel.InFile.FileName)) ContextMenuStrip.Items.Add(QuickContextMenuItem.ShowInFileExplorerMenuItem);
202205
ContextMenuStrip.Show(tree, position);
203206
}
204207

@@ -209,6 +212,18 @@ protected override void Navigate()
209212

210213
#region Event Handlers
211214

215+
protected override void OnShown(EventArgs e)
216+
{
217+
base.OnShown(e);
218+
if (Settings != null && Settings.HierarchyExplorerSize.Width > MinimumSize.Width) Size = Settings.HierarchyExplorerSize;
219+
}
220+
221+
protected override void OnFormClosing(FormClosingEventArgs e)
222+
{
223+
if (Settings == null) return;
224+
Settings.HierarchyExplorerSize = Size;
225+
}
226+
212227
protected override void OnKeyDown(KeyEventArgs e)
213228
{
214229
switch (e.KeyCode)
@@ -234,11 +249,6 @@ protected override void OnKeyDown(KeyEventArgs e)
234249
}
235250
}
236251

237-
protected override void OnFormClosing(FormClosingEventArgs e)
238-
{
239-
Settings.HierarchyExplorerSize = Size;
240-
}
241-
242252
protected override void OnTreeNodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
243253
{
244254
var node = e.Node as TypeNode;
@@ -288,7 +298,7 @@ void OnInputTextChanged(object sender, EventArgs e)
288298

289299
void OnInputPreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
290300
{
291-
if (e.KeyCode == Keys.Apps) input.ContextMenu = SelectedNode != null ? InputEmptyContextMenu : null;
301+
if (e.KeyCode == Keys.Apps) input.ContextMenu = SelectedNode != null ? FormHelper.EmptyContextMenu : null;
292302
}
293303

294304
void OnInputKeyDown(object sender, KeyEventArgs e)
@@ -309,7 +319,7 @@ void OnInputKeyDown(object sender, KeyEventArgs e)
309319
if (node != null) tree.SelectedNode = node;
310320
else if (PluginBase.MainForm.Settings.WrapList)
311321
{
312-
node = GetUpEnabledNode();
322+
node = GetFirstEnabledNode();
313323
if (node != null) tree.SelectedNode = node;
314324
}
315325
break;
@@ -323,7 +333,7 @@ void OnInputKeyDown(object sender, KeyEventArgs e)
323333
}
324334
break;
325335
case Keys.Home:
326-
node = GetUpEnabledNode();
336+
node = GetFirstEnabledNode();
327337
if (node != null) tree.SelectedNode = node;
328338
break;
329339
case Keys.End:

QuickNavigate/Forms/ClassModelExplorerForm.cs

Lines changed: 0 additions & 132 deletions
This file was deleted.

QuickNavigate/Forms/QuickOutlineForm.cs

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using System;
22
using System.Collections.Generic;
3-
using System.Diagnostics;
43
using System.Drawing;
54
using System.Linq;
65
using System.Windows.Forms;
@@ -9,10 +8,11 @@
98
using ASCompletion.Model;
109
using JetBrains.Annotations;
1110
using PluginCore;
11+
using QuickNavigate.Helpers;
1212

1313
namespace QuickNavigate.Forms
1414
{
15-
public sealed partial class QuickOutlineForm : Form
15+
public sealed partial class QuickOutlineForm : QuickForm
1616
{
1717
[NotNull] readonly Settings settings;
1818
readonly ContextMenuStrip contextMenu = new ContextMenuStrip { Renderer = new DockPanelStripRenderer(false) };
@@ -34,17 +34,13 @@ public QuickOutlineForm([NotNull] FileModel inFile, [CanBeNull] ClassModel inCla
3434
InFile = inFile;
3535
InClass = inClass ?? ClassModel.VoidClass;
3636
this.settings = settings;
37-
Font = PluginBase.Settings.DefaultFont;
3837
InitializeComponent();
3938
if (settings.QuickOutlineSize.Width > MinimumSize.Width) Size = settings.QuickOutlineSize;
40-
InitializeContextMenu();
4139
InitializeTree();
4240
InitializeTheme();
4341
RefreshTree();
4442
}
4543

46-
[CanBeNull] public event ShowInHandler ShowInClassHierarchy;
47-
4844
[CanBeNull] ToolTip filterToolTip;
4945

5046
[NotNull]
@@ -53,8 +49,7 @@ public QuickOutlineForm([NotNull] FileModel inFile, [CanBeNull] ClassModel inCla
5349
[NotNull]
5450
public ClassModel InClass { get; }
5551

56-
[CanBeNull]
57-
public TreeNode SelectedNode => tree.SelectedNode;
52+
public override TreeNode SelectedNode => tree.SelectedNode;
5853

5954
[CanBeNull]
6055
Button currentFilter;
@@ -86,8 +81,6 @@ Button CurrentFilter
8681
}
8782
}
8883

89-
void InitializeContextMenu() => contextMenu.Items.Add("Show in &Class Hierarchy", PluginBase.MainForm.FindImage("99|16|0|0"), OnShowInClassHierarchy);
90-
9184
void InitializeTree()
9285
{
9386
tree.ImageList = ASContext.Panel.TreeIcons;
@@ -174,22 +167,27 @@ void AddMembers(TreeNodeCollection nodes, MemberList members, bool isHaxe, bool
174167
tree.SelectedNode = nodes[0];
175168
}
176169

177-
void Navigate()
170+
protected override void Navigate()
178171
{
179172
if (SelectedNode != null) DialogResult = DialogResult.OK;
180173
}
181174

182-
void ShowContextMenu()
175+
protected override void ShowContextMenu()
183176
{
184177
if (!(SelectedNode is TypeNode)) return;
185178
ShowContextMenu(new Point(SelectedNode.Bounds.X, SelectedNode.Bounds.Bottom));
186179
}
187180

188-
void ShowContextMenu(Point position)
181+
protected override void ShowContextMenu(Point position)
189182
{
190-
if (SelectedNode is TypeNode) contextMenu.Show(tree, position);
183+
if (!(SelectedNode is TypeNode)) return;
184+
contextMenu.Items.Clear();
185+
contextMenu.Items.Add(QuickContextMenuItem.ShowInClassHierarchyMenuItem);
186+
contextMenu.Show(tree, position);
191187
}
192188

189+
internal void AddFilter(QuickFilter filter) => AddFilter(filter.ImageIndex, filter.Flag, filter.Shortcut, filter.EnabledTip, filter.DisabledTip);
190+
193191
public void AddFilter(int imageIndex, FlagType flag, Keys shortcut, string enabledTip, string disabledTip)
194192
{
195193
if (flagToFilter.ContainsKey(flag)) return;
@@ -336,7 +334,7 @@ void OnInputKeyDown(object sender, KeyEventArgs e)
336334
e.Handled = true;
337335
}
338336

339-
void OnTreeNodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
337+
protected override void OnTreeNodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
340338
{
341339
if (e.Button != MouseButtons.Right) return;
342340
TreeNode node = e.Node as TypeNode;
@@ -379,12 +377,6 @@ void OnTreeDrawNode(object sender, DrawTreeNodeEventArgs e)
379377
graphics.DrawString("(private)", font, moduleBrush, x, bounds.Y, StringFormat.GenericTypographic);
380378
}
381379

382-
void OnShowInClassHierarchy(object sender, EventArgs e)
383-
{
384-
Debug.Assert(ShowInClassHierarchy != null, "ShowInClassHierarchy != null");
385-
ShowInClassHierarchy(this, ((TypeNode) SelectedNode).Model);
386-
}
387-
388380
void OnFilterMouseHover(object sender, EventArgs e) => RefreshFilterTip((Button) sender);
389381

390382
void OnFilterMouseLeave(object sender, EventArgs e)

0 commit comments

Comments
 (0)