Index: Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Plugin/GrassCoverErosionOutwardsPlugin.cs =================================================================== diff -u -r637378cd38221181a6e221c881fd34260641e788 -r6f97506da77630bf89c6e7f3af527b7d38390d63 --- Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Plugin/GrassCoverErosionOutwardsPlugin.cs (.../GrassCoverErosionOutwardsPlugin.cs) (revision 637378cd38221181a6e221c881fd34260641e788) +++ Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Plugin/GrassCoverErosionOutwardsPlugin.cs (.../GrassCoverErosionOutwardsPlugin.cs) (revision 6f97506da77630bf89c6e7f3af527b7d38390d63) @@ -245,7 +245,7 @@ Text = context => Resources.GrassCoverErosionOutwardsDesignWaterLevelCalculationsGroupContext_DisplayName, Image = context => RingtoetsCommonFormsResources.GeneralFolderIcon, ContextMenuStrip = GrassCoverErosionOutwardsDesignWaterLevelCalculationsGroupContextMenuStrip, - ChildNodeObjects = DesignWaterlevelCalculationsGroupContextChildNodeObjects + ChildNodeObjects = DesignWaterLevelCalculationsGroupContextChildNodeObjects }; yield return new TreeNodeInfo @@ -590,7 +590,9 @@ #region GrassCoverErosionOutwardsWaveHeightCalculationsContext TreeNodeInfo - private ContextMenuStrip GrassCoverErosionOutwardsWaveHeightCalculationsContextMenuStrip(GrassCoverErosionOutwardsWaveHeightCalculationsContext nodeData, object parentData, TreeViewControl treeViewControl) + private ContextMenuStrip GrassCoverErosionOutwardsWaveHeightCalculationsContextMenuStrip(GrassCoverErosionOutwardsWaveHeightCalculationsContext nodeData, + object parentData, + TreeViewControl treeViewControl) { var waveHeightItem = new StrictContextMenuItem( RingtoetsCommonFormsResources.Calculate_All, @@ -604,11 +606,6 @@ } IAssessmentSection assessmentSection = nodeData.AssessmentSection; - GrassCoverErosionOutwardsFailureMechanism failureMechanism = assessmentSection.GetFailureMechanisms().OfType().FirstOrDefault(); - if (failureMechanism == null) - { - return; - } hydraulicBoundaryLocationCalculationGuiService.CalculateWaveHeights( assessmentSection.HydraulicBoundaryDatabase.FilePath, @@ -978,9 +975,8 @@ GrassCoverErosionOutwardsDesignWaterLevelCalculationsGroupContext nodeData, object parentData, TreeViewControl treeViewControl) { IAssessmentSection assessmentSection = nodeData.AssessmentSection; - GrassCoverErosionOutwardsFailureMechanism failureMechanism = nodeData.FailureMechanism; - var waveHeightItem = new StrictContextMenuItem( + var designWaterLevelItem = new StrictContextMenuItem( RingtoetsCommonFormsResources.Calculate_All, RingtoetsCommonFormsResources.DesignWaterLevel_Calculate_All_ToolTip, RingtoetsCommonFormsResources.CalculateAllIcon, @@ -991,58 +987,31 @@ return; } - string hydraulicBoundaryDatabaseFilePath = assessmentSection.HydraulicBoundaryDatabase.FilePath; - string preprocessorDirectory = assessmentSection.HydraulicBoundaryDatabase.EffectivePreprocessorDirectory(); - var calculations = new List(); - calculations.AddRange(HydraulicBoundaryLocationCalculationActivityFactory.CreateDesignWaterLevelCalculationActivities( - hydraulicBoundaryDatabaseFilePath, - preprocessorDirectory, - failureMechanism.WaterLevelCalculationsForMechanismSpecificFactorizedSignalingNorm, - failureMechanism.GetNorm(assessmentSection, FailureMechanismCategoryType.MechanismSpecificFactorizedSignalingNorm), - new DesignWaterLevelCalculationMessageProvider(RingtoetsCommonDataResources.FailureMechanismCategoryType_MechanismSpecificFactorizedSignalingNorm_DisplayName))); + IEnumerable activities = + DesignWaterLevelCalculationsGroupContextChildNodeObjects(nodeData) + .Cast() + .SelectMany(context => HydraulicBoundaryLocationCalculationActivityFactory.CreateDesignWaterLevelCalculationActivities( + assessmentSection.HydraulicBoundaryDatabase.FilePath, + assessmentSection.HydraulicBoundaryDatabase.EffectivePreprocessorDirectory(), + context.WrappedData, + context.GetNormFunc(), + new DesignWaterLevelCalculationMessageProvider(context.CategoryBoundaryName))) + .ToArray(); - calculations.AddRange(HydraulicBoundaryLocationCalculationActivityFactory.CreateDesignWaterLevelCalculationActivities( - hydraulicBoundaryDatabaseFilePath, - preprocessorDirectory, - failureMechanism.WaterLevelCalculationsForMechanismSpecificSignalingNorm, - failureMechanism.GetNorm(assessmentSection, FailureMechanismCategoryType.MechanismSpecificSignalingNorm), - new DesignWaterLevelCalculationMessageProvider(RingtoetsCommonDataResources.FailureMechanismCategoryType_MechanismSpecificSignalingNorm_DisplayName))); - - calculations.AddRange(HydraulicBoundaryLocationCalculationActivityFactory.CreateDesignWaterLevelCalculationActivities( - hydraulicBoundaryDatabaseFilePath, - preprocessorDirectory, - failureMechanism.WaterLevelCalculationsForMechanismSpecificLowerLimitNorm, - failureMechanism.GetNorm(assessmentSection, FailureMechanismCategoryType.MechanismSpecificLowerLimitNorm), - new DesignWaterLevelCalculationMessageProvider(RingtoetsCommonDataResources.FailureMechanismCategoryType_MechanismSpecificLowerLimitNorm_DisplayName))); - - calculations.AddRange(HydraulicBoundaryLocationCalculationActivityFactory.CreateDesignWaterLevelCalculationActivities( - hydraulicBoundaryDatabaseFilePath, - preprocessorDirectory, - assessmentSection.WaterLevelCalculationsForLowerLimitNorm, - failureMechanism.GetNorm(assessmentSection, FailureMechanismCategoryType.LowerLimitNorm), - new DesignWaterLevelCalculationMessageProvider(RingtoetsCommonDataResources.FailureMechanismCategoryType_LowerLimitNorm_DisplayName))); - - calculations.AddRange(HydraulicBoundaryLocationCalculationActivityFactory.CreateDesignWaterLevelCalculationActivities( - hydraulicBoundaryDatabaseFilePath, - preprocessorDirectory, - assessmentSection.WaterLevelCalculationsForFactorizedLowerLimitNorm, - failureMechanism.GetNorm(assessmentSection, FailureMechanismCategoryType.FactorizedLowerLimitNorm), - new DesignWaterLevelCalculationMessageProvider(RingtoetsCommonDataResources.FailureMechanismCategoryType_FactorizedLowerLimitNorm_DisplayName))); - - ActivityProgressDialogRunner.Run(Gui.MainWindow, calculations); + ActivityProgressDialogRunner.Run(Gui.MainWindow, activities); }); - SetHydraulicsMenuItemEnabledStateAndTooltip(assessmentSection, nodeData.FailureMechanism, waveHeightItem); + SetHydraulicsMenuItemEnabledStateAndTooltip(assessmentSection, nodeData.FailureMechanism, designWaterLevelItem); return Gui.Get(nodeData, treeViewControl) - .AddCustomItem(waveHeightItem) + .AddCustomItem(designWaterLevelItem) .AddSeparator() .AddCollapseAllItem() .AddExpandAllItem() .Build(); } - private static object[] DesignWaterlevelCalculationsGroupContextChildNodeObjects(GrassCoverErosionOutwardsDesignWaterLevelCalculationsGroupContext context) + private static object[] DesignWaterLevelCalculationsGroupContextChildNodeObjects(GrassCoverErosionOutwardsDesignWaterLevelCalculationsGroupContext context) { return new object[] { @@ -1087,7 +1056,6 @@ GrassCoverErosionOutwardsWaveHeightCalculationsGroupContext nodeData, object parentData, TreeViewControl treeViewControl) { IAssessmentSection assessmentSection = nodeData.AssessmentSection; - GrassCoverErosionOutwardsFailureMechanism failureMechanism = nodeData.FailureMechanism; var waveHeightItem = new StrictContextMenuItem( RingtoetsCommonFormsResources.Calculate_All, @@ -1100,45 +1068,18 @@ return; } - string hydraulicBoundaryDatabaseFilePath = assessmentSection.HydraulicBoundaryDatabase.FilePath; - string preprocessorDirectory = assessmentSection.HydraulicBoundaryDatabase.EffectivePreprocessorDirectory(); - var calculations = new List(); - calculations.AddRange(HydraulicBoundaryLocationCalculationActivityFactory.CreateWaveHeightCalculationActivities( - hydraulicBoundaryDatabaseFilePath, - preprocessorDirectory, - failureMechanism.WaveHeightCalculationsForMechanismSpecificFactorizedSignalingNorm, - failureMechanism.GetNorm(assessmentSection, FailureMechanismCategoryType.MechanismSpecificFactorizedSignalingNorm), - new WaveHeightCalculationMessageProvider(RingtoetsCommonDataResources.FailureMechanismCategoryType_MechanismSpecificFactorizedSignalingNorm_DisplayName))); + IEnumerable activities = + WaveHeightCalculationsGroupContextChildNodeObjects(nodeData) + .Cast() + .SelectMany(context => HydraulicBoundaryLocationCalculationActivityFactory.CreateWaveHeightCalculationActivities( + assessmentSection.HydraulicBoundaryDatabase.FilePath, + assessmentSection.HydraulicBoundaryDatabase.EffectivePreprocessorDirectory(), + context.WrappedData, + context.GetNormFunc(), + new WaveHeightCalculationMessageProvider(context.CategoryBoundaryName))) + .ToArray(); - calculations.AddRange(HydraulicBoundaryLocationCalculationActivityFactory.CreateWaveHeightCalculationActivities( - hydraulicBoundaryDatabaseFilePath, - preprocessorDirectory, - failureMechanism.WaveHeightCalculationsForMechanismSpecificSignalingNorm, - failureMechanism.GetNorm(assessmentSection, FailureMechanismCategoryType.MechanismSpecificSignalingNorm), - new WaveHeightCalculationMessageProvider(RingtoetsCommonDataResources.FailureMechanismCategoryType_MechanismSpecificSignalingNorm_DisplayName))); - - calculations.AddRange(HydraulicBoundaryLocationCalculationActivityFactory.CreateWaveHeightCalculationActivities( - hydraulicBoundaryDatabaseFilePath, - preprocessorDirectory, - failureMechanism.WaveHeightCalculationsForMechanismSpecificLowerLimitNorm, - failureMechanism.GetNorm(assessmentSection, FailureMechanismCategoryType.MechanismSpecificLowerLimitNorm), - new WaveHeightCalculationMessageProvider(RingtoetsCommonDataResources.FailureMechanismCategoryType_MechanismSpecificLowerLimitNorm_DisplayName))); - - calculations.AddRange(HydraulicBoundaryLocationCalculationActivityFactory.CreateWaveHeightCalculationActivities( - hydraulicBoundaryDatabaseFilePath, - preprocessorDirectory, - assessmentSection.WaveHeightCalculationsForLowerLimitNorm, - failureMechanism.GetNorm(assessmentSection, FailureMechanismCategoryType.LowerLimitNorm), - new WaveHeightCalculationMessageProvider(RingtoetsCommonDataResources.FailureMechanismCategoryType_LowerLimitNorm_DisplayName))); - - calculations.AddRange(HydraulicBoundaryLocationCalculationActivityFactory.CreateWaveHeightCalculationActivities( - hydraulicBoundaryDatabaseFilePath, - preprocessorDirectory, - assessmentSection.WaveHeightCalculationsForFactorizedLowerLimitNorm, - failureMechanism.GetNorm(assessmentSection, FailureMechanismCategoryType.FactorizedLowerLimitNorm), - new WaveHeightCalculationMessageProvider(RingtoetsCommonDataResources.FailureMechanismCategoryType_FactorizedLowerLimitNorm_DisplayName))); - - ActivityProgressDialogRunner.Run(Gui.MainWindow, calculations); + ActivityProgressDialogRunner.Run(Gui.MainWindow, activities); }); SetHydraulicsMenuItemEnabledStateAndTooltip(assessmentSection, nodeData.FailureMechanism, waveHeightItem);