Index: Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Plugin/HeightStructuresGuiPlugin.cs =================================================================== diff -u -r2dc3f17db9958ee4146f90efd7d38eb335ef822f -r3249b16f76949c09c673b7f6458ea8804325c963 --- Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Plugin/HeightStructuresGuiPlugin.cs (.../HeightStructuresGuiPlugin.cs) (revision 2dc3f17db9958ee4146f90efd7d38eb335ef822f) +++ Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Plugin/HeightStructuresGuiPlugin.cs (.../HeightStructuresGuiPlugin.cs) (revision 3249b16f76949c09c673b7f6458ea8804325c963) @@ -21,9 +21,11 @@ using System.Collections; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Windows.Forms; using Core.Common.Controls.TreeView; +using Core.Common.Gui.Forms.ProgressDialog; using Core.Common.Gui.Plugin; using Ringtoets.Common.Data; using Ringtoets.Common.Data.AssessmentSection; @@ -127,7 +129,7 @@ }; } - private static ExceedanceProbabilityCalculationActivity CreateHydraRingTargetProbabilityCalculationActivity(FailureMechanismSection failureMechanismSection, + private static ExceedanceProbabilityCalculationActivity CreateHydraRingExceedenceProbabilityCalculationActivity(FailureMechanismSection failureMechanismSection, string hlcdDirectory, HeightStructuresCalculation calculation) { @@ -162,6 +164,16 @@ output => { }); } + private void CalculateAll(HeightStructuresFailureMechanism failureMechanism, IEnumerable calculations, IAssessmentSection assessmentSection) + { + // TODO: Remove "Where" filter when validation is implemented + ActivityProgressDialogRunner.Run(Gui.MainWindow, calculations.Where(calc => calc.InputParameters.HydraulicBoundaryLocation != null) + .Select(calc => CreateHydraRingExceedenceProbabilityCalculationActivity( + failureMechanism.Sections.First(), // TODO: Pass dike section based on cross section of structure with reference line + Path.GetDirectoryName(assessmentSection.HydraulicBoundaryDatabase.FilePath), + calc)).ToList()); + } + #region EmptyProbabilisticOutput TreeNodeInfo private ContextMenuStrip EmptyProbabilisticOutputContextMenuStrip(EmptyProbabilisticOutput output, object parentData, TreeViewControl treeViewControl) @@ -244,7 +256,7 @@ .AddSeparator() .AddToggleRelevancyOfFailureMechanismItem(context, RemoveAllViewsForItem) .AddSeparator() - .AddPerformAllCalculationsInFailureMechanismItem(context, failureMechanismContext => { }, failureMechanismContext => "") + .AddPerformAllCalculationsInFailureMechanismItem(context, CalculateAll, failureMechanismContext => "") .AddClearAllCalculationOutputInFailureMechanismItem(context.WrappedData) .AddSeparator() .AddImportItem() @@ -273,6 +285,11 @@ .Build(); } + private void CalculateAll(HeightStructuresFailureMechanismContext context) + { + CalculateAll(context.WrappedData, context.WrappedData.Calculations.OfType(), context.Parent); + } + #endregion #region HeightStructuresCalculationGroupContext TreeNodeInfo @@ -322,7 +339,7 @@ builder.AddCreateCalculationGroupItem(group) .AddCreateCalculationItem(context, AddCalculation) .AddSeparator() - .AddPerformAllCalculationsInGroupItem(group, context, (calculationGroup, groupContext) => { }, groupContext => "") + .AddPerformAllCalculationsInGroupItem(group, context, CalculateAll, groupContext => "") .AddClearAllCalculationOutputInGroupItem(group) .AddSeparator(); @@ -361,6 +378,11 @@ context.WrappedData.NotifyObservers(); } + private void CalculateAll(CalculationGroup group, HeightStructuresCalculationGroupContext context) + { + CalculateAll(context.FailureMechanism, group.GetCalculations().OfType(), context.AssessmentSection); + } + #endregion #region HeightStructuresCalculationContext TreeNodeInfo @@ -394,7 +416,7 @@ HeightStructuresCalculation calculation = context.WrappedData; - return builder.AddPerformCalculationItem(calculation, context, (calc, calcContext) => { }, calcContext => "") + return builder.AddPerformCalculationItem(calculation, context, Calculate, calcContext => "") .AddClearCalculationOutputItem(calculation) .AddSeparator() .AddRenameItem() @@ -420,6 +442,21 @@ } } + private void Calculate(HeightStructuresCalculation calculation, HeightStructuresCalculationContext context) + { + // TODO: Remove null-check when validation is implemented + if (calculation.InputParameters.HydraulicBoundaryLocation == null) + { + return; + } + var activity = CreateHydraRingExceedenceProbabilityCalculationActivity( + context.FailureMechanism.Sections.First(), // TODO: Pass dike section based on cross section of calculation with reference line + Path.GetDirectoryName(context.AssessmentSection.HydraulicBoundaryDatabase.FilePath), + calculation); + + ActivityProgressDialogRunner.Run(Gui.MainWindow, activity); + } + #endregion } } \ No newline at end of file