Index: Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingPlugin.cs =================================================================== diff -u -r79aed8fd611da58e93e3fed53c2cc1172e7fb98a -r8e76b131cb428f9af9910a8a309c90ae315b3c99 --- Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingPlugin.cs (.../PipingPlugin.cs) (revision 79aed8fd611da58e93e3fed53c2cc1172e7fb98a) +++ Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingPlugin.cs (.../PipingPlugin.cs) (revision 8e76b131cb428f9af9910a8a309c90ae315b3c99) @@ -792,19 +792,26 @@ private StrictContextMenuItem CreateUpdateEntryAndExitPointItem(PipingCalculationScenarioContext context) { - bool hasSurfaceLine = context.WrappedData.InputParameters.SurfaceLine != null; + var contextMenuEnabled = true; + string toolTipMessage = Resources.PipingPlugin_CreateUpdateEntryAndExitPointItem_Update_calculation_with_characteristic_points_ToolTip; + if (context.WrappedData.InputParameters.SurfaceLine == null) + { + contextMenuEnabled = false; + toolTipMessage = Resources.PipingPlugin_CreateUpdateEntryAndExitPointItem_Update_calculation_no_surface_line_ToolTip; + } + else if (context.WrappedData.InputParameters.IsEntryAndExitPointInputSynchronized) + { + contextMenuEnabled = false; + toolTipMessage = RingtoetsCommonFormsResources.CalculationItem_No_changes_to_update_ToolTip; + } - string toolTipMessage = hasSurfaceLine - ? Resources.PipingPlugin_CreateUpdateEntryAndExitPointItem_Update_calculation_with_characteristic_points_ToolTip - : Resources.PipingPlugin_CreateUpdateEntryAndExitPointItem_Update_calculation_no_surface_line_ToolTip; - return new StrictContextMenuItem( Resources.PipingPlugin_CreateUpdateEntryAndExitPointItem_Update_entry_and_exit_point, toolTipMessage, RingtoetsCommonFormsResources.UpdateItemIcon, (o, args) => { UpdatedSurfaceLineDependentDataOfCalculation(context.WrappedData); }) { - Enabled = hasSurfaceLine + Enabled = contextMenuEnabled }; } Index: Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/TreeNodeInfos/PipingCalculationScenarioContextTreeNodeInfoTest.cs =================================================================== diff -u -rf8732f8bbec8b197d9bc91e91d27e0c9d20b4ed3 -r8e76b131cb428f9af9910a8a309c90ae315b3c99 --- Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/TreeNodeInfos/PipingCalculationScenarioContextTreeNodeInfoTest.cs (.../PipingCalculationScenarioContextTreeNodeInfoTest.cs) (revision f8732f8bbec8b197d9bc91e91d27e0c9d20b4ed3) +++ Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/TreeNodeInfos/PipingCalculationScenarioContextTreeNodeInfoTest.cs (.../PipingCalculationScenarioContextTreeNodeInfoTest.cs) (revision 8e76b131cb428f9af9910a8a309c90ae315b3c99) @@ -429,7 +429,7 @@ } [Test] - public void ContextMenuStrip_CalculationWithSurfaceLine_ContextMenuItemUpdateEntryAndExitPointEnabled() + public void ContextMenuStrip_CalculationWithSurfaceLineInputInSync_ContextMenuItemUpdateEntryAndExitPointDisabled() { // Setup using (var treeViewControl = new TreeViewControl()) @@ -468,6 +468,55 @@ TestHelper.AssertContextMenuStripContainsItem(contextMenu, contextMenuUpdateEntryAndExitPointIndex, "&Bijwerken intrede- en uittredepunt...", + "Er zijn geen wijzigingen om bij te werken.", + RingtoetsCommonFormsResources.UpdateItemIcon, + false); + } + } + } + + [Test] + public void ContextMenuStrip_CalculationWithSurfaceLineInputOutOfSync_ContextMenuItemUpdateEntryAndExitPointEnabled() + { + // Setup + using (var treeViewControl = new TreeViewControl()) + { + var surfaceLine = new RingtoetsPipingSurfaceLine(); + surfaceLine.SetGeometry(new[] + { + new Point3D(1, 2, 3), + new Point3D(4, 5, 6) + }); + var calculation = new PipingCalculationScenario(new GeneralPipingInput()) + { + InputParameters = + { + SurfaceLine = surfaceLine + } + }; + var pipingFailureMechanism = new TestPipingFailureMechanism(); + var assessmentSection = mocks.Stub(); + var nodeData = new PipingCalculationScenarioContext(calculation, + Enumerable.Empty(), + Enumerable.Empty(), + pipingFailureMechanism, + assessmentSection); + + var gui = mocks.Stub(); + gui.Stub(cmp => cmp.Get(nodeData, treeViewControl)).Return(new CustomItemsOnlyContextMenuBuilder()); + mocks.ReplayAll(); + + plugin.Gui = gui; + + UpdateSurfaceLine(surfaceLine); + + // Call + using (ContextMenuStrip contextMenu = info.ContextMenuStrip(nodeData, null, treeViewControl)) + { + // Assert + TestHelper.AssertContextMenuStripContainsItem(contextMenu, + contextMenuUpdateEntryAndExitPointIndex, + "&Bijwerken intrede- en uittredepunt...", "Berekening bijwerken met de karakteristieke punten.", RingtoetsCommonFormsResources.UpdateItemIcon); }