Index: Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs =================================================================== diff -u -rabb2667229e96d5b8158981c890a5c7046e9ca66 -r073f4371610f4964a1f877737184494a684f7610 --- Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs (.../PipingGuiPlugin.cs) (revision abb2667229e96d5b8158981c890a5c7046e9ca66) +++ Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs (.../PipingGuiPlugin.cs) (revision 073f4371610f4964a1f877737184494a684f7610) @@ -534,14 +534,15 @@ return calculationGroupContext != null && calculationGroupContext.WrappedData.Children.Contains(pipingCalculationContext.WrappedData); } - private static void PipingCalculationContextOnNodeRemoved(PipingCalculationContext pipingCalculationContext, object parentNodeData) + private void PipingCalculationContextOnNodeRemoved(PipingCalculationContext pipingCalculationContext, object parentNodeData) { var calculationGroupContext = parentNodeData as PipingCalculationGroupContext; if (calculationGroupContext != null) { var succesfullyRemovedData = calculationGroupContext.WrappedData.Children.Remove(pipingCalculationContext.WrappedData); if (succesfullyRemovedData) { + RemoveCalculation(pipingCalculationContext.WrappedData, pipingCalculationContext.PipingFailureMechanism); calculationGroupContext.NotifyObservers(); } } @@ -568,7 +569,7 @@ foreach (ICalculationBase item in nodeData.WrappedData.Children) { - var calculation = item as PipingCalculation; + var calculation = item as PipingCalculationScenario; var group = item as CalculationGroup; if (calculation != null) @@ -610,7 +611,7 @@ }; group.Children.Add(newGroup); - nodeData.NotifyObservers(); + nodeData.WrappedData.NotifyObservers(); }); var addCalculationItem = new StrictContextMenuItem( @@ -624,7 +625,7 @@ }; group.Children.Add(calculation); - nodeData.NotifyObservers(); + nodeData.WrappedData.NotifyObservers(); }); var generateCalculationsItem = CreateGeneratePipingCalculationsItem(nodeData); @@ -733,6 +734,7 @@ nodeData.NotifyObservers(); nodeData.WrappedData.AddCalculationScenariosToFailureMechanismSectionResult(nodeData.PipingFailureMechanism); + nodeData.PipingFailureMechanism.NotifyObservers(); } private void GeneratePipingCalculations(ICalculationGroup target, IEnumerable surfaceLines, IEnumerable soilModels, GeneralPipingInput generalInput, SemiProbabilisticPipingInput semiProbabilisticInput) @@ -816,10 +818,21 @@ if (group != null) { group.WrappedData.Children.Remove(nodeData.WrappedData); + + foreach (var calculation in nodeData.WrappedData.GetCalculations().Cast()) + { + RemoveCalculation(calculation, nodeData.PipingFailureMechanism); + } + group.NotifyObservers(); } } + private void RemoveCalculation(PipingCalculationScenario calculation, PipingFailureMechanism pipingFailureMechanism) + { + PipingCalculationScenarioService.RemoveCalculationScenarioFromSectionResult(calculation, pipingFailureMechanism); + } + private bool PipingCalculationGroupContextCanDrag(PipingCalculationGroupContext nodeData, object parentData) { if (parentData is PipingFailureMechanismContext)