Index: Ringtoets/Common/src/Ringtoets.Common.Forms/TreeNodeInfos/CalculationTreeNodeInfoFactory.cs =================================================================== diff -u -r87445dcecde875ada5513431df8ca2d01a57f742 -r5e9fd91bb55d97ee46d4446960dfa7f63b0d48cf --- Ringtoets/Common/src/Ringtoets.Common.Forms/TreeNodeInfos/CalculationTreeNodeInfoFactory.cs (.../CalculationTreeNodeInfoFactory.cs) (revision 87445dcecde875ada5513431df8ca2d01a57f742) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/TreeNodeInfos/CalculationTreeNodeInfoFactory.cs (.../CalculationTreeNodeInfoFactory.cs) (revision 5e9fd91bb55d97ee46d4446960dfa7f63b0d48cf) @@ -23,7 +23,6 @@ using System.Linq; using System.Windows.Forms; using Core.Common.Controls.TreeView; -using Core.Common.Gui; using Core.Common.Gui.ContextMenu; using Ringtoets.Common.Data.Calculation; using Ringtoets.Common.Data.FailureMechanism; @@ -45,13 +44,11 @@ /// /// The type of calculation group context to create a object for. /// The function for obtaining child node objects. - /// The action for adding a calculation to the calculation group. - /// The gui to use. + /// The function for obtaining the context menu strip. /// A object. public static TreeNodeInfo CreateCalculationGroupContextTreeNodeInfo( Func childNodeObjects, - Action addCalculation, - IGui gui) + Func contextMenuStrip) where TCalculationGroupContext : ICalculationContext { return new TreeNodeInfo @@ -60,7 +57,7 @@ Image = context => Resources.GeneralFolderIcon, EnsureVisibleOnCreate = context => true, ChildNodeObjects = childNodeObjects, - ContextMenuStrip = (context, parentData, treeViewControl) => ContextMenuStrip(context, parentData, treeViewControl, addCalculation, gui), + ContextMenuStrip = contextMenuStrip, CanRename = (context, parentData) => IsNestedGroup(parentData), OnNodeRenamed = (context, newName) => { @@ -128,41 +125,6 @@ return parentData is ICalculationContext; } - private static ContextMenuStrip ContextMenuStrip(TCalculationGroupContext nodeData, object parentData, TreeViewControl treeViewControl, Action addCalculation, IGui gui) where TCalculationGroupContext : ICalculationContext - { - var group = nodeData.WrappedData; - var builder = gui.Get(nodeData, treeViewControl); - var isNestedGroup = IsNestedGroup(parentData); - - if (!isNestedGroup) - { - builder - .AddOpenItem() - .AddSeparator(); - } - - AddCreateCalculationGroupItem(builder, group); - AddCreateCalculationItem(builder, nodeData, addCalculation); - builder.AddSeparator(); - - if (isNestedGroup) - { - builder.AddRenameItem(); - builder.AddDeleteItem(); - builder.AddSeparator(); - } - - return builder - .AddImportItem() - .AddExportItem() - .AddSeparator() - .AddExpandAllItem() - .AddCollapseAllItem() - .AddSeparator() - .AddPropertiesItem() - .Build(); - } - private static bool CanDropOrInsert(object draggedData, object targetData) { var calculationContext = draggedData as ICalculationContext; Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsGuiPlugin.cs =================================================================== diff -u -r87445dcecde875ada5513431df8ca2d01a57f742 -r5e9fd91bb55d97ee46d4446960dfa7f63b0d48cf --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsGuiPlugin.cs (.../GrassCoverErosionInwardsGuiPlugin.cs) (revision 87445dcecde875ada5513431df8ca2d01a57f742) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsGuiPlugin.cs (.../GrassCoverErosionInwardsGuiPlugin.cs) (revision 5e9fd91bb55d97ee46d4446960dfa7f63b0d48cf) @@ -70,7 +70,7 @@ FailureMechanismContextMenuStrip, Gui); - yield return CalculationTreeNodeInfoFactory.CreateCalculationGroupContextTreeNodeInfo(CalculationGroupContextChildNodeObjects, context => AddCalculation(context.FailureMechanism, context.WrappedData), Gui); + yield return CalculationTreeNodeInfoFactory.CreateCalculationGroupContextTreeNodeInfo(CalculationGroupContextChildNodeObjects, CalculationGroupContextContextMenuStrip); yield return new TreeNodeInfo { @@ -337,6 +337,41 @@ return childNodeObjects.ToArray(); } + private ContextMenuStrip CalculationGroupContextContextMenuStrip(GrassCoverErosionInwardsCalculationGroupContext nodeData, object parentData, TreeViewControl treeViewControl) + { + var group = nodeData.WrappedData; + var builder = Gui.Get(nodeData, treeViewControl); + var isNestedGroup = parentData is GrassCoverErosionInwardsCalculationGroupContext; + + if (!isNestedGroup) + { + builder + .AddOpenItem() + .AddSeparator(); + } + + CalculationTreeNodeInfoFactory.AddCreateCalculationGroupItem(builder, group); + CalculationTreeNodeInfoFactory.AddCreateCalculationItem(builder, nodeData, context => AddCalculation(context.FailureMechanism, context.WrappedData)); + builder.AddSeparator(); + + if (isNestedGroup) + { + builder.AddRenameItem(); + builder.AddDeleteItem(); + builder.AddSeparator(); + } + + return builder + .AddImportItem() + .AddExportItem() + .AddSeparator() + .AddExpandAllItem() + .AddCollapseAllItem() + .AddSeparator() + .AddPropertiesItem() + .Build(); + } + #endregion } } \ No newline at end of file Index: Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs =================================================================== diff -u -r87445dcecde875ada5513431df8ca2d01a57f742 -r5e9fd91bb55d97ee46d4446960dfa7f63b0d48cf --- Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs (.../PipingGuiPlugin.cs) (revision 87445dcecde875ada5513431df8ca2d01a57f742) +++ Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs (.../PipingGuiPlugin.cs) (revision 5e9fd91bb55d97ee46d4446960dfa7f63b0d48cf) @@ -235,9 +235,8 @@ private TreeNodeInfo CreatePipingCalculationGroupContextTreeNodeInfo() { - var treeNodeInfo = CalculationTreeNodeInfoFactory.CreateCalculationGroupContextTreeNodeInfo(PipingCalculationGroupContextChildNodeObjects, null, Gui); + var treeNodeInfo = CalculationTreeNodeInfoFactory.CreateCalculationGroupContextTreeNodeInfo(PipingCalculationGroupContextChildNodeObjects, PipingCalculationGroupContextContextMenuStrip); - treeNodeInfo.ContextMenuStrip = PipingCalculationGroupContextContextMenuStrip; treeNodeInfo.OnNodeRemoved = PipingCalculationGroupContextOnNodeRemoved; return treeNodeInfo; @@ -610,40 +609,10 @@ private ContextMenuStrip PipingCalculationGroupContextContextMenuStrip(PipingCalculationGroupContext nodeData, object parentData, TreeViewControl treeViewControl) { var group = nodeData.WrappedData; - var addCalculationGroupItem = new StrictContextMenuItem( - RingtoetsCommonFormsResources.CalculationGroup_Add_CalculationGroup, - RingtoetsCommonFormsResources.CalculationGroup_Add_CalculationGroup_ToolTip, - RingtoetsCommonFormsResources.AddFolderIcon, (o, args) => - { - var newGroup = new CalculationGroup - { - Name = NamingHelper.GetUniqueName(group.Children, RingtoetsCommonDataResources.CalculationGroup_DefaultName, c => c.Name) - }; - group.Children.Add(newGroup); - nodeData.WrappedData.NotifyObservers(); - }); - - var addCalculationItem = new StrictContextMenuItem( - RingtoetsCommonFormsResources.CalculationGroup_Add_Calculation, - PipingFormsResources.PipingCalculationGroup_Add_PipingCalculation_ToolTip, - PipingFormsResources.PipingIcon, (o, args) => - { - var calculation = new PipingCalculationScenario(nodeData.FailureMechanism.GeneralInput, nodeData.FailureMechanism.NormProbabilityInput) - { - Name = NamingHelper.GetUniqueName(group.Children, PipingDataResources.PipingCalculation_DefaultName, c => c.Name) - }; - - group.Children.Add(calculation); - nodeData.WrappedData.NotifyObservers(); - }); - var generateCalculationsItem = CreateGeneratePipingCalculationsItem(nodeData); - var validateAllItem = CreateValidateAllItem(group); - var calculateAllItem = CreateCalculateAllItem(group); - var clearAllItem = new StrictContextMenuItem( RingtoetsCommonFormsResources.Clear_all_output, PipingFormsResources.PipingCalculationGroup_ClearOutput_ToolTip, @@ -678,10 +647,11 @@ .AddSeparator(); } + CalculationTreeNodeInfoFactory.AddCreateCalculationGroupItem(builder, group); + CalculationTreeNodeInfoFactory.AddCreateCalculationItem(builder, nodeData, AddCalculationScenario); + builder.AddSeparator(); + builder - .AddCustomItem(addCalculationGroupItem) - .AddCustomItem(addCalculationItem) - .AddSeparator() .AddCustomItem(validateAllItem) .AddCustomItem(calculateAllItem) .AddCustomItem(clearAllItem) @@ -715,6 +685,17 @@ .Build(); } + private static void AddCalculationScenario(PipingCalculationGroupContext nodeData) + { + var calculation = new PipingCalculationScenario(nodeData.FailureMechanism.GeneralInput, nodeData.FailureMechanism.NormProbabilityInput) + { + Name = NamingHelper.GetUniqueName(nodeData.WrappedData.Children, PipingDataResources.PipingCalculation_DefaultName, c => c.Name) + }; + + nodeData.WrappedData.Children.Add(calculation); + nodeData.WrappedData.NotifyObservers(); + } + private StrictContextMenuItem CreateGeneratePipingCalculationsItem(PipingCalculationGroupContext nodeData) { var surfaceLineAvailable = nodeData.AvailablePipingSurfaceLines.Any() && nodeData.AvailableStochasticSoilModels.Any();