diff options
28 files changed, 427 insertions, 431 deletions
diff --git a/main/src/core/MonoDevelop.Ide/ChangeLog b/main/src/core/MonoDevelop.Ide/ChangeLog index bd1713a211..d8e15272d2 100644 --- a/main/src/core/MonoDevelop.Ide/ChangeLog +++ b/main/src/core/MonoDevelop.Ide/ChangeLog @@ -1,3 +1,42 @@ +2009-02-23 Lluis Sanchez Gual <lluis@novell.com> + + * Makefile.am: + * MonoDevelop.Ide.csproj: Added new files. + + * MonoDevelop.Ide.Gui/Ide.cs: When registering for the + Initialized event, fire it if the IDE has already been + initialized. + + * MonoDevelop.Ide.Gui.Pads/TreeViewPad.cs: + * MonoDevelop.Ide.Gui.Pads/SolutionPad.cs: + * MonoDevelop.Ide.Codons/SolutionPadCodon.cs: + * MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs: + * MonoDevelop.Ide.Gui.Components/NodeCommandHandler.cs: + * MonoDevelop.Ide.Codons/PadContextMenuExtensionNode.cs: Allow + setting the default context menu to be used when none is + specified for a node type. + + * MonoDevelop.Ide.addin.xml: + * MonoDevelop.Ide.Codons/ProjectActiveCondition.cs: + * MonoDevelop.Ide.Gui.Pads.ProjectPad/SystemFile.cs: + * MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolder.cs: + * MonoDevelop.Ide.Gui.Pads.ClassPad/SolutionNodeBuilder.cs: + * MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs: + * MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectSolutionPad.cs: + * MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectNodeBuilder.cs: + * MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionNodeBuilder.cs: + * MonoDevelop.Ide.Gui.Pads.ProjectPad/WorkspaceNodeBuilder.cs: + * MonoDevelop.Ide.Gui.Pads.ProjectPad/SystemFileNodeBuilder.cs: + * MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFileNodeBuilder.cs: + * MonoDevelop.Ide.Gui.Pads.ProjectPad/UnknownEntryNodeBuilder.cs: + * MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs: + * MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionFolderNodeBuilder.cs: + * MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectReferenceNodeBuilder.cs: + * MonoDevelop.Ide.Gui.Pads.ProjectPad/FileOperationsBuilderExtension.cs: + * MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectReferenceFolderNodeBuilder.cs: + Merged all project pad context menus in a single extension + point. + 2009-02-23 Mike Krüger <mkrueger@novell.com> * MonoDevelop.Ide.addin.xml: removed f11 shortcut. diff --git a/main/src/core/MonoDevelop.Ide/Makefile.am b/main/src/core/MonoDevelop.Ide/Makefile.am index fd02e36f27..9dbaa621ce 100644 --- a/main/src/core/MonoDevelop.Ide/Makefile.am +++ b/main/src/core/MonoDevelop.Ide/Makefile.am @@ -79,6 +79,7 @@ FILES = \ MonoDevelop.Ide.Codons/LanguageActiveCondition.cs \ MonoDevelop.Ide.Codons/NodeBuilderCodon.cs \ MonoDevelop.Ide.Codons/PadCodon.cs \ + MonoDevelop.Ide.Codons/PadContextMenuExtensionNode.cs \ MonoDevelop.Ide.Codons/PadOptionCodon.cs \ MonoDevelop.Ide.Codons/ProjectActiveCondition.cs \ MonoDevelop.Ide.Codons/ProjectTemplateCodon.cs \ @@ -198,6 +199,7 @@ FILES = \ MonoDevelop.Ide.Gui.Pads.ClassPad/PropertyNodeBuilder.cs \ MonoDevelop.Ide.Gui.Pads.ClassPad/ReferenceNodeBuilder.cs \ MonoDevelop.Ide.Gui.Pads.ClassPad/SolutionNodeBuilder.cs \ + MonoDevelop.Ide.Gui.Pads.ProjectPad/FileOperationsBuilderExtension.cs \ MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs \ MonoDevelop.Ide.Gui.Pads.ProjectPad/LinkedFilesFolder.cs \ MonoDevelop.Ide.Gui.Pads.ProjectPad/LinkedFilesFolderNodeBuilder.cs \ diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/PadContextMenuExtensionNode.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/PadContextMenuExtensionNode.cs new file mode 100644 index 0000000000..4c23fec799 --- /dev/null +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/PadContextMenuExtensionNode.cs @@ -0,0 +1,41 @@ +// +// PadContextMenuExtensionNode.cs +// +// Author: +// Lluis Sanchez Gual <lluis@novell.com> +// +// Copyright (c) 2009 Novell, Inc (http://www.novell.com) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +using System; +using Mono.Addins; + +namespace MonoDevelop.Ide.Codons +{ + public class PadContextMenuExtensionNode: ExtensionNode + { + [NodeAttribute] + public string path; + + public string MenuPath { + get { return path; } + } + } +} diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/ProjectActiveCondition.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/ProjectActiveCondition.cs index c038a20786..58074b6b04 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/ProjectActiveCondition.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/ProjectActiveCondition.cs @@ -42,6 +42,13 @@ namespace MonoDevelop.Ide.Codons { public ProjectActiveCondition () { + IdeApp.Initialized += delegate { + Init (); + }; + } + + public void Init () + { IdeApp.ProjectOperations.CurrentProjectChanged += delegate { NotifyChanged(); }; diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/SolutionPadCodon.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/SolutionPadCodon.cs index ef6eaa3a3f..51246582bc 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/SolutionPadCodon.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/SolutionPadCodon.cs @@ -47,6 +47,7 @@ namespace MonoDevelop.Ide.Codons NodeBuilder[] builders; TreePadOption[] options; TreeViewPad pad; + string contextMenuPath; /* string placement = null;*/ @@ -63,11 +64,11 @@ namespace MonoDevelop.Ide.Codons NodeBuilderCodon nbc = ob as NodeBuilderCodon; if (nbc != null) bs.Add (nbc.NodeBuilder); - else { - PadOptionCodon poc = ob as PadOptionCodon; - if (poc != null) - ops.Add (poc.Option); - } + else if (ob is PadOptionCodon) { + PadOptionCodon poc = (PadOptionCodon) ob; + ops.Add (poc.Option); + } else if (ob is PadContextMenuExtensionNode) + contextMenuPath = ((PadContextMenuExtensionNode) ob).MenuPath; } builders = (NodeBuilder[]) bs.ToArray (typeof(NodeBuilder)); options = (TreePadOption[]) ops.ToArray (typeof(TreePadOption)); @@ -88,7 +89,7 @@ namespace MonoDevelop.Ide.Codons } else pad = new SolutionPad (); - pad.Initialize (builders, options); + pad.Initialize (builders, options, contextMenuPath); // pad.DefaultPlacement = placement; pad.Id = Id; return pad; diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs index 2922ec6e12..689c4bdd51 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs @@ -46,6 +46,7 @@ using MonoDevelop.Ide.Commands; using MonoDevelop.Core.Gui; using MonoDevelop.Components.Commands; using MonoDevelop.Ide.Gui.Pads; +using MonoDevelop.Projects.Extensions; namespace MonoDevelop.Ide.Gui.Components { @@ -85,12 +86,19 @@ namespace MonoDevelop.Ide.Gui.Components TransactedNodeStore transactionStore; int updateLockCount; + string contextMenuPath; + IDictionary<string,string> contextMenuTypeNameAliases; private static Gtk.TargetEntry [] target_table = new Gtk.TargetEntry [] { new Gtk.TargetEntry ("text/uri-list", 0, 11 ), new Gtk.TargetEntry ("text/plain", 0, 22), new Gtk.TargetEntry ("application/x-rootwindow-drop", 0, 33) }; + + public IDictionary<string,string> ContextMenuTypeNameAliases { + get { return contextMenuTypeNameAliases; } + set { contextMenuTypeNameAliases = value; } + } public Gtk.TreeStore Store { get { @@ -138,8 +146,14 @@ namespace MonoDevelop.Ide.Gui.Components } } - public virtual void Initialize (NodeBuilder[] builders, TreePadOption[] options) + public void Initialize (NodeBuilder[] builders, TreePadOption[] options) + { + Initialize (builders, options, null); + } + + public virtual void Initialize (NodeBuilder[] builders, TreePadOption[] options, string contextMenuPath) { + this.contextMenuPath = contextMenuPath; builderContext = new TreeBuilderContext (this); SetBuilders (builders, options); @@ -1449,9 +1463,41 @@ namespace MonoDevelop.Ide.Gui.Components [CommandUpdateHandler (EditCommands.Rename)] public void UpdateStartLabelEdit (CommandInfo info) { - info.Enabled = GetSelectedNodes ().Length == 1; + if (editingText || GetSelectedNodes ().Length != 1) { + info.Visible = false; + return; + } + + TreeNodeNavigator node = (TreeNodeNavigator) GetSelectedNode (); + NodeAttributes attributes = GetNodeAttributes (node); + if ((attributes & NodeAttributes.AllowRename) == 0) { + info.Visible = false; + return; + } + } + + NodeAttributes GetNodeAttributes (TreeNodeNavigator node) + { + Gtk.TreeIter iter = node.CurrentPosition._iter; + object dataObject = node.DataItem; + NodeAttributes attributes = NodeAttributes.None; + + ITreeNavigator parentNode = node.Clone (); + parentNode.MoveToParent (); + NodePosition pos = parentNode.CurrentPosition; + + foreach (NodeBuilder b in node.NodeBuilderChain) { + try { + b.GetNodeAttributes (parentNode, dataObject, ref attributes); + } catch (Exception ex) { + LoggingService.LogError (ex.ToString ()); + } + parentNode.MoveToPosition (pos); + } + return attributes; } + bool wantFocus () { tree.GrabFocus (); @@ -1473,7 +1519,8 @@ namespace MonoDevelop.Ide.Gui.Components { ITreeNavigator tnav = GetSelectedNode (); TypeNodeBuilder nb = GetTypeNodeBuilder (tnav.CurrentPosition._iter); - if (nb == null || nb.ContextMenuAddinPath == null) { + string menuPath = nb != null && nb.ContextMenuAddinPath != null ? nb.ContextMenuAddinPath : contextMenuPath; + if (menuPath == null) { if (options.Length > 0) { CommandEntrySet opset = new CommandEntrySet (); opset.AddItem (ViewCommands.TreeDisplayOptionList); @@ -1482,7 +1529,10 @@ namespace MonoDevelop.Ide.Gui.Components IdeApp.CommandService.ShowContextMenu (opset, this); } } else { - CommandEntrySet eset = IdeApp.CommandService.CreateCommandEntrySet (nb.ContextMenuAddinPath); + ExtensionContext ctx = AddinManager.CreateExtensionContext (); + ctx.RegisterCondition ("ItemType", new ItemTypeCondition (tnav.DataItem.GetType (), contextMenuTypeNameAliases)); + CommandEntrySet eset = IdeApp.CommandService.CreateCommandEntrySet (ctx, menuPath); + eset.AddItem (Command.Separator); CommandEntrySet opset = eset.AddItemSet (GettextCatalog.GetString ("Display Options")); opset.AddItem (ViewCommands.TreeDisplayOptionList); diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/NodeCommandHandler.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/NodeCommandHandler.cs index 2189e672dc..62050662a4 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/NodeCommandHandler.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/NodeCommandHandler.cs @@ -41,11 +41,12 @@ namespace MonoDevelop.Ide.Gui.Components object nextTarget; CanDeleteFlags canDeleteFlags; + [Flags] enum CanDeleteFlags { NotChecked = 0, Checked = 1, Single = 2, - Multiple = 3 + Multiple = 4 } internal void Initialize (ExtensibleTreeView tree) diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ClassPad/SolutionNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ClassPad/SolutionNodeBuilder.cs index 39dcac0e46..1cd95b139a 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ClassPad/SolutionNodeBuilder.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ClassPad/SolutionNodeBuilder.cs @@ -83,10 +83,6 @@ namespace MonoDevelop.Ide.Gui.Pads.ClassPad attributes |= NodeAttributes.AllowRename; } - public override string ContextMenuAddinPath { - get { return "/MonoDevelop/Ide/ContextMenu/ProjectPad/Solution"; } - } - public override void BuildNode (ITreeBuilder treeBuilder, object dataObject, ref string label, ref Gdk.Pixbuf icon, ref Gdk.Pixbuf closedIcon) { Solution solution = dataObject as Solution; diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FileOperationsBuilderExtension.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FileOperationsBuilderExtension.cs new file mode 100644 index 0000000000..70f7ae31ea --- /dev/null +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FileOperationsBuilderExtension.cs @@ -0,0 +1,104 @@ +// +// FileOperationsBuilderExtension.cs +// +// Author: +// Lluis Sanchez Gual <lluis@novell.com> +// +// Copyright (c) 2009 Novell, Inc (http://www.novell.com) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +using System; +using System.Collections.Generic; +using MonoDevelop.Projects; +using MonoDevelop.Components.Commands; +using MonoDevelop.Ide.Commands; +using MonoDevelop.Ide.Gui.Components; +using MonoDevelop.Ide.Gui.Search; +using MonoDevelop.Core; + +namespace MonoDevelop.Ide.Gui.Pads.ProjectPad +{ + class FileOperationsBuilderExtension: NodeBuilderExtension + { + public override bool CanBuildNode (Type dataType) + { + return typeof(IFileItem).IsAssignableFrom (dataType) || + typeof(IFolderItem).IsAssignableFrom (dataType); + } + + public override Type CommandHandlerType { + get { return typeof(FileOperationsCommandHandler); } + } + } + + class FileOperationsCommandHandler: NodeCommandHandler + { + string GetDir (object ob) + { + if (ob is IFolderItem) + return ((IFolderItem)ob).BaseDirectory; + else if (ob is IFileItem) { + string path = ((IFileItem)ob).FileName; + if (!string.IsNullOrEmpty (path)) + return System.IO.Path.GetDirectoryName (path); + } + return string.Empty; + } + + [CommandHandler (FileCommands.OpenContainingFolder)] + [AllowMultiSelection] + public void OnOpenFolder () + { + HashSet<string> paths = new HashSet<string> (); + foreach (ITreeNavigator node in CurrentNodes) { + string path = GetDir (node.DataItem); + if (!string.IsNullOrEmpty (path) && paths.Add (path)) + System.Diagnostics.Process.Start ("file://" + path); + } + } + + [CommandHandler (SearchCommands.FindInFiles)] + public void OnFindInFiles () + { + string path = GetDir (CurrentNode.DataItem); + SearchReplaceInFilesManager.ShowFindDialog (path); + } + + public static string TerminalCommand { + get { + return PropertyService.Get ("MonoDevelop.Shell", "gnome-terminal"); + } + } + + [CommandHandler (FileCommands.OpenInTerminal)] + [AllowMultiSelection] + public void OnOpenInTerminal () + { + HashSet<string> paths = new HashSet<string> (); + foreach (ITreeNavigator node in CurrentNodes) { + string path = GetDir (node.DataItem); + string terminal = TerminalCommand; + if (paths.Add (path)) + Runtime.ProcessService.StartProcess (terminal, "", path, null); + } + } + + } +} diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs index eef83c16b0..ec7ff20aa0 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs @@ -359,42 +359,5 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad CurrentNode.Expanded = true; Tree.AddNodeInsertCallback (new ProjectFolder (directoryName, project), new TreeNodeCallback (OnFileInserted)); } - - [CommandHandler (SearchCommands.FindInFiles)] - public void OnFindInFiles () - { - SearchReplaceInFilesManager.ShowFindDialog (GetFolderPath (CurrentNode.DataItem)); - } - - public static string TerminalCommand { - get { - return PropertyService.Get ("MonoDevelop.Shell", "gnome-terminal"); - } - } - - [CommandHandler (FileCommands.OpenInTerminal)] - [AllowMultiSelection] - public void OnOpenInTerminal () - { - Set<string> paths = new Set<string> (); - foreach (ITreeNavigator node in CurrentNodes) { - string path = GetFolderPath (node.DataItem); - string terminal = TerminalCommand; - if (paths.Add (path)) - Runtime.ProcessService.StartProcess (terminal, "", path, null); - } - } - - [CommandHandler (FileCommands.OpenFolder)] - [AllowMultiSelection] - public void OnOpenFolder () - { - Set<string> paths = new Set<string> (); - foreach (ITreeNavigator node in CurrentNodes) { - string path = GetFolderPath (node.DataItem); - if (paths.Add (path)) - System.Diagnostics.Process.Start ("file://" + path); - } - } } } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFileNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFileNodeBuilder.cs index 2aea84b8d1..15bda14f0c 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFileNodeBuilder.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFileNodeBuilder.cs @@ -59,10 +59,6 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad return Path.GetFileName (((ProjectFile)dataObject).Name); } - public override string ContextMenuAddinPath { - get { return "/MonoDevelop/Ide/ContextMenu/ProjectPad/ProjectFile"; } - } - public override void GetNodeAttributes (ITreeNavigator treeNavigator, object dataObject, ref NodeAttributes attributes) { ProjectFile file = (ProjectFile) dataObject; @@ -185,19 +181,6 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad { } - [CommandHandler (FileCommands.OpenContainingFolder)] - [AllowMultiSelection] - public void OnOpenFolder () - { - Set<string> paths = new Set<string> (); - foreach (ITreeNavigator node in CurrentNodes) { - ProjectFile file = (ProjectFile) node.DataItem; - string path = System.IO.Path.GetDirectoryName (file.FilePath); - if (paths.Add (path)) - System.Diagnostics.Process.Start ("file://" + path); - } - } - public override bool CanDeleteItem () { return ((ProjectFile) CurrentNode.DataItem).DependsOnFile == null; diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolder.cs index ff3acb3341..3ee167306f 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolder.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolder.cs @@ -36,7 +36,7 @@ using MonoDevelop.Core.Gui; namespace MonoDevelop.Ide.Gui.Pads.ProjectPad { - public class ProjectFolder: IDisposable + public class ProjectFolder: IDisposable, IFolderItem { string absolutePath; Project project; @@ -67,6 +67,10 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad } } + string IFolderItem.BaseDirectory { + get { return Path; } + } + public string Path { get { return absolutePath; } } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs index 290afd2af9..d9a5db2350 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs @@ -68,10 +68,6 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad return ((ProjectFolder)dataObject).Path; } - public override string ContextMenuAddinPath { - get { return "/MonoDevelop/Ide/ContextMenu/ProjectPad/Folder"; } - } - protected override void Initialize () { base.Initialize (); diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectNodeBuilder.cs index d0f411df53..a65b0f6bb2 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectNodeBuilder.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectNodeBuilder.cs @@ -102,10 +102,6 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad return ((Project)dataObject).BaseDirectory; } - public override string ContextMenuAddinPath { - get { return "/MonoDevelop/Ide/ContextMenu/ProjectPad/Project"; } - } - public override void BuildNode (ITreeBuilder treeBuilder, object dataObject, ref string label, ref Gdk.Pixbuf icon, ref Gdk.Pixbuf closedIcon) { base.BuildNode (treeBuilder, dataObject, ref label, ref icon, ref closedIcon); @@ -347,15 +343,6 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad IdeApp.ProjectOperations.Save (sol); } } - [CommandHandler (FileCommands.OpenContainingFolder)] - [AllowMultiSelection] - public void OpenContainingFolder () - { - foreach (ITreeNavigator nav in CurrentNodes) { - Project prj = nav.DataItem as Project; - System.Diagnostics.Process.Start ("file://" + prj.BaseDirectory); - } - } [CommandHandler (ProjectCommands.AddReference)] public void AddReferenceToProject () diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectReferenceFolderNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectReferenceFolderNodeBuilder.cs index 4e725a3a6f..c9ffc917c8 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectReferenceFolderNodeBuilder.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectReferenceFolderNodeBuilder.cs @@ -57,10 +57,6 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad return "References"; } - public override string ContextMenuAddinPath { - get { return "/MonoDevelop/Ide/ContextMenu/ProjectPad/ReferenceFolder"; } - } - protected override void Initialize () { addedHandler = (ProjectReferenceEventHandler) DispatchService.GuiDispatch (new ProjectReferenceEventHandler (OnAddReference)); @@ -121,11 +117,6 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad public class ProjectReferenceFolderNodeCommandHandler: NodeCommandHandler { - public override DragOperation CanDragNode () - { - return DragOperation.Copy | DragOperation.Move; - } - public override bool CanDropNode (object dataObject, DragOperation operation) { return dataObject is ProjectReference || dataObject is Project; diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectReferenceNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectReferenceNodeBuilder.cs index ac92386ae1..7bdb3329a5 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectReferenceNodeBuilder.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectReferenceNodeBuilder.cs @@ -56,10 +56,6 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad return ((ProjectReference)dataObject).Reference; } - public override string ContextMenuAddinPath { - get { return "/MonoDevelop/Ide/ContextMenu/ProjectPad/Reference"; } - } - public override void BuildNode (ITreeBuilder treeBuilder, object dataObject, ref string label, ref Gdk.Pixbuf icon, ref Gdk.Pixbuf closedIcon) { ProjectReference pref = (ProjectReference) dataObject; diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectSolutionPad.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectSolutionPad.cs index 6586fa09a9..5c5b3c3968 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectSolutionPad.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectSolutionPad.cs @@ -28,6 +28,7 @@ using System; using System.Resources; +using System.Collections.Generic; using MonoDevelop.Projects; using MonoDevelop.Core; @@ -44,6 +45,16 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad IdeApp.Workbench.ActiveDocumentChanged += new EventHandler (OnWindowChanged); } + public override void Initialize (MonoDevelop.Ide.Gui.Components.NodeBuilder[] builders, MonoDevelop.Ide.Gui.Components.TreePadOption[] options, string contextMenuPath) + { + base.Initialize (builders, options, contextMenuPath); + var aliases = new Dictionary<string,string> (); + aliases.Add ("SystemFile", "MonoDevelop.Ide.Gui.Pads.ProjectPad.SystemFile"); + aliases.Add ("ProjectFolder", "MonoDevelop.Ide.Gui.Pads.ProjectPad.ProjectFolder"); + TreeView.ContextMenuTypeNameAliases = aliases; + } + + protected override void OnSelectionChanged (object sender, EventArgs args) { base.OnSelectionChanged (sender, args); diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionFolderNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionFolderNodeBuilder.cs index ad09ec0022..6d2e1816b9 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionFolderNodeBuilder.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionFolderNodeBuilder.cs @@ -68,10 +68,6 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad attributes |= NodeAttributes.AllowRename; } - public override string ContextMenuAddinPath { - get { return "/MonoDevelop/Ide/ContextMenu/ProjectPad/SolutionFolder"; } - } - public override void BuildNode (ITreeBuilder treeBuilder, object dataObject, ref string label, ref Gdk.Pixbuf icon, ref Gdk.Pixbuf closedIcon) { SolutionFolder combine = dataObject as SolutionFolder; @@ -241,25 +237,6 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad } } - [CommandHandler (FileCommands.OpenContainingFolder)] - [AllowMultiSelection] - public void OpenContainingFolder () - { - Set<string> paths = new Set<string> (); - foreach (ITreeNavigator node in CurrentNodes) { - SolutionFolder folder = (SolutionFolder) node.DataItem; - if (paths.Add (folder.BaseDirectory)) - System.Diagnostics.Process.Start ("file://" + folder.BaseDirectory); - } - } - - [CommandHandler (SearchCommands.FindInFiles)] - public void OnFindInFiles () - { - SolutionFolder folder = (SolutionFolder) CurrentNode.DataItem; - SearchReplaceInFilesManager.ShowFindDialog (folder.BaseDirectory); - } - void OnEntryInserted (ITreeNavigator nav) { nav.Selected = true; diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionNodeBuilder.cs index 573d185050..5969db83c5 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionNodeBuilder.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionNodeBuilder.cs @@ -85,10 +85,6 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad attributes |= NodeAttributes.AllowRename; } - public override string ContextMenuAddinPath { - get { return "/MonoDevelop/Ide/ContextMenu/ProjectPad/Solution"; } - } - public override void BuildNode (ITreeBuilder treeBuilder, object dataObject, ref string label, ref Gdk.Pixbuf icon, ref Gdk.Pixbuf closedIcon) { Solution solution = dataObject as Solution; @@ -313,25 +309,6 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad Tree.StartLabelEdit (); } - [CommandHandler (FileCommands.OpenContainingFolder)] - [AllowMultiSelection] - public void OnOpenFolder () - { - Set<string> paths = new Set<string> (); - foreach (ITreeNavigator node in CurrentNodes) { - Solution solution = (Solution) node.DataItem; - if (paths.Add (solution.BaseDirectory)) - System.Diagnostics.Process.Start ("file://" + solution.BaseDirectory); - } - } - - [CommandHandler (SearchCommands.FindInFiles)] - public void OnFindInFiles () - { - Solution solution = (Solution) CurrentNode.DataItem; - SearchReplaceInFilesManager.ShowFindDialog (solution.BaseDirectory); - } - [CommandHandler (FileCommands.CloseWorkspaceItem)] [AllowMultiSelection] public void OnCloseItem () diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SystemFile.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SystemFile.cs index 886be93c95..a6c3c2c91e 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SystemFile.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SystemFile.cs @@ -33,7 +33,7 @@ using MonoDevelop.Projects; namespace MonoDevelop.Ide.Gui.Pads.ProjectPad { - public class SystemFile + public class SystemFile: IFileItem { string absolutePath; Project project; @@ -54,6 +54,10 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad get { return absolutePath; } } + string IFileItem.FileName { + get { return Path; } + } + public string Name { get { return System.IO.Path.GetFileName (absolutePath); } } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SystemFileNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SystemFileNodeBuilder.cs index ef8a33489a..bd456a36a5 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SystemFileNodeBuilder.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SystemFileNodeBuilder.cs @@ -56,10 +56,6 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad return Path.GetFileName (((SystemFile)dataObject).Name); } - public override string ContextMenuAddinPath { - get { return "/MonoDevelop/Ide/ContextMenu/ProjectPad/SystemFile"; } - } - public override void GetNodeAttributes (ITreeNavigator treeNavigator, object dataObject, ref NodeAttributes attributes) { attributes |= NodeAttributes.AllowRename; @@ -187,18 +183,5 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad prev = fv; } } - - [CommandHandler (FileCommands.OpenContainingFolder)] - [AllowMultiSelection] - public void OnOpenFolder () - { - Set<string> folders = new Set<string> (); - foreach (ITreeNavigator node in CurrentNodes) { - SystemFile file = node.DataItem as SystemFile; - string path = System.IO.Path.GetDirectoryName (file.Path); - if (folders.Add (path)) - System.Diagnostics.Process.Start ("file://" + path); - } - } } } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/UnknownEntryNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/UnknownEntryNodeBuilder.cs index 7642b75b8e..1b333d1774 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/UnknownEntryNodeBuilder.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/UnknownEntryNodeBuilder.cs @@ -44,10 +44,6 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad get { return typeof(UnknownSolutionItem); } } - public override string ContextMenuAddinPath { - get { return "/MonoDevelop/Ide/ContextMenu/ProjectPad/UnknownEntry"; } - } - public override Type CommandHandlerType { get { return typeof(UnknownEntryCommandHandler); } } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/WorkspaceNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/WorkspaceNodeBuilder.cs index 72c626d69f..7b9e7bf57f 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/WorkspaceNodeBuilder.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/WorkspaceNodeBuilder.cs @@ -75,10 +75,6 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad attributes |= NodeAttributes.AllowRename; } - public override string ContextMenuAddinPath { - get { return "/MonoDevelop/Ide/ContextMenu/ProjectPad/Workspace"; } - } - public override void BuildNode (ITreeBuilder treeBuilder, object dataObject, ref string label, ref Gdk.Pixbuf icon, ref Gdk.Pixbuf closedIcon) { Workspace workspace = dataObject as Workspace; @@ -296,25 +292,6 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad nav.Expanded = true; } - [CommandHandler (FileCommands.OpenContainingFolder)] - [AllowMultiSelection] - public void OnOpenFolder () - { - Set<string> paths = new Set<string> (); - foreach (ITreeNavigator node in CurrentNodes) { - Workspace ws = (Workspace) node.DataItem; - if (paths.Add (ws.BaseDirectory)) - System.Diagnostics.Process.Start ("file://" + ws.BaseDirectory); - } - } - - [CommandHandler (SearchCommands.FindInFiles)] - public void OnFindInFiles () - { - Workspace ws = (Workspace) CurrentNode.DataItem; - SearchReplaceInFilesManager.ShowFindDialog (ws.BaseDirectory); - } - [CommandHandler (FileCommands.CloseWorkspaceItem)] [AllowMultiSelection] public void OnCloseItem () diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/SolutionPad.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/SolutionPad.cs index 82665e2728..67b10fafb2 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/SolutionPad.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/SolutionPad.cs @@ -45,9 +45,9 @@ namespace MonoDevelop.Ide.Gui.Pads IdeApp.Workspace.WorkspaceItemClosed += OnCloseWorkspace; } - public override void Initialize (NodeBuilder[] builders, TreePadOption[] options) + public override void Initialize (NodeBuilder[] builders, TreePadOption[] options, string contextMenuPath) { - base.Initialize (builders, options); + base.Initialize (builders, options, contextMenuPath); foreach (WorkspaceItem it in IdeApp.Workspace.Items) treeView.AddChild (it); } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/TreeViewPad.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/TreeViewPad.cs index 51edbfa2ef..4661cbdea2 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/TreeViewPad.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/TreeViewPad.cs @@ -84,9 +84,14 @@ namespace MonoDevelop.Ide.Gui.Pads Initialize (builders, options); } - public virtual void Initialize (NodeBuilder[] builders, TreePadOption[] options) + public void Initialize (NodeBuilder[] builders, TreePadOption[] options) { - treeView.Initialize (builders, options); + Initialize (builders, options, null); + } + + public virtual void Initialize (NodeBuilder[] builders, TreePadOption[] options, string contextMenuPath) + { + treeView.Initialize (builders, options, contextMenuPath); } #region ICommandDelegatorRouter diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Ide.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Ide.cs index 3417e0617a..5abf6a031e 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Ide.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Ide.cs @@ -65,7 +65,17 @@ namespace MonoDevelop.Ide.Gui public static event ExitEventHandler Exiting; public static event EventHandler Exited; - public static event EventHandler Initialized; + + static EventHandler initializedEvent; + public static event EventHandler Initialized { + add { + if (isInitialized) value (null, EventArgs.Empty); + else initializedEvent += value; + } + remove { + initializedEvent -= value; + } + } IdeApp () { @@ -218,8 +228,8 @@ namespace MonoDevelop.Ide.Gui } } - if (Initialized != null) - Initialized (null, EventArgs.Empty); + if (initializedEvent != null) + initializedEvent (null, EventArgs.Empty); // Load requested files foreach (string file in StartupInfo.GetRequestedFileList()) { diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.addin.xml b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.addin.xml index 65d50dcbb2..f0876aa7d4 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.addin.xml +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.addin.xml @@ -97,54 +97,12 @@ <ExtensionNodeSet id="MonoDevelop.Components.Commands.ItemSet"/> </ExtensionPoint> - <ExtensionPoint path = "/MonoDevelop/Ide/ContextMenu/ProjectPad/Workspace" name = "Workspace context menu"> - <Description>Context menu for workspaces in the solution pad.</Description> - <ExtensionNodeSet id="MonoDevelop.Components.Commands.ItemSet"/> - </ExtensionPoint> - - <ExtensionPoint path = "/MonoDevelop/Ide/ContextMenu/ProjectPad/Solution" name = "Solution context menu"> - <Description>Context menu for solutions in the solution pad.</Description> - <ExtensionNodeSet id="MonoDevelop.Components.Commands.ItemSet"/> - </ExtensionPoint> - - <ExtensionPoint path = "/MonoDevelop/Ide/ContextMenu/ProjectPad/SolutionFolder" name = "Solution folder context menu"> - <Description>Context menu for solution folders in the solution pad.</Description> - <ExtensionNodeSet id="MonoDevelop.Components.Commands.ItemSet"/> - </ExtensionPoint> - - <ExtensionPoint path = "/MonoDevelop/Ide/ContextMenu/ProjectPad/ReferenceFolder" name = "References folder context menu"> - <Description>Context menu for the references folder in the solution pad.</Description> - <ExtensionNodeSet id="MonoDevelop.Components.Commands.ItemSet"/> - </ExtensionPoint> - - <ExtensionPoint path = "/MonoDevelop/Ide/ContextMenu/ProjectPad/Reference" name = "Reference context menu"> - <Description>Context menu for a reference in the solution pad.</Description> - <ExtensionNodeSet id="MonoDevelop.Components.Commands.ItemSet"/> - </ExtensionPoint> - - <ExtensionPoint path = "/MonoDevelop/Ide/ContextMenu/ProjectPad/ProjectFile" name = "Project file context menu"> - <Description>Context menu for a project file in the solution pad.</Description> - <ExtensionNodeSet id="MonoDevelop.Components.Commands.ItemSet"/> - </ExtensionPoint> - - <ExtensionPoint path = "/MonoDevelop/Ide/ContextMenu/ProjectPad/SystemFile" name = "File context menu"> - <Description>Context menu for a file (not belonging to a project) in the solution pad.</Description> - <ExtensionNodeSet id="MonoDevelop.Components.Commands.ItemSet"/> - </ExtensionPoint> - - <ExtensionPoint path = "/MonoDevelop/Ide/ContextMenu/ProjectPad/Folder" name = "Folder context menu"> - <Description>Context menu for a folder in the solution pad.</Description> - <ExtensionNodeSet id="MonoDevelop.Components.Commands.ItemSet"/> - </ExtensionPoint> - - <ExtensionPoint path = "/MonoDevelop/Ide/ContextMenu/ProjectPad/Project" name = "Project context menu"> - <Description>Context menu for a project in the solution pad.</Description> - <ExtensionNodeSet id="MonoDevelop.Components.Commands.ItemSet"/> - </ExtensionPoint> - - <ExtensionPoint path = "/MonoDevelop/Ide/ContextMenu/ProjectPad/UnknownEntry" name = "Unknown entry context menu"> - <Description>Context menu for unknown entries in the solution pad.</Description> + <ExtensionPoint path = "/MonoDevelop/Ide/ContextMenu/ProjectPad" name = "Project pad context menu"> + <Description>Context menu for nodes in the solution pad.</Description> <ExtensionNodeSet id="MonoDevelop.Components.Commands.ItemSet"/> + <ConditionType id="ItemType" type="MonoDevelop.Projects.Extensions.ItemTypeCondition"> + <Description>Type of the item. If no namespace is provided, MonoDevelop.Projects is assumed.</Description> + </ConditionType> </ExtensionPoint> <ExtensionPoint path = "/MonoDevelop/Ide/TaskList/View" name = "Task list views"> @@ -160,6 +118,7 @@ <ExtensionNode name="SolutionPad" type="MonoDevelop.Ide.Codons.SolutionPadCodon"> <ExtensionNode name="NodeBuilder" type="MonoDevelop.Ide.Codons.NodeBuilderCodon"/> <ExtensionNode name="PadOption" type="MonoDevelop.Ide.Codons.PadOptionCodon"/> + <ExtensionNode name="ContextMenu" type="MonoDevelop.Ide.Codons.PadContextMenuExtensionNode"/> </ExtensionNode> <ExtensionNode name="Category" type="MonoDevelop.Ide.Codons.CategoryNode"> <ExtensionNodeSet id="MonoDevelop.Ide.Pads"/> @@ -1002,201 +961,133 @@ <Scheme id="MD2" _name = "MonoDevelop 2.0" resource="KeyBindingSchemeMonoDevelop2.xml"/> </Extension> - <Extension path = "/MonoDevelop/Ide/ContextMenu/ProjectPad/Workspace"> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.Build" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.Rebuild" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.Clean" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.Reload" /> - <ItemSet id = "Tools" _label = "_Tools" > - </ItemSet> - <SeparatorItem id = "RunSeparator" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.RunEntry" /> - <SeparatorItem id = "CombineBuildGroupSeparator" /> - <ItemSet id = "CombineAddMenu" _label = "_Add" > - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.AddNewSolution" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.AddNewWorkspace" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.AddItem" /> - </ItemSet> - <SeparatorItem id = "AddSeparator" /> - <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Delete" /> - <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Rename" /> - <CommandItem id = "MonoDevelop.Ide.Commands.FileCommands.CloseWorkspaceItem" /> - <SeparatorItem id = "FindInFilesSeparator" /> - <CommandItem id = "MonoDevelop.Ide.Commands.SearchCommands.FindInFiles" /> - <CommandItem id = "MonoDevelop.Ide.Commands.FileCommands.OpenContainingFolder" /> - <SeparatorItem id = "CombineOptionsSeparator" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.Options" /> - </Extension> + <Extension path = "/MonoDevelop/Ide/ContextMenu/ProjectPad"> - <Extension path = "/MonoDevelop/Ide/ContextMenu/ProjectPad/Solution"> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.Build" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.Rebuild" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.Clean" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.Reload" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.CustomCommandList" /> - <ItemSet id = "Tools" _label = "_Tools" > - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.ExportProject" /> - <SeparatorItem id = "ExportSeparator" /> - </ItemSet> - <SeparatorItem id = "RunSeparator" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.RunEntry" /> - <SeparatorItem id = "CombineBuildGroupSeparator" /> - <ItemSet id = "CombineAddMenu" _label = "_Add" > - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.AddNewProject" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.AddProject" /> - <SeparatorItem id = "Separator1" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.AddSolutionFolder" /> - </ItemSet> - <SeparatorItem id = "AddSeparator" /> - <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Delete" /> - <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Rename" /> - <CommandItem id = "MonoDevelop.Ide.Commands.FileCommands.CloseWorkspaceItem" /> - <SeparatorItem id = "FindInFilesSeparator" /> - <CommandItem id = "MonoDevelop.Ide.Commands.SearchCommands.FindInFiles" /> - <CommandItem id = "MonoDevelop.Ide.Commands.FileCommands.OpenContainingFolder" /> - <SeparatorItem id = "CombineOptionsSeparator" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.Options" /> - </Extension> + <!-- Build section --> - <Extension path = "/MonoDevelop/Ide/ContextMenu/ProjectPad/SolutionFolder"> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.Build" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.Rebuild" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.Clean" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.Reload" /> - <SeparatorItem id = "CombineBuildGroupSeparator" /> - <ItemSet id = "CombineAddMenu" _label = "Add" > - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.AddNewProject" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.AddProject" /> - <SeparatorItem id = "Separator1" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.AddSolutionFolder" /> - </ItemSet> - <SeparatorItem id = "AddSeparator" /> - <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Delete" /> - <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Rename" /> - <SeparatorItem id = "FindInFilesSeparator" /> - <CommandItem id = "MonoDevelop.Ide.Commands.SearchCommands.FindInFiles" /> - <CommandItem id = "MonoDevelop.Ide.Commands.FileCommands.OpenContainingFolder" /> - <SeparatorItem id = "OptionsSeparator" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.Options" /> - </Extension> - - <Extension path = "/MonoDevelop/Ide/ContextMenu/ProjectPad/ReferenceFolder"> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.AddReference" /> - <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Paste" /> - </Extension> - - <Extension path = "/MonoDevelop/Ide/ContextMenu/ProjectPad/Reference"> - <CommandItem id = "MonoDevelop.Ide.Commands.ViewCommands.Open" /> - <SeparatorItem id = "OpenSeparator" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.LocalCopyReference" /> - <SeparatorItem id = "CopySeparator" /> - <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Copy" /> - <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Delete" /> - </Extension> - - <Extension path = "/MonoDevelop/Ide/ContextMenu/ProjectPad/ProjectFile"> - <CommandItem id = "MonoDevelop.Ide.Commands.ViewCommands.Open" /> - <ItemSet id = "OpenWith" _label = "Open _With"> - <CommandItem id = "MonoDevelop.Ide.Commands.ViewCommands.OpenWithList" /> - </ItemSet> - <CommandItem id = "MonoDevelop.Ide.Commands.FileCommands.OpenContainingFolder" /> - <SeparatorItem id = "OpenSeparator" /> - <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Copy" /> - <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Cut" /> - <SeparatorItem id = "CutSeparator" /> - <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Delete" /> - <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Rename" /> - <SeparatorItem id = "PropertiesStartSeparator" /> - <ItemSet id = "BuildActions" _label = "Build Action"> - <CommandItem id = "MonoDevelop.Ide.Commands.FileCommands.SetBuildAction" /> - </ItemSet> - <ItemSet id = "QuickProperties" _label = "_Quick Properties"> - <CommandItem id = "MonoDevelop.Ide.Commands.FileCommands.CopyToOutputDirectory" /> - </ItemSet> - <CommandItem id = "MonoDevelop.Ide.Commands.FileCommands.ShowProperties" /> - <SeparatorItem id = "PropertiesEndSeparator" /> - </Extension> + <SeparatorItem id = "BuildSectionStart" /> + <Condition id="ItemType" value="IBuildTarget"> + <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.Build" /> + <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.Rebuild" /> + <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.Clean" /> + <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.Reload" /> + <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.CustomCommandList" /> + </Condition> + <SeparatorItem id = "BuildSectionEnd" /> - <Extension path = "/MonoDevelop/Ide/ContextMenu/ProjectPad/SystemFile"> - <CommandItem id = "MonoDevelop.Ide.Commands.ViewCommands.Open" /> - <ItemSet id = "OpenWith" _label = "Open _With"> - <CommandItem id = "MonoDevelop.Ide.Commands.ViewCommands.OpenWithList" /> - </ItemSet> - <CommandItem id = "MonoDevelop.Ide.Commands.FileCommands.OpenContainingFolder" /> - <SeparatorItem id = "OpenSeparator" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.IncludeToProject" /> - <SeparatorItem id = "IncludeToProjectSeparator" /> - <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Copy" /> - <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Cut" /> - <SeparatorItem id = "CutSeparator" /> - <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Delete" /> - <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Rename" /> - </Extension> - - <Extension path = "/MonoDevelop/Ide/ContextMenu/ProjectPad/Folder"> - <ItemSet id = "Add" _label = "_Add"> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.AddNewFiles" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.AddFiles" /> - <SeparatorItem id = "Separator1" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.NewFolder" /> - </ItemSet> - <SeparatorItem id = "AddSeparator" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.IncludeToProject" /> - <SeparatorItem id = "IncludeToProjectSeparator" /> - <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Copy" /> - <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Cut" /> - <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Paste" /> - <SeparatorItem id = "CutSeparator" /> - <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Delete" /> - <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Rename" /> - <SeparatorItem id = "FindInFilesSeparator" /> - <CommandItem id = "MonoDevelop.Ide.Commands.SearchCommands.FindInFiles" /> - <CommandItem id = "MonoDevelop.Ide.Commands.FileCommands.OpenFolder" /> - <CommandItem id = "MonoDevelop.Ide.Commands.FileCommands.OpenInTerminal" /> - </Extension> + <!-- Actions Section --> + + <SeparatorItem id = "ActionsSectionStart" /> + <Condition id="ItemType" value="ProjectReference|ProjectFile|SystemFile"> + <CommandItem id = "MonoDevelop.Ide.Commands.ViewCommands.Open" /> + <ItemSet id = "OpenWith" _label = "Open _With" autohide="true"> + <CommandItem id = "MonoDevelop.Ide.Commands.ViewCommands.OpenWithList" /> + </ItemSet> + <SeparatorItem id = "OpenSeparator" /> + </Condition> + <Condition id="ItemType" value="SystemFile|ProjectFolder"> + <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.IncludeToProject" /> + </Condition> + <SeparatorItem id = "ActionsSectionEnd" /> + + <!-- Run section --> + + <SeparatorItem id = "RunSectionStart" /> + <Condition id="ItemType" value="IBuildTarget"> + <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.RunEntry" /> + </Condition> + <Condition id="ItemType" value="Project"> + <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.SetAsStartupProject" /> + </Condition> + <SeparatorItem id = "RunSectionEnd" /> - <Extension path = "/MonoDevelop/Ide/ContextMenu/ProjectPad/Project"> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.Build" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.Rebuild"/> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.Clean" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.Reload" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.CustomCommandList" /> - <ItemSet id = "Tools" _label = "_Tools" > - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.ExportProject" /> - <SeparatorItem id="ExportSeparator"/> + <!-- Add section --> + + <SeparatorItem id = "AddSectionStart" /> + <ItemSet id = "Add" _label = "_Add" autohide="True"> + <Condition id="ItemType" value="Workspace"> + <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.AddNewSolution" /> + <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.AddNewWorkspace" /> + <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.AddItem" /> + </Condition> + <Condition id="ItemType" value="Solution|SolutionFolder"> + <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.AddNewProject" /> + <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.AddProject" /> + <SeparatorItem id = "Separator1" /> + <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.AddSolutionFolder" /> + </Condition> + <Condition id="ItemType" value="Project|ProjectFolder"> + <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.AddNewFiles" /> + <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.AddFiles" /> + <SeparatorItem id = "Separator1" /> + <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.NewFolder" /> + </Condition> </ItemSet> - <SeparatorItem id = "RunSeparator" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.RunEntry" /> - <SeparatorItem id = "BuildGroupSeparator" /> - <ItemSet id = "Add" _label = "_Add"> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.AddNewFiles" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.AddFiles" /> - <SeparatorItem id = "Separator1" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.NewFolder" /> + <Condition id="ItemType" value="ProjectReferenceCollection"> + <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.AddReference" /> + </Condition> + <SeparatorItem id = "AddSectionEnd" /> + + <!-- Tools section --> + + <SeparatorItem id = "ToolsSectionStart" /> + <ItemSet id = "Tools" _label = "_Tools" autohide="True"> + <Condition id="ItemType" value="Solution|Project"> + <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.ExportProject" /> + <SeparatorItem id = "ExportSeparator" /> + </Condition> + <Condition id="ItemType" value="IFolderItem"> + <CommandItem id = "MonoDevelop.Ide.Commands.FileCommands.OpenInTerminal" /> + </Condition> </ItemSet> - - <SeparatorItem id = "AddSeparator" /> - <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Copy" /> - <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Cut" /> - <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Paste" /> - <SeparatorItem id = "CutSeparator" /> - <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Delete" /> - <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Rename" /> + <Condition id="ItemType" value="IFolderItem"> + <CommandItem id = "MonoDevelop.Ide.Commands.SearchCommands.FindInFiles" /> + </Condition> + <Condition id="ItemType" value="IFolderItem|IFileItem"> + <CommandItem id = "MonoDevelop.Ide.Commands.FileCommands.OpenContainingFolder" /> + </Condition> + <SeparatorItem id = "ToolsSectionEnd" /> + + <!-- Edit section --> + + <SeparatorItem id = "EditSectionStart" /> + <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Copy" disabledVisible="False" /> + <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Cut" disabledVisible="False" /> + <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Paste" disabledVisible="False" /> + <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Delete" disabledVisible="False" /> + <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Rename" disabledVisible="False" /> + <SeparatorItem id = "EditSectionEnd" /> + + <Condition id="ItemType" value="WorkspaceItem"> + <CommandItem id = "MonoDevelop.Ide.Commands.FileCommands.CloseWorkspaceItem" /> + </Condition> + + <SeparatorItem id = "CombineOptionsSeparator" /> + + <!-- Properties Section --> + + <SeparatorItem id = "PropertiesSectionStart" /> + <Condition id="ItemType" value="ProjectFile"> + <ItemSet id = "BuildActions" _label = "Build Action"> + <CommandItem id = "MonoDevelop.Ide.Commands.FileCommands.SetBuildAction" /> + </ItemSet> + <ItemSet id = "QuickProperties" _label = "_Quick Properties"> + <CommandItem id = "MonoDevelop.Ide.Commands.FileCommands.CopyToOutputDirectory" /> + </ItemSet> + </Condition> + <Condition id="ItemType" value="ProjectReference"> + <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.LocalCopyReference" /> + </Condition> + <Condition id="ItemType" value="IBuildTarget"> + <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.Options" /> + </Condition> + <Condition id="ItemType" value="ProjectItem"> + <CommandItem id = "MonoDevelop.Ide.Commands.FileCommands.ShowProperties" /> + </Condition> + <SeparatorItem id = "PropertiesSectionEnd" /> - <SeparatorItem id = "SetAsStartupProjectSeparator" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.SetAsStartupProject" /> - <SeparatorItem id = "FindInFilesSeparator" /> - <CommandItem id = "MonoDevelop.Ide.Commands.SearchCommands.FindInFiles" /> - <CommandItem id = "MonoDevelop.Ide.Commands.FileCommands.OpenContainingFolder" /> - <SeparatorItem id = "OptionsSeparator" /> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.Options" /> </Extension> - <Extension path = "/MonoDevelop/Ide/ContextMenu/ProjectPad/UnknownEntry"> - <CommandItem id = "MonoDevelop.Ide.Commands.ProjectCommands.Reload" /> - <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Delete" /> - </Extension> - <!--<Extension path = "/MonoDevelop/Ide/FileFilters"> <FileFilter id = "AllFiles" _label = "All Files" @@ -1215,6 +1106,7 @@ <Pad id = "MonoDevelop.Ide.Gui.Pads.HelpTree" defaultPlacement = "Left" _label = "Help" icon="gtk-help" class = "MonoDevelop.Ide.Gui.Pads.HelpTree"/> <SolutionPad id = "ProjectPad" defaultPlacement = "Left" _label = "Solution" icon = "md-solution" class = "MonoDevelop.Ide.Gui.Pads.ProjectPad.ProjectSolutionPad"> + <ContextMenu path="/MonoDevelop/Ide/ContextMenu/ProjectPad" /> <PadOption id = "ShowAllFiles" _label = "Show All Files" defaultValue = "False" /> <NodeBuilder class = "MonoDevelop.Ide.Gui.Pads.ProjectPad.WorkspaceNodeBuilder"/> <NodeBuilder class = "MonoDevelop.Ide.Gui.Pads.ProjectPad.SolutionNodeBuilder"/> @@ -1227,6 +1119,7 @@ <NodeBuilder class = "MonoDevelop.Ide.Gui.Pads.ProjectPad.ProjectFolderNodeBuilder"/> <NodeBuilder class = "MonoDevelop.Ide.Gui.Pads.ProjectPad.SystemFileNodeBuilder"/> <NodeBuilder class = "MonoDevelop.Ide.Gui.Pads.ProjectPad.ShowAllFilesBuilderExtension"/> + <NodeBuilder class = "MonoDevelop.Ide.Gui.Pads.ProjectPad.FileOperationsBuilderExtension"/> <NodeBuilder class = "MonoDevelop.Ide.Gui.Pads.ProjectPad.UnknownEntryNodeBuilder"/> </SolutionPad> diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj index 151c846fa2..9206804867 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj @@ -525,6 +525,8 @@ <Compile Include="MonoDevelop.Ide.Gui.Content\TextStylePolicy.cs" /> <Compile Include="MonoDevelop.Ide.Gui\PadFontChanger.cs" /> <Compile Include="MonoDevelop.Ide.Gui.Components\PadTreeView.cs" /> + <Compile Include="MonoDevelop.Ide.Codons\PadContextMenuExtensionNode.cs" /> + <Compile Include="MonoDevelop.Ide.Gui.Pads.ProjectPad\FileOperationsBuilderExtension.cs" /> <Compile Include="MonoDevelop.Ide.Templates\DirectoryTemplate.cs" /> </ItemGroup> <ItemGroup> |