Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingFailureMechanismResultView.cs =================================================================== diff -u -r94f68f51cd9b8fd8c0c162cf874ef7e4580b0ee4 -rd831947ee7defd3a0b22ef43a3a41490f7e87ac7 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingFailureMechanismResultView.cs (.../PipingFailureMechanismResultView.cs) (revision 94f68f51cd9b8fd8c0c162cf874ef7e4580b0ee4) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingFailureMechanismResultView.cs (.../PipingFailureMechanismResultView.cs) (revision d831947ee7defd3a0b22ef43a3a41490f7e87ac7) @@ -43,15 +43,18 @@ private readonly RecursiveObserver calculationOutputObserver; private readonly RecursiveObserver calculationGroupObserver; private readonly IAssessmentSection assessmentSection; + private readonly Observer failureMechanismObserver; /// /// Creates a new instance of . /// /// The assessment section that the failure mechanism belongs to. + /// The failure mechanism this view belongs to. /// The collection of failure mechanism section results. /// Thrown when any input parameter is null. public PipingFailureMechanismResultView( IAssessmentSection assessmentSection, + PipingFailureMechanism failureMechanism, IObservableEnumerable failureMechanismSectionResults) : base(failureMechanismSectionResults) { @@ -60,8 +63,19 @@ throw new ArgumentNullException(nameof(assessmentSection)); } + if (failureMechanism == null) + { + throw new ArgumentNullException(nameof(failureMechanism)); + } + this.assessmentSection = assessmentSection; + FailureMechanism = failureMechanism; + failureMechanismObserver = new Observer(UpdateDataGridViewDataSource) + { + Observable = failureMechanism + }; + DataGridViewControl.CellFormatting += ShowAssessmentLayerTwoAErrors; DataGridViewControl.CellFormatting += DisableIrrelevantFieldsFormatting; @@ -79,23 +93,20 @@ calculationGroupObserver = new RecursiveObserver( UpdateDataGridViewDataSource, c => c.Children); - } - public override IFailureMechanism FailureMechanism - { - set - { - base.FailureMechanism = value; + CalculationGroup observableGroup = failureMechanism.CalculationsGroup; + calculationInputObserver.Observable = observableGroup; + calculationOutputObserver.Observable = observableGroup; + calculationGroupObserver.Observable = observableGroup; - var calculatableFailureMechanism = value as ICalculatableFailureMechanism; - CalculationGroup observableGroup = calculatableFailureMechanism?.CalculationsGroup; - - calculationInputObserver.Observable = observableGroup; - calculationOutputObserver.Observable = observableGroup; - calculationGroupObserver.Observable = observableGroup; - } + UpdateDataGridViewDataSource(); } + /// + /// Gets the piping failure mechanism. + /// + public PipingFailureMechanism FailureMechanism { get; } + protected override void Dispose(bool disposing) { DataGridViewControl.CellFormatting -= ShowAssessmentLayerTwoAErrors; @@ -104,19 +115,15 @@ calculationInputObserver.Dispose(); calculationOutputObserver.Dispose(); calculationGroupObserver.Dispose(); + failureMechanismObserver.Dispose(); base.Dispose(disposing); } protected override object CreateFailureMechanismSectionResultRow(PipingFailureMechanismSectionResult sectionResult) { - if (FailureMechanism == null) - { - return null; - } - return new PipingFailureMechanismSectionResultRow(sectionResult, FailureMechanism.Calculations.Cast(), - (PipingFailureMechanism) FailureMechanism, assessmentSection); + FailureMechanism, assessmentSection); } protected override void AddDataGridColumns()