Skip to content

Commit 1773507

Browse files
authored
Merge pull request #7 from IvoKrugers/develop
17.4.1
2 parents b210ea8 + df97ae1 commit 1773507

File tree

13 files changed

+246
-48
lines changed

13 files changed

+246
-48
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using MonoDevelop.Components.Commands;
2+
using MonoDevelop.Ide;
3+
using MonoDevelop.Ide.Gui.Pads;
4+
using NetworkExtension;
5+
using VisualStudioMac.OneClickToOpenFile.Extensions;
6+
7+
namespace VisualStudioMac.OneClickToOpenFile.CommandHandlers
8+
{
9+
public class EnableOneClickToOpenFileCommandHandler : CommandHandler
10+
{
11+
protected override void Update(CommandInfo info)
12+
{
13+
info.Enabled = true;
14+
info.Checked = Settings.OneClickToOpenFileEnabled;
15+
}
16+
17+
protected override void Run()
18+
{
19+
Settings.OneClickToOpenFileEnabled = !Settings.OneClickToOpenFileEnabled;
20+
21+
var pad = (SolutionPad)IdeApp.Workbench.Pads.SolutionPad.Content;
22+
if (pad == null)
23+
return;
24+
25+
pad.RefreshTree();
26+
}
27+
}
28+
}

VisualStudioMac.OneClickToOpenFile/CommandHandlers/Node/OneClickNodeCommandHandler.cs

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
using System;
2+
using System.Diagnostics;
23
using System.IO;
4+
using EnvDTE;
5+
using MonoDevelop.Core;
36
using MonoDevelop.Ide;
47
using MonoDevelop.Ide.Gui.Components;
58
using MonoDevelop.Projects;
@@ -12,15 +15,53 @@ public override void OnItemSelected()
1215
{
1316
base.OnItemSelected();
1417

15-
if (CurrentNode.DataItem is ProjectFile f)
18+
var selectedNode = Controller.GetSelectedNode();
19+
var control = Controller.Control;
20+
21+
if (CurrentNode.DataItem is ProjectFile f && Settings.OneClickToOpenFileEnabled)
1622
{
1723
string ext = Path.GetExtension(f.FilePath);
1824
if (Constants.ExcludedExtensionsFromOneClick.FindIndex((s) => s == ext) == -1)
1925
{
20-
if (IdeApp.Workbench.ActiveDocument == null || IdeApp.Workbench.ActiveDocument.Name != f.FilePath.FileName)
21-
IdeApp.Workbench.OpenDocument(f.FilePath, project: null);
26+
var selectedItem = IdeApp.ProjectOperations.CurrentSelectedItem as ProjectFile;
27+
28+
if (IdeApp.IsRunning
29+
&& IdeApp.IsInitialized
30+
&& IdeApp.Workspace.CurrentSelectedSolution != null
31+
&& IdeApp.Workbench.CurrentLayout != null
32+
&& (IdeApp.Workbench.ActiveDocument == null || IdeApp.Workbench.ActiveDocument.FilePath.FullPath != f.FilePath.FullPath))
33+
{
34+
Debug.WriteLine($"[OnItemSelected]: CurrentNode: {f.FilePath.FileName} - Selected: {CurrentNode.Selected}, CurrentSelectedItem: {selectedItem?.FilePath.FileName ?? ""}, ActiveDocument: {IdeApp.Workbench.ActiveDocument?.Name ?? ""}");
35+
36+
37+
//if (Controller.Control.HasFocus)
38+
//{
39+
IdeApp.Workbench.OpenDocument(f.FilePath, f.Project);
40+
//IdeApp.Workbench.OpenDocument(f.FilePath, f.Project, MonoDevelop.Ide.Gui.OpenDocumentOptions.OpenIfMissing | MonoDevelop.Ide.Gui.OpenDocumentOptions.BringToFront);
41+
//IdeApp.Workbench.OpenDocument(f.FilePath, f.Project, MonoDevelop.Ide.Gui.OpenDocumentOptions.TryToReuseViewer | MonoDevelop.Ide.Gui.OpenDocumentOptions.OpenIfMissing);
42+
//}
43+
return;
44+
}
2245
}
2346
}
2447
}
48+
49+
//public override void RefreshItem()
50+
//{
51+
// base.RefreshItem();
52+
// var selectedNode = Controller.GetSelectedNode();
53+
// var control = Controller.Control;
54+
// var f = CurrentNode.DataItem as ProjectFile;
55+
// var selectedItem = IdeApp.ProjectOperations.CurrentSelectedItem as ProjectFile;
56+
57+
// Debug.WriteLine($"[RefreshItem]: CurrentNode: {f.FilePath.FileName} - Selected: {CurrentNode.Selected}, CurrentSelectedItem: {selectedItem?.FilePath.FileName ?? ""}, ActiveDocument: {IdeApp.Workbench.ActiveDocument?.Name ?? ""}");
58+
//}
59+
60+
//public override void ActivateItem()
61+
//{
62+
// base.ActivateItem();
63+
//}
64+
65+
2566
}
2667
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using System.Threading.Tasks;
2+
using MonoDevelop.Components.Commands;
3+
using MonoDevelop.Ide;
4+
5+
namespace VisualStudioMac.OneClickToOpenFile.CommandHandlers
6+
{
7+
public class StartupCommandHandler : CommandHandler
8+
{
9+
protected override void Run()
10+
{
11+
Settings.OneClickToOpenFileEnabled = false;
12+
IdeApp.Workspace.SolutionLoaded += Workspace_SolutionLoaded;
13+
IdeApp.Workspace.SolutionUnloaded += (s, e) => Settings.OneClickToOpenFileEnabled = false;
14+
//IdeApp.Workbench.LayoutChanged += Workbench_LayoutChanged;
15+
//IdeApp.Exiting += (s,e) => Settings.OneClickToOpenFileEnabled = false;
16+
//IdeApp.Workbench.GuiLocked += (s, e) => Settings.OneClickToOpenFileEnabled = false;
17+
//IdeApp.Workbench.GuiUnlocked += (s, e) => Settings.OneClickToOpenFileEnabled = true;
18+
}
19+
20+
private void Workspace_SolutionLoaded(object sender, MonoDevelop.Projects.SolutionEventArgs e)
21+
{
22+
if (e.Solution != null)
23+
{
24+
Task.Delay(10000).ContinueWith(async t =>
25+
{
26+
await t;
27+
Settings.OneClickToOpenFileEnabled = true;
28+
});
29+
}
30+
}
31+
}
32+
}

