Index: Core/Common/src/Core.Common.Controls/DataGrid/DataGridViewControl.cs =================================================================== diff -u -r6b8f6422c0a6f96f8e563bb6afb82a7a192142b4 -r899c19a3a7c943aba56a9f3db179e163c26bfd86 --- Core/Common/src/Core.Common.Controls/DataGrid/DataGridViewControl.cs (.../DataGridViewControl.cs) (revision 6b8f6422c0a6f96f8e563bb6afb82a7a192142b4) +++ Core/Common/src/Core.Common.Controls/DataGrid/DataGridViewControl.cs (.../DataGridViewControl.cs) (revision 899c19a3a7c943aba56a9f3db179e163c26bfd86) @@ -358,10 +358,15 @@ /// /// Refreshes the and performs an . /// - public void RefreshDataGridView() + /// Indicator whether the column width should be automatically resized. + public void RefreshDataGridView(bool shouldAutoResizeColumns = true) { dataGridView.Refresh(); - AutoResizeColumns(); + + if (shouldAutoResizeColumns) + { + AutoResizeColumns(); + } } /// Index: Core/Common/test/Core.Common.Controls.Test/DataGrid/DataGridViewControlTest.cs =================================================================== diff -u -r2a61453b3c465ad734985fb9f42352b76a6ab5bc -r899c19a3a7c943aba56a9f3db179e163c26bfd86 --- Core/Common/test/Core.Common.Controls.Test/DataGrid/DataGridViewControlTest.cs (.../DataGridViewControlTest.cs) (revision 2a61453b3c465ad734985fb9f42352b76a6ab5bc) +++ Core/Common/test/Core.Common.Controls.Test/DataGrid/DataGridViewControlTest.cs (.../DataGridViewControlTest.cs) (revision 899c19a3a7c943aba56a9f3db179e163c26bfd86) @@ -600,25 +600,26 @@ } [Test] - public void RefreshDataGridView_AddLongerText_IncreasesColumnWidth() + public void RefreshDataGridView_ShouldAutoResizeTrue_IncreasesColumnWidth() { using (var form = new Form()) using (var control = new DataGridViewControl()) { form.Controls.Add(control); form.Show(); - control.AddTextBoxColumn("Test property", "Test header"); - control.SetDataSource(new[] + control.AddTextBoxColumn(nameof(TestDataGridViewMultipleColumnsRow.TestString), "Test"); + var dataSource = new[] { - "Test" - }); + new TestDataGridViewMultipleColumnsRow(RoundedDouble.NaN, "Test") + }; + control.SetDataSource(dataSource); DataGridViewCell dataGridViewCell = control.GetCell(0, 0); control.SetCurrentCell(dataGridViewCell); int initialWidth = dataGridViewCell.OwningColumn.Width; - dataGridViewCell.Value = "This is a long text."; + dataSource[0].TestString = "This is a long textwegawegwegwetawergawegawegtwaegwaeg."; // Call control.RefreshDataGridView(); @@ -630,39 +631,33 @@ } [Test] - public void RefreshDataGridView_AddShorterText_DecreasesColumnWidth() + public void RefreshDataGridView_ShouldAutoResizeFalse_SameColumnWidth() { using (var form = new Form()) using (var control = new DataGridViewControl()) { form.Controls.Add(control); form.Show(); - control.AddTextBoxColumn("Test property", "Test header"); - control.SetDataSource(new[] + control.AddTextBoxColumn(nameof(TestDataGridViewMultipleColumnsRow.TestString), "Test"); + var dataSource = new[] { - "Test" - }); + new TestDataGridViewMultipleColumnsRow(RoundedDouble.NaN, "Test") + }; + control.SetDataSource(dataSource); DataGridViewCell dataGridViewCell = control.GetCell(0, 0); control.SetCurrentCell(dataGridViewCell); int initialWidth = dataGridViewCell.OwningColumn.Width; - dataGridViewCell.Value = "This is a long text."; + dataSource[0].TestString = "This is a long textwegawegwegwetawergawegawegtwaegwaeg."; - control.RefreshDataGridView(); - - // Precondition - int longTextWidth = dataGridViewCell.OwningColumn.Width; - Assert.Greater(longTextWidth, initialWidth); - - dataGridViewCell.Value = string.Empty; - // Call - control.RefreshDataGridView(); + control.RefreshDataGridView(false); // Assert - Assert.Less(dataGridViewCell.OwningColumn.Width, longTextWidth); + int newTextWidth = dataGridViewCell.OwningColumn.Width; + Assert.AreEqual(newTextWidth, initialWidth); } } @@ -675,18 +670,18 @@ form.Controls.Add(control); form.Show(); - control.AddTextBoxColumn("Test property", "Test header"); - - control.SetDataSource(new[] + control.AddTextBoxColumn(nameof(TestDataGridViewMultipleColumnsRow.TestString), "Test"); + var dataSource = new[] { - "Test" - }); + new TestDataGridViewMultipleColumnsRow(RoundedDouble.NaN, "Test") + }; + control.SetDataSource(dataSource); DataGridViewCell dataGridViewCell = control.GetCell(0, 0); control.SetCurrentCell(dataGridViewCell); int initialWidth = dataGridViewCell.OwningColumn.Width; - dataGridViewCell.Value = "This is a long text."; + dataSource[0].TestString = "This is a long textwegawegwegwetawergawegawegtwaegwaeg."; // Call control.AutoResizeColumns(); @@ -706,31 +701,25 @@ form.Controls.Add(control); form.Show(); - control.AddTextBoxColumn("Test property", "Test header"); - control.SetDataSource(new[] + control.AddTextBoxColumn(nameof(TestDataGridViewMultipleColumnsRow.TestString), "Test"); + var dataSource = new[] { - "Test" - }); + new TestDataGridViewMultipleColumnsRow(RoundedDouble.NaN, "Long test text abcd") + }; + control.SetDataSource(dataSource); DataGridViewCell dataGridViewCell = control.GetCell(0, 0); control.SetCurrentCell(dataGridViewCell); int initialWidth = dataGridViewCell.OwningColumn.Width; - dataGridViewCell.Value = "This is a long text."; + dataSource[0].TestString = "text"; - control.AutoResizeColumns(); - - // Precondition - int longTextWidth = dataGridViewCell.OwningColumn.Width; - Assert.Greater(longTextWidth, initialWidth); - - dataGridViewCell.Value = string.Empty; - // Call control.AutoResizeColumns(); // Assert - Assert.Less(dataGridViewCell.OwningColumn.Width, longTextWidth); + int shortTextWidth = dataGridViewCell.OwningColumn.Width; + Assert.Less(shortTextWidth, initialWidth); } } @@ -1306,7 +1295,7 @@ public RoundedDouble TestRoundedDouble { get; } - public string TestString { get; } + public string TestString { get; set; } } #region Event handling Index: Ringtoets/Common/src/Ringtoets.Common.Forms/Views/FailureMechanismResultView.cs =================================================================== diff -u -r4994cf24768a7b54149e65713433dc4543ace82c -r899c19a3a7c943aba56a9f3db179e163c26bfd86 --- Ringtoets/Common/src/Ringtoets.Common.Forms/Views/FailureMechanismResultView.cs (.../FailureMechanismResultView.cs) (revision 4994cf24768a7b54149e65713433dc4543ace82c) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/Views/FailureMechanismResultView.cs (.../FailureMechanismResultView.cs) (revision 899c19a3a7c943aba56a9f3db179e163c26bfd86) @@ -184,7 +184,7 @@ private void RowUpdated(object sender, EventArgs eventArgs) { rowUpdating = true; - DataGridViewControl.RefreshDataGridView(); + DataGridViewControl.RefreshDataGridView(false); } private void HandleCellStyling(object sender, DataGridViewCellFormattingEventArgs e) Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/FailureMechanismResultViewTest.cs =================================================================== diff -u -r6bfd88d43db177e5425a69c22dfd9070e8520898 -r899c19a3a7c943aba56a9f3db179e163c26bfd86 --- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/FailureMechanismResultViewTest.cs (.../FailureMechanismResultViewTest.cs) (revision 6bfd88d43db177e5425a69c22dfd9070e8520898) +++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/FailureMechanismResultViewTest.cs (.../FailureMechanismResultViewTest.cs) (revision 899c19a3a7c943aba56a9f3db179e163c26bfd86) @@ -103,17 +103,20 @@ { // Setup const int nameColumnIndex = 0; + const int stringColumnIndex = 1; // Call using (ShowFailureMechanismResultsView(new ObservableList())) { // Assert var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; - Assert.AreEqual(1, dataGridView.ColumnCount); + Assert.AreEqual(2, dataGridView.ColumnCount); Assert.IsInstanceOf(dataGridView.Columns[nameColumnIndex]); + Assert.IsInstanceOf(dataGridView.Columns[stringColumnIndex]); - Assert.AreEqual("Test", dataGridView.Columns[nameColumnIndex].HeaderText); + Assert.AreEqual("Name", dataGridView.Columns[nameColumnIndex].HeaderText); + Assert.AreEqual("String", dataGridView.Columns[stringColumnIndex].HeaderText); } } @@ -298,6 +301,34 @@ } [Test] + public void GivenFailureMechanismResultView_WhenRowUpdated_ThenColumnsDoNotAutoResize() + { + // Given + var sectionResults = new ObservableList + { + FailureMechanismSectionResultTestFactory.CreateFailureMechanismSectionResult() + }; + + using (ShowFailureMechanismResultsView(sectionResults)) + { + var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; + var row = (TestRow) dataGridView.Rows[0].DataBoundItem; + + DataGridViewCell dataGridViewCell = dataGridView.Rows[0].Cells[1]; + dataGridViewCell.Value = "Long string abcdefghijklmnop2wgfwgwrgqwgargwefwe"; + int initialWidth = dataGridViewCell.OwningColumn.Width; + + // When + row.TestString = "a"; + row.RowUpdated?.Invoke(row, EventArgs.Empty); + + // Then + int newWidth = dataGridViewCell.OwningColumn.Width; + Assert.AreEqual(initialWidth, newWidth); + } + } + + [Test] public void GivenFailureMechanismResultView_WhenResultRemovedAndSectionResultsNotified_ThenEventHandlersDisconnected() { // Given @@ -337,19 +368,20 @@ } } - public class TestFailureMechanismResultView : FailureMechanismResultView, TestFailureMechanism> + public class TestFailureMechanismResultView : FailureMechanismResultView { public TestFailureMechanismResultView(IObservableEnumerable failureMechanismSectionResults, TestFailureMechanism failureMechanism) : base(failureMechanismSectionResults, failureMechanism) {} - protected override FailureMechanismSectionResultRow CreateFailureMechanismSectionResultRow(FailureMechanismSectionResult sectionResult) + protected override TestRow CreateFailureMechanismSectionResultRow(FailureMechanismSectionResult sectionResult) { return new TestRow(sectionResult); } protected override void AddDataGridColumns() { - DataGridViewControl.AddTextBoxColumn("Name", "Test", true); + DataGridViewControl.AddTextBoxColumn("Name", "Name", true); + DataGridViewControl.AddTextBoxColumn(nameof(TestRow.TestString), "String"); } } @@ -362,6 +394,8 @@ public bool Updated { get; private set; } + public string TestString { get; set; } + public override void Update() { Updated = true; Index: Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Forms/Views/DuneLocationsView.cs =================================================================== diff -u -r16ff9b6edce7916571518d621021b2995c1c01aa -r899c19a3a7c943aba56a9f3db179e163c26bfd86 --- Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Forms/Views/DuneLocationsView.cs (.../DuneLocationsView.cs) (revision 16ff9b6edce7916571518d621021b2995c1c01aa) +++ Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Forms/Views/DuneLocationsView.cs (.../DuneLocationsView.cs) (revision 899c19a3a7c943aba56a9f3db179e163c26bfd86) @@ -89,7 +89,7 @@ { Observable = locations }; - duneLocationObserver = new RecursiveObserver, DuneLocation>(dataGridViewControl.RefreshDataGridView, list => list) + duneLocationObserver = new RecursiveObserver, DuneLocation>(() => dataGridViewControl.RefreshDataGridView(), list => list) { Observable = locations }; Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismContributionView.cs =================================================================== diff -u -rac96d7c315129af851634ed5a4a6800b59ede718 -r899c19a3a7c943aba56a9f3db179e163c26bfd86 --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismContributionView.cs (.../FailureMechanismContributionView.cs) (revision ac96d7c315129af851634ed5a4a6800b59ede718) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismContributionView.cs (.../FailureMechanismContributionView.cs) (revision 899c19a3a7c943aba56a9f3db179e163c26bfd86) @@ -76,7 +76,7 @@ this.viewCommands = viewCommands; - failureMechanismObserver = new Observer(probabilityDistributionGrid.RefreshDataGridView); + failureMechanismObserver = new Observer(() => probabilityDistributionGrid.RefreshDataGridView()); } /// Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsCalculationsView.cs =================================================================== diff -u -r38dd2d81eada00a5bcec11cb847e298aad9c83e6 -r899c19a3a7c943aba56a9f3db179e163c26bfd86 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsCalculationsView.cs (.../MacroStabilityInwardsCalculationsView.cs) (revision 38dd2d81eada00a5bcec11cb847e298aad9c83e6) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsCalculationsView.cs (.../MacroStabilityInwardsCalculationsView.cs) (revision 899c19a3a7c943aba56a9f3db179e163c26bfd86) @@ -83,12 +83,14 @@ .OfType() .Select(pc => pc.InputParameters))); calculationGroupObserver = new RecursiveObserver(UpdateDataGridViewDataSource, cg => cg.Children); - calculationObserver = new RecursiveObserver(dataGridViewControl.RefreshDataGridView, cg => cg.Children); + calculationObserver = new RecursiveObserver( + () => dataGridViewControl.RefreshDataGridView(), cg => cg.Children); surfaceLineObserver = new RecursiveObserver(UpdateDataGridViewDataSource, rpslc => rpslc); stochasticSoilModelsObserver = new Observer(OnStochasticSoilModelsUpdate); - stochasticSoilProfileObserver = new RecursiveObserver(dataGridViewControl.RefreshDataGridView, ssmc => ssmc.SelectMany(ssm => ssm.StochasticSoilProfiles)); + stochasticSoilProfileObserver = new RecursiveObserver( + () => dataGridViewControl.RefreshDataGridView(), ssmc => ssmc.SelectMany(ssm => ssm.StochasticSoilProfiles)); } /// Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingCalculationsView.cs =================================================================== diff -u -r38dd2d81eada00a5bcec11cb847e298aad9c83e6 -r899c19a3a7c943aba56a9f3db179e163c26bfd86 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingCalculationsView.cs (.../PipingCalculationsView.cs) (revision 38dd2d81eada00a5bcec11cb847e298aad9c83e6) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingCalculationsView.cs (.../PipingCalculationsView.cs) (revision 899c19a3a7c943aba56a9f3db179e163c26bfd86) @@ -78,14 +78,18 @@ pipingFailureMechanismObserver = new Observer(OnPipingFailureMechanismUpdate); hydraulicBoundaryLocationsObserver = new Observer(UpdateSelectableHydraulicBoundaryLocationsColumn); // The concat is needed to observe the input of calculations in child groups. - pipingInputObserver = new RecursiveObserver(UpdateDataGridViewDataSource, pcg => pcg.Children.Concat(pcg.Children.OfType().Select(pc => pc.InputParameters))); + pipingInputObserver = new RecursiveObserver( + UpdateDataGridViewDataSource, pcg => pcg.Children.Concat( + pcg.Children.OfType().Select(pc => pc.InputParameters))); pipingCalculationGroupObserver = new RecursiveObserver(UpdateDataGridViewDataSource, pcg => pcg.Children); - pipingCalculationObserver = new RecursiveObserver(dataGridViewControl.RefreshDataGridView, pcg => pcg.Children); + pipingCalculationObserver = new RecursiveObserver( + () => dataGridViewControl.RefreshDataGridView(), pcg => pcg.Children); pipingSurfaceLineObserver = new RecursiveObserver(UpdateDataGridViewDataSource, rpslc => rpslc); pipingStochasticSoilModelsObserver = new Observer(OnStochasticSoilModelsUpdate); - stochasticSoilProfileObserver = new RecursiveObserver(dataGridViewControl.RefreshDataGridView, ssmc => ssmc.SelectMany(ssm => ssm.StochasticSoilProfiles)); + stochasticSoilProfileObserver = new RecursiveObserver( + () => dataGridViewControl.RefreshDataGridView(), ssmc => ssmc.SelectMany(ssm => ssm.StochasticSoilProfiles)); } ///