Index: Core/Common/test/Core.Common.Gui.Test/Core.Common.Gui.Test.csproj
===================================================================
diff -u -reb7f8fe1e85f00faf16a1cddef014728d60a2b19 -reff8c57b5a5243e2c723f117b46bf8b4094ca4c6
--- Core/Common/test/Core.Common.Gui.Test/Core.Common.Gui.Test.csproj (.../Core.Common.Gui.Test.csproj) (revision eb7f8fe1e85f00faf16a1cddef014728d60a2b19)
+++ Core/Common/test/Core.Common.Gui.Test/Core.Common.Gui.Test.csproj (.../Core.Common.Gui.Test.csproj) (revision eff8c57b5a5243e2c723f117b46bf8b4094ca4c6)
@@ -61,6 +61,7 @@
+
@@ -75,6 +76,10 @@
{30e4c2ae-719e-4d70-9fa9-668a9767fbfa}
Core.Common.Gui
+
+ {26214BD0-DAFB-4CFC-8EB2-80C5D53C859E}
+ Core.Common.Gui.TestUtils
+
{D749EE4C-CE50-4C17-BF01-9A953028C126}
Core.Common.TestUtils
Index: Core/Common/test/Core.Common.Gui.Test/TestContextMenuBuilderProviderTest.cs
===================================================================
diff -u
--- Core/Common/test/Core.Common.Gui.Test/TestContextMenuBuilderProviderTest.cs (revision 0)
+++ Core/Common/test/Core.Common.Gui.Test/TestContextMenuBuilderProviderTest.cs (revision eff8c57b5a5243e2c723f117b46bf8b4094ca4c6)
@@ -0,0 +1,67 @@
+using System;
+using System.Windows.Forms;
+using Core.Common.Controls;
+using Core.Common.Gui.TestUtils;
+using NUnit.Framework;
+using Rhino.Mocks;
+
+namespace Core.Common.Gui.Test
+{
+ [TestFixture]
+ public class TestContextMenuBuilderProviderTest
+ {
+ [Test]
+ public void Create_NoMocks_ArgumentException()
+ {
+ // Call & Assert
+ Assert.Throws(() => TestContextMenuBuilderProvider.Create(null, null));
+ }
+
+ [Test]
+ public void Create_NoTreeNode_ArgumentException()
+ {
+ // Call & Assert
+ Assert.Throws(() => TestContextMenuBuilderProvider.Create(new MockRepository(), null));
+ }
+
+ [Test]
+ public void Create_MocksAndTreeNode_SetExpectationDefaults()
+ {
+ // Setup
+ var mockRepository = new MockRepository();
+
+ // Call
+ var result = TestContextMenuBuilderProvider.Create(mockRepository, mockRepository.StrictMock());
+
+ mockRepository.ReplayAll();
+
+ // Expect
+ ContextMenuStrip menu = result.Get(null).AddExportItem().AddImportItem().AddPropertiesItem().AddOpenItem().Build();
+ Assert.IsFalse(menu.Items[0].Enabled);
+ Assert.IsFalse(menu.Items[1].Enabled);
+ Assert.IsFalse(menu.Items[2].Enabled);
+ Assert.IsFalse(menu.Items[3].Enabled);
+ }
+
+ [Test]
+ [TestCase(true)]
+ [TestCase(false)]
+ public void Create_MocksAndTreeNodeWithExpectations_SetExpectation(bool expectation)
+ {
+ // Setup
+ var mockRepository = new MockRepository();
+
+ // Call
+ var result = TestContextMenuBuilderProvider.Create(mockRepository, mockRepository.StrictMock(), expectation);
+
+ mockRepository.ReplayAll();
+
+ // Expect
+ ContextMenuStrip menu = result.Get(null).AddExportItem().AddImportItem().AddPropertiesItem().AddOpenItem().Build();
+ Assert.AreEqual(expectation, menu.Items[0].Enabled);
+ Assert.AreEqual(expectation, menu.Items[1].Enabled);
+ Assert.AreEqual(expectation, menu.Items[2].Enabled);
+ Assert.AreEqual(expectation, menu.Items[3].Enabled);
+ }
+ }
+}
\ No newline at end of file
Index: Core/Common/test/Core.Common.Gui.TestUtils/Core.Common.Gui.TestUtils.csproj
===================================================================
diff -u
--- Core/Common/test/Core.Common.Gui.TestUtils/Core.Common.Gui.TestUtils.csproj (revision 0)
+++ Core/Common/test/Core.Common.Gui.TestUtils/Core.Common.Gui.TestUtils.csproj (revision eff8c57b5a5243e2c723f117b46bf8b4094ca4c6)
@@ -0,0 +1,122 @@
+
+
+
+ Debug
+ AnyCPU
+ 9.0.30729
+ 2.0
+ {26214BD0-DAFB-4CFC-8EB2-80C5D53C859E}
+ Library
+ Properties
+ Core.Common.Gui.TestUtils
+ Core.Common.Gui.TestUtils
+ v4.0
+ 512
+ Always
+
+
+ 3.5
+
+ false
+ false
+
+
+ publish\
+ true
+ Disk
+ false
+ Foreground
+ 7
+ Days
+ false
+ false
+ true
+ 0
+ 1.0.0.%2a
+ false
+ true
+
+
+ true
+ bin\Debug\
+ 4
+ x86
+ MinimumRecommendedRules.ruleset
+ TRACE;DEBUG
+ full
+
+
+ bin\Release\
+ 4
+ x86
+ MinimumRecommendedRules.ruleset
+ TRACE
+ true
+
+
+ bin\CreateInstallerWithDemoProject\
+ TRACE
+ true
+ x86
+ MinimumRecommendedRules.ruleset
+
+
+
+ False
+ .NET Framework 3.5 SP1 Client Profile
+ false
+
+
+ False
+ .NET Framework 3.5 SP1
+ true
+
+
+ False
+ Windows Installer 3.1
+ true
+
+
+
+
+
+
+
+
+ {9A2D67E6-26AC-4D17-B11A-2B4372F2F572}
+ Core.Common.Controls
+
+
+ {30E4C2AE-719E-4D70-9FA9-668A9767FBFA}
+ Core.Common.Gui
+
+
+
+
+ ..\..\..\..\packages\RhinoMocks.3.6.1\lib\net\Rhino.Mocks.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
Index: Core/Common/test/Core.Common.Gui.TestUtils/Properties/AssemblyInfo.cs
===================================================================
diff -u
--- Core/Common/test/Core.Common.Gui.TestUtils/Properties/AssemblyInfo.cs (revision 0)
+++ Core/Common/test/Core.Common.Gui.TestUtils/Properties/AssemblyInfo.cs (revision eff8c57b5a5243e2c723f117b46bf8b4094ca4c6)
@@ -0,0 +1,13 @@
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("Core.Common.Gui.TestUtils")]
+[assembly: AssemblyProduct("Core.Common.Gui.TestUtils")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("d749c2bb-9e8a-4211-b24b-d3b179e73042")]
\ No newline at end of file
Index: Core/Common/test/Core.Common.Gui.TestUtils/TestContextMenuBuilderProvider.cs
===================================================================
diff -u
--- Core/Common/test/Core.Common.Gui.TestUtils/TestContextMenuBuilderProvider.cs (revision 0)
+++ Core/Common/test/Core.Common.Gui.TestUtils/TestContextMenuBuilderProvider.cs (revision eff8c57b5a5243e2c723f117b46bf8b4094ca4c6)
@@ -0,0 +1,44 @@
+using System;
+using Core.Common.Controls;
+using Core.Common.Gui.ContextMenu;
+using Rhino.Mocks;
+
+namespace Core.Common.Gui.TestUtils
+{
+ ///
+ /// Class can be used to create a default implementation for a .
+ ///
+ public static class TestContextMenuBuilderProvider
+ {
+ ///
+ /// Creates a new instance of . Makes use of mocks.
+ ///
+ /// The to add the mocks to.
+ /// The to pass to the .
+ /// Value indicating whether following option should be available.
+ ///
+ /// - export
+ /// - import
+ /// - show properties
+ /// - open view
+ ///
+ /// A new mock.
+ public static IContextMenuBuilderProvider Create(MockRepository mocks, ITreeNode node, bool itemsEnabled = false)
+ {
+ if (mocks == null || node == null)
+ {
+ throw new ArgumentNullException();
+ }
+ var menuBuilderProviderMock = mocks.StrictMock();
+ var commandHandlerMock = mocks.StrictMock();
+
+ commandHandlerMock.Expect(ch => ch.CanExportFromGuiSelection()).Return(itemsEnabled).Repeat.Any();
+ commandHandlerMock.Expect(ch => ch.CanImportToGuiSelection()).Return(itemsEnabled).Repeat.Any();
+ commandHandlerMock.Expect(ch => ch.CanShowPropertiesForGuiSelection()).Return(itemsEnabled).Repeat.Any();
+ commandHandlerMock.Expect(ch => ch.CanOpenDefaultViewForSelection()).Return(itemsEnabled).Repeat.Any();
+
+ menuBuilderProviderMock.Expect(mbp => mbp.Get(null)).IgnoreArguments().Return(new ContextMenuBuilder(commandHandlerMock, node));
+ return menuBuilderProviderMock;
+ }
+ }
+}
\ No newline at end of file
Index: Core/Common/test/Core.Common.Gui.TestUtils/packages.config
===================================================================
diff -u
--- Core/Common/test/Core.Common.Gui.TestUtils/packages.config (revision 0)
+++ Core/Common/test/Core.Common.Gui.TestUtils/packages.config (revision eff8c57b5a5243e2c723f117b46bf8b4094ca4c6)
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
Index: Ringtoets.sln
===================================================================
diff -u -r41c77f9f36ae74a406fd382187426cc06d2b0200 -reff8c57b5a5243e2c723f117b46bf8b4094ca4c6
--- Ringtoets.sln (.../Ringtoets.sln) (revision 41c77f9f36ae74a406fd382187426cc06d2b0200)
+++ Ringtoets.sln (.../Ringtoets.sln) (revision eff8c57b5a5243e2c723f117b46bf8b4094ca4c6)
@@ -213,6 +213,8 @@
{C90B77DA-E421-43CC-B82E-529651BC21AC} = {C90B77DA-E421-43CC-B82E-529651BC21AC}
EndProjectSection
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core.Common.Gui.TestUtils", "Core\Common\test\Core.Common.Gui.TestUtils\Core.Common.Gui.TestUtils.csproj", "{26214BD0-DAFB-4CFC-8EB2-80C5D53C859E}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
CreateInstaller|x86 = CreateInstaller|x86
@@ -700,6 +702,14 @@
{D4200F43-3F72-4F42-AF0A-8CED416A38EC}.Debug|x86.Build.0 = Debug|x86
{D4200F43-3F72-4F42-AF0A-8CED416A38EC}.Release|x86.ActiveCfg = Release|x86
{D4200F43-3F72-4F42-AF0A-8CED416A38EC}.Release|x86.Build.0 = Release|x86
+ {26214BD0-DAFB-4CFC-8EB2-80C5D53C859E}.CreateInstaller|x86.ActiveCfg = CreateInstallerWithDemoProject|x86
+ {26214BD0-DAFB-4CFC-8EB2-80C5D53C859E}.CreateInstaller|x86.Build.0 = CreateInstallerWithDemoProject|x86
+ {26214BD0-DAFB-4CFC-8EB2-80C5D53C859E}.CreateInstallerWithDemoProject|x86.ActiveCfg = CreateInstallerWithDemoProject|x86
+ {26214BD0-DAFB-4CFC-8EB2-80C5D53C859E}.CreateInstallerWithDemoProject|x86.Build.0 = CreateInstallerWithDemoProject|x86
+ {26214BD0-DAFB-4CFC-8EB2-80C5D53C859E}.Debug|x86.ActiveCfg = Debug|x86
+ {26214BD0-DAFB-4CFC-8EB2-80C5D53C859E}.Debug|x86.Build.0 = Debug|x86
+ {26214BD0-DAFB-4CFC-8EB2-80C5D53C859E}.Release|x86.ActiveCfg = Release|x86
+ {26214BD0-DAFB-4CFC-8EB2-80C5D53C859E}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -736,6 +746,7 @@
{A6A434E0-AE5A-4D5B-97D7-532B00FBDFE9} = {0D9858E1-CF2D-4DE5-AC0E-64401900D531}
{FAFDB463-9612-41F4-B3DD-FF9C6E7023BA} = {0D9858E1-CF2D-4DE5-AC0E-64401900D531}
{D5EC1DF2-03C9-467B-B6AF-BE5AC83417F8} = {0D9858E1-CF2D-4DE5-AC0E-64401900D531}
+ {26214BD0-DAFB-4CFC-8EB2-80C5D53C859E} = {0D9858E1-CF2D-4DE5-AC0E-64401900D531}
{EE2D52A2-9D3E-4056-8A21-F1725F67E5CF} = {D89FA693-A8E9-4560-9957-B74B7E9391F0}
{DD70F63E-6459-4C49-86EC-4DB87DCE9B01} = {D89FA693-A8E9-4560-9957-B74B7E9391F0}
{38C9E9C3-A3A9-49A0-A0DE-A4EDB9885A61} = {D89FA693-A8E9-4560-9957-B74B7E9391F0}
Index: Ringtoets/Common/src/Ringtoets.Common.Forms/NodePresenters/CategoryTreeFolderNodePresenter.cs
===================================================================
diff -u -rf9a6da5a0a62e484e46775cc57ee6f8fe412694f -reff8c57b5a5243e2c723f117b46bf8b4094ca4c6
--- Ringtoets/Common/src/Ringtoets.Common.Forms/NodePresenters/CategoryTreeFolderNodePresenter.cs (.../CategoryTreeFolderNodePresenter.cs) (revision f9a6da5a0a62e484e46775cc57ee6f8fe412694f)
+++ Ringtoets/Common/src/Ringtoets.Common.Forms/NodePresenters/CategoryTreeFolderNodePresenter.cs (.../CategoryTreeFolderNodePresenter.cs) (revision eff8c57b5a5243e2c723f117b46bf8b4094ca4c6)
@@ -1,6 +1,5 @@
using System;
using System.Collections;
-using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using Core.Common.Controls;
Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingCalculationContextNodePresenter.cs
===================================================================
diff -u -r61161720b379645f400606e868e2a1286c17348d -reff8c57b5a5243e2c723f117b46bf8b4094ca4c6
--- Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingCalculationContextNodePresenter.cs (.../PipingCalculationContextNodePresenter.cs) (revision 61161720b379645f400606e868e2a1286c17348d)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingCalculationContextNodePresenter.cs (.../PipingCalculationContextNodePresenter.cs) (revision eff8c57b5a5243e2c723f117b46bf8b4094ca4c6)
@@ -5,7 +5,8 @@
using System.Windows.Forms;
using Core.Common.Base.Workflow;
using Core.Common.Controls;
-
+using Core.Common.Gui;
+using Core.Common.Gui.ContextMenu;
using Ringtoets.Common.Forms.Extensions;
using Ringtoets.Common.Forms.NodePresenters;
using Ringtoets.Piping.Data;
@@ -28,6 +29,10 @@
/// Injection points for a method to cause an to be scheduled for execution.
///
public Action RunActivityAction { private get; set; }
+ ///
+ /// Sets the to be used for creating the .
+ ///
+ public IContextMenuBuilderProvider ContextMenuBuilderProvider { private get; set; }
protected override void UpdateNode(ITreeNode parentNode, ITreeNode node, PipingCalculationContext pipingCalculationContext)
{
@@ -97,25 +102,28 @@
protected override ContextMenuStrip GetContextMenu(ITreeNode sender, PipingCalculationContext nodeData)
{
- PipingCalculation calculation = nodeData.WrappedData;
+ if (ContextMenuBuilderProvider == null)
+ {
+ return null;
+ }
- var contextMenu = new ContextMenuStrip();
- contextMenu.AddMenuItem(Resources.Validate,
+ PipingCalculation calculation = nodeData.WrappedData;
+ var validateItem = new StrictContextMenuItem(Resources.Validate,
null,
Resources.ValidationIcon,
(o, args) =>
{
PipingCalculationService.Validate(calculation);
});
- contextMenu.AddMenuItem(Resources.Calculate,
+ var calculateItem = new StrictContextMenuItem(Resources.Calculate,
null,
Resources.Play,
(o, args) =>
{
RunActivityAction(new PipingCalculationActivity(calculation));
});
- var clearOutputItem = contextMenu.AddMenuItem(Resources.Clear_output,
+ var clearOutputItem = new StrictContextMenuItem(Resources.Clear_output,
null,
RingtoetsFormsResources.ClearIcon,
(o, args) =>
@@ -130,7 +138,20 @@
clearOutputItem.ToolTipText = Resources.ClearOutput_No_output_to_clear;
}
- return contextMenu;
+ return ContextMenuBuilderProvider
+ .Get(sender)
+ .AddCustomItem(validateItem)
+ .AddCustomItem(calculateItem)
+ .AddCustomItem(clearOutputItem)
+ .AddSeparator()
+ .AddExpandAllItem()
+ .AddCollapseAllItem()
+ .AddSeparator()
+ .AddImportItem()
+ .AddExportItem()
+ .AddSeparator()
+ .AddPropertiesItem()
+ .Build();
}
}
}
\ No newline at end of file
Index: Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs
===================================================================
diff -u -rf9a6da5a0a62e484e46775cc57ee6f8fe412694f -reff8c57b5a5243e2c723f117b46bf8b4094ca4c6
--- Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs (.../PipingGuiPlugin.cs) (revision f9a6da5a0a62e484e46775cc57ee6f8fe412694f)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs (.../PipingGuiPlugin.cs) (revision eff8c57b5a5243e2c723f117b46bf8b4094ca4c6)
@@ -35,7 +35,8 @@
{
yield return new PipingCalculationContextNodePresenter
{
- RunActivityAction = ActivityProgressDialogRunner.Run
+ RunActivityAction = ActivityProgressDialogRunner.Run,
+ ContextMenuBuilderProvider = Gui.ContextMenuProvider
};
yield return new PipingCalculationGroupContextNodePresenter();
yield return new PipingInputContextNodePresenter();
Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingCalculationContextNodePresenterTest.cs
===================================================================
diff -u -r495647ee1c652fecc15eea7fefeab29ae01347fe -reff8c57b5a5243e2c723f117b46bf8b4094ca4c6
--- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingCalculationContextNodePresenterTest.cs (.../PipingCalculationContextNodePresenterTest.cs) (revision 495647ee1c652fecc15eea7fefeab29ae01347fe)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingCalculationContextNodePresenterTest.cs (.../PipingCalculationContextNodePresenterTest.cs) (revision eff8c57b5a5243e2c723f117b46bf8b4094ca4c6)
@@ -8,6 +8,9 @@
using System.Windows.Forms;
using Core.Common.Base;
using Core.Common.Base.Workflow;
+using Core.Common.Gui;
+using Core.Common.Gui.ContextMenu;
+using Core.Common.Gui.TestUtils;
using NUnit.Framework;
using Rhino.Mocks;
@@ -16,7 +19,9 @@
using Ringtoets.Piping.Forms.NodePresenters;
using Ringtoets.Piping.Forms.PresentationObjects;
-using RingtoetsFormsResources = Ringtoets.Piping.Forms.Properties.Resources;
+using PipingFormsResources = Ringtoets.Piping.Forms.Properties.Resources;
+using RingtoetsCommonFormsResources = Ringtoets.Common.Forms.Properties.Resources;
+using CoreCommonGuiResources = Core.Common.Gui.Properties.Resources;
namespace Ringtoets.Piping.Forms.Test.NodePresenters
{
@@ -28,6 +33,11 @@
private const int contextMenuValidateIndex = 0;
private const int contextMenuCalculateIndex = 1;
private const int contextMenuClearIndex = 2;
+ private const int contextMenuExpandIndex = 4;
+ private const int contextMenuCollapseIndex = 5;
+ private const int contextMenuImportIndex = 7;
+ private const int contextMenuExportIndex = 8;
+ private const int contextMenuPropertiesIndex = 10;
[SetUp]
public void SetUp()
@@ -71,7 +81,7 @@
// Assert
Assert.AreEqual(nodeName, pipingNode.Text);
- TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.PipingIcon, pipingNode.Image);
+ TestHelper.AssertImagesAreEqual(PipingFormsResources.PipingIcon, pipingNode.Image);
}
[Test]
@@ -325,90 +335,151 @@
}
[Test]
- public void GetContextMenu_WithPipingCalculation_ContextMenuWithThreeItems()
+ public void GetContextMenu_WithPipingCalculation_ContextMenuWithElevenItems()
{
// Setup
var nodeMock = mockRepository.StrictMock();
- mockRepository.ReplayAll();
var nodeData = new PipingCalculationContext(new PipingCalculation(),
Enumerable.Empty(),
Enumerable.Empty());
- var nodePresenter = new PipingCalculationContextNodePresenter();
+ var nodePresenter = new PipingCalculationContextNodePresenter
+ {
+ ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mockRepository, nodeMock, true)
+ };
+ mockRepository.ReplayAll();
+
// Call
ContextMenuStrip contextMenu = nodePresenter.GetContextMenu(nodeMock, nodeData);
// Assert
Assert.IsNotNull(contextMenu);
- Assert.AreEqual(3, contextMenu.Items.Count);
- var validateItem = contextMenu.Items[contextMenuValidateIndex];
- Assert.AreEqual(RingtoetsFormsResources.Validate, validateItem.Text);
- TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.ValidationIcon, validateItem.Image);
+ Assert.AreEqual(11, contextMenu.Items.Count);
+ ToolStripItem validateItem = contextMenu.Items[contextMenuValidateIndex];
+ Assert.AreEqual(PipingFormsResources.Validate, validateItem.Text);
+ TestHelper.AssertImagesAreEqual(PipingFormsResources.ValidationIcon, validateItem.Image);
+
ToolStripItem calculatePipingItem = contextMenu.Items[contextMenuCalculateIndex];
- Assert.AreEqual(RingtoetsFormsResources.Calculate, calculatePipingItem.Text);
- Assert.AreEqual(16, calculatePipingItem.Image.Height);
- Assert.AreEqual(16, calculatePipingItem.Image.Width);
+ Assert.AreEqual(PipingFormsResources.Calculate, calculatePipingItem.Text);
+ TestHelper.AssertImagesAreEqual(PipingFormsResources.Play, calculatePipingItem.Image);
ToolStripItem clearOutputItem = contextMenu.Items[contextMenuClearIndex];
- Assert.AreEqual(RingtoetsFormsResources.Clear_output, clearOutputItem.Text);
- Assert.AreEqual(16, clearOutputItem.Image.Height);
- Assert.AreEqual(16, clearOutputItem.Image.Width);
- mockRepository.VerifyAll(); // Expect no calls on arguments
+ Assert.AreEqual(PipingFormsResources.Clear_output, clearOutputItem.Text);
+ TestHelper.AssertImagesAreEqual(RingtoetsCommonFormsResources.ClearIcon, clearOutputItem.Image);
+
+ ToolStripItem expandItem = contextMenu.Items[contextMenuExpandIndex];
+ Assert.AreEqual(CoreCommonGuiResources.Expand_all, expandItem.Text);
+ Assert.AreEqual(CoreCommonGuiResources.Expand_all_ToolTip, expandItem.ToolTipText);
+ TestHelper.AssertImagesAreEqual(CoreCommonGuiResources.ExpandAllIcon, expandItem.Image);
+
+ ToolStripItem collapseItem = contextMenu.Items[contextMenuCollapseIndex];
+ Assert.AreEqual(CoreCommonGuiResources.Collapse_all, collapseItem.Text);
+ Assert.AreEqual(CoreCommonGuiResources.Collapse_all_ToolTip, collapseItem.ToolTipText);
+ TestHelper.AssertImagesAreEqual(CoreCommonGuiResources.CollapseAllIcon, collapseItem.Image);
+
+ ToolStripItem importItem = contextMenu.Items[contextMenuImportIndex];
+ Assert.AreEqual(CoreCommonGuiResources.Import, importItem.Text);
+ Assert.AreEqual(CoreCommonGuiResources.Import_ToolTip, importItem.ToolTipText);
+ TestHelper.AssertImagesAreEqual(CoreCommonGuiResources.ImportIcon, importItem.Image);
+
+ ToolStripItem exportItem = contextMenu.Items[contextMenuExportIndex];
+ Assert.AreEqual(CoreCommonGuiResources.Export, exportItem.Text);
+ Assert.AreEqual(CoreCommonGuiResources.Export_ToolTip, exportItem.ToolTipText);
+ TestHelper.AssertImagesAreEqual(CoreCommonGuiResources.ExportIcon, exportItem.Image);
+
+ ToolStripItem propertiesItem = contextMenu.Items[contextMenuPropertiesIndex];
+ Assert.AreEqual(CoreCommonGuiResources.Properties, propertiesItem.Text);
+ Assert.AreEqual(CoreCommonGuiResources.Properties_ToolTip, propertiesItem.ToolTipText);
+ TestHelper.AssertImagesAreEqual(CoreCommonGuiResources.PropertiesIcon, propertiesItem.Image);
+
+ mockRepository.VerifyAll();
}
[Test]
public void GetContextMenu_PipingCalculationWithoutOutput_ContextMenuItemClearOutputDisabled()
{
// Setup
var nodeMock = mockRepository.StrictMock();
- mockRepository.ReplayAll();
var nodeData = new PipingCalculationContext(new PipingCalculation(),
Enumerable.Empty(),
Enumerable.Empty());
- var nodePresenter = new PipingCalculationContextNodePresenter();
+ var nodePresenter = new PipingCalculationContextNodePresenter
+ {
+ ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mockRepository, nodeMock, true)
+ };
+ mockRepository.ReplayAll();
+
// Call
ContextMenuStrip contextMenu = nodePresenter.GetContextMenu(nodeMock, nodeData);
// Assert
Assert.IsNotNull(contextMenu);
- Assert.AreEqual(3, contextMenu.Items.Count);
+ Assert.AreEqual(11, contextMenu.Items.Count);
ToolStripItem clearOutputItem = contextMenu.Items[contextMenuClearIndex];
Assert.IsFalse(clearOutputItem.Enabled);
- Assert.AreEqual(RingtoetsFormsResources.ClearOutput_No_output_to_clear, clearOutputItem.ToolTipText);
- mockRepository.VerifyAll(); // Expect no calls on arguments
+ Assert.AreEqual(PipingFormsResources.ClearOutput_No_output_to_clear, clearOutputItem.ToolTipText);
+ mockRepository.VerifyAll();
}
[Test]
- public void GetContextMenu_PipingCalculationWithOutput_ContextMenuItemClearOutputEnabled()
+ public void GetContextMenu_NoProviderPipingCalculationWithOutput_ReturnsNull()
{
// Setup
var nodeMock = mockRepository.StrictMock();
+ var nodePresenter = new PipingCalculationContextNodePresenter();
+ var calculation = new PipingCalculation
+ {
+ Output = new TestPipingOutput()
+ };
+ var nodeData = new PipingCalculationContext(calculation,
+ Enumerable.Empty(),
+ Enumerable.Empty());
+
mockRepository.ReplayAll();
+ // Call
+ ContextMenuStrip contextMenu = nodePresenter.GetContextMenu(nodeMock, nodeData);
+
+ // Assert
+ Assert.IsNull(contextMenu);
+
+ mockRepository.VerifyAll();
+ }
+
+ [Test]
+ public void GetContextMenu_WithProviderPipingCalculationWithOutput_ContextMenuItemClearOutputEnabled()
+ {
+ // Setup
+ var nodeMock = mockRepository.StrictMock();
+
var calculation = new PipingCalculation
{
Output = new TestPipingOutput()
};
var nodeData = new PipingCalculationContext(calculation,
Enumerable.Empty(),
Enumerable.Empty());
-
- var nodePresenter = new PipingCalculationContextNodePresenter();
+ var nodePresenter = new PipingCalculationContextNodePresenter
+ {
+ ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mockRepository, nodeMock, true)
+ };
+ mockRepository.ReplayAll();
+
// Call
ContextMenuStrip contextMenu = nodePresenter.GetContextMenu(nodeMock, nodeData);
// Assert
Assert.IsNotNull(contextMenu);
- Assert.AreEqual(3, contextMenu.Items.Count);
+ Assert.AreEqual(11, contextMenu.Items.Count);
ToolStripItem clearOutputItem = contextMenu.Items[contextMenuClearIndex];
Assert.IsTrue(clearOutputItem.Enabled);
@@ -572,22 +643,28 @@
var expectedValidationMessageCount = 2; // No surfaceline or soil profile selected for calculation
var observer = mockRepository.StrictMock();
- mockRepository.ReplayAll();
var calculateContextMenuItemIndex = 1;
var calculation = new PipingCalculation();
calculation.Attach(observer);
var activityRunner = new ActivityRunner();
+ ITreeNode treeNodeMock = mockRepository.StrictMock();
+
var nodePresenter = new PipingCalculationContextNodePresenter
{
- RunActivityAction = activity => activityRunner.Enqueue(activity)
+ RunActivityAction = activity => activityRunner.Enqueue(activity),
+ ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mockRepository, treeNodeMock, true)
};
- var contextMenuAdapter = nodePresenter.GetContextMenu(null, new PipingCalculationContext(calculation,
+
+ mockRepository.ReplayAll();
+
+ var contextMenuAdapter = nodePresenter.GetContextMenu(treeNodeMock, new PipingCalculationContext(calculation,
Enumerable.Empty(),
Enumerable.Empty()));
-
+
+
// When
Action action = () =>
{
@@ -628,13 +705,19 @@
var validateContextMenuItemIndex = 0;
var calculation = new PipingCalculation();
var observer = mockRepository.StrictMock();
- var nodePresenter = new PipingCalculationContextNodePresenter();
observer.Expect(o => o.UpdateObserver()).Repeat.Never();
calculation.Attach(observer);
+ ITreeNode treeNodeMock = mockRepository.StrictMock();
+
+ var nodePresenter = new PipingCalculationContextNodePresenter
+ {
+ ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mockRepository, treeNodeMock, true)
+ };
+
mockRepository.ReplayAll();
- var contextMenuAdapter = nodePresenter.GetContextMenu(null, new PipingCalculationContext(calculation,
+ var contextMenuAdapter = nodePresenter.GetContextMenu(treeNodeMock, new PipingCalculationContext(calculation,
Enumerable.Empty(),
Enumerable.Empty()));
@@ -681,12 +764,18 @@
observer.Expect(o => o.UpdateObserver());
calculation.Attach(observer);
+ ITreeNode treeNodeMock = mockRepository.StrictMock();
+
+ var nodePresenter = new PipingCalculationContextNodePresenter
+ {
+ ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mockRepository, treeNodeMock, true)
+ };
+
mockRepository.ReplayAll();
var activityRunner = new ActivityRunner();
- var nodePresenter = new PipingCalculationContextNodePresenter();
- var contextMenuAdapter = nodePresenter.GetContextMenu(null, new PipingCalculationContext(calculation,
+ var contextMenuAdapter = nodePresenter.GetContextMenu(treeNodeMock, new PipingCalculationContext(calculation,
Enumerable.Empty(),
Enumerable.Empty()));
nodePresenter.RunActivityAction = activity => activityRunner.Enqueue(activity);
@@ -731,10 +820,16 @@
calculation.Output = new TestPipingOutput();
calculation.Attach(observer);
+ ITreeNode treeNodeMock = mockRepository.StrictMock();
+
+ var nodePresenter = new PipingCalculationContextNodePresenter
+ {
+ ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mockRepository, treeNodeMock, true)
+ };
+
mockRepository.ReplayAll();
- var nodePresenter = new PipingCalculationContextNodePresenter();
- var contextMenuAdapter = nodePresenter.GetContextMenu(null, new PipingCalculationContext(calculation,
+ var contextMenuAdapter = nodePresenter.GetContextMenu(treeNodeMock, new PipingCalculationContext(calculation,
Enumerable.Empty(),
Enumerable.Empty()));
Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingSoilProfileCollectionNodePresenterTest.cs
===================================================================
diff -u -rf9a6da5a0a62e484e46775cc57ee6f8fe412694f -reff8c57b5a5243e2c723f117b46bf8b4094ca4c6
--- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingSoilProfileCollectionNodePresenterTest.cs (.../PipingSoilProfileCollectionNodePresenterTest.cs) (revision f9a6da5a0a62e484e46775cc57ee6f8fe412694f)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingSoilProfileCollectionNodePresenterTest.cs (.../PipingSoilProfileCollectionNodePresenterTest.cs) (revision eff8c57b5a5243e2c723f117b46bf8b4094ca4c6)
@@ -4,6 +4,7 @@
using Core.Common.Controls;
using Core.Common.Gui;
using Core.Common.Gui.ContextMenu;
+using Core.Common.Gui.TestUtils;
using Core.Common.TestUtils;
using NUnit.Framework;
@@ -147,20 +148,14 @@
var mocks = new MockRepository();
var nodeMock = mocks.StrictMock();
var dataMock = mocks.StrictMock>();
- var menuBuilderProviderMock = mocks.StrictMock();
- var commandHandlerMock = mocks.StrictMock();
- menuBuilderProviderMock.Expect(mbp => mbp.Get(null)).IgnoreArguments().Return(new ContextMenuBuilder(commandHandlerMock, nodeMock));
- commandHandlerMock.Expect(ch => ch.CanExportFromGuiSelection()).Return(importExportEnabled);
- commandHandlerMock.Expect(ch => ch.CanImportToGuiSelection()).Return(importExportEnabled);
-
- mocks.ReplayAll();
-
var nodePresenter = new PipingSoilProfileCollectionNodePresenter
{
- ContextMenuBuilderProvider = menuBuilderProviderMock
+ ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mocks, nodeMock, importExportEnabled)
};
+ mocks.ReplayAll();
+
// Call
var returnedContextMenu = nodePresenter.GetContextMenu(nodeMock, dataMock);
Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingSurfaceLineCollectionNodePresenterTest.cs
===================================================================
diff -u -r5bdfe106fefb36f7e677da7e75afec1eba7eedd3 -reff8c57b5a5243e2c723f117b46bf8b4094ca4c6
--- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingSurfaceLineCollectionNodePresenterTest.cs (.../PipingSurfaceLineCollectionNodePresenterTest.cs) (revision 5bdfe106fefb36f7e677da7e75afec1eba7eedd3)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingSurfaceLineCollectionNodePresenterTest.cs (.../PipingSurfaceLineCollectionNodePresenterTest.cs) (revision eff8c57b5a5243e2c723f117b46bf8b4094ca4c6)
@@ -7,6 +7,7 @@
using Core.Common.Controls;
using Core.Common.Gui;
using Core.Common.Gui.ContextMenu;
+using Core.Common.Gui.TestUtils;
using Core.Common.TestUtils;
using Core.Common.Utils.Collections;
using NUnit.Framework;
@@ -315,20 +316,14 @@
var mocks = new MockRepository();
var nodeMock = mocks.StrictMock();
var dataMock = mocks.StrictMock>();
- var menuBuilderProviderMock = mocks.StrictMock();
- var commandHandlerMock = mocks.StrictMock();
- menuBuilderProviderMock.Expect(mbp => mbp.Get(null)).IgnoreArguments().Return(new ContextMenuBuilder(commandHandlerMock, nodeMock));
- commandHandlerMock.Expect(ch => ch.CanExportFromGuiSelection()).Return(importExportEnabled);
- commandHandlerMock.Expect(ch => ch.CanImportToGuiSelection()).Return(importExportEnabled);
-
- mocks.ReplayAll();
-
var nodePresenter = new PipingSurfaceLineCollectionNodePresenter
{
- ContextMenuBuilderProvider = menuBuilderProviderMock
+ ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mocks, nodeMock, importExportEnabled)
};
+ mocks.ReplayAll();
+
// Call
var returnedContextMenu = nodePresenter.GetContextMenu(nodeMock, dataMock);
Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Ringtoets.Piping.Forms.Test.csproj
===================================================================
diff -u -r495647ee1c652fecc15eea7fefeab29ae01347fe -reff8c57b5a5243e2c723f117b46bf8b4094ca4c6
--- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Ringtoets.Piping.Forms.Test.csproj (.../Ringtoets.Piping.Forms.Test.csproj) (revision 495647ee1c652fecc15eea7fefeab29ae01347fe)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Ringtoets.Piping.Forms.Test.csproj (.../Ringtoets.Piping.Forms.Test.csproj) (revision eff8c57b5a5243e2c723f117b46bf8b4094ca4c6)
@@ -107,6 +107,10 @@
{f49bd8b2-332a-4c91-a196-8cce0a2c7d98}
Core.Common.Utils
+
+ {26214BD0-DAFB-4CFC-8EB2-80C5D53C859E}
+ Core.Common.Gui.TestUtils
+
{d749ee4c-ce50-4c17-bf01-9a953028c126}
Core.Common.TestUtils
Index: packages/repositories.config
===================================================================
diff -u -r2705c81f73c3fee936ccc31385625a30d6a3a10f -reff8c57b5a5243e2c723f117b46bf8b4094ca4c6
--- packages/repositories.config (.../repositories.config) (revision 2705c81f73c3fee936ccc31385625a30d6a3a10f)
+++ packages/repositories.config (.../repositories.config) (revision eff8c57b5a5243e2c723f117b46bf8b4094ca4c6)
@@ -8,6 +8,7 @@
+