Skip to content

Commit 1e9ce7d

Browse files
committed
Add Setting
1 parent 8a8d70e commit 1e9ce7d

File tree

6 files changed

+76
-4
lines changed

6 files changed

+76
-4
lines changed
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
using MonoDevelop.Components.Commands;
2+
using MonoDevelop.Ide;
3+
using MonoDevelop.Ide.Gui.Components;
4+
using MonoDevelop.Ide.Gui.Pads;
5+
6+
namespace VisualStudioMac.OneClickToOpenFile.CommandHandlers
7+
{
8+
public class EnableOneClickToOpenFileCommandHandler : CommandHandler
9+
{
10+
protected override void Update(CommandInfo info)
11+
{
12+
info.Enabled = true;
13+
info.Checked = Settings.OneClickToOpenFileEnabled;
14+
}
15+
16+
protected override void Run()
17+
{
18+
Settings.OneClickToOpenFileEnabled = !Settings.OneClickToOpenFileEnabled;
19+
20+
var pad = (SolutionPad)IdeApp.Workbench.Pads.SolutionPad.Content;
21+
if (pad == null)
22+
return;
23+
24+
pad.RefreshTree();
25+
}
26+
}
27+
28+
public static class SolutionPadExtensions
29+
{
30+
public static void RefreshTree(this SolutionPad pad)
31+
{
32+
if (pad == null)
33+
return;
34+
35+
var root = pad.GetRootNode();
36+
if (root != null)
37+
{
38+
root.Expanded = false;
39+
pad.GetTreeView().RefreshNode(root);
40+
}
41+
}
42+
43+
private static ITreeNavigator GetRootNode(this SolutionPad pad)
44+
=> pad.GetTreeView().GetRootNode();
45+
46+
private static ITreeNavigator GetRootNode(this ExtensibleTreeViewController treeview)
47+
{
48+
var pos = treeview.GetRootPosition();
49+
return treeview.GetNodeAtPosition(pos);
50+
}
51+
52+
private static ExtensibleTreeViewController GetTreeView(this SolutionPad pad)
53+
=> pad.Controller;
54+
}
55+
}
56+

VisualStudioMac.OneClickToOpenFile/CommandHandlers/Node/OneClickNodeCommandHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public override void OnItemSelected()
1212
{
1313
base.OnItemSelected();
1414

15-
if (CurrentNode.DataItem is ProjectFile f)
15+
if (CurrentNode.DataItem is ProjectFile f && Settings.OneClickToOpenFileEnabled)
1616
{
1717
string ext = Path.GetExtension(f.FilePath);
1818
if (Constants.ExcludedExtensionsFromOneClick.FindIndex((s) => s == ext) == -1)

VisualStudioMac.OneClickToOpenFile/Constants.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
{
33
public static class Constants
44
{
5-
public const string Version = "17.3.0";
5+
public const string Version = "17.3.1";
66
public const string OneClickChar
77
#if DEBUG
88
= ">>";

VisualStudioMac.OneClickToOpenFile/NodeBuilderExtensions/OneClickFileNodeBuilderExt.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public override bool CanBuildNode(Type dataType)
1414

1515
public override void BuildNode(ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
1616
{
17-
if (dataObject is ProjectFile file)
17+
if (dataObject is ProjectFile file && Settings.OneClickToOpenFileEnabled)
1818
{
1919
var ext = Path.GetExtension(file.FilePath);
2020
if (Constants.ExcludedExtensionsFromOneClick.FindIndex((s) => s == ext) == -1)

VisualStudioMac.OneClickToOpenFile/Properties/VisualStudioMac.OneClickToOpenFile.addin.xml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,18 @@
33
<Runtime>
44
<Import assembly="VisualStudioMac.OneClickToOpenFile.dll" />
55
</Runtime>
6-
76
<!-- ProjectPad NodeBuilders -->
87
<Extension path="/MonoDevelop/Ide/Pads/ProjectPad">
98
<NodeBuilder class="VisualStudioMac.OneClickToOpenFile.NodeBuilderExtensions.OneClickFileNodeBuilderExt" />
109
</Extension>
10+
<!-- Commands -->
11+
<Extension path="/MonoDevelop/Ide/Commands">
12+
<Command id="VisualStudioMac.OneClickToOpenFile.EnableOneClickToOpenFileCommandHandler" _label="One Click To Open File" defaultHandler="VisualStudioMac.OneClickToOpenFile.CommandHandlers.EnableOneClickToOpenFileCommandHandler" />
13+
</Extension>
14+
<!-- Main Tool Menu Entries -->
15+
<Extension path="/MonoDevelop/Ide/MainMenu/Tools">
16+
<SeparatorItem id="ExtensionSettingsSeparator" />
17+
<CommandItem id="VisualStudioMac.OneClickToOpenFile.EnableOneClickToOpenFileCommandHandler" insertafter="ExtensionSettingsSeparator" />
18+
<SeparatorItem id="ExtensionSettingsSeparator2" />
19+
</Extension>
1120
</ExtensionModel>
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace VisualStudioMac.OneClickToOpenFile
2+
{
3+
public static class Settings
4+
{
5+
public static bool OneClickToOpenFileEnabled = true;
6+
}
7+
}

0 commit comments

Comments
 (0)