Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingFailureMechanismNodePresenter.cs =================================================================== diff -u -rb326158bd228dc407858ba620a437a175baf0190 -ra91d476e6523dffd4dd76bb21a53185b8e7e891b --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingFailureMechanismNodePresenter.cs (.../PipingFailureMechanismNodePresenter.cs) (revision b326158bd228dc407858ba620a437a175baf0190) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingFailureMechanismNodePresenter.cs (.../PipingFailureMechanismNodePresenter.cs) (revision a91d476e6523dffd4dd76bb21a53185b8e7e891b) @@ -72,19 +72,9 @@ (s, e) => AddCalculation(failureMechanism, node) ); - var validateAllItem = new StrictContextMenuItem( - RingtoetsCommonFormsResources.Validate_all, - RingtoetsCommonFormsResources.Validate_all_ToolTip, - RingtoetsCommonFormsResources.ValidateAllIcon, - (o, args) => ValidateAll(failureMechanism) - ); + var validateAllItem = CreateValidateAllItem(failureMechanism); - var calculateAllItem = new StrictContextMenuItem( - RingtoetsCommonFormsResources.Calculate_all, - RingtoetsCommonFormsResources.Calculate_all_ToolTip, - RingtoetsCommonFormsResources.CalculateAllIcon, - (o, args) => CalculateAll(failureMechanism) - ); + var calculateAllItem = CreateCalculateAllItem(failureMechanism); var clearAllItem = new StrictContextMenuItem( RingtoetsCommonFormsResources.Clear_all_output, @@ -115,6 +105,42 @@ .Build(); } + private StrictContextMenuItem CreateCalculateAllItem(PipingFailureMechanism failureMechanism) + { + var menuItem = new StrictContextMenuItem( + RingtoetsCommonFormsResources.Calculate_all, + RingtoetsCommonFormsResources.Calculate_all_ToolTip, + RingtoetsCommonFormsResources.CalculateAllIcon, + (o, args) => CalculateAll(failureMechanism) + ); + + if (!GetAllPipingCalculationsResursively(failureMechanism).Any()) + { + menuItem.Enabled = false; + menuItem.ToolTipText = PipingFormsResources.PipingFailureMechanismNodePresenter_CreateCalculateAllItem_No_calculations_to_calculate; + } + + return menuItem; + } + + private StrictContextMenuItem CreateValidateAllItem(PipingFailureMechanism failureMechanism) + { + var menuItem = new StrictContextMenuItem( + RingtoetsCommonFormsResources.Validate_all, + RingtoetsCommonFormsResources.Validate_all_ToolTip, + RingtoetsCommonFormsResources.ValidateAllIcon, + (o, args) => ValidateAll(failureMechanism) + ); + + if (!GetAllPipingCalculationsResursively(failureMechanism).Any()) + { + menuItem.Enabled = false; + menuItem.ToolTipText = PipingFormsResources.PipingFailureMechanismNodePresenter_CreateValidateAllItem_No_calculations_to_validate; + } + + return menuItem; + } + private static void ClearAll(PipingFailureMechanism failureMechanism) { if (MessageBox.Show(PipingFormsResources.PipingCalculationGroupContextNodePresenter_GetContextMenu_Are_you_sure_clear_all_output, BaseResources.Confirm, MessageBoxButtons.OKCancel) != DialogResult.OK) Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.Designer.cs =================================================================== diff -u -r844b6342be08ffe7faa053883960c09f6e46fafa -ra91d476e6523dffd4dd76bb21a53185b8e7e891b --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 844b6342be08ffe7faa053883960c09f6e46fafa) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision a91d476e6523dffd4dd76bb21a53185b8e7e891b) @@ -480,6 +480,26 @@ } /// + /// Looks up a localized string similar to Er zijn geen berekeningen om te berekenen.. + /// + public static string PipingFailureMechanismNodePresenter_CreateCalculateAllItem_No_calculations_to_calculate { + get { + return ResourceManager.GetString("PipingFailureMechanismNodePresenter_CreateCalculateAllItem_No_calculations_to_cal" + + "culate", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Er zijn geen berekeningen om te valideren.. + /// + public static string PipingFailureMechanismNodePresenter_CreateValidateAllItem_No_calculations_to_validate { + get { + return ResourceManager.GetString("PipingFailureMechanismNodePresenter_CreateValidateAllItem_No_calculations_to_vali" + + "date", resourceCulture); + } + } + + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// public static System.Drawing.Bitmap PipingIcon { Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.resx =================================================================== diff -u -r844b6342be08ffe7faa053883960c09f6e46fafa -ra91d476e6523dffd4dd76bb21a53185b8e7e891b --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.resx (.../Resources.resx) (revision 844b6342be08ffe7faa053883960c09f6e46fafa) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.resx (.../Resources.resx) (revision a91d476e6523dffd4dd76bb21a53185b8e7e891b) @@ -526,4 +526,10 @@ Wis de uitvoer van deze berekening. + + Er zijn geen berekeningen om te valideren. + + + Er zijn geen berekeningen om te berekenen. + \ No newline at end of file Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingFailureMechanismNodePresenterTest.cs =================================================================== diff -u -rd7da4fd9051547085f0cbbec790eda9cb8ca7f14 -ra91d476e6523dffd4dd76bb21a53185b8e7e891b --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingFailureMechanismNodePresenterTest.cs (.../PipingFailureMechanismNodePresenterTest.cs) (revision d7da4fd9051547085f0cbbec790eda9cb8ca7f14) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingFailureMechanismNodePresenterTest.cs (.../PipingFailureMechanismNodePresenterTest.cs) (revision a91d476e6523dffd4dd76bb21a53185b8e7e891b) @@ -37,6 +37,7 @@ private const int contextMenuAddFolderIndex = 0; private const int contextMenuAddCalculationIndex = 1; + private const int contextMenuValidateAllIndex = 3; private const int contextMenuCalculateAllIndex = 4; private const int contextMenuClearIndex = 5; @@ -548,7 +549,38 @@ mockRepository.VerifyAll(); // Expect no calls on arguments } + + [Test] + public void GetContextMenu_PipingFailureMechanismWithNoCalculations_ValidateAndCalculateAllDisabled() + { + // Setup + var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); + var nodeMock = new TreeNode(null); + var dataMock = new PipingFailureMechanism(); + var contextMenuBuilderProviderMock = mockRepository.StrictMock(); + + contextMenuBuilderProviderMock.Expect(cmp => cmp.Get(nodeMock)).Return(menuBuilder); + + mockRepository.ReplayAll(); + + var nodePresenter = new PipingFailureMechanismNodePresenter(contextMenuBuilderProviderMock); + dataMock.CalculationsGroup.Children.Clear(); + + // Call + ContextMenuStrip contextMenu = nodePresenter.GetContextMenu(nodeMock, dataMock); + + // Assert + ToolStripItem validateItem = contextMenu.Items[contextMenuValidateAllIndex]; + ToolStripItem calculateItem = contextMenu.Items[contextMenuCalculateAllIndex]; + Assert.IsFalse(validateItem.Enabled); + Assert.IsFalse(calculateItem.Enabled); + Assert.AreEqual(PipingFormsResources.PipingFailureMechanismNodePresenter_CreateCalculateAllItem_No_calculations_to_calculate, calculateItem.ToolTipText); + Assert.AreEqual(PipingFormsResources.PipingFailureMechanismNodePresenter_CreateValidateAllItem_No_calculations_to_validate, validateItem.ToolTipText); + + mockRepository.VerifyAll(); // Expect no calls on arguments + } + [Test] public void GetContextMenu_Always_CallsContextMenuBuilderMethods() {