Index: Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Plugin/DuneErosionPlugin.cs =================================================================== diff -u -r3f33a67c2e73865c56f405756b30d73d8cb1862e -rca120cd6cf35b91c0acf363a4e6fc9638ec3f45f --- Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Plugin/DuneErosionPlugin.cs (.../DuneErosionPlugin.cs) (revision 3f33a67c2e73865c56f405756b30d73d8cb1862e) +++ Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Plugin/DuneErosionPlugin.cs (.../DuneErosionPlugin.cs) (revision ca120cd6cf35b91c0acf363a4e6fc9638ec3f45f) @@ -30,6 +30,7 @@ using Core.Common.Gui.Plugin; using Core.Common.Util; using Ringtoets.Common.Data.AssessmentSection; +using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Data.Hydraulics; using Ringtoets.Common.Forms.PresentationObjects; using Ringtoets.Common.Forms.TreeNodeInfos; @@ -89,6 +90,14 @@ .Build() }; + yield return new TreeNodeInfo + { + Text = context => RingtoetsCommonDataResources.HydraulicBoundaryConditions_DisplayName, + Image = context => RingtoetsCommonFormsResources.GeneralFolderIcon, + ContextMenuStrip = DuneLocationCalculationsGroupContextMenuStrip, + ChildNodeObjects = DuneLocationCalculationsGroupContextChildNodeObjects + }; + yield return new TreeNodeInfo { Text = context => RingtoetsCommonDataResources.HydraulicBoundaryConditions_DisplayName, @@ -132,7 +141,8 @@ CloseForData = CloseDuneLocationsViewForData, CreateInstance = context => new DuneLocationCalculationsView(context.WrappedData, context.FailureMechanism, - context.AssessmentSection), + context.AssessmentSection, + context.GetNormFunc), AfterCreate = (view, context) => { view.CalculationGuiService = duneLocationCalculationGuiService; }, AdditionalDataCheck = context => context.WrappedData.Any() }; @@ -173,7 +183,7 @@ return new object[] { new CategoryTreeFolder(RingtoetsCommonFormsResources.FailureMechanism_Inputs_DisplayName, GetInputs(wrappedData, failureMechanismContext.Parent), TreeFolderCategory.Input), - new DuneLocationCalculationsContext(wrappedData.CalculationsForFactorizedLowerLimitNorm, wrappedData, failureMechanismContext.Parent), + new DuneLocationCalculationsGroupContext(failureMechanismContext.WrappedData.DuneLocations, failureMechanismContext.WrappedData, failureMechanismContext.Parent), new CategoryTreeFolder(RingtoetsCommonFormsResources.FailureMechanism_Outputs_DisplayName, GetOutputs(wrappedData), TreeFolderCategory.Output) }; } @@ -244,6 +254,56 @@ #endregion + #region DuneLocationCalculationsGroupContext TreeNodeInfo + + private ContextMenuStrip DuneLocationCalculationsGroupContextMenuStrip( + DuneLocationCalculationsGroupContext nodeData, object parentData, TreeViewControl treeViewControl) + { + return Gui.Get(nodeData, treeViewControl) + .AddCollapseAllItem() + .AddExpandAllItem() + .Build(); + } + + private static object[] DuneLocationCalculationsGroupContextChildNodeObjects(DuneLocationCalculationsGroupContext context) + { + return new object[] + { + new DuneLocationCalculationsContext( + context.FailureMechanism.CalculationsForMechanismSpecificFactorizedSignalingNorm, + context.FailureMechanism, + context.AssessmentSection, + () => context.FailureMechanism.GetNorm(context.AssessmentSection, FailureMechanismCategoryType.MechanismSpecificFactorizedSignalingNorm), + "Cat 1"), + new DuneLocationCalculationsContext( + context.FailureMechanism.CalculationsForMechanismSpecificSignalingNorm, + context.FailureMechanism, + context.AssessmentSection, + () => context.FailureMechanism.GetNorm(context.AssessmentSection, FailureMechanismCategoryType.MechanismSpecificSignalingNorm), + "Cat 2"), + new DuneLocationCalculationsContext( + context.FailureMechanism.CalculationsForMechanismSpecificLowerLimitNorm, + context.FailureMechanism, + context.AssessmentSection, + () => context.FailureMechanism.GetNorm(context.AssessmentSection, FailureMechanismCategoryType.MechanismSpecificLowerLimitNorm), + "Cat 3"), + new DuneLocationCalculationsContext( + context.FailureMechanism.CalculationsForLowerLimitNorm, + context.FailureMechanism, + context.AssessmentSection, + () => context.FailureMechanism.GetNorm(context.AssessmentSection, FailureMechanismCategoryType.LowerLimitNorm), + "Cat 4"), + new DuneLocationCalculationsContext( + context.FailureMechanism.CalculationsForFactorizedLowerLimitNorm, + context.FailureMechanism, + context.AssessmentSection, + () => context.FailureMechanism.GetNorm(context.AssessmentSection, FailureMechanismCategoryType.FactorizedLowerLimitNorm), + "Cat 5") + }; + } + + #endregion + #region DuneLocationsContext TreeNodeInfo private static string ValidateAllDataAvailableAndGetErrorMessage(IAssessmentSection assessmentSection, @@ -279,7 +339,7 @@ duneLocationCalculationGuiService.Calculate(context.WrappedData, context.AssessmentSection.HydraulicBoundaryDatabase.FilePath, context.AssessmentSection.HydraulicBoundaryDatabase.EffectivePreprocessorDirectory(), - context.FailureMechanism.GetMechanismSpecificNorm(context.AssessmentSection.FailureMechanismContribution.Norm)); + context.GetNormFunc()); }); string validationText = ValidateAllDataAvailableAndGetErrorMessage(context.AssessmentSection, Index: Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Plugin.Test/DuneErosionPluginTest.cs =================================================================== diff -u -r1cd44b288670cb25c0701916ffb47b0de3cb4974 -rca120cd6cf35b91c0acf363a4e6fc9638ec3f45f --- Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Plugin.Test/DuneErosionPluginTest.cs (.../DuneErosionPluginTest.cs) (revision 1cd44b288670cb25c0701916ffb47b0de3cb4974) +++ Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Plugin.Test/DuneErosionPluginTest.cs (.../DuneErosionPluginTest.cs) (revision ca120cd6cf35b91c0acf363a4e6fc9638ec3f45f) @@ -101,9 +101,10 @@ TreeNodeInfo[] treeNodeInfos = plugin.GetTreeNodeInfos().ToArray(); // Assert - Assert.AreEqual(3, treeNodeInfos.Length); + Assert.AreEqual(4, treeNodeInfos.Length); Assert.IsTrue(treeNodeInfos.Any(tni => tni.TagType == typeof(DuneErosionFailureMechanismContext))); Assert.IsTrue(treeNodeInfos.Any(tni => tni.TagType == typeof(FailureMechanismSectionResultContext))); + Assert.IsTrue(treeNodeInfos.Any(tni => tni.TagType == typeof(DuneLocationCalculationsGroupContext))); Assert.IsTrue(treeNodeInfos.Any(tni => tni.TagType == typeof(DuneLocationCalculationsContext))); } } Index: Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Plugin.Test/TreeNodeInfos/DuneErosionFailureMechanismContextTreeNodeInfoTest.cs =================================================================== diff -u -r15714f036a15a054e677787c0881716590ed5236 -rca120cd6cf35b91c0acf363a4e6fc9638ec3f45f --- Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Plugin.Test/TreeNodeInfos/DuneErosionFailureMechanismContextTreeNodeInfoTest.cs (.../DuneErosionFailureMechanismContextTreeNodeInfoTest.cs) (revision 15714f036a15a054e677787c0881716590ed5236) +++ Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Plugin.Test/TreeNodeInfos/DuneErosionFailureMechanismContextTreeNodeInfoTest.cs (.../DuneErosionFailureMechanismContextTreeNodeInfoTest.cs) (revision ca120cd6cf35b91c0acf363a4e6fc9638ec3f45f) @@ -119,10 +119,10 @@ var inputComment = (Comment) inputsFolder.Contents.ElementAt(1); Assert.AreSame(failureMechanism.InputComments, inputComment); - var hydraulicBoundaryLocationsContext = (DuneLocationCalculationsContext) children[1]; - Assert.AreSame(failureMechanism.CalculationsForFactorizedLowerLimitNorm, hydraulicBoundaryLocationsContext.WrappedData); - Assert.AreSame(failureMechanism, hydraulicBoundaryLocationsContext.FailureMechanism); - Assert.AreSame(assessmentSection, hydraulicBoundaryLocationsContext.AssessmentSection); + var duneLocationCalculationsGroupContext = (DuneLocationCalculationsGroupContext) children[1]; + Assert.AreSame(failureMechanism.DuneLocations, duneLocationCalculationsGroupContext.WrappedData); + Assert.AreSame(failureMechanism, duneLocationCalculationsGroupContext.FailureMechanism); + Assert.AreSame(assessmentSection, duneLocationCalculationsGroupContext.AssessmentSection); var outputsFolder = (CategoryTreeFolder) children[2]; Assert.AreEqual("Oordeel", outputsFolder.Name);