Index: Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Plugin/GrassCoverErosionOutwardsPlugin.cs =================================================================== diff -u -r46b2b278e1a056fdbb961768feb79492c1bdbf04 -r4e529d43a3c3f0e4e809a33b6c4e1f3af1029431 --- Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Plugin/GrassCoverErosionOutwardsPlugin.cs (.../GrassCoverErosionOutwardsPlugin.cs) (revision 46b2b278e1a056fdbb961768feb79492c1bdbf04) +++ Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Plugin/GrassCoverErosionOutwardsPlugin.cs (.../GrassCoverErosionOutwardsPlugin.cs) (revision 4e529d43a3c3f0e4e809a33b6c4e1f3af1029431) @@ -107,14 +107,14 @@ FailureMechanismDisabledContextMenuStrip); yield return RingtoetsTreeNodeInfoFactory.CreateCalculationGroupContextTreeNodeInfo( - WaveConditionsCalculationGroupChildeNodeObjects, + WaveConditionsCalculationGroupChildNodeObjects, WaveConditionsCalculationGroupContextMenuStrip, WaveConditionsCalculationGroupContextOnNodeRemoved); yield return RingtoetsTreeNodeInfoFactory.CreateCalculationContextTreeNodeInfo( RingtoetsGrassCoverErosionOutwardsFormsResources.CalculationIcon, null, - null, + WaveConditionsCalculationContextMenuStrip, WaveConditionsCalculationContextOnNodeRemoved); yield return new TreeNodeInfo> @@ -416,7 +416,7 @@ #region GrassCoverErosionOutwardsWaveConditionsCalculationGroupContext TreeNodeInfo - private object[] WaveConditionsCalculationGroupChildeNodeObjects(GrassCoverErosionOutwardsWaveConditionsCalculationGroupContext nodeData) + private object[] WaveConditionsCalculationGroupChildNodeObjects(GrassCoverErosionOutwardsWaveConditionsCalculationGroupContext nodeData) { var childNodeObjects = new List(); @@ -516,11 +516,6 @@ private string ValidateAllDataAvailableAndGetErrorMessage(IAssessmentSection assessmentSection, GrassCoverErosionOutwardsFailureMechanism failureMechanism) { - if (!failureMechanism.Sections.Any()) - { - return RingtoetsCommonFormsResources.Plugin_AllDataAvailable_No_failure_mechanism_sections_imported; - } - if (assessmentSection.HydraulicBoundaryDatabase == null) { return RingtoetsCommonFormsResources.Plugin_AllDataAvailable_No_hydraulic_boundary_database_imported; @@ -576,6 +571,54 @@ #region GrassCoverErosionOutwardsWaveConditionsCalculationContext TreeNodeInfo + private ContextMenuStrip WaveConditionsCalculationContextMenuStrip(GrassCoverErosionOutwardsWaveConditionsCalculationContext nodeData, + object parentData, + TreeViewControl treeViewControl) + { + var builder = new RingtoetsContextMenuBuilder(Gui.Get(nodeData, treeViewControl)); + + GrassCoverErosionOutwardsWaveConditionsCalculation calculation = nodeData.WrappedData; + + return builder + .AddExportItem() + .AddSeparator() + .AddValidateCalculationItem(nodeData, + c => ValidateAll( + new[] + { + c.WrappedData + }, + c.AssessmentSection.HydraulicBoundaryDatabase), + ValidateAllDataAvailableAndGetErrorMessageForCalculation) + .AddPerformCalculationItem(calculation, nodeData, PerformCalculation, ValidateAllDataAvailableAndGetErrorMessageForCalculation) + .AddClearCalculationOutputItem(calculation) + .AddSeparator() + .AddRenameItem() + .AddDeleteItem() + .AddSeparator() + .AddExpandAllItem() + .AddCollapseAllItem() + .AddSeparator() + .AddPropertiesItem() + .Build(); + } + + private string ValidateAllDataAvailableAndGetErrorMessageForCalculation(GrassCoverErosionOutwardsWaveConditionsCalculationContext context) + { + return ValidateAllDataAvailableAndGetErrorMessage(context.AssessmentSection, context.FailureMechanism); + } + + private void PerformCalculation(GrassCoverErosionOutwardsWaveConditionsCalculation calculation, + GrassCoverErosionOutwardsWaveConditionsCalculationContext context) + { + ActivityProgressDialogRunner.Run(Gui.MainWindow, + new GrassCoverErosionOutwardsWaveConditionsCalculationActivity(calculation, + Path.GetDirectoryName(context.AssessmentSection.HydraulicBoundaryDatabase.FilePath), + context.FailureMechanism, + context.AssessmentSection)); + calculation.NotifyObservers(); + } + private void WaveConditionsCalculationContextOnNodeRemoved(GrassCoverErosionOutwardsWaveConditionsCalculationContext nodeData, object parentNodeData) {