Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsGuiPlugin.cs =================================================================== diff -u -r12a35732d53e73c149035a212f96d2a0e9604cff -r184de624feae0c0a051e34298d66e304d073daf5 --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsGuiPlugin.cs (.../GrassCoverErosionInwardsGuiPlugin.cs) (revision 12a35732d53e73c149035a212f96d2a0e9604cff) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsGuiPlugin.cs (.../GrassCoverErosionInwardsGuiPlugin.cs) (revision 184de624feae0c0a051e34298d66e304d073daf5) @@ -27,6 +27,7 @@ using System.Windows.Forms; using Core.Common.Controls.TreeView; +using Core.Common.Gui.ContextMenu; using Core.Common.Gui.Forms.ProgressDialog; using Core.Common.Gui.Plugin; @@ -354,9 +355,13 @@ var builder = new RingtoetsContextMenuBuilder(Gui.Get(context, treeViewControl)); var isNestedGroup = parentData is GrassCoverErosionInwardsCalculationGroupContext; + var generateCalculationsItem = CreateGenerateCalculationsItem(context); + if (!isNestedGroup) { builder.AddOpenItem() + .AddSeparator() + .AddCustomItem(generateCalculationsItem) .AddSeparator(); } @@ -384,6 +389,29 @@ .Build(); } + private StrictContextMenuItem CreateGenerateCalculationsItem(GrassCoverErosionInwardsCalculationGroupContext nodeData) + { + var isDikeProfileAvailable = nodeData.AvailableDikeProfiles.Any(); + + var calculationGroupGenerateCalculationsToolTip = + isDikeProfileAvailable ? + GrassCoverErosionInwardsPluginResources.GrassCoverErosionInwardsGuiPlugin_CreateGenerateCalculationsItem_ToolTip : + GrassCoverErosionInwardsPluginResources.GrassCoverErosionInwardsGuiPlugin_CreateGenerateCalculationsItem_NoDikeLocations_ToolTip; + + var generateCalculationsItem = new StrictContextMenuItem( + RingtoetsCommonFormsResources.CalculationGroup_Generate_Scenarios, + calculationGroupGenerateCalculationsToolTip, + RingtoetsCommonFormsResources.GenerateScenariosIcon, (o, args) => { ShowDikeProfileSelectionDialog(nodeData); }) + { + Enabled = isDikeProfileAvailable + }; + return generateCalculationsItem; + } + + private void ShowDikeProfileSelectionDialog(GrassCoverErosionInwardsCalculationGroupContext nodeData) + { + } + private static void CalculationGroupContextOnNodeRemoved(GrassCoverErosionInwardsCalculationGroupContext context, object parentNodeData) { var parentGroupContext = (GrassCoverErosionInwardsCalculationGroupContext)parentNodeData;