Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismContributionView.cs =================================================================== diff -u -rfff12e249602fb700b2854c14a3b7cdd0b73c023 -rbae4f8741e1a0155753e3b3734de500712ee4182 --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismContributionView.cs (.../FailureMechanismContributionView.cs) (revision fff12e249602fb700b2854c14a3b7cdd0b73c023) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismContributionView.cs (.../FailureMechanismContributionView.cs) (revision bae4f8741e1a0155753e3b3734de500712ee4182) @@ -23,16 +23,14 @@ using System.Drawing; using System.Linq; using System.Windows.Forms; - using Core.Common.Base; using Core.Common.Controls.Views; +using Core.Common.Gui.Commands; using Core.Common.Utils.Reflection; - using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Calculation; using Ringtoets.Common.Data.Contribution; using Ringtoets.Common.Data.FailureMechanism; - using CoreCommonBaseResources = Core.Common.Base.Properties.Resources; using CommonGuiResources = Core.Common.Gui.Properties.Resources; using RingtoetsIntegrationFormsResources = Ringtoets.Integration.Forms.Properties.Resources; @@ -46,14 +44,14 @@ /// public partial class FailureMechanismContributionView : UserControl, IView, IObserver { + private readonly Observer isFailureMechanismRelevantObserver; + private readonly Observer closeViewsForIrrelevantFailureMechanismObserver; private DataGridViewColumn probabilityPerYearColumn; private FailureMechanismContribution data; private bool revertingComboBoxSelectedValue; private IAssessmentSection assessmentSection; - private readonly Observer isFailureMechanismRelevantObserver; - private DataGridViewCheckBoxColumn isRelevantColumn; /// @@ -69,6 +67,7 @@ SubscribeEvents(); isFailureMechanismRelevantObserver = new Observer(SetRowStyling); + closeViewsForIrrelevantFailureMechanismObserver = new Observer(CloseViewsForIrrelevantFailureMechanism); Load += OnLoad; } @@ -87,6 +86,8 @@ } } + public IViewCommands ViewCommands { private get; set; } + public object Data { get @@ -95,7 +96,7 @@ } set { - HandleNewDataSet((FailureMechanismContribution)value); + HandleNewDataSet((FailureMechanismContribution) value); } } @@ -117,6 +118,7 @@ } UnsubscribeEvents(); DetachFromFailureMechanisms(); + ViewCommands = null; base.Dispose(disposing); } @@ -196,6 +198,7 @@ foreach (IFailureMechanism failureMechanism in assessmentSection.GetFailureMechanisms()) { failureMechanism.Detach(isFailureMechanismRelevantObserver); + failureMechanism.Detach(closeViewsForIrrelevantFailureMechanismObserver); } } } @@ -207,10 +210,25 @@ foreach (IFailureMechanism failureMechanism in assessmentSection.GetFailureMechanisms()) { failureMechanism.Attach(isFailureMechanismRelevantObserver); + failureMechanism.Attach(closeViewsForIrrelevantFailureMechanismObserver); } } } + private void CloseViewsForIrrelevantFailureMechanism() + { + if (ViewCommands != null) + { + foreach (var failureMechanism in assessmentSection.GetFailureMechanisms()) + { + if (!failureMechanism.IsRelevant) + { + ViewCommands.RemoveAllViewsForItem(failureMechanism); + } + } + } + } + private void SetGridDataSource() { if (data != null) @@ -374,7 +392,7 @@ MessageBoxButtons.OKCancel); if (dialogResult == DialogResult.OK) { - assessmentSection.ChangeComposition((AssessmentSectionComposition)assessmentSectionCompositionComboBox.SelectedValue); + assessmentSection.ChangeComposition((AssessmentSectionComposition) assessmentSectionCompositionComboBox.SelectedValue); SetGridDataSource(); ClearCalculationOutputForChangedContributions(originalFailureMechanismContributions); @@ -409,11 +427,11 @@ { foreach (DataGridViewRow row in probabilityDistributionGrid.Rows) { - var isRelevantCell = (DataGridViewCheckBoxCell)row.Cells[isRelevantColumn.Index]; + var isRelevantCell = (DataGridViewCheckBoxCell) row.Cells[isRelevantColumn.Index]; FailureMechanismContributionItem rowData = data.Distribution.ElementAt(row.Index); isRelevantCell.ReadOnly = rowData.IsAlwaysRelevant; - var isFailureMechanismRelevant = (bool)isRelevantCell.Value; + var isFailureMechanismRelevant = (bool) isRelevantCell.Value; SetRowStyle(isFailureMechanismRelevant, row); } }