VisualStudioMac.OneClickToOpenFile/Constants.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
{
33
public static class Constants
44
{
5-
public const string Version = "17.3.0";
65
public const string OneClickChar
76
#if DEBUG
87
= ">>";
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
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.Extensions
7+
{
8+
public static class SolutionPadExtensions
9+
{
10+
public static void RefreshTree(this SolutionPad pad)
11+
{
12+
if (pad == null)
13+
return;
14+
15+
var root = pad.GetRootNode();
16+
if (root != null)
17+
{
18+
pad.GetTreeView().RefreshNode(root);
19+
root.Expanded = true;
20+
}
21+
}
22+
23+
private static ITreeNavigator GetRootNode(this SolutionPad pad)
24+
=> pad.GetTreeView().GetRootNode();
25+
26+
private static ITreeNavigator GetRootNode(this ExtensibleTreeViewController treeview)
27+
{
28+
var pos = treeview.GetRootPosition();
29+
return treeview.GetNodeAtPosition(pos);
30+
}
31+
32+
private static ExtensibleTreeViewController GetTreeView(this SolutionPad pad)
33+
=> pad.Controller;
34+
}
35+
36+
37+
}

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/AddinInfo.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22
using Mono.Addins.Description;
33
using VisualStudioMac.OneClickToOpenFile;
44

5-
[assembly: Addin(
6-
Id = "OneClickToOpenFile",
7-
Namespace = "VisualStudioMac",
8-
Version = Constants.Version,
9-
Category = "IDE extensions"
10-
)]
5+
//[assembly: Addin(
6+
// Id = "OneClickToOpenFile",
7+
// Namespace = "VisualStudioMac",
8+
// Version = Constants.Version,
9+
// Category = "IDE extensions"
10+
//)]
1111

12-
[assembly: AddinName("SolutionTree One Click To Open File")]
13-
[assembly: AddinDescription("This extension opens a file with only one click on the solutiontree.\n\nby Ivo Krugers")]
14-
[assembly: AddinAuthor("Ivo Krugers")]
15-
[assembly: AddinUrl("https://github.com/IvoKrugers/VisualStudioMac.OneClickToOpenFile")]
12+
//[assembly: AddinName("One Click To Open File")]
13+
//[assembly: AddinDescription("This extension opens a file with only one click on the solutiontree.\n\nby Ivo Krugers")]
14+
//[assembly: AddinAuthor("Ivo Krugers")]
15+
//[assembly: AddinUrl("https://github.com/IvoKrugers/VisualStudioMac.OneClickToOpenFile")]
1616

1717
[assembly: AddinDependency("::MonoDevelop.Core", MonoDevelop.BuildInfo.Version)]
1818
[assembly: AddinDependency("::MonoDevelop.Ide", MonoDevelop.BuildInfo.Version)]

VisualStudioMac.OneClickToOpenFile/Properties/AssemblyInfo.cs

Lines changed: 0 additions & 18 deletions
This file was deleted.
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Addin name = "VSM: One Click To Open File"
3+
id = "OneClickToOpenFile"
4+
namespace = "VisualStudioMac"
5+
author = "Ivo Krugers"
6+
copyright = "MIT X11"
7+
url = "https://github.com/IvoKrugers/VisualStudioMac.OneClickToOpenFile"
8+
description = "This extension opens a file with only one click on the solutiontree.
9+
10+
by Ivo Krugers
11+
12+
"
13+
category = "IDE extensions"
14+
version = "17.4.1">
15+
16+
<!--<Runtime>
17+
<Import assembly="VisualStudioMac.OneClickToOpenFile.dll" />
18+
</Runtime>-->
19+
20+
<!--<Dependencies>
21+
<Addin id="Core" version="17.4"/>
22+
<Addin id="Ide" version="17.4"/>
23+
<Addin id="DotNetCore" version="17.4" />
24+
</Dependencies>-->
25+
26+
27+
<Extension path="/MonoDevelop/Ide/StartupHandlers">
28+
<Class class="VisualStudioMac.OneClickToOpenFile.CommandHandlers.StartupCommandHandler" />
29+
</Extension>
30+
31+
<!-- ProjectPad NodeBuilders -->
32+
<Extension path="/MonoDevelop/Ide/Pads/ProjectPad">
33+
<NodeBuilder class="VisualStudioMac.OneClickToOpenFile.NodeBuilderExtensions.OneClickFileNodeBuilderExt" />
34+
</Extension>
35+
36+
<!-- Commands -->
37+
<Extension path="/MonoDevelop/Ide/Commands">
38+
<Command id="VisualStudioMac.OneClickToOpenFile.EnableOneClickToOpenFileCommandHandler"
39+
_label="One Click To Open File"
40+
defaultHandler="VisualStudioMac.OneClickToOpenFile.CommandHandlers.EnableOneClickToOpenFileCommandHandler" />
41+
</Extension>
42+
43+
<!-- Main Tool Menu Entries -->
44+
<Extension path="/MonoDevelop/Ide/MainMenu/Tools">
45+
<SeparatorItem id="ExtensionSettingsSeparator" insertafter="MonoDevelop.Ide.Commands.EditCommands.MonodevelopPreferences"/>
46+
<CommandItem id="VisualStudioMac.OneClickToOpenFile.EnableOneClickToOpenFileCommandHandler" insertafter="ExtensionSettingsSeparator" />
47+
</Extension>
48+
</Addin>

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

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

0 commit comments

Comments
 (0)