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