Index: Core/Common/test/Core.Common.TestUtil/DataGridViewTestHelper.cs =================================================================== diff -u -r6a87577fa7123c62be24c8f7a192a496fe41f8fb -rfb94cd8acd30f7c94a6662f68edf858185b71bd2 --- Core/Common/test/Core.Common.TestUtil/DataGridViewTestHelper.cs (.../DataGridViewTestHelper.cs) (revision 6a87577fa7123c62be24c8f7a192a496fe41f8fb) +++ Core/Common/test/Core.Common.TestUtil/DataGridViewTestHelper.cs (.../DataGridViewTestHelper.cs) (revision fb94cd8acd30f7c94a6662f68edf858185b71bd2) @@ -52,6 +52,24 @@ } /// + /// Asserts that all columns match the visibility. + /// + /// The expected column visibility. + /// The view. + /// Thrown when a column does not have the + /// expected visibility or there is a mismatch in the number of columns. + public static void AssertExpectedColumnVisibility(IEnumerable expectedVisibility, DataGridView actualDataGridView) + { + int expectedNrOfColumns = expectedVisibility.Count(); + Assert.AreEqual(expectedNrOfColumns, actualDataGridView.ColumnCount); + for (var i = 0; i < expectedNrOfColumns; i++) + { + DataGridViewColumn column = actualDataGridView.Columns[i]; + Assert.AreEqual(expectedVisibility.ElementAt(i), column.Visible); + } + } + + /// /// Asserts that all columns are of the expected classes. /// /// The column types. Index: Riskeer/DuneErosion/src/Riskeer.DuneErosion.Forms/Views/DuneLocationCalculationsView.cs =================================================================== diff -u -r25dfcb234230ea91032011e683553be6bee37b99 -rfb94cd8acd30f7c94a6662f68edf858185b71bd2 --- Riskeer/DuneErosion/src/Riskeer.DuneErosion.Forms/Views/DuneLocationCalculationsView.cs (.../DuneLocationCalculationsView.cs) (revision 25dfcb234230ea91032011e683553be6bee37b99) +++ Riskeer/DuneErosion/src/Riskeer.DuneErosion.Forms/Views/DuneLocationCalculationsView.cs (.../DuneLocationCalculationsView.cs) (revision fb94cd8acd30f7c94a6662f68edf858185b71bd2) @@ -21,12 +21,14 @@ using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Windows.Forms; using Core.Common.Base; using Core.Common.Controls.Views; using Core.Common.Util.Extensions; using Riskeer.Common.Data.AssessmentSection; +using Riskeer.Common.Data.Hydraulics; using Riskeer.DuneErosion.Data; using Riskeer.DuneErosion.Forms.GuiServices; using Riskeer.DuneErosion.Forms.Properties; @@ -39,16 +41,15 @@ /// public partial class DuneLocationCalculationsView : UserControl, ISelectionProvider, IView { + private const int calculateColumnIndex = 0; + private const int hydraulicBoundaryDatabaseFileNameColumnIndex = 3; private readonly Observer failureMechanismObserver; private readonly Observer duneLocationCalculationsObserver; private readonly IObservableEnumerable calculations; private readonly Func getTargetProbabilityFunc; private readonly Func getCalculationIdentifierFunc; private readonly RecursiveObserver, DuneLocationCalculation> duneLocationCalculationObserver; - private const int calculateColumnIndex = 0; - private const int hydraulicBoundaryDatabaseFileNameColumnIndex = 3; - private bool updatingDataSource; public event EventHandler SelectionChanged; @@ -121,16 +122,6 @@ UpdateDataGridViewDataSource(); } - public object Selection - { - get - { - return CreateSelectedItemFromCurrentRow(); - } - } - - public object Data { get; set; } - /// /// Gets or sets the /// to perform calculations with. @@ -148,10 +139,20 @@ /// public DuneErosionFailureMechanism FailureMechanism { get; } + public object Selection + { + get + { + return CreateSelectedItemFromCurrentRow(); + } + } + + public object Data { get; set; } + protected override void OnLoad(EventArgs e) { base.OnLoad(e); - + InitializeDataGridView(); UpdateDataGridViewColumnVisibility(); } @@ -192,8 +193,8 @@ RiskeerCommonFormsResources.HydraulicBoundaryDatabase_Location_Name_DisplayName); dataGridViewControl.AddTextBoxColumn(nameof(DuneLocationCalculationRow.Id), RiskeerCommonFormsResources.HydraulicBoundaryDatabase_Location_Id_DisplayName); - dataGridViewControl.AddTextBoxColumn(nameof(DuneLocationCalculationRow.Location), - RiskeerCommonFormsResources.HydraulicBoundaryDatabase_Location_Coordinates_DisplayName); + dataGridViewControl.AddTextBoxColumn(nameof(DuneLocationCalculationRow.HydraulicBoundaryDatabaseFileName), + RiskeerCommonFormsResources.HydraulicBoundaryDatabase_DisplayName); dataGridViewControl.AddTextBoxColumn(nameof(DuneLocationCalculationRow.CoastalAreaId), Resources.DuneLocation_CoastalAreaId_DisplayName); dataGridViewControl.AddTextBoxColumn(nameof(DuneLocationCalculationRow.Offset), @@ -278,7 +279,10 @@ private void SetDataSource() { - dataGridViewControl.SetDataSource(calculations?.Select(calc => new DuneLocationCalculationRow(calc, string.Empty)).ToArray()); + Dictionary lookup = GetHydraulicBoundaryLocationLookup(); + dataGridViewControl.SetDataSource( + calculations?.Select(calc => new DuneLocationCalculationRow(calc, lookup[calc.DuneLocation.HydraulicBoundaryLocation])) + .ToArray()); } private void CalculateForSelectedRows() @@ -289,6 +293,20 @@ getCalculationIdentifierFunc()); } + private Dictionary GetHydraulicBoundaryLocationLookup() + { + var lookup = new Dictionary(); + foreach (HydraulicBoundaryDatabase database in AssessmentSection.HydraulicBoundaryData.HydraulicBoundaryDatabases) + { + foreach (HydraulicBoundaryLocation location in database.Locations) + { + lookup[location] = Path.GetFileNameWithoutExtension(database.FilePath); + } + } + + return lookup; + } + #region Event handling private void DataGridViewCellValueChanged(object sender, DataGridViewCellEventArgs e) Index: Riskeer/DuneErosion/test/Riskeer.DuneErosion.Forms.Test/Views/DuneLocationCalculationsViewTest.cs =================================================================== diff -u -r21f561c73f0a7dcee27f6989b84da9d40868069c -rfb94cd8acd30f7c94a6662f68edf858185b71bd2 --- Riskeer/DuneErosion/test/Riskeer.DuneErosion.Forms.Test/Views/DuneLocationCalculationsViewTest.cs (.../DuneLocationCalculationsViewTest.cs) (revision 21f561c73f0a7dcee27f6989b84da9d40868069c) +++ Riskeer/DuneErosion/test/Riskeer.DuneErosion.Forms.Test/Views/DuneLocationCalculationsViewTest.cs (.../DuneLocationCalculationsViewTest.cs) (revision fb94cd8acd30f7c94a6662f68edf858185b71bd2) @@ -27,7 +27,6 @@ using System.Linq; using System.Windows.Forms; using Core.Common.Base; -using Core.Common.Base.Geometry; using Core.Common.Controls.Views; using Core.Common.TestUtil; using Core.Common.Util; @@ -182,6 +181,7 @@ { // Setup var assessmentSection = mocks.Stub(); + assessmentSection.Stub(a => a.HydraulicBoundaryData).Return(new HydraulicBoundaryData()); mocks.ReplayAll(); var failureMechanism = new DuneErosionFailureMechanism(); @@ -229,7 +229,7 @@ "Berekenen", "Naam", "ID", - "Coördinaten [m]", + "HRD bestand", "Kustvaknummer", "Metrering [dam]", "Rekenwaarde waterstand [m+NAP]", @@ -241,6 +241,23 @@ }; DataGridViewTestHelper.AssertExpectedHeaders(expectedHeaderNames, dataGridView); + var expectedColumnVisibility = new[] + { + true, + true, + true, + false, + true, + true, + true, + true, + true, + true, + true, + true + }; + DataGridViewTestHelper.AssertExpectedColumnVisibility(expectedColumnVisibility, dataGridView); + Type[] expectedColumnTypes = { typeof(DataGridViewCheckBoxColumn), @@ -301,7 +318,7 @@ false, "1", "0", - new Point2D(0, 0).ToString(), + "HRD dutch coast south", "50", "320", "-", @@ -318,7 +335,7 @@ false, "2", "0", - new Point2D(0, 0).ToString(), + "HRD dutch coast south", "60", "230", 1.23.ToString(CultureInfo.CurrentCulture), @@ -376,11 +393,27 @@ public void Selection_WithSelectedCalculation_ReturnsSelectedCalculation() { // Setup + var hydraulicBoundaryLocation = new TestHydraulicBoundaryLocation(); + var hydraulicBoundaryData = new HydraulicBoundaryData + { + HydraulicBoundaryDatabases = + { + new HydraulicBoundaryDatabase + { + FilePath = "Just/a/HRD", + Locations = + { + hydraulicBoundaryLocation + } + } + } + }; + var assessmentSection = mocks.Stub(); + assessmentSection.Stub(a => a.HydraulicBoundaryData).Return(hydraulicBoundaryData); mocks.ReplayAll(); - DuneLocationCalculationsView view = ShowFullyConfiguredDuneLocationCalculationsView(assessmentSection, - new TestHydraulicBoundaryLocation()); + DuneLocationCalculationsView view = ShowFullyConfiguredDuneLocationCalculationsView(assessmentSection, hydraulicBoundaryLocation); DataGridView dataGridView = GetDataGridView(); DataGridViewRow selectedCalculationRow = dataGridView.Rows[0]; @@ -481,10 +514,28 @@ public void GivenFullyConfiguredDuneLocationCalculationsView_WhenDuneLocationCalculationsUpdatedAndNotified_ThenDataGridCorrectlyUpdated() { // Given + var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(10, string.Empty, 10.0, 10.0); + var hydraulicBoundaryData = new HydraulicBoundaryData + { + HydraulicBoundaryDatabases = + { + new HydraulicBoundaryDatabase + { + FilePath = "Just/a/HRD", + Locations = + { + hydraulicBoundaryLocation + } + } + } + }; + var assessmentSection = mocks.Stub(); + assessmentSection.Stub(a => a.HydraulicBoundaryData).Return(hydraulicBoundaryData); mocks.ReplayAll(); var calculations = new ObservableList(); + ShowDuneLocationCalculationsView(calculations, new DuneErosionFailureMechanism(), assessmentSection); // Precondition @@ -495,7 +546,7 @@ // When var duneLocation = new DuneLocation( - "10", new HydraulicBoundaryLocation(10, string.Empty, 10.0, 10.0), + "10", hydraulicBoundaryLocation, new DuneLocation.ConstructionProperties { CoastalAreaId = 3, @@ -526,7 +577,7 @@ false, "10", "10", - new Point2D(10, 10).ToString(), + "HRD", "3", "80", 3.21.ToString(CultureInfo.CurrentCulture), @@ -543,9 +594,23 @@ public void GivenFullyConfiguredDuneLocationCalculationsView_WhenEachDuneLocationCalculationOutputClearedAndNotified_ThenDataGridViewRowsRefreshedWithNewValues() { // Given - var hydraulicBoundaryLocation = new TestHydraulicBoundaryLocation(); + var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(10, string.Empty, 10.0, 10.0); + var hydraulicBoundaryData = new HydraulicBoundaryData + { + HydraulicBoundaryDatabases = + { + new HydraulicBoundaryDatabase + { + Locations = + { + hydraulicBoundaryLocation + } + } + } + }; var assessmentSection = mocks.Stub(); + assessmentSection.Stub(a => a.HydraulicBoundaryData).Return(hydraulicBoundaryData); mocks.ReplayAll(); IObservableEnumerable calculations = GenerateDuneLocationCalculations(hydraulicBoundaryLocation); @@ -668,10 +733,26 @@ public void CalculateForSelectedButton_OneSelectedButCalculationGuiServiceNotSet_DoesNotThrowException() { // Setup + var hydraulicBoundaryLocation = new TestHydraulicBoundaryLocation(); + var hydraulicBoundaryData = new HydraulicBoundaryData + { + HydraulicBoundaryDatabases = + { + new HydraulicBoundaryDatabase + { + Locations = + { + hydraulicBoundaryLocation + } + } + } + }; + var assessmentSection = mocks.Stub(); + assessmentSection.Stub(a => a.HydraulicBoundaryData).Return(hydraulicBoundaryData); mocks.ReplayAll(); - ShowFullyConfiguredDuneLocationCalculationsView(assessmentSection, new TestHydraulicBoundaryLocation()); + ShowFullyConfiguredDuneLocationCalculationsView(assessmentSection, hydraulicBoundaryLocation); DataGridView dataGridView = GetDataGridView(); DataGridViewRowCollection rows = dataGridView.Rows;