Browse Source

ClassBrowser: "Add to workspace" context menu command for Debugger modules.

newNRILSpyDebugger
Andreas Weizel 12 years ago
parent
commit
593fca0862
  1. 11
      src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.addin
  2. 32
      src/AddIns/Debugger/Debugger.AddIn/Pads/ClassBrowserSupport.cs

11
src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.addin

@ -14,7 +14,7 @@
<ConditionEvaluator name = "IsBreakpointActive" class="Debugger.AddIn.IsActiveBreakpointCondition" /> <ConditionEvaluator name = "IsBreakpointActive" class="Debugger.AddIn.IsActiveBreakpointCondition" />
</Import> </Import>
<Import assembly="Debugger.Core.dll"/> <Import assembly="Debugger.Core.dll"/>
</Runtime> </Runtime>
<Path name="/SharpDevelop/Services/DebuggerService/Debugger"> <Path name="/SharpDevelop/Services/DebuggerService/Debugger">
<Debugger id="DefaultDebugger" <Debugger id="DefaultDebugger"
@ -158,8 +158,15 @@
<Class class="Debugger.AddIn.Visualizers.ObjectGraphVisualizerDescriptor" /> <Class class="Debugger.AddIn.Visualizers.ObjectGraphVisualizerDescriptor" />
<Class class="Debugger.AddIn.Visualizers.GridVisualizerDescriptor" /> <Class class="Debugger.AddIn.Visualizers.GridVisualizerDescriptor" />
</Path> </Path>
<Path name="/SharpDevelop/TreeNodeFactories"> <Path name="/SharpDevelop/TreeNodeFactories">
<Class id="DebuggerTreeNodesFactory" class="ICSharpCode.SharpDevelop.Gui.Pads.DebuggerTreeNodesFactory" /> <Class id="DebuggerTreeNodesFactory" class="ICSharpCode.SharpDevelop.Gui.Pads.DebuggerTreeNodesFactory" />
</Path> </Path>
<Path name = "/SharpDevelop/Services/DebuggerService/ModuleContextMenu">
<MenuItem id = "AddModuleToWorkspace"
label = "Add to workspace"
icon = "Icons.16x16.AssemblyFromFile"
class = "ICSharpCode.SharpDevelop.Gui.Pads.AddModuleToWorkspaceCommand"/>
</Path>
</AddIn> </AddIn>

32
src/AddIns/Debugger/Debugger.AddIn/Pads/ClassBrowserSupport.cs

@ -4,6 +4,7 @@
using System; using System;
using System.IO; using System.IO;
using Debugger; using Debugger;
using ICSharpCode.Core.Presentation;
using ICSharpCode.NRefactory; using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Dom;
@ -137,7 +138,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
public override void ShowContextMenu() public override void ShowContextMenu()
{ {
// Don't show context menu as for usual AssemblyTreeNodes. var assemblyModel = this.Model as IAssemblyModel;
if (assemblyModel != null) {
var ctx = MenuService.ShowContextMenu(null, assemblyModel, "/SharpDevelop/Services/DebuggerService/ModuleContextMenu");
}
} }
static IAssemblyModel CreateAssemblyModel(Module module) static IAssemblyModel CreateAssemblyModel(Module module)
@ -151,4 +155,30 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
return model; return model;
} }
} }
/// <summary>
/// RunAssemblyWithDebuggerCommand.
/// </summary>
class AddModuleToWorkspaceCommand : SimpleCommand
{
public override bool CanExecute(object parameter)
{
IAssemblyModel assemblyModel = parameter as IAssemblyModel;
return (assemblyModel != null) && assemblyModel.Context.IsValid;
}
public override void Execute(object parameter)
{
var classBrowser = SD.GetService<IClassBrowser>();
var modelFactory = SD.GetService<IModelFactory>();
if ((classBrowser != null) && (modelFactory != null)) {
IAssemblyModel assemblyModel = (IAssemblyModel) parameter;
// Create a new copy of this assembly model
IAssemblyModel newAssemblyModel = modelFactory.SafelyCreateAssemblyModelFromFile(assemblyModel.Context.Location);
if (newAssemblyModel != null)
classBrowser.AssemblyList.Assemblies.Add(newAssemblyModel);
}
}
}
} }

Loading…
Cancel
Save