Index: Core/Common/src/Core.Common.Controls/DataGrid/DataGridViewComboBoxItemWrapper.cs =================================================================== diff -u -r2bece99f4c12df81fb2a6854a24c0e9f4d4d3c42 -r6f96b9e0a720cda453d3402f16103b27523b28a1 --- Core/Common/src/Core.Common.Controls/DataGrid/DataGridViewComboBoxItemWrapper.cs (.../DataGridViewComboBoxItemWrapper.cs) (revision 2bece99f4c12df81fb2a6854a24c0e9f4d4d3c42) +++ Core/Common/src/Core.Common.Controls/DataGrid/DataGridViewComboBoxItemWrapper.cs (.../DataGridViewComboBoxItemWrapper.cs) (revision 6f96b9e0a720cda453d3402f16103b27523b28a1) @@ -48,7 +48,7 @@ { get { - return wrappedObject.ToString(); + return wrappedObject == null ? string.Empty : wrappedObject.ToString(); } } @@ -89,7 +89,7 @@ { return true; } - if (obj.GetType() != this.GetType()) + if (obj.GetType() != GetType()) { return false; } Index: Core/Common/test/Core.Common.Controls.Test/DataGrid/DataGridViewComboBoxItemWrapperTest.cs =================================================================== diff -u -r2bece99f4c12df81fb2a6854a24c0e9f4d4d3c42 -r6f96b9e0a720cda453d3402f16103b27523b28a1 --- Core/Common/test/Core.Common.Controls.Test/DataGrid/DataGridViewComboBoxItemWrapperTest.cs (.../DataGridViewComboBoxItemWrapperTest.cs) (revision 2bece99f4c12df81fb2a6854a24c0e9f4d4d3c42) +++ Core/Common/test/Core.Common.Controls.Test/DataGrid/DataGridViewComboBoxItemWrapperTest.cs (.../DataGridViewComboBoxItemWrapperTest.cs) (revision 6f96b9e0a720cda453d3402f16103b27523b28a1) @@ -7,7 +7,7 @@ public class DataGridViewComboBoxItemWrapperTest { [Test] - public void Constructor_ExpectedValues() + public void Constructor_WithWrappedObject_ExpectedValues() { // Setup var testClass = new TestClass(); @@ -22,6 +22,21 @@ } [Test] + public void Constructor_WithWrappedObjectNull_ExpectedValues() + { + // Setup + var testClass = new TestClass(); + + // Call + var dataGridViewComboBoxItemWrapper = new DataGridViewComboBoxItemWrapper(null); + + // Assert + Assert.AreEqual("", dataGridViewComboBoxItemWrapper.DisplayName); + Assert.IsNull(dataGridViewComboBoxItemWrapper.WrappedObject); + Assert.AreEqual(dataGridViewComboBoxItemWrapper, dataGridViewComboBoxItemWrapper.This); + } + + [Test] public void Equals_EqualsWithItself_ReturnTrue() { // Setup Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingCalculationsView.cs =================================================================== diff -u -rdc5ebf365fdcabf23a0febcc2cbeecce1efa1502 -r6f96b9e0a720cda453d3402f16103b27523b28a1 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingCalculationsView.cs (.../PipingCalculationsView.cs) (revision dc5ebf365fdcabf23a0febcc2cbeecce1efa1502) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingCalculationsView.cs (.../PipingCalculationsView.cs) (revision 6f96b9e0a720cda453d3402f16103b27523b28a1) @@ -19,10 +19,14 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using Core.Common.Base.Data; +using Core.Common.Controls.DataGrid; using Core.Common.Controls.Views; +using Ringtoets.Common.Data; +using Ringtoets.HydraRing.Data; using Ringtoets.Piping.Data; using Ringtoets.Piping.Forms.Properties; @@ -33,7 +37,9 @@ /// public partial class PipingCalculationsView : UserControl, IView { + private AssessmentSectionBase assessmentSection; private PipingCalculationGroup pipingCalculationGroup; + private DataGridViewComboBoxColumn hydraulicBoundaryLocationColumn; /// /// Creates a new instance of the class. @@ -62,6 +68,27 @@ } } + /// + /// Gets or sets the assessment section. + /// + public AssessmentSectionBase AssessmentSection + { + get + { + return assessmentSection; + } + set + { + assessmentSection = value; + + hydraulicBoundaryLocationColumn.DataSource = assessmentSection != null && assessmentSection.HydraulicBoundaryDatabase != null + ? assessmentSection.HydraulicBoundaryDatabase.Locations + .Select(hbl => new DataGridViewComboBoxItemWrapper(hbl)) + .ToList() + : GetDefaultHydraulicBoundaryLocationsDataSource(); + } + } + private void InitializeDataGridView() { var nameColumn = new DataGridViewTextBoxColumn @@ -80,12 +107,15 @@ AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells }; - var hydraulicBoundaryLocationColumn = new DataGridViewTextBoxColumn + hydraulicBoundaryLocationColumn = new DataGridViewComboBoxColumn { DataPropertyName = "HydraulicBoundaryLocation", HeaderText = Resources.PipingInput_HydraulicBoundaryLocation_DisplayName, Name = "column_HydraulicBoundaryLocation", - AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells + AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells, + ValueMember = "This", + DisplayMember = "DisplayName", + DataSource = GetDefaultHydraulicBoundaryLocationsDataSource() }; var dampingFactorExitMeanColumn = new DataGridViewTextBoxColumn @@ -124,6 +154,14 @@ dataGridView.Columns.AddRange(nameColumn, soilProfileColumn, hydraulicBoundaryLocationColumn, dampingFactorExitMeanColumn, phreaticLevelExitMeanColumn, entryPointLColumn, exitPointLColumn); } + private static List> GetDefaultHydraulicBoundaryLocationsDataSource() + { + return new List> + { + new DataGridViewComboBoxItemWrapper(null) + }; + } + private class PipingCalculationRow { private readonly PipingCalculation pipingCalculation; @@ -151,14 +189,16 @@ } } - public string HydraulicBoundaryLocation + public DataGridViewComboBoxItemWrapper HydraulicBoundaryLocation { get { - var hydraulicBoundaryLocation = pipingCalculation.InputParameters.HydraulicBoundaryLocation; - - return hydraulicBoundaryLocation != null ? hydraulicBoundaryLocation.Name : string.Empty; + return new DataGridViewComboBoxItemWrapper(pipingCalculation.InputParameters.HydraulicBoundaryLocation); } + set + { + pipingCalculation.InputParameters.HydraulicBoundaryLocation = value.WrappedObject; + } } public RoundedDouble DampingFactorExitMean Index: Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs =================================================================== diff -u -r10779bb6a6db2d00f4627b2bc190e7e35e1fee3e -r6f96b9e0a720cda453d3402f16103b27523b28a1 --- Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs (.../PipingGuiPlugin.cs) (revision 10779bb6a6db2d00f4627b2bc190e7e35e1fee3e) +++ Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs (.../PipingGuiPlugin.cs) (revision 6f96b9e0a720cda453d3402f16103b27523b28a1) @@ -81,7 +81,8 @@ GetViewName = (view, calculationGroup) => calculationGroup.Name, Image = PipingFormsResources.FolderIcon, AdditionalDataCheck = context => context.WrappedData == context.PipingFailureMechanism.CalculationsGroup, - CloseForData = ClosePipingCalculationsViewForData + CloseForData = ClosePipingCalculationsViewForData, + AfterCreate = (view, context) => view.AssessmentSection = context.AssessmentSection }; } Index: Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/ViewInfos/PipingCalculationsViewInfoTest.cs =================================================================== diff -u -r10779bb6a6db2d00f4627b2bc190e7e35e1fee3e -r6f96b9e0a720cda453d3402f16103b27523b28a1 --- Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/ViewInfos/PipingCalculationsViewInfoTest.cs (.../PipingCalculationsViewInfoTest.cs) (revision 10779bb6a6db2d00f4627b2bc190e7e35e1fee3e) +++ Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/ViewInfos/PipingCalculationsViewInfoTest.cs (.../PipingCalculationsViewInfoTest.cs) (revision 6f96b9e0a720cda453d3402f16103b27523b28a1) @@ -158,5 +158,26 @@ // Call & Assert Assert.IsTrue(info.CloseForData(viewMock, assessmentSectionMock)); } + + [Test] + public void AfterCreate_Always_SetsAssessmentSectionToView() + { + var viewMock = mocks.StrictMock(); + + var assessmentSectionMock = mocks.StrictMock(); + var pipingFailureMechanismMock = mocks.StrictMock(); + var pipingCalculationsGroupMock = mocks.StrictMock(); + var pipingCalculationGroupContext = new PipingCalculationGroupContext(pipingCalculationsGroupMock, Enumerable.Empty(), Enumerable.Empty(), pipingFailureMechanismMock, assessmentSectionMock); + + viewMock.Expect(v => v.AssessmentSection = assessmentSectionMock); + + mocks.ReplayAll(); + + // Call + info.AfterCreate(viewMock, pipingCalculationGroupContext); + + // Assert + mocks.VerifyAll(); + } } }