Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsGuiPlugin.cs =================================================================== diff -u -r091761507d94a388b18fefebd38a5d106b9b89c4 -rfa424689d48793c024e73bfcee1c202559eea3e0 --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsGuiPlugin.cs (.../RingtoetsGuiPlugin.cs) (revision 091761507d94a388b18fefebd38a5d106b9b89c4) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsGuiPlugin.cs (.../RingtoetsGuiPlugin.cs) (revision fa424689d48793c024e73bfcee1c202559eea3e0) @@ -164,13 +164,12 @@ AfterCreate = (view, context) => view.FailureMechanism = context.FailureMechanism }; - yield return new ViewInfo, IComment, CommentView> + yield return new ViewInfo, ICommentable, CommentView> { GetViewName = (v, o) => Resources.Comment_DisplayName, GetViewData = context => context.CommentContainer, Image = RingtoetsCommonFormsResources.EditDocumentIcon, - CloseForData = CloseCommentViewForData, - AfterCreate = (view, context) => view.AssessmentSection = context.AssessmentSection + CloseForData = CloseCommentViewForData }; } @@ -283,7 +282,7 @@ .Build() }; - yield return new TreeNodeInfo> + yield return new TreeNodeInfo> { Text = comment => Resources.Comment_DisplayName, Image = context => RingtoetsCommonFormsResources.EditDocumentIcon, @@ -315,19 +314,54 @@ #region Comment ViewInfo - private static bool CloseCommentViewForData(CommentView view, object o) + private static bool CloseCommentViewForData(CommentView commentView, object o) { var calculationContext = o as PipingCalculationContext; + if (calculationContext != null) + { + return calculationContext.WrappedData == commentView.Data; + } - if (calculationContext != null && calculationContext.WrappedData == view.Data) + var calculationGroupContext = o as PipingCalculationGroupContext; + if (calculationGroupContext != null) { - return true; + return GetCommentableElements(calculationGroupContext) + .Any(commentableElement => ReferenceEquals(commentView.Data, commentableElement)); } var assessmentSection = o as IAssessmentSection; - return assessmentSection != null && assessmentSection == view.AssessmentSection; + if (assessmentSection != null) + { + return GetCommentableElements(assessmentSection) + .Any(commentableElement => ReferenceEquals(commentView.Data, commentableElement)); + } + + return false; } + private static IEnumerable GetCommentableElements(PipingCalculationGroupContext calculationGroupContext) + { + return calculationGroupContext.WrappedData.GetPipingCalculations(); + } + + private static IEnumerable GetCommentableElements(IAssessmentSection assessmentSection) + { + yield return assessmentSection; + foreach (var commentable in assessmentSection.GetFailureMechanisms().SelectMany(GetCommentableElements)) + { + yield return commentable; + } + } + + private static IEnumerable GetCommentableElements(IFailureMechanism failureMechanism) + { + yield return failureMechanism; + foreach (ICalculationItem commentableCalculation in failureMechanism.CalculationItems) + { + yield return commentableCalculation; + } + } + #endregion #region FailureMechanismSectionsContext @@ -350,7 +384,7 @@ new ReferenceLineContext(nodeData), new FailureMechanismContributionContext(nodeData.FailureMechanismContribution, nodeData), new HydraulicBoundaryDatabaseContext(nodeData), - new CommentContext(nodeData, nodeData) + new CommentContext(nodeData) }; var failureMechanismContexts = WrapFailureMechanismsInContexts(nodeData); @@ -436,7 +470,7 @@ new FailureMechanismSectionsContext(nodeData, assessmentSection), nodeData.Locations, nodeData.BoundaryConditions, - new CommentContext(nodeData, assessmentSection) + new CommentContext(nodeData) }; }