Index: Core/Common/src/Core.Common.Controls/DataGrid/DataGridViewControl.cs =================================================================== diff -u -r3d088548dfdebfd5c3adbbd67075b42e134f5c03 -r764e091fd9cde60228960a6ba3e3736e4e4fd7bd --- Core/Common/src/Core.Common.Controls/DataGrid/DataGridViewControl.cs (.../DataGridViewControl.cs) (revision 3d088548dfdebfd5c3adbbd67075b42e134f5c03) +++ Core/Common/src/Core.Common.Controls/DataGrid/DataGridViewControl.cs (.../DataGridViewControl.cs) (revision 764e091fd9cde60228960a6ba3e3736e4e4fd7bd) @@ -447,6 +447,14 @@ return dataGridView.Columns[columnIndex]; } + /// + /// + /// + public void ClearColumns() + { + dataGridView.Columns.Clear(); + } + protected override void OnLoad(EventArgs e) { dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; Index: Riskeer/Integration/src/Riskeer.Integration.Forms/Views/AssemblyResultPerSectionView.cs =================================================================== diff -u -r4587990a169c2284a25dbf50cb70e0fe5ca5e302 -r764e091fd9cde60228960a6ba3e3736e4e4fd7bd --- Riskeer/Integration/src/Riskeer.Integration.Forms/Views/AssemblyResultPerSectionView.cs (.../AssemblyResultPerSectionView.cs) (revision 4587990a169c2284a25dbf50cb70e0fe5ca5e302) +++ Riskeer/Integration/src/Riskeer.Integration.Forms/Views/AssemblyResultPerSectionView.cs (.../AssemblyResultPerSectionView.cs) (revision 764e091fd9cde60228960a6ba3e3736e4e4fd7bd) @@ -52,9 +52,9 @@ /// public partial class AssemblyResultPerSectionView : UserControl, IView { - private readonly Observer assessmentSectionResultObserver; private const int numberOfFixedColumns = 19; - + private readonly Observer assessmentSectionResultObserver; + /// /// Creates a new instance of . /// @@ -89,8 +89,6 @@ base.OnLoad(e); InitializeDataGridView(); - - dataGridViewControl.CellFormatting += HandleCellStyling; } protected override void Dispose(bool disposing) @@ -189,23 +187,33 @@ dataGridViewControl.AddTextBoxColumn(nameof(CombinedFailureMechanismSectionAssemblyResultRow.DuneErosion), DuneErosionDataResources.DuneErosionFailureMechanism_Code, true); - - foreach (SpecificFailurePath specificFailurePath in AssessmentSection.SpecificFailurePaths) - { - dataGridViewControl.AddTextBoxColumn(string.Empty, - specificFailurePath.Code, - true); - } + SetSpecificFailurePathTextBoxColumns(); + SetDataSource(); + + dataGridViewControl.CellFormatting += HandleCellStyling; } private void RefreshAssemblyResults_Click(object sender, EventArgs e) { + dataGridViewControl.CellFormatting -= HandleCellStyling; + refreshAssemblyResultsButton.Enabled = false; - SetDataSource(); + dataGridViewControl.ClearColumns(); + InitializeDataGridView(); } + private void SetSpecificFailurePathTextBoxColumns() + { + foreach (SpecificFailurePath specificFailurePath in AssessmentSection.SpecificFailurePaths) + { + dataGridViewControl.AddTextBoxColumn(string.Empty, + specificFailurePath.Code, + true); + } + } + private void SetDataSource() { ClearCurrentData(); Index: Riskeer/Integration/test/Riskeer.Integration.Forms.Test/Views/AssemblyResultPerSectionViewTest.cs =================================================================== diff -u -r03e724e469bd63249c3b6e06e3c526e4474d3ae2 -r764e091fd9cde60228960a6ba3e3736e4e4fd7bd --- Riskeer/Integration/test/Riskeer.Integration.Forms.Test/Views/AssemblyResultPerSectionViewTest.cs (.../AssemblyResultPerSectionViewTest.cs) (revision 03e724e469bd63249c3b6e06e3c526e4474d3ae2) +++ Riskeer/Integration/test/Riskeer.Integration.Forms.Test/Views/AssemblyResultPerSectionViewTest.cs (.../AssemblyResultPerSectionViewTest.cs) (revision 764e091fd9cde60228960a6ba3e3736e4e4fd7bd) @@ -35,6 +35,8 @@ using Riskeer.AssemblyTool.KernelWrapper.TestUtil.Calculators.Assembly; using Riskeer.Common.Data.AssessmentSection; using Riskeer.Common.Data.FailureMechanism; +using Riskeer.Common.Data.FailurePath; +using Riskeer.Common.Data.TestUtil; using Riskeer.HeightStructures.Data.TestUtil; using Riskeer.Integration.Data; using Riskeer.Integration.Forms.Views; @@ -184,6 +186,68 @@ } [Test] + public void GivenFormWithAssemblyResultPerSectionView_WhenSpecificFailurePathAdded_ThenAdditionalColumnAdded() + { + // Given + var random = new Random(21); + AssessmentSection assessmentSection = TestDataGenerator.GetAssessmentSectionWithAllFailureMechanismSectionsAndResults( + random.NextEnumValue()); + + using (new AssemblyToolCalculatorFactoryConfig()) + using (ShowAssemblyResultPerSectionView(assessmentSection)) + { + var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; + AssessmentSectionAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedAssessmentSectionAssemblyCalculator; + + // Precondition + var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; + Assert.AreEqual(expectedColumnCount, dataGridView.ColumnCount); + + ButtonTester buttonTester = GetRefreshAssemblyResultButtonTester(); + + // When + var specificFailurePath = new SpecificFailurePath(); + specificFailurePath.SetSections(new[] + { + FailureMechanismSectionTestFactory.CreateFailureMechanismSection() + }, "test"); + + assessmentSection.SpecificFailurePaths.Add(specificFailurePath); + assessmentSection.SpecificFailurePaths.NotifyObservers(); + calculator.CombinedFailureMechanismSectionAssemblyOutput = null; + buttonTester.Click(); + + Assert.AreEqual(expectedColumnCount + 1, dataGridView.ColumnCount); + } + } + + [Test] + public void GivenFormWithAssemblyResultPerSectionView_WhenSpecificFailurePathRemoved_ThenAdditionalColumnRemoved() + { + // Given + var random = new Random(21); + AssessmentSection assessmentSection = TestDataGenerator.GetAssessmentSectionWithAllFailureMechanismSectionsAndResults( + random.NextEnumValue()); + + using (new AssemblyToolCalculatorFactoryConfig()) + using (ShowAssemblyResultPerSectionView(assessmentSection)) + { + // Precondition + var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; + Assert.AreEqual(expectedColumnCount, dataGridView.ColumnCount); + + ButtonTester buttonTester = GetRefreshAssemblyResultButtonTester(); + + // When + assessmentSection.SpecificFailurePaths.RemoveAt(0); + assessmentSection.NotifyObservers(); + buttonTester.Click(); + + Assert.AreEqual(expectedColumnCount - 1, dataGridView.ColumnCount); + } + } + + [Test] public void Constructor_AssessmentSectionWithReferenceLine_ExpectedValues() { // Call