Index: Riskeer/Common/src/Riskeer.Common.Forms/Views/FailureMechanismResultView.cs =================================================================== diff -u -rfba3c3273eae5061e1a2bf8ee19623367c885650 -r497db346515fa2044048eb7ec41f76627bab5a4d --- Riskeer/Common/src/Riskeer.Common.Forms/Views/FailureMechanismResultView.cs (.../FailureMechanismResultView.cs) (revision fba3c3273eae5061e1a2bf8ee19623367c885650) +++ Riskeer/Common/src/Riskeer.Common.Forms/Views/FailureMechanismResultView.cs (.../FailureMechanismResultView.cs) (revision 497db346515fa2044048eb7ec41f76627bab5a4d) @@ -163,7 +163,7 @@ /// /// Updates the internal data in the view. /// - protected void UpdateInternalViewData() + protected virtual void UpdateInternalViewData() { UpdateDataGridViewDataSource(); UpdateAssemblyData(); Index: Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsFailureMechanismResultView.cs =================================================================== diff -u -rb2a84d4ad12dde705c07722ef9c264b268bec879 -r497db346515fa2044048eb7ec41f76627bab5a4d --- Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsFailureMechanismResultView.cs (.../GrassCoverErosionInwardsFailureMechanismResultView.cs) (revision b2a84d4ad12dde705c07722ef9c264b268bec879) +++ Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsFailureMechanismResultView.cs (.../GrassCoverErosionInwardsFailureMechanismResultView.cs) (revision 497db346515fa2044048eb7ec41f76627bab5a4d) @@ -93,6 +93,12 @@ }; } + protected override void UpdateInternalViewData() + { + UpdateVisibility(); + base.UpdateInternalViewData(); + } + protected override AdoptableWithProfileProbabilityFailureMechanismSectionResultRow CreateFailureMechanismSectionResultRow( AdoptableWithProfileProbabilityFailureMechanismSectionResult sectionResult) { @@ -190,6 +196,17 @@ nameof(AdoptableWithProfileProbabilityFailureMechanismSectionResultRow.AssemblyGroup)); } + private void UpdateVisibility() + { + bool useLengthEffect = FailureMechanism.GeneralInput.ApplyLengthEffectInSection; + + DataGridViewControl.GetColumnFromIndex(initialFailureMechanismResultProfileProbabilityIndex).Visible = useLengthEffect; + DataGridViewControl.GetColumnFromIndex(probabilityRefinementTypeIndex).Visible = useLengthEffect; + DataGridViewControl.GetColumnFromIndex(refinedProfileProbabilityIndex).Visible = useLengthEffect; + DataGridViewControl.GetColumnFromIndex(profileProbabilityIndex).Visible = useLengthEffect; + DataGridViewControl.GetColumnFromIndex(sectionNIndex).Visible = useLengthEffect; + } + private GrassCoverErosionInwardsFailureMechanismSectionResultCalculateProbabilityStrategy CreateCalculateStrategy( AdoptableWithProfileProbabilityFailureMechanismSectionResult sectionResult, IEnumerable calculationScenarios) Index: Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsFailureMechanismResultViewTest.cs =================================================================== diff -u -r5ff5db30cf8971a12212d5b48062ab2541a356b8 -r497db346515fa2044048eb7ec41f76627bab5a4d --- Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsFailureMechanismResultViewTest.cs (.../GrassCoverErosionInwardsFailureMechanismResultViewTest.cs) (revision 5ff5db30cf8971a12212d5b48062ab2541a356b8) +++ Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsFailureMechanismResultViewTest.cs (.../GrassCoverErosionInwardsFailureMechanismResultViewTest.cs) (revision 497db346515fa2044048eb7ec41f76627bab5a4d) @@ -110,11 +110,21 @@ } [Test] - public void GivenFormWithMacroStabilityInwardsFailureMechanismResultView_ThenExpectedColumnsAreVisible() + [TestCase(true)] + [TestCase(false)] + public void GivenFormWithMacroStabilityInwardsFailureMechanismResultView_ThenExpectedColumnsAreVisible(bool useLengthEffect) { // Given + var failureMechanism = new GrassCoverErosionInwardsFailureMechanism + { + GeneralInput = + { + ApplyLengthEffectInSection = useLengthEffect + } + }; + using (new AssemblyToolCalculatorFactoryConfig()) - using (ShowFailureMechanismResultsView(new GrassCoverErosionInwardsFailureMechanism())) + using (ShowFailureMechanismResultsView(failureMechanism)) { // Then DataGridView dataGridView = GetDataGridView(); @@ -162,6 +172,12 @@ Assert.IsTrue(dataGridView.Columns[sectionProbabilityIndex].ReadOnly); Assert.IsTrue(dataGridView.Columns[sectionNIndex].ReadOnly); Assert.IsTrue(dataGridView.Columns[assemblyGroupIndex].ReadOnly); + + Assert.AreEqual(useLengthEffect, dataGridView.Columns[initialFailureMechanismResultProfileProbabilityIndex].Visible); + Assert.AreEqual(useLengthEffect, dataGridView.Columns[probabilityRefinementTypeIndex].Visible); + Assert.AreEqual(useLengthEffect, dataGridView.Columns[refinedProfileProbabilityIndex].Visible); + Assert.AreEqual(useLengthEffect, dataGridView.Columns[profileProbabilityIndex].Visible); + Assert.AreEqual(useLengthEffect, dataGridView.Columns[sectionNIndex].Visible); } } @@ -322,6 +338,57 @@ } } + [Test] + [TestCase(true)] + [TestCase(false)] + public void GivenGrassCoverErosionInwardsFailureMechanismResultView_WhenApplyLengthEffectChangedAndFailureMechanismObserversNotified_ThenDataGridViewUpdated( + bool useLengthEffect) + { + var failureMechanism = new GrassCoverErosionInwardsFailureMechanism + { + GeneralInput = + { + ApplyLengthEffectInSection = !useLengthEffect + } + }; + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection("Section 1"); + FailureMechanismTestHelper.SetSections(failureMechanism, new[] + { + section + }); + + GrassCoverErosionInwardsCalculationScenario calculationScenario = GrassCoverErosionInwardsCalculationScenarioTestFactory.CreateGrassCoverErosionInwardsCalculationScenario(section); + failureMechanism.CalculationsGroup.Children.Add(calculationScenario); + + using (new AssemblyToolCalculatorFactoryConfig()) + using (ShowFailureMechanismResultsView(failureMechanism)) + { + var rowsChanged = false; + DataGridView dataGridView = GetDataGridView(); + dataGridView.Rows.CollectionChanged += (sender, args) => rowsChanged = true; + + // Precondition + Assert.IsFalse(rowsChanged); + Assert.AreEqual(!useLengthEffect, dataGridView.Columns[initialFailureMechanismResultProfileProbabilityIndex].Visible); + Assert.AreEqual(!useLengthEffect, dataGridView.Columns[probabilityRefinementTypeIndex].Visible); + Assert.AreEqual(!useLengthEffect, dataGridView.Columns[refinedProfileProbabilityIndex].Visible); + Assert.AreEqual(!useLengthEffect, dataGridView.Columns[profileProbabilityIndex].Visible); + Assert.AreEqual(!useLengthEffect, dataGridView.Columns[sectionNIndex].Visible); + + // When + failureMechanism.GeneralInput.ApplyLengthEffectInSection = useLengthEffect; + failureMechanism.NotifyObservers(); + + // Then + Assert.IsTrue(rowsChanged); + Assert.AreEqual(useLengthEffect, dataGridView.Columns[initialFailureMechanismResultProfileProbabilityIndex].Visible); + Assert.AreEqual(useLengthEffect, dataGridView.Columns[probabilityRefinementTypeIndex].Visible); + Assert.AreEqual(useLengthEffect, dataGridView.Columns[refinedProfileProbabilityIndex].Visible); + Assert.AreEqual(useLengthEffect, dataGridView.Columns[profileProbabilityIndex].Visible); + Assert.AreEqual(useLengthEffect, dataGridView.Columns[sectionNIndex].Visible); + } + } + private static DataGridView GetDataGridView() { return (DataGridView) new ControlTester("dataGridView").TheObject;