Index: Riskeer/ClosingStructures/src/Riskeer.ClosingStructures.Plugin/ClosingStructuresPlugin.cs =================================================================== diff -u -r25c7415364b0351b606708154b24d3d47ec19023 -r6bf7a04411f621ec3f7795342fa5c69476a0ad0d --- Riskeer/ClosingStructures/src/Riskeer.ClosingStructures.Plugin/ClosingStructuresPlugin.cs (.../ClosingStructuresPlugin.cs) (revision 25c7415364b0351b606708154b24d3d47ec19023) +++ Riskeer/ClosingStructures/src/Riskeer.ClosingStructures.Plugin/ClosingStructuresPlugin.cs (.../ClosingStructuresPlugin.cs) (revision 6bf7a04411f621ec3f7795342fa5c69476a0ad0d) @@ -732,14 +732,12 @@ object parentData, TreeViewControl treeViewControl) { - var builder = new RiskeerContextMenuBuilder(Gui.Get(context, treeViewControl)); var inquiryHelper = new DialogBasedInquiryHelper(Gui.MainWindow); StructuresCalculation calculation = context.WrappedData; - var changeHandler = new ClearIllustrationPointsOfStructuresCalculationHandler(inquiryHelper, calculation); - + var builder = new RiskeerContextMenuBuilder(Gui.Get(context, treeViewControl)); return builder.AddExportItem() .AddSeparator() .AddDuplicateCalculationItem(calculation, context) Index: Riskeer/ClosingStructures/test/Riskeer.ClosingStructures.Plugin.Test/TreeNodeInfos/ClosingStructuresCalculationContextTreeNodeInfoTest.cs =================================================================== diff -u -r060ec5f61188bd9503fc0791c8a86869aaee3fde -r6bf7a04411f621ec3f7795342fa5c69476a0ad0d --- Riskeer/ClosingStructures/test/Riskeer.ClosingStructures.Plugin.Test/TreeNodeInfos/ClosingStructuresCalculationContextTreeNodeInfoTest.cs (.../ClosingStructuresCalculationContextTreeNodeInfoTest.cs) (revision 060ec5f61188bd9503fc0791c8a86869aaee3fde) +++ Riskeer/ClosingStructures/test/Riskeer.ClosingStructures.Plugin.Test/TreeNodeInfos/ClosingStructuresCalculationContextTreeNodeInfoTest.cs (.../ClosingStructuresCalculationContextTreeNodeInfoTest.cs) (revision 6bf7a04411f621ec3f7795342fa5c69476a0ad0d) @@ -262,7 +262,6 @@ "Deze berekening heeft geen uitvoer om te wissen.", RiskeerCommonFormsResources.ClearIcon, false); - TestHelper.AssertContextMenuStripContainsItem(menu, contextMenuClearIllustrationPointsIndex, "Wis illustratiepunten...", "Deze berekening heeft geen illustratiepunten om te wissen.", Index: Riskeer/HeightStructures/src/Riskeer.HeightStructures.Plugin/HeightStructuresPlugin.cs =================================================================== diff -u -r12cd70b7bbe4e47b62266bf6fa45dcfe5f76274e -r6bf7a04411f621ec3f7795342fa5c69476a0ad0d --- Riskeer/HeightStructures/src/Riskeer.HeightStructures.Plugin/HeightStructuresPlugin.cs (.../HeightStructuresPlugin.cs) (revision 12cd70b7bbe4e47b62266bf6fa45dcfe5f76274e) +++ Riskeer/HeightStructures/src/Riskeer.HeightStructures.Plugin/HeightStructuresPlugin.cs (.../HeightStructuresPlugin.cs) (revision 6bf7a04411f621ec3f7795342fa5c69476a0ad0d) @@ -745,10 +745,13 @@ object parentData, TreeViewControl treeViewControl) { - var builder = new RiskeerContextMenuBuilder(Gui.Get(context, treeViewControl)); var inquiryHelper = new DialogBasedInquiryHelper(Gui.MainWindow); StructuresCalculation calculation = context.WrappedData; + var changeHandler = new ClearIllustrationPointsOfStructuresCalculationHandler(inquiryHelper, + calculation); + + var builder = new RiskeerContextMenuBuilder(Gui.Get(context, treeViewControl)); return builder.AddExportItem() .AddSeparator() .AddDuplicateCalculationItem(calculation, context) @@ -770,6 +773,7 @@ ValidateAllDataAvailableAndGetErrorMessage) .AddSeparator() .AddClearCalculationOutputItem(calculation) + .AddClearIllustrationPointsOfCalculationItem(() => IllustrationPointsHelper.HasIllustrationPoints(calculation), changeHandler) .AddDeleteItem() .AddSeparator() .AddCollapseAllItem() Index: Riskeer/HeightStructures/test/Riskeer.HeightStructures.Plugin.Test/TreeNodeInfos/HeightStructuresCalculationContextTreeNodeInfoTest.cs =================================================================== diff -u -r90da65d29cffe6603e285dd47eb922125f11b692 -r6bf7a04411f621ec3f7795342fa5c69476a0ad0d --- Riskeer/HeightStructures/test/Riskeer.HeightStructures.Plugin.Test/TreeNodeInfos/HeightStructuresCalculationContextTreeNodeInfoTest.cs (.../HeightStructuresCalculationContextTreeNodeInfoTest.cs) (revision 90da65d29cffe6603e285dd47eb922125f11b692) +++ Riskeer/HeightStructures/test/Riskeer.HeightStructures.Plugin.Test/TreeNodeInfos/HeightStructuresCalculationContextTreeNodeInfoTest.cs (.../HeightStructuresCalculationContextTreeNodeInfoTest.cs) (revision 6bf7a04411f621ec3f7795342fa5c69476a0ad0d) @@ -40,6 +40,7 @@ using Riskeer.Common.Data.Hydraulics; using Riskeer.Common.Data.Structures; using Riskeer.Common.Data.TestUtil; +using Riskeer.Common.Data.TestUtil.IllustrationPoints; using Riskeer.Common.Service.TestUtil; using Riskeer.HeightStructures.Data; using Riskeer.HeightStructures.Data.TestUtil; @@ -61,6 +62,7 @@ private const int contextMenuValidateIndex = 8; private const int contextMenuCalculateIndex = 9; private const int contextMenuClearIndex = 11; + private const int contextMenuClearIllustrationPointsIndex = 12; private readonly string testDataPath = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Common.IO, nameof(HydraulicBoundaryDatabase)); private MockRepository mocks; @@ -169,6 +171,7 @@ menuBuilder.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilder); menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder); menuBuilder.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilder); + menuBuilder.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilder); menuBuilder.Expect(mb => mb.AddDeleteItem()).Return(menuBuilder); menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder); menuBuilder.Expect(mb => mb.AddCollapseAllItem()).Return(menuBuilder); @@ -216,7 +219,7 @@ var calculation = new StructuresCalculation(); var nodeData = new HeightStructuresCalculationContext(calculation, parent, failureMechanism, assessmentSection); var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); - + using (var treeViewControl = new TreeViewControl()) { var gui = mocks.Stub(); @@ -231,7 +234,7 @@ using (ContextMenuStrip menu = info.ContextMenuStrip(nodeData, assessmentSection, treeViewControl)) { // Assert - Assert.AreEqual(18, menu.Items.Count); + Assert.AreEqual(19, menu.Items.Count); TestHelper.AssertContextMenuStripContainsItem(menu, contextMenuDuplicateIndex, "D&upliceren", @@ -265,6 +268,11 @@ "Deze berekening heeft geen uitvoer om te wissen.", RiskeerCommonFormsResources.ClearIcon, false); + TestHelper.AssertContextMenuStripContainsItem(menu, contextMenuClearIllustrationPointsIndex, + "Wis illustratiepunten...", + "Deze berekening heeft geen illustratiepunten om te wissen.", + RiskeerCommonFormsResources.ClearIllustrationPointsIcon, + false); } } } @@ -388,6 +396,76 @@ } [Test] + public void ContextMenuStrip_CalculationWithIllustrationPoints_ContextMenuItemClearIllustrationPointsDisabled() + { + // Setup + IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(mocks); + + var parent = new CalculationGroup(); + var calculation = new StructuresCalculation + { + Output = new TestStructuresOutput(new TestGeneralResultFaultTreeIllustrationPoint()) + }; + var failureMechanism = new TestHeightStructuresFailureMechanism(); + var nodeData = new HeightStructuresCalculationContext(calculation, parent, failureMechanism, assessmentSection); + var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); + + using (var treeViewControl = new TreeViewControl()) + { + var gui = mocks.Stub(); + gui.Stub(cmp => cmp.Get(nodeData, treeViewControl)).Return(menuBuilder); + gui.Stub(cmp => cmp.MainWindow).Return(mocks.Stub()); + mocks.ReplayAll(); + + plugin.Gui = gui; + + using (ContextMenuStrip menu = info.ContextMenuStrip(nodeData, assessmentSection, treeViewControl)) + { + // Call + ToolStripItem contextMenuItem = menu.Items[contextMenuClearIllustrationPointsIndex]; + + // Assert + Assert.IsTrue(contextMenuItem.Enabled); + } + } + } + + [Test] + public void ContextMenuStrip_CalculationWithOutputWithoutIllustrationPoints_ContextMenuItemClearIllustrationPointsDisabled() + { + // Setup + IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(mocks); + + var parent = new CalculationGroup(); + var calculation = new StructuresCalculation + { + Output = new TestStructuresOutput() + }; + var failureMechanism = new TestHeightStructuresFailureMechanism(); + var nodeData = new HeightStructuresCalculationContext(calculation, parent, failureMechanism, assessmentSection); + var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); + + using (var treeViewControl = new TreeViewControl()) + { + var gui = mocks.Stub(); + gui.Stub(cmp => cmp.Get(nodeData, treeViewControl)).Return(menuBuilder); + gui.Stub(cmp => cmp.MainWindow).Return(mocks.Stub()); + mocks.ReplayAll(); + + plugin.Gui = gui; + + using (ContextMenuStrip menu = info.ContextMenuStrip(nodeData, assessmentSection, treeViewControl)) + { + // Call + ToolStripItem contextMenuItem = menu.Items[contextMenuClearIllustrationPointsIndex]; + + // Assert + Assert.IsFalse(contextMenuItem.Enabled); + } + } + } + + [Test] public void GivenCalculationWithoutOutputAndWithInputOutOfSync_WhenUpdateStructureClicked_ThenNoInquiryAndCalculationUpdatedAndInputObserverNotified() { // Given @@ -755,7 +833,7 @@ var calculation = new StructuresCalculation(); var failureMechanism = new TestHeightStructuresFailureMechanism(); var nodeData = new HeightStructuresCalculationContext(calculation, parent, failureMechanism, assessmentSection); - + using (var treeViewControl = new TreeViewControl()) { var gui = mocks.Stub(); @@ -1050,7 +1128,7 @@ observer.Expect(o => o.UpdateObserver()); var failureMechanism = new TestHeightStructuresFailureMechanism(); - + var hydraulicBoundaryLocation = new TestHydraulicBoundaryLocation(); var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase { @@ -1093,7 +1171,7 @@ { HydraRingCalculationSettingsTestHelper.AssertHydraRingCalculationSettings( HydraulicBoundaryCalculationSettingsFactory.CreateSettings(assessmentSection.HydraulicBoundaryDatabase), - (HydraRingCalculationSettings)invocation.Arguments[0]); + (HydraRingCalculationSettings) invocation.Arguments[0]); }) .Return(new TestStructuresCalculator()); mocks.ReplayAll(); @@ -1265,6 +1343,103 @@ Assert.IsNull(result.Calculation); } + [Test] + public void GivenCalculationWithIllustrationPoints_WhenClearIllustrationPointsClickedAndAborted_ThenInquiryAndIllustrationPointsNotCleared() + { + // Given + IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(mocks); + + var parent = new CalculationGroup(); + var calculation = new StructuresCalculation + { + Output = new TestStructuresOutput(new TestGeneralResultFaultTreeIllustrationPoint()) + }; + var failureMechanism = new TestHeightStructuresFailureMechanism(); + var nodeData = new HeightStructuresCalculationContext(calculation, parent, failureMechanism, assessmentSection); + var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); + + var calculationObserver = mocks.StrictMock(); + calculation.Attach(calculationObserver); + + var messageBoxText = ""; + DialogBoxHandler = (name, wnd) => + { + var helper = new MessageBoxTester(wnd); + messageBoxText = helper.Text; + + helper.ClickCancel(); + }; + + using (var treeViewControl = new TreeViewControl()) + { + var gui = mocks.Stub(); + gui.Stub(cmp => cmp.Get(nodeData, treeViewControl)).Return(menuBuilder); + gui.Stub(cmp => cmp.MainWindow).Return(mocks.Stub()); + mocks.ReplayAll(); + + plugin.Gui = gui; + + using (ContextMenuStrip menu = info.ContextMenuStrip(nodeData, assessmentSection, treeViewControl)) + { + // When + menu.Items[contextMenuClearIllustrationPointsIndex].PerformClick(); + + // Then + Assert.AreEqual("Weet u zeker dat u de illustratiepunten van deze berekening wilt wissen?", messageBoxText); + Assert.IsTrue(calculation.Output.HasGeneralResult); + } + } + } + + [Test] + public void GivenCalculationWithIllustrationPoints_WhenClearIllustrationPointsClickedAndContinued_ThenInquiryAndIllustrationPointsCleared() + { + // Given + IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(mocks); + + var parent = new CalculationGroup(); + var calculation = new StructuresCalculation + { + Output = new TestStructuresOutput(new TestGeneralResultFaultTreeIllustrationPoint()) + }; + var failureMechanism = new TestHeightStructuresFailureMechanism(); + var nodeData = new HeightStructuresCalculationContext(calculation, parent, failureMechanism, assessmentSection); + var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); + + var calculationObserver = mocks.StrictMock(); + calculationObserver.Expect(o => o.UpdateObserver()); + calculation.Attach(calculationObserver); + + var messageBoxText = ""; + DialogBoxHandler = (name, wnd) => + { + var helper = new MessageBoxTester(wnd); + messageBoxText = helper.Text; + + helper.ClickOk(); + }; + + using (var treeViewControl = new TreeViewControl()) + { + var gui = mocks.Stub(); + gui.Stub(cmp => cmp.Get(nodeData, treeViewControl)).Return(menuBuilder); + gui.Stub(cmp => cmp.MainWindow).Return(mocks.Stub()); + mocks.ReplayAll(); + + plugin.Gui = gui; + + using (ContextMenuStrip menu = info.ContextMenuStrip(nodeData, assessmentSection, treeViewControl)) + { + // When + menu.Items[contextMenuClearIllustrationPointsIndex].PerformClick(); + + // Then + Assert.AreEqual("Weet u zeker dat u de illustratiepunten van deze berekening wilt wissen?", messageBoxText); + Assert.IsFalse(calculation.Output.HasGeneralResult); + } + } + } + public override void Setup() { mocks = new MockRepository();