Index: Core/Common/src/Core.Common.Gui/ContextMenuItemFactory.cs =================================================================== diff -u --- Core/Common/src/Core.Common.Gui/ContextMenuItemFactory.cs (revision 0) +++ Core/Common/src/Core.Common.Gui/ContextMenuItemFactory.cs (revision a85e384df91356b2c2716591531a863e01da876b) @@ -0,0 +1,44 @@ +using System.Linq; +using System.Windows.Forms; +using Core.Common.Gui.Properties; + +namespace Core.Common.Gui +{ + public class ContextMenuItemFactory + { + private readonly IGui gui; + + public ContextMenuItemFactory(IGui gui) + { + this.gui = gui; + } + + public ToolStripItem CreateExportItem(object item) + { + var exporters = gui.ApplicationCore.FileExporters.Where(fe => fe.CanExportFor(item)); + var newItem = new ToolStripMenuItem(Resources.Export) + { + ToolTipText = Resources.Export_ToolTip, + Image = Resources.ExportIcon + }; + + newItem.Enabled = exporters.Any(); + + return newItem; + } + + public ToolStripItem CreateImportItem(object item) + { + var importers = gui.ApplicationCore.FileImporters.Where(fe => fe.CanImportOn(item)); + var newItem = new ToolStripMenuItem(Resources.Import) + { + ToolTipText = Resources.Import_ToolTip, + Image = Resources.ImportIcon + }; + + newItem.Enabled = importers.Any(); + + return newItem; + } + } +} \ No newline at end of file Index: Core/Common/src/Core.Common.Gui/Core.Common.Gui.csproj =================================================================== diff -u -rb13a656f78f98541b955433ea4074da47b57f8bc -ra85e384df91356b2c2716591531a863e01da876b --- Core/Common/src/Core.Common.Gui/Core.Common.Gui.csproj (.../Core.Common.Gui.csproj) (revision b13a656f78f98541b955433ea4074da47b57f8bc) +++ Core/Common/src/Core.Common.Gui/Core.Common.Gui.csproj (.../Core.Common.Gui.csproj) (revision a85e384df91356b2c2716591531a863e01da876b) @@ -133,6 +133,8 @@ + + @@ -361,6 +363,8 @@ Always + + Index: Core/Common/src/Core.Common.Gui/IContextMenuProvider.cs =================================================================== diff -u --- Core/Common/src/Core.Common.Gui/IContextMenuProvider.cs (revision 0) +++ Core/Common/src/Core.Common.Gui/IContextMenuProvider.cs (revision a85e384df91356b2c2716591531a863e01da876b) @@ -0,0 +1,9 @@ +using System.Windows.Forms; + +namespace Core.Common.Gui +{ + public interface IContextMenuProvider + { + ContextMenuStrip Get(object obj); + } +} \ No newline at end of file Index: Core/Common/src/Core.Common.Gui/Properties/Resources.Designer.cs =================================================================== diff -u -rb13a656f78f98541b955433ea4074da47b57f8bc -ra85e384df91356b2c2716591531a863e01da876b --- Core/Common/src/Core.Common.Gui/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision b13a656f78f98541b955433ea4074da47b57f8bc) +++ Core/Common/src/Core.Common.Gui/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision a85e384df91356b2c2716591531a863e01da876b) @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.18063 +// Runtime Version:4.0.30319.34209 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -757,8 +757,36 @@ } /// + /// Looks up a localized string similar to &Exporteren.... + /// + public static string Export { + get { + return ResourceManager.GetString("Export", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Exporteer gegevens naar een bestand.. + /// + public static string Export_ToolTip { + get { + return ResourceManager.GetString("Export_ToolTip", resourceCulture); + } + } + + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// + public static System.Drawing.Bitmap ExportIcon { + get { + object obj = ResourceManager.GetObject("ExportIcon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// public static System.Drawing.Bitmap feed { get { object obj = ResourceManager.GetObject("feed", resourceCulture); @@ -1143,8 +1171,36 @@ } /// + /// Looks up a localized string similar to &Importeren.... + /// + public static string Import { + get { + return ResourceManager.GetString("Import", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Importeer gegevens vanuit een bestand.. + /// + public static string Import_ToolTip { + get { + return ResourceManager.GetString("Import_ToolTip", resourceCulture); + } + } + + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// + public static System.Drawing.Bitmap ImportIcon { + get { + object obj = ResourceManager.GetObject("ImportIcon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// public static System.Drawing.Bitmap information { get { object obj = ResourceManager.GetObject("information", resourceCulture); Index: Core/Common/src/Core.Common.Gui/Properties/Resources.resx =================================================================== diff -u -rb13a656f78f98541b955433ea4074da47b57f8bc -ra85e384df91356b2c2716591531a863e01da876b --- Core/Common/src/Core.Common.Gui/Properties/Resources.resx (.../Resources.resx) (revision b13a656f78f98541b955433ea4074da47b57f8bc) +++ Core/Common/src/Core.Common.Gui/Properties/Resources.resx (.../Resources.resx) (revision a85e384df91356b2c2716591531a863e01da876b) @@ -815,4 +815,22 @@ Licentie + + &Exporteren... + + + Exporteer gegevens naar een bestand. + + + ..\resources\table-export.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + &Importeren... + + + ..\resources\table-import.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + Importeer gegevens vanuit een bestand. + \ No newline at end of file Index: Core/Common/src/Core.Common.Gui/Resources/table-export.png =================================================================== diff -u Binary files differ Index: Core/Common/src/Core.Common.Gui/Resources/table-import.png =================================================================== diff -u Binary files differ Index: Core/Common/src/Core.Common.Gui/RingtoetsGui.cs =================================================================== diff -u -rb13a656f78f98541b955433ea4074da47b57f8bc -ra85e384df91356b2c2716591531a863e01da876b --- Core/Common/src/Core.Common.Gui/RingtoetsGui.cs (.../RingtoetsGui.cs) (revision b13a656f78f98541b955433ea4074da47b57f8bc) +++ Core/Common/src/Core.Common.Gui/RingtoetsGui.cs (.../RingtoetsGui.cs) (revision a85e384df91356b2c2716591531a863e01da876b) @@ -32,7 +32,7 @@ /// /// Gui class provides graphical user functionality for a given IApplication. /// - public class RingtoetsGui : IGui, IDisposable + public class RingtoetsGui : IGui, IContextMenuProvider, IDisposable { public event EventHandler SelectionChanged; // TODO: make it weak @@ -61,6 +61,7 @@ private bool runFinished; private bool isExiting; private Project project; + private ContextMenuItemFactory contextMenuItemFactory; private bool userSettingsDirty; private ApplicationSettingsBase userSettings; @@ -91,6 +92,8 @@ ProjectClosing += ApplicationProjectClosing; ProjectOpened += ApplicationProjectOpened; + + contextMenuItemFactory = new ContextMenuItemFactory(this); } public bool SkipDialogsOnExit { get; set; } @@ -1060,5 +1063,13 @@ { Dispose(false); } + + public ContextMenuStrip Get(object obj) + { + ContextMenuStrip contextMenu = new ContextMenuStrip(); + contextMenu.Items.Add(contextMenuItemFactory.CreateImportItem(obj)); + contextMenu.Items.Add(contextMenuItemFactory.CreateExportItem(obj)); + return contextMenu; + } } } \ No newline at end of file Index: Core/Common/test/Core.Common.TestUtils/TestHelper.cs =================================================================== diff -u -r7299ddaaafe53e58adef80f0e05a0576f66e1edf -ra85e384df91356b2c2716591531a863e01da876b --- Core/Common/test/Core.Common.TestUtils/TestHelper.cs (.../TestHelper.cs) (revision 7299ddaaafe53e58adef80f0e05a0576f66e1edf) +++ Core/Common/test/Core.Common.TestUtils/TestHelper.cs (.../TestHelper.cs) (revision a85e384df91356b2c2716591531a863e01da876b) @@ -291,7 +291,7 @@ return; } Assert.IsNotNull(actualImage); - + Assert.AreEqual(expectedImage.Size, actualImage.Size); IEnumerable expectedImageBytes = GetImageAsByteArray(expectedImage); IEnumerable actualImageBytes = GetImageAsByteArray(actualImage); @@ -635,7 +635,7 @@ { using (var stream = new MemoryStream()) { - expectedImage.Save(stream, ImageFormat.Bmp); + expectedImage.Save(stream, expectedImage.RawFormat); var length = stream.Length; var imageBytes = new byte[length]; stream.Read(imageBytes, 0, (int)length); Index: Ringtoets/Common/src/Ringtoets.Common.Forms/Extensions/ContextMenuStripExtensions.cs =================================================================== diff -u -rd3747e8b32bdedc478c8182bce75fba78269d34d -ra85e384df91356b2c2716591531a863e01da876b --- Ringtoets/Common/src/Ringtoets.Common.Forms/Extensions/ContextMenuStripExtensions.cs (.../ContextMenuStripExtensions.cs) (revision d3747e8b32bdedc478c8182bce75fba78269d34d) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/Extensions/ContextMenuStripExtensions.cs (.../ContextMenuStripExtensions.cs) (revision a85e384df91356b2c2716591531a863e01da876b) @@ -20,27 +20,52 @@ /// The newly created . public static ToolStripItem AddMenuItem(this ContextMenuStrip parentMenu, string text, string tooltip, Image icon, EventHandler clickHandler) { + return parentMenu.InsertMenuItem(parentMenu.Items.Count, text, tooltip, icon, clickHandler); + } + + /// + /// Inserts a new with all standard parameters at the given . + /// + /// The position in the to add the item to. + /// The parent menu to which the new item is added. + /// Value for . + /// Value for . + /// Value for . + /// Method to handle the user clicking on the item.. + /// The newly created . + public static ToolStripItem InsertMenuItem(this ContextMenuStrip parentMenu, int position, string text, string tooltip, Image icon, EventHandler clickHandler) + { var newItem = new ToolStripMenuItem(text) { ToolTipText = tooltip, Image = icon }; newItem.Click += clickHandler; - parentMenu.Items.Add(newItem); + parentMenu.Items.Insert(position,newItem); return newItem; } /// - /// Adds a new with all standard parameters. + /// Adds a new . /// /// The parent menu to which the new item is added. public static void AddSeperator(this ContextMenuStrip parentMenu) { + parentMenu.InsertSeperator(parentMenu.Items.Count); + } + + /// + /// Insert a new at the given . + /// + /// The position in the to add the item to. + /// The parent menu to which the new item is added. + public static void InsertSeperator(this ContextMenuStrip parentMenu, int position) + { var newItem = new ToolStripSeparator(); - parentMenu.Items.Add(newItem); + parentMenu.Items.Insert(position, newItem); } } } \ No newline at end of file Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/ContextMenu/FailureMechanismContextMenu.cs =================================================================== diff -u --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/ContextMenu/FailureMechanismContextMenu.cs (revision 0) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/ContextMenu/FailureMechanismContextMenu.cs (revision a85e384df91356b2c2716591531a863e01da876b) @@ -0,0 +1,64 @@ +using System.Windows.Forms; +using Core.Common.Controls; +using Core.Common.Gui; +using Ringtoets.Common.Forms.Extensions; +using Ringtoets.Common.Forms.Properties; +using Ringtoets.Integration.Data.Placeholders; +using Ringtoets.Piping.Data; + +namespace Ringtoets.Integration.Forms.ContextMenu +{ + public class FailureMechanismContextMenu + { + public static ContextMenuStrip CreateContextMenu(IGuiCommandHandler commandHandler, ITreeView treeView, FailureMechanismPlaceholder item, IContextMenuProvider provider) + { + ContextMenuStrip contextMenu = provider.Get(item); + + contextMenu.InsertMenuItem(0, + Resources.Calculate_all, + Resources.Calculate_all_ToolTip, + Resources.CalculateAllIcon, null).Enabled = false; + contextMenu.InsertMenuItem(1, + Resources.Clear_all_output, + Resources.Clear_all_output_ToolTip, + Resources.ClearIcon, null).Enabled = false; + contextMenu.InsertSeperator(2); + + contextMenu.InsertMenuItem(3, + Resources.FailureMechanism_Expand_all, + Resources.FailureMechanism_Expand_all_ToolTip, + Resources.ExpandAllIcon, (s, e) => ExpandAllItemClicked(treeView)); + contextMenu.InsertMenuItem(4, + Resources.FailureMechanism_Collapse_all, + Resources.FailureMechanism_Collapse_all_ToolTip, + Resources.CollapseAllIcon, (s,e) => CollapseAllItemClicked(treeView)); + contextMenu.InsertSeperator(5); + + contextMenu.AddSeperator(); + contextMenu.AddMenuItem( + Resources.FailureMechanism_Properties, + Resources.FailureMechanism_Properties_ToolTip, + Resources.PropertiesIcon, (s, e) => ShowProperties(commandHandler)); + + return contextMenu; + } + + public static void ShowProperties(IGuiCommandHandler commandHandler) + { + if (commandHandler != null) + { + commandHandler.ShowProperties(); + } + } + + public static void CollapseAllItemClicked(ITreeView treeView) + { + treeView.CollapseAll(treeView.SelectedNode); + } + + public static void ExpandAllItemClicked(ITreeView treeView) + { + treeView.ExpandAll(treeView.SelectedNode); + } + } +} \ No newline at end of file Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/ContextMenu/PlaceholderWithReadonlyNameContextMenu.cs =================================================================== diff -u --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/ContextMenu/PlaceholderWithReadonlyNameContextMenu.cs (revision 0) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/ContextMenu/PlaceholderWithReadonlyNameContextMenu.cs (revision a85e384df91356b2c2716591531a863e01da876b) @@ -0,0 +1,46 @@ +using System.Windows.Forms; +using Core.Common.Gui; +using Ringtoets.Common.Forms.Extensions; +using Ringtoets.Common.Forms.Properties; +using Ringtoets.Common.Placeholder; + +namespace Ringtoets.Integration.Forms.ContextMenu +{ + public class PlaceholderWithReadonlyNameContextMenu + { + public static ContextMenuStrip CreateContextMenu(PlaceholderWithReadonlyName nodeData, IGuiCommandHandler guiHandler, IContextMenuProvider provider) + { + ContextMenuStrip contextMenu = provider.Get(nodeData); + + if (nodeData is InputPlaceholder || nodeData is OutputPlaceholder) + { + contextMenu.InsertMenuItem(0, + Resources.FailureMechanism_InputsOutputs_Open, + Resources.FailureMechanism_InputsOutputs_Open_ToolTip, + Resources.OpenIcon, null).Enabled = false; + contextMenu.InsertSeperator(1); + + contextMenu.InsertMenuItem(2, + Resources.FailureMechanism_InputsOutputs_Erase, + Resources.FailureMechanism_InputsOutputs_Erase_ToolTip, + Resources.ClearIcon, null).Enabled = false; + contextMenu.InsertSeperator(3); + + contextMenu.AddSeperator(); + contextMenu.AddMenuItem( + Resources.FailureMechanism_Properties, + Resources.FailureMechanism_Properties_ToolTip, + Resources.PropertiesIcon, (s, e) => ShowProperties(guiHandler)); + } + return contextMenu; + } + + private static void ShowProperties(IGuiCommandHandler guiHandler) + { + if (guiHandler != null) + { + guiHandler.ShowProperties(); + } + } + } +} \ No newline at end of file Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/FailureMechanismNodePresenter.cs =================================================================== diff -u -r7299ddaaafe53e58adef80f0e05a0576f66e1edf -ra85e384df91356b2c2716591531a863e01da876b --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/FailureMechanismNodePresenter.cs (.../FailureMechanismNodePresenter.cs) (revision 7299ddaaafe53e58adef80f0e05a0576f66e1edf) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/FailureMechanismNodePresenter.cs (.../FailureMechanismNodePresenter.cs) (revision a85e384df91356b2c2716591531a863e01da876b) @@ -1,10 +1,8 @@ -using System; -using System.Collections; +using System.Collections; using System.Drawing; using System.Windows.Forms; using Core.Common.Controls; using Core.Common.Gui; -using Ringtoets.Common.Forms.Extensions; using Ringtoets.Common.Forms.NodePresenters; using Ringtoets.Common.Forms.PresentationObjects; using Ringtoets.Integration.Data.Placeholders; @@ -16,11 +14,13 @@ { public class FailureMechanismNodePresenter : RingtoetsNodePresenterBase { - private IGuiCommandHandler guiHandler; + private readonly IGuiCommandHandler guiHandler; + private readonly IContextMenuProvider contextMenuProvider; - public FailureMechanismNodePresenter(IGuiCommandHandler guiHandler = null) + public FailureMechanismNodePresenter(IContextMenuProvider contextMenuProvider, IGuiCommandHandler guiHandler = null) { this.guiHandler = guiHandler; + this.contextMenuProvider = contextMenuProvider; } protected override void UpdateNode(ITreeNode parentNode, ITreeNode node, FailureMechanismPlaceholder nodeData) @@ -38,60 +38,11 @@ protected override ContextMenuStrip GetContextMenu(ITreeNode sender, FailureMechanismPlaceholder nodeData) { - var contextMenu = new ContextMenuStrip(); + var contextMenu = ContextMenu.FailureMechanismContextMenu.CreateContextMenu(guiHandler, TreeView, nodeData, contextMenuProvider); - contextMenu.AddMenuItem( - RingtoetsCommonFormsResources.Calculate_all, - RingtoetsCommonFormsResources.Calculate_all_ToolTip, - RingtoetsCommonFormsResources.CalculateAllIcon, null).Enabled = false; - contextMenu.AddMenuItem( - RingtoetsCommonFormsResources.Clear_all_output, - RingtoetsCommonFormsResources.Clear_all_output_ToolTip, - RingtoetsCommonFormsResources.ClearIcon, null).Enabled = false; - contextMenu.AddSeperator(); - - contextMenu.AddMenuItem( - RingtoetsCommonFormsResources.FailureMechanism_Expand_all, - RingtoetsCommonFormsResources.FailureMechanism_Expand_all_ToolTip, - RingtoetsCommonFormsResources.ExpandAllIcon, ExpandAllItemClicked); - contextMenu.AddMenuItem( - RingtoetsCommonFormsResources.FailureMechanism_Collapse_all, - RingtoetsCommonFormsResources.FailureMechanism_Collapse_all_ToolTip, - RingtoetsCommonFormsResources.CollapseAllIcon, CollapseAllItemClicked); - contextMenu.AddSeperator(); - - contextMenu.AddMenuItem( - RingtoetsCommonFormsResources.FailureMechanism_Export, - RingtoetsCommonFormsResources.FailureMechanism_Export_ToolTip, - RingtoetsCommonFormsResources.ExportIcon, null).Enabled = false; - contextMenu.AddSeperator(); - - contextMenu.AddMenuItem( - RingtoetsCommonFormsResources.FailureMechanism_Properties, - RingtoetsCommonFormsResources.FailureMechanism_Properties_ToolTip, - RingtoetsCommonFormsResources.PropertiesIcon, PropertiesItemClicked); - return contextMenu; } - private void PropertiesItemClicked(object sender, EventArgs eventArgs) - { - if (guiHandler != null) - { - guiHandler.ShowProperties(); - } - } - - private void CollapseAllItemClicked(object sender, EventArgs eventArgs) - { - TreeView.CollapseAll(TreeView.SelectedNode); - } - - private void ExpandAllItemClicked(object sender, EventArgs eventArgs) - { - TreeView.ExpandAll(TreeView.SelectedNode); - } - private IEnumerable GetInputs(FailureMechanismPlaceholder nodeData) { yield return nodeData.SectionDivisions; Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/PlaceholderWithReadonlyNameNodePresenter.cs =================================================================== diff -u -r7299ddaaafe53e58adef80f0e05a0576f66e1edf -ra85e384df91356b2c2716591531a863e01da876b --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/PlaceholderWithReadonlyNameNodePresenter.cs (.../PlaceholderWithReadonlyNameNodePresenter.cs) (revision 7299ddaaafe53e58adef80f0e05a0576f66e1edf) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/PlaceholderWithReadonlyNameNodePresenter.cs (.../PlaceholderWithReadonlyNameNodePresenter.cs) (revision a85e384df91356b2c2716591531a863e01da876b) @@ -1,11 +1,10 @@ -using System; -using System.Drawing; +using System.Drawing; using System.Windows.Forms; using Core.Common.Controls; using Core.Common.Gui; -using Ringtoets.Common.Forms.Extensions; using Ringtoets.Common.Forms.NodePresenters; using Ringtoets.Common.Placeholder; +using Ringtoets.Integration.Forms.ContextMenu; using Ringtoets.Integration.Forms.Properties; using RingtoetsCommonFormsResources = Ringtoets.Common.Forms.Properties.Resources; @@ -18,10 +17,12 @@ public class PlaceholderWithReadonlyNameNodePresenter : RingtoetsNodePresenterBase { private IGuiCommandHandler guiHandler; + private IContextMenuProvider contextMenuProvider; - public PlaceholderWithReadonlyNameNodePresenter(IGuiCommandHandler guiHandler = null) + public PlaceholderWithReadonlyNameNodePresenter(IContextMenuProvider contextMenuProvider, IGuiCommandHandler guiHandler = null) { this.guiHandler = guiHandler; + this.contextMenuProvider = contextMenuProvider; } protected override void UpdateNode(ITreeNode parentNode, ITreeNode node, PlaceholderWithReadonlyName nodeData) @@ -42,53 +43,7 @@ protected override ContextMenuStrip GetContextMenu(ITreeNode sender, PlaceholderWithReadonlyName nodeData) { - var contextMenu = new ContextMenuStrip(); - - if (nodeData is InputPlaceholder || nodeData is OutputPlaceholder) - { - contextMenu.AddMenuItem( - RingtoetsCommonFormsResources.FailureMechanism_InputsOutputs_Open, - RingtoetsCommonFormsResources.FailureMechanism_InputsOutputs_Open_ToolTip, - RingtoetsCommonFormsResources.OpenIcon, null).Enabled = false; - contextMenu.AddSeperator(); - - contextMenu.AddMenuItem( - RingtoetsCommonFormsResources.FailureMechanism_InputsOutputs_Erase, - RingtoetsCommonFormsResources.FailureMechanism_InputsOutputs_Erase_ToolTip, - RingtoetsCommonFormsResources.ClearIcon, null).Enabled = false; - contextMenu.AddSeperator(); - } - - if (nodeData is InputPlaceholder) - { - contextMenu.AddMenuItem( - RingtoetsCommonFormsResources.FailureMechanism_InputsOutputs_Import, - RingtoetsCommonFormsResources.FailureMechanism_InputsOutputs_Import_ToolTip, - RingtoetsCommonFormsResources.ImportIcon, null).Enabled = false; - } - - if (nodeData is InputPlaceholder || nodeData is OutputPlaceholder) - { - contextMenu.AddMenuItem( - RingtoetsCommonFormsResources.FailureMechanism_Export, - RingtoetsCommonFormsResources.FailureMechanism_Export_ToolTip, - RingtoetsCommonFormsResources.ExportIcon, null).Enabled = false; - contextMenu.AddSeperator(); - - contextMenu.AddMenuItem( - RingtoetsCommonFormsResources.FailureMechanism_Properties, - RingtoetsCommonFormsResources.FailureMechanism_Properties_ToolTip, - RingtoetsCommonFormsResources.PropertiesIcon, PropertiesItemClicked); - } - return contextMenu; + return PlaceholderWithReadonlyNameContextMenu.CreateContextMenu(nodeData, guiHandler, contextMenuProvider); } - - private void PropertiesItemClicked(object sender, EventArgs eventArgs) - { - if (guiHandler != null) - { - guiHandler.ShowProperties(); - } - } } } \ No newline at end of file Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/Ringtoets.Integration.Forms.csproj =================================================================== diff -u -r6819809d62f8609b8311b58dfef1b6ddef5701fe -ra85e384df91356b2c2716591531a863e01da876b --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/Ringtoets.Integration.Forms.csproj (.../Ringtoets.Integration.Forms.csproj) (revision 6819809d62f8609b8311b58dfef1b6ddef5701fe) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/Ringtoets.Integration.Forms.csproj (.../Ringtoets.Integration.Forms.csproj) (revision a85e384df91356b2c2716591531a863e01da876b) @@ -49,6 +49,8 @@ Properties\GlobalAssembly.cs + + Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsGuiPlugin.cs =================================================================== diff -u -rfc37d02640f08334ab1ddce79ceca36c2f0cff17 -ra85e384df91356b2c2716591531a863e01da876b --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsGuiPlugin.cs (.../RingtoetsGuiPlugin.cs) (revision fc37d02640f08334ab1ddce79ceca36c2f0cff17) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsGuiPlugin.cs (.../RingtoetsGuiPlugin.cs) (revision a85e384df91356b2c2716591531a863e01da876b) @@ -32,8 +32,8 @@ public override IEnumerable GetProjectTreeViewNodePresenters() { yield return new AssessmentSectionBaseNodePresenter(); - yield return new FailureMechanismNodePresenter(Gui.CommandHandler); - yield return new PlaceholderWithReadonlyNameNodePresenter(Gui.CommandHandler); + yield return new FailureMechanismNodePresenter((IContextMenuProvider)Gui, Gui.CommandHandler); + yield return new PlaceholderWithReadonlyNameNodePresenter((IContextMenuProvider)Gui, Gui.CommandHandler); yield return new CategoryTreeFolderNodePresenter(); } } Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/NodePresenters/FailureMechanismNodePresenterTest.cs =================================================================== diff -u -r7299ddaaafe53e58adef80f0e05a0576f66e1edf -ra85e384df91356b2c2716591531a863e01da876b --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/NodePresenters/FailureMechanismNodePresenterTest.cs (.../FailureMechanismNodePresenterTest.cs) (revision 7299ddaaafe53e58adef80f0e05a0576f66e1edf) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/NodePresenters/FailureMechanismNodePresenterTest.cs (.../FailureMechanismNodePresenterTest.cs) (revision a85e384df91356b2c2716591531a863e01da876b) @@ -16,17 +16,27 @@ using RingtoetsFormsResources = Ringtoets.Integration.Forms.Properties.Resources; using RingtoetsCommonFormsResources = Ringtoets.Common.Forms.Properties.Resources; +using CommonResources = Core.Common.Gui.Properties.Resources; namespace Ringtoets.Integration.Forms.Test.NodePresenters { [TestFixture] public class FailureMechanismNodePresenterTest { + private MockRepository mocks; + + [SetUp] + public void SetUp() + { + mocks = new MockRepository(); + } + [Test] public void DefaultConstructor_ExpectedValues() { // Call - var nodePresenter = new FailureMechanismNodePresenter(); + var contextMenuProvider = mocks.StrictMock(); + var nodePresenter = new FailureMechanismNodePresenter(contextMenuProvider); // Assert Assert.IsInstanceOf>(nodePresenter); @@ -36,14 +46,14 @@ public void UpdateNode_ValidOutputPlaceholderData_UpdateTreeNode() { // Setup - var mocks = new MockRepository(); + var contextMenuProvider = mocks.StrictMock(); var parentNode = mocks.StrictMock(); var nodeToUpdate = mocks.Stub(); mocks.ReplayAll(); var dataObject = new FailureMechanismPlaceholder("test"); - var nodePresenter = new FailureMechanismNodePresenter(); + var nodePresenter = new FailureMechanismNodePresenter(contextMenuProvider); // Call nodePresenter.UpdateNode(parentNode, nodeToUpdate, dataObject); @@ -59,7 +69,8 @@ public void CanRenameNode_Always_ReturnFalse() { // Setup - var nodePresenter = new FailureMechanismNodePresenter(); + var contextMenuProvider = mocks.StrictMock(); + var nodePresenter = new FailureMechanismNodePresenter(contextMenuProvider); // Call bool isRenamingAllowed = nodePresenter.CanRenameNode(null); @@ -72,7 +83,8 @@ public void CanRenameTo_Always_ReturnFalse() { // Setup - var nodePresenter = new FailureMechanismNodePresenter(); + var contextMenuProvider = mocks.StrictMock(); + var nodePresenter = new FailureMechanismNodePresenter(contextMenuProvider); // Call bool isRenamingAllowed = nodePresenter.CanRenameNodeTo(null, null); @@ -85,7 +97,8 @@ public void CanRemove_Always_ReturnFalse() { // Setup - var nodePresenter = new FailureMechanismNodePresenter(); + var contextMenuProvider = mocks.StrictMock(); + var nodePresenter = new FailureMechanismNodePresenter(contextMenuProvider); // Call bool isRemovalAllowed = nodePresenter.CanRemove(null, null); @@ -98,7 +111,8 @@ public void GetChildNodeObjects_Always_ReturnInputAndOutput() { // Setup - var nodePresenter = new FailureMechanismNodePresenter(); + var contextMenuProvider = mocks.StrictMock(); + var nodePresenter = new FailureMechanismNodePresenter(contextMenuProvider); var failureMechanism = new FailureMechanismPlaceholder("test"); // Call @@ -126,43 +140,49 @@ public void GetContextMenu_Always_ReturnsContextMenuWithItems() { // Setup - var mocks = new MockRepository(); var nodeMock = mocks.StrictMock(); + var contextMenuProvider = mocks.StrictMock(); + contextMenuProvider.Expect(cmp => cmp.Get(new object())).IgnoreArguments().Return(new ContextMenuStrip()); - var nodePresenter = new FailureMechanismNodePresenter(); + var nodePresenter = new FailureMechanismNodePresenter(contextMenuProvider); var failureMechanism = new FailureMechanismPlaceholder("test"); + mocks.ReplayAll(); + // Call var menu = nodePresenter.GetContextMenu(nodeMock, failureMechanism); // Assert - Assert.AreEqual(9, menu.Items.Count); + Assert.AreEqual(8, menu.Items.Count); TestHelper.AssertContextMenuStripContainsItem(menu, 0, RingtoetsCommonFormsResources.Calculate_all, RingtoetsCommonFormsResources.Calculate_all_ToolTip, RingtoetsCommonFormsResources.CalculateAllIcon, false); TestHelper.AssertContextMenuStripContainsItem(menu, 1, RingtoetsCommonFormsResources.Clear_all_output, RingtoetsCommonFormsResources.Clear_all_output_ToolTip, RingtoetsCommonFormsResources.ClearIcon, false); TestHelper.AssertContextMenuStripContainsItem(menu, 3, RingtoetsCommonFormsResources.FailureMechanism_Expand_all, RingtoetsCommonFormsResources.FailureMechanism_Expand_all_ToolTip, RingtoetsCommonFormsResources.ExpandAllIcon); TestHelper.AssertContextMenuStripContainsItem(menu, 4, RingtoetsCommonFormsResources.FailureMechanism_Collapse_all, RingtoetsCommonFormsResources.FailureMechanism_Collapse_all_ToolTip, RingtoetsCommonFormsResources.CollapseAllIcon); - TestHelper.AssertContextMenuStripContainsItem(menu, 6, RingtoetsCommonFormsResources.FailureMechanism_Export, RingtoetsCommonFormsResources.FailureMechanism_Export_ToolTip, RingtoetsCommonFormsResources.ExportIcon, false); - TestHelper.AssertContextMenuStripContainsItem(menu, 8, RingtoetsCommonFormsResources.FailureMechanism_Properties, RingtoetsCommonFormsResources.FailureMechanism_Properties_ToolTip, RingtoetsCommonFormsResources.PropertiesIcon); + TestHelper.AssertContextMenuStripContainsItem(menu, 7, RingtoetsCommonFormsResources.FailureMechanism_Properties, RingtoetsCommonFormsResources.FailureMechanism_Properties_ToolTip, RingtoetsCommonFormsResources.PropertiesIcon); - CollectionAssert.AllItemsAreInstancesOfType(new []{menu.Items[2], menu.Items[5],menu.Items[7]}, typeof(ToolStripSeparator)); + CollectionAssert.AllItemsAreInstancesOfType(new []{menu.Items[2], menu.Items[5],menu.Items[6]}, typeof(ToolStripSeparator)); + + mocks.VerifyAll(); } [Test] public void GetContextMenu_ShowPropertiesClickedWithHandler_CallsShowProperties() { // Setup - var mocks = new MockRepository(); var nodeMock = mocks.StrictMock(); + var contextMenuProvider = mocks.StrictMock(); + contextMenuProvider.Expect(cmp => cmp.Get(new object())).IgnoreArguments().Return(new ContextMenuStrip()); + var commandHandlerMock = mocks.StrictMock(); commandHandlerMock.Expect(ch => ch.ShowProperties()); - var nodePresenter = new FailureMechanismNodePresenter(commandHandlerMock); + var nodePresenter = new FailureMechanismNodePresenter(contextMenuProvider, commandHandlerMock); var failureMechanism = new FailureMechanismPlaceholder("test"); mocks.ReplayAll(); - var showPropertiesMenuItem = nodePresenter.GetContextMenu(nodeMock, failureMechanism).Items[8]; + var showPropertiesMenuItem = nodePresenter.GetContextMenu(nodeMock, failureMechanism).Items[7]; // Call showPropertiesMenuItem.PerformClick(); @@ -175,16 +195,21 @@ public void GetContextMenu_ShowPropertiesClickedWithoutHandler_NoExceptions() { // Setup - var mocks = new MockRepository(); var nodeMock = mocks.StrictMock(); + var contextMenuProvider = mocks.StrictMock(); + contextMenuProvider.Expect(cmp => cmp.Get(new object())).IgnoreArguments().Return(new ContextMenuStrip()); - var nodePresenter = new FailureMechanismNodePresenter(); + var nodePresenter = new FailureMechanismNodePresenter(contextMenuProvider); var failureMechanism = new FailureMechanismPlaceholder("test"); - var showPropertiesMenuItem = nodePresenter.GetContextMenu(nodeMock, failureMechanism).Items[8]; + mocks.ReplayAll(); + var showPropertiesMenuItem = nodePresenter.GetContextMenu(nodeMock, failureMechanism).Items[7]; + // Call & Assert showPropertiesMenuItem.PerformClick(); + + mocks.VerifyAll(); } } } \ No newline at end of file Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/NodePresenters/PlaceholderWithReadonlyNameNodePresenterTest.cs =================================================================== diff -u -r7299ddaaafe53e58adef80f0e05a0576f66e1edf -ra85e384df91356b2c2716591531a863e01da876b --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/NodePresenters/PlaceholderWithReadonlyNameNodePresenterTest.cs (.../PlaceholderWithReadonlyNameNodePresenterTest.cs) (revision 7299ddaaafe53e58adef80f0e05a0576f66e1edf) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/NodePresenters/PlaceholderWithReadonlyNameNodePresenterTest.cs (.../PlaceholderWithReadonlyNameNodePresenterTest.cs) (revision a85e384df91356b2c2716591531a863e01da876b) @@ -21,11 +21,22 @@ [TestFixture] public class PlaceholderWithReadonlyNameNodePresenterTest { + private MockRepository mocks; + + [SetUp] + public void SetUp() + { + mocks = new MockRepository(); + } + [Test] public void DefaultConstructor_ExpectedValues() { + // Setup + var contextMenuProvider = mocks.StrictMock(); + // Call - var nodePresenter = new PlaceholderWithReadonlyNameNodePresenter(); + var nodePresenter = new PlaceholderWithReadonlyNameNodePresenter(contextMenuProvider); // Assert Assert.IsInstanceOf>(nodePresenter); @@ -35,14 +46,14 @@ public void UpdateNode_ValidNodeData_UpdateTreeNode() { // Setup - var mocks = new MockRepository(); + var contextMenuProvider = mocks.StrictMock(); var parentNode = mocks.StrictMock(); var nodeToUpdate = mocks.Stub(); mocks.ReplayAll(); var dataObject = new PlaceholderWithReadonlyName("test"); - var nodePresenter = new PlaceholderWithReadonlyNameNodePresenter(); + var nodePresenter = new PlaceholderWithReadonlyNameNodePresenter(contextMenuProvider); // Call nodePresenter.UpdateNode(parentNode, nodeToUpdate, dataObject); @@ -58,14 +69,14 @@ public void UpdateNode_ValidInputPlaceholderData_UpdateTreeNode() { // Setup - var mocks = new MockRepository(); + var contextMenuProvider = mocks.StrictMock(); var parentNode = mocks.StrictMock(); var nodeToUpdate = mocks.Stub(); mocks.ReplayAll(); var dataObject = new InputPlaceholder("test"); - var nodePresenter = new PlaceholderWithReadonlyNameNodePresenter(); + var nodePresenter = new PlaceholderWithReadonlyNameNodePresenter(contextMenuProvider); // Call nodePresenter.UpdateNode(parentNode, nodeToUpdate, dataObject); @@ -81,14 +92,14 @@ public void UpdateNode_ValidOutputPlaceholderData_UpdateTreeNode() { // Setup - var mocks = new MockRepository(); + var contextMenuProvider = mocks.StrictMock(); var parentNode = mocks.StrictMock(); var nodeToUpdate = mocks.Stub(); mocks.ReplayAll(); var dataObject = new OutputPlaceholder("test"); - var nodePresenter = new PlaceholderWithReadonlyNameNodePresenter(); + var nodePresenter = new PlaceholderWithReadonlyNameNodePresenter(contextMenuProvider); // Call nodePresenter.UpdateNode(parentNode, nodeToUpdate, dataObject); @@ -104,7 +115,8 @@ public void CanRenameNode_Always_ReturnFalse() { // Setup - var nodePresenter = new PlaceholderWithReadonlyNameNodePresenter(); + var contextMenuProvider = mocks.StrictMock(); + var nodePresenter = new PlaceholderWithReadonlyNameNodePresenter(contextMenuProvider); // Call bool isRenamingAllowed = nodePresenter.CanRenameNode(null); @@ -117,7 +129,8 @@ public void CanRenamceTo_Always_ReturnFalse() { // Setup - var nodePresenter = new PlaceholderWithReadonlyNameNodePresenter(); + var contextMenuProvider = mocks.StrictMock(); + var nodePresenter = new PlaceholderWithReadonlyNameNodePresenter(contextMenuProvider); // Call bool isRenamingAllowed = nodePresenter.CanRenameNodeTo(null, null); @@ -130,7 +143,8 @@ public void CanRemove_Always_ReturnFalse() { // Setup - var nodePresenter = new PlaceholderWithReadonlyNameNodePresenter(); + var contextMenuProvider = mocks.StrictMock(); + var nodePresenter = new PlaceholderWithReadonlyNameNodePresenter(contextMenuProvider); // Call bool isRemovalAllowed = nodePresenter.CanRemove(null, null); @@ -143,7 +157,8 @@ public void GetChildNodeObjects_Always_ReturnEmptyEnumerable() { // Setup - var nodePresenter = new PlaceholderWithReadonlyNameNodePresenter(); + var contextMenuProvider = mocks.StrictMock(); + var nodePresenter = new PlaceholderWithReadonlyNameNodePresenter(contextMenuProvider); // Call IEnumerable children = nodePresenter.GetChildNodeObjects(null, null); @@ -156,83 +171,97 @@ public void GetContextMenu_PlaceholderWithReadonlyName_ReturnsContextMenuWithItems() { // Setup - var mocks = new MockRepository(); var nodeMock = mocks.StrictMock(); + var contextMenuProvider = mocks.StrictMock(); + contextMenuProvider.Expect(cmp => cmp.Get(new object())).IgnoreArguments().Return(new ContextMenuStrip()); - var nodePresenter = new PlaceholderWithReadonlyNameNodePresenter(); + mocks.ReplayAll(); + + var nodePresenter = new PlaceholderWithReadonlyNameNodePresenter(contextMenuProvider); var placeholderData = new PlaceholderWithReadonlyName("test"); // Call var menu = nodePresenter.GetContextMenu(nodeMock, placeholderData); // Assert Assert.AreEqual(0, menu.Items.Count); + + mocks.VerifyAll(); } [Test] public void GetContextMenu_InputPlaceHolder_ReturnsContextMenuWithItems() { // Setup - var mocks = new MockRepository(); var nodeMock = mocks.StrictMock(); + var contextMenuProvider = mocks.StrictMock(); + contextMenuProvider.Expect(cmp => cmp.Get(new object())).IgnoreArguments().Return(new ContextMenuStrip()); - var nodePresenter = new PlaceholderWithReadonlyNameNodePresenter(); + var nodePresenter = new PlaceholderWithReadonlyNameNodePresenter(contextMenuProvider); var placeholderData = new InputPlaceholder("test"); + mocks.ReplayAll(); + // Call var menu = nodePresenter.GetContextMenu(nodeMock, placeholderData); // Assert - Assert.AreEqual(8, menu.Items.Count); + Assert.AreEqual(6, menu.Items.Count); TestHelper.AssertContextMenuStripContainsItem(menu, 0, RingtoetsCommonFormsResources.FailureMechanism_InputsOutputs_Open, RingtoetsCommonFormsResources.FailureMechanism_InputsOutputs_Open_ToolTip, RingtoetsCommonFormsResources.OpenIcon, false); TestHelper.AssertContextMenuStripContainsItem(menu, 2, RingtoetsCommonFormsResources.FailureMechanism_InputsOutputs_Erase, RingtoetsCommonFormsResources.FailureMechanism_InputsOutputs_Erase_ToolTip, RingtoetsCommonFormsResources.ClearIcon, false); - TestHelper.AssertContextMenuStripContainsItem(menu, 4, RingtoetsCommonFormsResources.FailureMechanism_InputsOutputs_Import, RingtoetsCommonFormsResources.FailureMechanism_InputsOutputs_Import_ToolTip, RingtoetsCommonFormsResources.ImportIcon, false); - TestHelper.AssertContextMenuStripContainsItem(menu, 5, RingtoetsCommonFormsResources.FailureMechanism_Export, RingtoetsCommonFormsResources.FailureMechanism_Export_ToolTip, RingtoetsCommonFormsResources.ExportIcon, false); - TestHelper.AssertContextMenuStripContainsItem(menu, 7, RingtoetsCommonFormsResources.FailureMechanism_Properties, RingtoetsCommonFormsResources.FailureMechanism_Properties_ToolTip, RingtoetsCommonFormsResources.PropertiesIcon); + TestHelper.AssertContextMenuStripContainsItem(menu, 5, RingtoetsCommonFormsResources.FailureMechanism_Properties, RingtoetsCommonFormsResources.FailureMechanism_Properties_ToolTip, RingtoetsCommonFormsResources.PropertiesIcon); - CollectionAssert.AllItemsAreInstancesOfType(new[] { menu.Items[1], menu.Items[3], menu.Items[6] }, typeof(ToolStripSeparator)); + CollectionAssert.AllItemsAreInstancesOfType(new[] { menu.Items[1], menu.Items[3], menu.Items[4] }, typeof(ToolStripSeparator)); + + mocks.VerifyAll(); } [Test] public void GetContextMenu_OutputPlaceHolder_ReturnsContextMenuWithItems() { // Setup - var mocks = new MockRepository(); var nodeMock = mocks.StrictMock(); + var contextMenuProvider = mocks.StrictMock(); + contextMenuProvider.Expect(cmp => cmp.Get(new object())).IgnoreArguments().Return(new ContextMenuStrip()); - var nodePresenter = new PlaceholderWithReadonlyNameNodePresenter(); + var nodePresenter = new PlaceholderWithReadonlyNameNodePresenter(contextMenuProvider); var placeholderData = new OutputPlaceholder("test"); + mocks.ReplayAll(); + // Call var menu = nodePresenter.GetContextMenu(nodeMock, placeholderData); // Assert - Assert.AreEqual(7, menu.Items.Count); + Assert.AreEqual(6, menu.Items.Count); TestHelper.AssertContextMenuStripContainsItem(menu, 0, RingtoetsCommonFormsResources.FailureMechanism_InputsOutputs_Open, RingtoetsCommonFormsResources.FailureMechanism_InputsOutputs_Open_ToolTip, RingtoetsCommonFormsResources.OpenIcon, false); TestHelper.AssertContextMenuStripContainsItem(menu, 2, RingtoetsCommonFormsResources.FailureMechanism_InputsOutputs_Erase, RingtoetsCommonFormsResources.FailureMechanism_InputsOutputs_Erase_ToolTip, RingtoetsCommonFormsResources.ClearIcon, false); - TestHelper.AssertContextMenuStripContainsItem(menu, 4, RingtoetsCommonFormsResources.FailureMechanism_Export, RingtoetsCommonFormsResources.FailureMechanism_Export_ToolTip, RingtoetsCommonFormsResources.ExportIcon, false); - TestHelper.AssertContextMenuStripContainsItem(menu, 6, RingtoetsCommonFormsResources.FailureMechanism_Properties, RingtoetsCommonFormsResources.FailureMechanism_Properties_ToolTip, RingtoetsCommonFormsResources.PropertiesIcon); + TestHelper.AssertContextMenuStripContainsItem(menu, 5, RingtoetsCommonFormsResources.FailureMechanism_Properties, RingtoetsCommonFormsResources.FailureMechanism_Properties_ToolTip, RingtoetsCommonFormsResources.PropertiesIcon); - CollectionAssert.AllItemsAreInstancesOfType(new[] { menu.Items[1], menu.Items[3], menu.Items[5] }, typeof(ToolStripSeparator)); + CollectionAssert.AllItemsAreInstancesOfType(new[] { menu.Items[1], menu.Items[3], menu.Items[4] }, typeof(ToolStripSeparator)); + + mocks.VerifyAll(); } [Test] public void GetContextMenu_OutputPlaceholderShowPropertiesClickedWithHandler_CallsShowProperties() { // Setup - var mocks = new MockRepository(); var nodeMock = mocks.StrictMock(); var commandHandlerMock = mocks.StrictMock(); + var contextMenuProvider = mocks.StrictMock(); + commandHandlerMock.Expect(ch => ch.ShowProperties()); + contextMenuProvider.Expect(cmp => cmp.Get(new object())).IgnoreArguments().Return(new ContextMenuStrip()); - var nodePresenter = new PlaceholderWithReadonlyNameNodePresenter(commandHandlerMock); + var nodePresenter = new PlaceholderWithReadonlyNameNodePresenter(contextMenuProvider, commandHandlerMock); var placeholderData = new OutputPlaceholder("test"); mocks.ReplayAll(); - var showPropertiesMenuItem = nodePresenter.GetContextMenu(nodeMock, placeholderData).Items[6]; + var showPropertiesMenuItem = nodePresenter.GetContextMenu(nodeMock, placeholderData).Items[5]; // Call showPropertiesMenuItem.PerformClick(); @@ -245,16 +274,22 @@ public void GetContextMenu_OutputPlaceholderShowPropertiesClickedWithoutHandler_NoExceptions() { // Setup - var mocks = new MockRepository(); var nodeMock = mocks.StrictMock(); + var contextMenuProvider = mocks.StrictMock(); - var nodePresenter = new PlaceholderWithReadonlyNameNodePresenter(); + contextMenuProvider.Expect(cmp => cmp.Get(new object())).IgnoreArguments().Return(new ContextMenuStrip()); + + var nodePresenter = new PlaceholderWithReadonlyNameNodePresenter(contextMenuProvider); var placeholderData = new OutputPlaceholder("test"); - var showPropertiesMenuItem = nodePresenter.GetContextMenu(nodeMock, placeholderData).Items[6]; + mocks.ReplayAll(); + var showPropertiesMenuItem = nodePresenter.GetContextMenu(nodeMock, placeholderData).Items[5]; + // Call & Assert showPropertiesMenuItem.PerformClick(); + + mocks.VerifyAll(); } } } \ No newline at end of file Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/RingtoetsGuiPluginTest.cs =================================================================== diff -u -r161a620dbf1cc69c7d860cc123c66419c207236e -ra85e384df91356b2c2716591531a863e01da876b --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/RingtoetsGuiPluginTest.cs (.../RingtoetsGuiPluginTest.cs) (revision 161a620dbf1cc69c7d860cc123c66419c207236e) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/RingtoetsGuiPluginTest.cs (.../RingtoetsGuiPluginTest.cs) (revision a85e384df91356b2c2716591531a863e01da876b) @@ -54,8 +54,8 @@ // setup var mocks = new MockRepository(); - var guiStub = mocks.Stub(); - guiStub.CommandHandler = mocks.Stub(); + var guiStub = mocks.DynamicMultiMock(typeof(IGui), typeof(IContextMenuProvider)); + guiStub.Expect(gs => gs.CommandHandler).Return(mocks.Stub()).Repeat.Twice(); mocks.ReplayAll();