Index: Core/Plugins/src/Core.Plugins.ProjectExplorer/NodePresenters/ProjectNodePresenter.cs =================================================================== diff -u -re388ea76d1d044298cc89156c8744fbea1bcb736 -r3d6a1ac25ce195c4fc5fac791d4db2c0b7bf0260 --- Core/Plugins/src/Core.Plugins.ProjectExplorer/NodePresenters/ProjectNodePresenter.cs (.../ProjectNodePresenter.cs) (revision e388ea76d1d044298cc89156c8744fbea1bcb736) +++ Core/Plugins/src/Core.Plugins.ProjectExplorer/NodePresenters/ProjectNodePresenter.cs (.../ProjectNodePresenter.cs) (revision 3d6a1ac25ce195c4fc5fac791d4db2c0b7bf0260) @@ -1,21 +1,18 @@ using System.Collections; using System.ComponentModel; using System.Drawing; +using System.Windows.Forms; using Core.Common.Base; using Core.Common.Controls; +using Core.Common.Controls.Swf.TreeViewControls; using Core.Common.Gui; -using Core.Common.Gui.Swf; +using Core.Common.Gui.ContextMenu; using Core.Plugins.ProjectExplorer.Properties; namespace Core.Plugins.ProjectExplorer.NodePresenters { - public class ProjectNodePresenter : TreeViewNodePresenterBaseForPluginGui + public class ProjectNodePresenter : TreeViewNodePresenterBase { - public ProjectNodePresenter(GuiPlugin guiPlugin) : base(guiPlugin) - { - GuiPlugin = guiPlugin; - } - public override IEnumerable GetChildNodeObjects(Project project) { return project.Items; @@ -30,6 +27,32 @@ node.Tag = project; } + public override ContextMenuStrip GetContextMenu(ITreeNode sender, object nodeData) + { + if (ContextMenuBuilderProvider == null) + { + return null; + } + var addItem = new StrictContextMenuItem( + Resources.AddItem, + null, + Resources.plus, + (s,e) => CommandHandler.AddNewItem(nodeData)); + + return ContextMenuBuilderProvider + .Get(sender) + .AddCustomItem(addItem) + .AddSeparator() + .AddExpandAllItem() + .AddCollapseAllItem() + .AddSeparator() + .AddExportItem() + .AddImportItem() + .AddSeparator() + .AddPropertiesItem() + .Build(); + } + public override DragOperations CanDrag(Project nodeData) { return DragOperations.None; @@ -63,5 +86,8 @@ node.Text = item.Name; } } + + public IContextMenuBuilderProvider ContextMenuBuilderProvider { private get; set; } + public IGuiCommandHandler CommandHandler { private get; set; } } } \ No newline at end of file Index: Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectExplorer.cs =================================================================== diff -u -r622c20f6fc0b693b67a3e57b2ece939823002c62 -r3d6a1ac25ce195c4fc5fac791d4db2c0b7bf0260 --- Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectExplorer.cs (.../ProjectExplorer.cs) (revision 622c20f6fc0b693b67a3e57b2ece939823002c62) +++ Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectExplorer.cs (.../ProjectExplorer.cs) (revision 3d6a1ac25ce195c4fc5fac791d4db2c0b7bf0260) @@ -73,11 +73,6 @@ base.Dispose(); } - public ContextMenuStrip GetContextMenu(ITreeNode sender, object o) - { - return ProjectTreeView.GetContextMenu(o); - } - public void ScrollTo(object o) { var nodeToSelect = TreeView.GetNodeByTag(o); Index: Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectExplorerGuiPlugin.cs =================================================================== diff -u -rcefa4b33b2ee1f5073bc18d6b769ceaf7c727f66 -r3d6a1ac25ce195c4fc5fac791d4db2c0b7bf0260 --- Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectExplorerGuiPlugin.cs (.../ProjectExplorerGuiPlugin.cs) (revision cefa4b33b2ee1f5073bc18d6b769ceaf7c727f66) +++ Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectExplorerGuiPlugin.cs (.../ProjectExplorerGuiPlugin.cs) (revision 3d6a1ac25ce195c4fc5fac791d4db2c0b7bf0260) @@ -6,6 +6,7 @@ using Core.Common.Gui; using Core.Common.Gui.Forms; using Core.Common.Utils.Collections; +using Core.Plugins.ProjectExplorer.NodePresenters; namespace Core.Plugins.ProjectExplorer { @@ -27,6 +28,15 @@ } } + public override IEnumerable GetProjectTreeViewNodePresenters() + { + yield return new ProjectNodePresenter + { + ContextMenuBuilderProvider = Gui.ContextMenuProvider, + CommandHandler = Gui.CommandHandler + }; + } + public static ProjectExplorerGuiPlugin Instance { get; private set; } public ProjectExplorer ProjectExplorer { get; private set; } @@ -85,14 +95,6 @@ //should the 'instance' be set to null as well??? } - /// - /// - /// - public override ContextMenuStrip GetContextMenu(object sender, object nodeTag) - { - return ProjectExplorer != null ? ProjectExplorer.ProjectTreeView.GetContextMenu(nodeTag) : null; - } - private void FillProjectTreeViewNodePresentersFromPlugins() { // query all existing plugin guis Index: Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectTreeView.Designer.cs =================================================================== diff -u -r7299ddaaafe53e58adef80f0e05a0576f66e1edf -r3d6a1ac25ce195c4fc5fac791d4db2c0b7bf0260 --- Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectTreeView.Designer.cs (.../ProjectTreeView.Designer.cs) (revision 7299ddaaafe53e58adef80f0e05a0576f66e1edf) +++ Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectTreeView.Designer.cs (.../ProjectTreeView.Designer.cs) (revision 3d6a1ac25ce195c4fc5fac791d4db2c0b7bf0260) @@ -30,152 +30,19 @@ /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ProjectTreeView)); - this.contextMenuProject = new System.Windows.Forms.ContextMenuStrip(this.components); - this.buttonFolderAdd = new Core.Common.Controls.Swf.ClonableToolStripMenuItem(); - this.buttonFolderAddNewItem = new Core.Common.Controls.Swf.ClonableToolStripMenuItem(); - this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); - this.buttonFolderImportFolder = new Core.Common.Controls.Swf.ClonableToolStripMenuItem(); - this.buttonFolderExportFolder = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator18 = new System.Windows.Forms.ToolStripSeparator(); - this.buttonFolderDelete = new System.Windows.Forms.ToolStripMenuItem(); - this.buttonFolderRename = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); - this.buttonFolderExpandAll = new Core.Common.Controls.Swf.ClonableToolStripMenuItem(); - this.buttonFolderCollapseAll = new Core.Common.Controls.Swf.ClonableToolStripMenuItem(); - this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator(); - this.buttonFolderProperties = new Core.Common.Controls.Swf.ClonableToolStripMenuItem(); - this.contextMenuProject.SuspendLayout(); this.SuspendLayout(); // - // contextMenuProject - // - this.contextMenuProject.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.buttonFolderAdd, - this.toolStripSeparator18, - this.buttonFolderDelete, - this.buttonFolderRename, - this.toolStripSeparator5, - this.buttonFolderExpandAll, - this.buttonFolderCollapseAll, - this.toolStripSeparator7, - this.buttonFolderImportFolder, - this.buttonFolderExportFolder, - this.toolStripSeparator4, - this.buttonFolderProperties}); - this.contextMenuProject.Name = "contextMenuProject"; - resources.ApplyResources(this.contextMenuProject, "contextMenuProject"); - // - // buttonFolderAdd - // - this.buttonFolderAdd.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.buttonFolderAddNewItem}); - this.buttonFolderAdd.Image = global::Core.Plugins.ProjectExplorer.Properties.Resources.plus; - this.buttonFolderAdd.Name = "buttonFolderAdd"; - resources.ApplyResources(this.buttonFolderAdd, "buttonFolderAdd"); - // - // buttonFolderAddNewItem - // - this.buttonFolderAddNewItem.Image = global::Core.Plugins.ProjectExplorer.Properties.Resources.DataItem; - this.buttonFolderAddNewItem.Name = "buttonFolderAddNewItem"; - resources.ApplyResources(this.buttonFolderAddNewItem, "buttonFolderAddNewItem"); - this.buttonFolderAddNewItem.Click += new System.EventHandler(this.buttonsAddNewDataClick); - // - // toolStripSeparator4 - // - this.toolStripSeparator4.Name = "toolStripSeparator4"; - resources.ApplyResources(this.toolStripSeparator4, "toolStripSeparator4"); - // - // buttonFolderImportFolder - // - this.buttonFolderImportFolder.Image = global::Core.Plugins.ProjectExplorer.Properties.Resources.table_import; - this.buttonFolderImportFolder.Name = "buttonFolderImportFolder"; - resources.ApplyResources(this.buttonFolderImportFolder, "buttonFolderImportFolder"); - this.buttonFolderImportFolder.Click += new System.EventHandler(this.buttonFolderImportClick); - // - // buttonFolderExportFolder - // - this.buttonFolderExportFolder.Image = global::Core.Plugins.ProjectExplorer.Properties.Resources.table_export; - this.buttonFolderExportFolder.Name = "buttonFolderExportFolder"; - resources.ApplyResources(this.buttonFolderExportFolder, "buttonFolderExportFolder"); - this.buttonFolderExportFolder.Click += new System.EventHandler(this.ButtonExportClick); - // - // toolStripSeparator18 - // - this.toolStripSeparator18.Name = "toolStripSeparator18"; - resources.ApplyResources(this.toolStripSeparator18, "toolStripSeparator18"); - // - // buttonFolderDelete - // - this.buttonFolderDelete.Image = global::Core.Plugins.ProjectExplorer.Properties.Resources.DeleteHS; - this.buttonFolderDelete.Name = "buttonFolderDelete"; - resources.ApplyResources(this.buttonFolderDelete, "buttonFolderDelete"); - this.buttonFolderDelete.Click += new System.EventHandler(this.deleteMenuItemClick); - // - // buttonFolderRename - // - this.buttonFolderRename.Image = global::Core.Plugins.ProjectExplorer.Properties.Resources.edit; - this.buttonFolderRename.Name = "buttonFolderRename"; - resources.ApplyResources(this.buttonFolderRename, "buttonFolderRename"); - this.buttonFolderRename.Click += new System.EventHandler(this.buttonsRenameClick); - // - // toolStripSeparator5 - // - this.toolStripSeparator5.Name = "toolStripSeparator5"; - resources.ApplyResources(this.toolStripSeparator5, "toolStripSeparator5"); - // - // buttonFolderExpandAll - // - this.buttonFolderExpandAll.Image = global::Core.Plugins.ProjectExplorer.Properties.Resources.arrow_stop_270; - this.buttonFolderExpandAll.Name = "buttonFolderExpandAll"; - resources.ApplyResources(this.buttonFolderExpandAll, "buttonFolderExpandAll"); - this.buttonFolderExpandAll.Click += new System.EventHandler(this.buttonFolderExpandAll_Click); - // - // buttonFolderCollapseAll - // - this.buttonFolderCollapseAll.Image = global::Core.Plugins.ProjectExplorer.Properties.Resources.arrow_stop_090; - this.buttonFolderCollapseAll.Name = "buttonFolderCollapseAll"; - resources.ApplyResources(this.buttonFolderCollapseAll, "buttonFolderCollapseAll"); - this.buttonFolderCollapseAll.Click += new System.EventHandler(this.buttonFolderCollapseAll_Click); - // - // toolStripSeparator7 - // - this.toolStripSeparator7.Name = "toolStripSeparator7"; - resources.ApplyResources(this.toolStripSeparator7, "toolStripSeparator7"); - // - // buttonFolderProperties - // - this.buttonFolderProperties.Image = global::Core.Plugins.ProjectExplorer.Properties.Resources.PropertiesHS; - this.buttonFolderProperties.Name = "buttonFolderProperties"; - resources.ApplyResources(this.buttonFolderProperties, "buttonFolderProperties"); - this.buttonFolderProperties.Click += new System.EventHandler(this.buttonsPropertiesClick); - // // ProjectTreeView // resources.ApplyResources(this, "$this"); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.Name = "ProjectTreeView"; - this.contextMenuProject.ResumeLayout(false); this.ResumeLayout(false); } #endregion - private System.Windows.Forms.ContextMenuStrip contextMenuProject; - private ClonableToolStripMenuItem buttonFolderAdd; - private ClonableToolStripMenuItem buttonFolderAddNewItem; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator4; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator5; - private ClonableToolStripMenuItem buttonFolderImportFolder; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator7; - private ClonableToolStripMenuItem buttonFolderProperties; - private System.Windows.Forms.ToolStripMenuItem buttonFolderExportFolder; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator18; - private System.Windows.Forms.ToolStripMenuItem buttonFolderRename; - private System.Windows.Forms.ToolStripMenuItem buttonFolderDelete; - private ClonableToolStripMenuItem buttonFolderExpandAll; - private ClonableToolStripMenuItem buttonFolderCollapseAll; } } \ No newline at end of file Index: Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectTreeView.cs =================================================================== diff -u -rc621c8ee0e3f645a82baedf1654f4d58d1632348 -r3d6a1ac25ce195c4fc5fac791d4db2c0b7bf0260 --- Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectTreeView.cs (.../ProjectTreeView.cs) (revision c621c8ee0e3f645a82baedf1654f4d58d1632348) +++ Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectTreeView.cs (.../ProjectTreeView.cs) (revision 3d6a1ac25ce195c4fc5fac791d4db2c0b7bf0260) @@ -64,11 +64,8 @@ gui.SelectionChanged += GuiSelectionChanged; - // nodepresenters alter default behaviour of treeview to suite project dataobject - var projectNodePresenter = new ProjectNodePresenter(guiPlugin); var treeFolderNodePresenter = new TreeFolderNodePresenter(guiPlugin); - treeView.NodePresenters.Add(projectNodePresenter); treeView.NodePresenters.Add(treeFolderNodePresenter); } } @@ -123,26 +120,6 @@ public Image Image { get; set; } public ViewInfo ViewInfo { get; set; } - - public ContextMenuStrip GetContextMenu(object nodeTag) - { - //TODO: let go of menu's here but compose a menu on the fly based on selection. - if (nodeTag is Project) - { - buttonFolderAdd.Enabled = true; - - buttonFolderAddNewItem.Enabled = applicationCore.GetSupportedDataItemInfos(nodeTag).Any(); - - buttonFolderDelete.Available = treeView.SelectedNodeCanDelete(); - buttonFolderRename.Enabled = treeView.SelectedNodeCanRename(); - - buttonFolderImportFolder.Enabled = gui.CommandHandler.CanImportToGuiSelection(); - - return contextMenuProject; - } - - return null; - } public new void Dispose() { Index: Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectTreeView.resx =================================================================== diff -u -r7299ddaaafe53e58adef80f0e05a0576f66e1edf -r3d6a1ac25ce195c4fc5fac791d4db2c0b7bf0260 --- Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectTreeView.resx (.../ProjectTreeView.resx) (revision 7299ddaaafe53e58adef80f0e05a0576f66e1edf) +++ Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectTreeView.resx (.../ProjectTreeView.resx) (revision 3d6a1ac25ce195c4fc5fac791d4db2c0b7bf0260) @@ -117,181 +117,19 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 296, 17 - - - - 144, 22 - - - Nieuw &Item... - - - 158, 22 - - - T&oevoegen - - - 155, 6 - - - - - - 158, 22 - - - &Verwijderen - - - - - - 158, 22 - - - &Hernoemen - - - 155, 6 - - - 158, 22 - - - Alles &uitklappen - - - 158, 22 - - - Alles &inklappen - - - 155, 6 - - - 158, 22 - - - I&mporteren... - - - 158, 22 - - - E&xporteren... - - - 155, 6 - - - 158, 22 - - - &Eigenschappen - - - 159, 226 - - - contextMenuProject - - - System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - True 182 + 6, 13 262, 251 - - buttonFolderAdd - - - Core.Common.Controls.Swf.ClonableToolStripMenuItem, Core.Common.Controls.Swf, Version=0.5.0.938, Culture=neutral, PublicKeyToken=null - - - buttonFolderAddNewItem - - - Core.Common.Controls.Swf.ClonableToolStripMenuItem, Core.Common.Controls.Swf, Version=0.5.0.938, Culture=neutral, PublicKeyToken=null - - - toolStripSeparator4 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - buttonFolderImportFolder - - - Core.Common.Controls.Swf.ClonableToolStripMenuItem, Core.Common.Controls.Swf, Version=0.5.0.938, Culture=neutral, PublicKeyToken=null - - - buttonFolderExportFolder - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripSeparator18 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - buttonFolderDelete - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - buttonFolderRename - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripSeparator5 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - buttonFolderExpandAll - - - Core.Common.Controls.Swf.ClonableToolStripMenuItem, Core.Common.Controls.Swf, Version=0.5.0.938, Culture=neutral, PublicKeyToken=null - - - buttonFolderCollapseAll - - - Core.Common.Controls.Swf.ClonableToolStripMenuItem, Core.Common.Controls.Swf, Version=0.5.0.938, Culture=neutral, PublicKeyToken=null - - - toolStripSeparator7 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - buttonFolderProperties - - - Core.Common.Controls.Swf.ClonableToolStripMenuItem, Core.Common.Controls.Swf, Version=0.5.0.938, Culture=neutral, PublicKeyToken=null - ProjectTreeView Index: Core/Plugins/src/Core.Plugins.ProjectExplorer/Properties/Resources.Designer.cs =================================================================== diff -u -r622c20f6fc0b693b67a3e57b2ece939823002c62 -r3d6a1ac25ce195c4fc5fac791d4db2c0b7bf0260 --- Core/Plugins/src/Core.Plugins.ProjectExplorer/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 622c20f6fc0b693b67a3e57b2ece939823002c62) +++ Core/Plugins/src/Core.Plugins.ProjectExplorer/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 3d6a1ac25ce195c4fc5fac791d4db2c0b7bf0260) @@ -71,6 +71,15 @@ } /// + /// Looks up a localized string similar to Nieuwe &Item.... + /// + public static string AddItem { + get { + return ResourceManager.GetString("AddItem", resourceCulture); + } + } + + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// public static System.Drawing.Bitmap application_form { @@ -919,6 +928,15 @@ } /// + /// Looks up a localized string similar to &Hernoemen. + /// + public static string Rename { + get { + return ResourceManager.GetString("Rename", resourceCulture); + } + } + + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// public static System.Drawing.Bitmap resultset_next { Index: Core/Plugins/src/Core.Plugins.ProjectExplorer/Properties/Resources.resx =================================================================== diff -u -r622c20f6fc0b693b67a3e57b2ece939823002c62 -r3d6a1ac25ce195c4fc5fac791d4db2c0b7bf0260 --- Core/Plugins/src/Core.Plugins.ProjectExplorer/Properties/Resources.resx (.../Resources.resx) (revision 622c20f6fc0b693b67a3e57b2ece939823002c62) +++ Core/Plugins/src/Core.Plugins.ProjectExplorer/Properties/Resources.resx (.../Resources.resx) (revision 3d6a1ac25ce195c4fc5fac791d4db2c0b7bf0260) @@ -412,4 +412,10 @@ ..\Resources\table-import.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + Nieuwe &Item... + + + &Hernoemen + \ No newline at end of file