Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/FailureMechanismNodePresenter.cs =================================================================== diff -u -rf17434ebd33ce14befc2e0f0150a66f831ed3e07 -rfc37d02640f08334ab1ddce79ceca36c2f0cff17 --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/FailureMechanismNodePresenter.cs (.../FailureMechanismNodePresenter.cs) (revision f17434ebd33ce14befc2e0f0150a66f831ed3e07) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/FailureMechanismNodePresenter.cs (.../FailureMechanismNodePresenter.cs) (revision fc37d02640f08334ab1ddce79ceca36c2f0cff17) @@ -1,7 +1,9 @@ -using System.Collections; +using System; +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; @@ -14,6 +16,13 @@ { public class FailureMechanismNodePresenter : RingtoetsNodePresenterBase { + private IGuiCommandHandler guiHandler; + + public FailureMechanismNodePresenter(IGuiCommandHandler guiHandler = null) + { + this.guiHandler = guiHandler; + } + protected override void UpdateNode(ITreeNode parentNode, ITreeNode node, FailureMechanismPlaceholder nodeData) { node.Text = nodeData.Name; @@ -44,11 +53,11 @@ contextMenu.AddMenuItem( RingtoetsCommonFormsResources.FailureMechanism_Expand_all, RingtoetsCommonFormsResources.FailureMechanism_Expand_all_ToolTip, - RingtoetsCommonFormsResources.ExpandAllIcon, null); + RingtoetsCommonFormsResources.ExpandAllIcon, ExpandAllItemClicked); contextMenu.AddMenuItem( RingtoetsCommonFormsResources.FailureMechanism_Collapse_all, RingtoetsCommonFormsResources.FailureMechanism_Collapse_all_ToolTip, - RingtoetsCommonFormsResources.CollapseAllIcon, null); + RingtoetsCommonFormsResources.CollapseAllIcon, CollapseAllItemClicked); contextMenu.AddSeperator(); contextMenu.AddMenuItem( @@ -60,11 +69,29 @@ contextMenu.AddMenuItem( RingtoetsCommonFormsResources.FailureMechanism_Properties, RingtoetsCommonFormsResources.FailureMechanism_Properties_ToolTip, - RingtoetsCommonFormsResources.PropertiesIcon, null); + 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 -rf17434ebd33ce14befc2e0f0150a66f831ed3e07 -rfc37d02640f08334ab1ddce79ceca36c2f0cff17 --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/PlaceholderWithReadonlyNameNodePresenter.cs (.../PlaceholderWithReadonlyNameNodePresenter.cs) (revision f17434ebd33ce14befc2e0f0150a66f831ed3e07) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/PlaceholderWithReadonlyNameNodePresenter.cs (.../PlaceholderWithReadonlyNameNodePresenter.cs) (revision fc37d02640f08334ab1ddce79ceca36c2f0cff17) @@ -1,6 +1,8 @@ -using System.Drawing; +using System; +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; @@ -15,6 +17,13 @@ /// public class PlaceholderWithReadonlyNameNodePresenter : RingtoetsNodePresenterBase { + private IGuiCommandHandler guiHandler; + + public PlaceholderWithReadonlyNameNodePresenter(IGuiCommandHandler guiHandler = null) + { + this.guiHandler = guiHandler; + } + protected override void UpdateNode(ITreeNode parentNode, ITreeNode node, PlaceholderWithReadonlyName nodeData) { node.Text = nodeData.Name; @@ -69,9 +78,17 @@ contextMenu.AddMenuItem( RingtoetsCommonFormsResources.FailureMechanism_Properties, RingtoetsCommonFormsResources.FailureMechanism_Properties_ToolTip, - RingtoetsCommonFormsResources.PropertiesIcon, null); + RingtoetsCommonFormsResources.PropertiesIcon, PropertiesItemClicked); } return contextMenu; } + + private void PropertiesItemClicked(object sender, EventArgs eventArgs) + { + if (guiHandler != null) + { + guiHandler.ShowProperties(); + } + } } } \ No newline at end of file Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsGuiPlugin.cs =================================================================== diff -u -r80ebf3911f46c8fde95702b7723e4457b4fd80ea -rfc37d02640f08334ab1ddce79ceca36c2f0cff17 --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsGuiPlugin.cs (.../RingtoetsGuiPlugin.cs) (revision 80ebf3911f46c8fde95702b7723e4457b4fd80ea) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsGuiPlugin.cs (.../RingtoetsGuiPlugin.cs) (revision fc37d02640f08334ab1ddce79ceca36c2f0cff17) @@ -32,8 +32,8 @@ public override IEnumerable GetProjectTreeViewNodePresenters() { yield return new AssessmentSectionBaseNodePresenter(); - yield return new FailureMechanismNodePresenter(); - yield return new PlaceholderWithReadonlyNameNodePresenter(); + yield return new FailureMechanismNodePresenter(Gui.CommandHandler); + yield return new PlaceholderWithReadonlyNameNodePresenter(Gui.CommandHandler); yield return new CategoryTreeFolderNodePresenter(); } } Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/NodePresenters/FailureMechanismNodePresenterTest.cs =================================================================== diff -u -r7048e49c8495475c25ceb9deb35edd8a2addafca -rfc37d02640f08334ab1ddce79ceca36c2f0cff17 --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/NodePresenters/FailureMechanismNodePresenterTest.cs (.../FailureMechanismNodePresenterTest.cs) (revision 7048e49c8495475c25ceb9deb35edd8a2addafca) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/NodePresenters/FailureMechanismNodePresenterTest.cs (.../FailureMechanismNodePresenterTest.cs) (revision fc37d02640f08334ab1ddce79ceca36c2f0cff17) @@ -2,6 +2,7 @@ using System.Linq; using System.Windows.Forms; using Core.Common.Controls; +using Core.Common.Gui; using Core.Common.TestUtils; using NUnit.Framework; @@ -146,5 +147,44 @@ CollectionAssert.AllItemsAreInstancesOfType(new []{menu.Items[2], menu.Items[5],menu.Items[7]}, typeof(ToolStripSeparator)); } + + [Test] + public void GetContextMenu_ShowPropertiesClickedWithHandler_CallsShowProperties() + { + // Setup + var mocks = new MockRepository(); + var nodeMock = mocks.StrictMock(); + var commandHandlerMock = mocks.StrictMock(); + commandHandlerMock.Expect(ch => ch.ShowProperties()); + + var nodePresenter = new FailureMechanismNodePresenter(commandHandlerMock); + var failureMechanism = new FailureMechanismPlaceholder("test"); + + mocks.ReplayAll(); + + var showPropertiesMenuItem = nodePresenter.GetContextMenu(nodeMock, failureMechanism).Items[8]; + + // Call + showPropertiesMenuItem.PerformClick(); + + // Assert + mocks.VerifyAll(); + } + + [Test] + public void GetContextMenu_ShowPropertiesClickedWithoutHandler_NoExceptions() + { + // Setup + var mocks = new MockRepository(); + var nodeMock = mocks.StrictMock(); + + var nodePresenter = new FailureMechanismNodePresenter(); + var failureMechanism = new FailureMechanismPlaceholder("test"); + + var showPropertiesMenuItem = nodePresenter.GetContextMenu(nodeMock, failureMechanism).Items[8]; + + // Call & Assert + showPropertiesMenuItem.PerformClick(); + } } } \ No newline at end of file Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/NodePresenters/PlaceholderWithReadonlyNameNodePresenterTest.cs =================================================================== diff -u -r7048e49c8495475c25ceb9deb35edd8a2addafca -rfc37d02640f08334ab1ddce79ceca36c2f0cff17 --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/NodePresenters/PlaceholderWithReadonlyNameNodePresenterTest.cs (.../PlaceholderWithReadonlyNameNodePresenterTest.cs) (revision 7048e49c8495475c25ceb9deb35edd8a2addafca) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/NodePresenters/PlaceholderWithReadonlyNameNodePresenterTest.cs (.../PlaceholderWithReadonlyNameNodePresenterTest.cs) (revision fc37d02640f08334ab1ddce79ceca36c2f0cff17) @@ -2,6 +2,7 @@ using System.Drawing; using System.Windows.Forms; using Core.Common.Controls; +using Core.Common.Gui; using Core.Common.TestUtils; using NUnit.Framework; @@ -216,5 +217,44 @@ CollectionAssert.AllItemsAreInstancesOfType(new[] { menu.Items[1], menu.Items[3], menu.Items[5] }, typeof(ToolStripSeparator)); } + + [Test] + public void GetContextMenu_OutputPlaceholderShowPropertiesClickedWithHandler_CallsShowProperties() + { + // Setup + var mocks = new MockRepository(); + var nodeMock = mocks.StrictMock(); + var commandHandlerMock = mocks.StrictMock(); + commandHandlerMock.Expect(ch => ch.ShowProperties()); + + var nodePresenter = new PlaceholderWithReadonlyNameNodePresenter(commandHandlerMock); + var placeholderData = new OutputPlaceholder("test"); + + mocks.ReplayAll(); + + var showPropertiesMenuItem = nodePresenter.GetContextMenu(nodeMock, placeholderData).Items[6]; + + // Call + showPropertiesMenuItem.PerformClick(); + + // Assert + mocks.VerifyAll(); + } + + [Test] + public void GetContextMenu_OutputPlaceholderShowPropertiesClickedWithoutHandler_NoExceptions() + { + // Setup + var mocks = new MockRepository(); + var nodeMock = mocks.StrictMock(); + + var nodePresenter = new PlaceholderWithReadonlyNameNodePresenter(); + var placeholderData = new OutputPlaceholder("test"); + + var showPropertiesMenuItem = nodePresenter.GetContextMenu(nodeMock, placeholderData).Items[6]; + + // Call & Assert + showPropertiesMenuItem.PerformClick(); + } } } \ No newline at end of file