Index: Ringtoets/Common/src/Ringtoets.Common.Forms/Views/IllustrationPointRow.cs
===================================================================
diff -u -rc2c7e9621863d470ddd3a1d5c0e4913844066aae -r29c0d37342d76d0bc06b1696aeaf56a316f86a19
--- Ringtoets/Common/src/Ringtoets.Common.Forms/Views/IllustrationPointRow.cs (.../IllustrationPointRow.cs) (revision c2c7e9621863d470ddd3a1d5c0e4913844066aae)
+++ Ringtoets/Common/src/Ringtoets.Common.Forms/Views/IllustrationPointRow.cs (.../IllustrationPointRow.cs) (revision 29c0d37342d76d0bc06b1696aeaf56a316f86a19)
@@ -20,6 +20,7 @@
// All rights reserved.
using System;
+using Core.Common.Utils;
using Ringtoets.Common.Data.Hydraulics.IllustrationPoints;
namespace Ringtoets.Common.Forms.Views
@@ -32,48 +33,62 @@
///
/// Creates a new instance of .
///
- /// The wind direction.
- /// The closing situation.
- /// The calculated probability.
- /// The calculated reliability.
+ ///
/// Thrown when
- /// or
- /// is null.
- public IllustrationPointRow(string windDirection, string closingSituation,
- double probability, double reliability)
+ /// is null.
+ public IllustrationPointRow(TopLevelSubMechanismIllustrationPoint illustrationPoint)
{
- if (windDirection == null)
+ if (illustrationPoint == null)
{
- throw new ArgumentNullException(nameof(windDirection));
+ throw new ArgumentNullException(nameof(illustrationPoint));
}
- if (closingSituation == null)
- {
- throw new ArgumentNullException(nameof(closingSituation));
- }
- WindDirection = windDirection;
- ClosingSituation = closingSituation;
- Probability = probability;
- Reliability = reliability;
+ IllustrationPoint = illustrationPoint;
}
///
/// Gets the wind direction.
///
- public string WindDirection { get; }
+ public string WindDirection
+ {
+ get
+ {
+ return IllustrationPoint.WindDirection.Name;
+ }
+ }
///
/// Gets the closing situation.
///
- public string ClosingSituation { get; }
+ public string ClosingSituation
+ {
+ get
+ {
+ return IllustrationPoint.ClosingSituation;
+ }
+ }
///
/// Gets the calculated probability.
///
- public double Probability { get; }
+ public double Probability
+ {
+ get
+ {
+ return StatisticsConverter.ReliabilityToProbability(IllustrationPoint.SubMechanismIllustrationPoint.Beta);
+ }
+ }
///
/// Gets the calculated reliability.
///
- public double Reliability { get; }
+ public double Reliability
+ {
+ get
+ {
+ return IllustrationPoint.SubMechanismIllustrationPoint.Beta;
+ }
+ }
+
+ public TopLevelSubMechanismIllustrationPoint IllustrationPoint { get; }
}
}
\ No newline at end of file
Index: Ringtoets/Common/src/Ringtoets.Common.Forms/Views/IllustrationPointsTableControl.cs
===================================================================
diff -u -r391454e567c25dbf6ccee1ebd91e7662f3d409ab -r29c0d37342d76d0bc06b1696aeaf56a316f86a19
--- Ringtoets/Common/src/Ringtoets.Common.Forms/Views/IllustrationPointsTableControl.cs (.../IllustrationPointsTableControl.cs) (revision 391454e567c25dbf6ccee1ebd91e7662f3d409ab)
+++ Ringtoets/Common/src/Ringtoets.Common.Forms/Views/IllustrationPointsTableControl.cs (.../IllustrationPointsTableControl.cs) (revision 29c0d37342d76d0bc06b1696aeaf56a316f86a19)
@@ -23,7 +23,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
-using Core.Common.Utils;
+using Core.Common.Controls.Views;
using Ringtoets.Common.Data.Hydraulics.IllustrationPoints;
using Ringtoets.Common.Forms.Properties;
@@ -32,17 +32,20 @@
///
/// Control to show illustration points in a table view.
///
- public partial class IllustrationPointsTableControl : UserControl
+ public partial class IllustrationPointsTableControl : UserControl, ISelectionProvider
{
private const int closingSituationColumnIndex = 1;
private GeneralResultSubMechanismIllustrationPoint data;
+ public event EventHandler SelectionChanged;
+
///
/// Creates a new instance of .
///
public IllustrationPointsTableControl()
{
InitializeComponent();
+ InitializeEventHandlers();
}
///
@@ -66,6 +69,32 @@
}
}
+ public object Selection
+ {
+ get
+ {
+ DataGridViewRow currentRow = illustrationPointsDataGridViewControl.CurrentRow;
+
+ return ((IllustrationPointRow) currentRow?.DataBoundItem)?.IllustrationPoint;
+ }
+ }
+
+ protected override void OnLoad(EventArgs e)
+ {
+ base.OnLoad(e);
+ InitializeDataGridView();
+ }
+
+ private void InitializeEventHandlers()
+ {
+ illustrationPointsDataGridViewControl.AddCurrentCellChangedHandler(DataGridViewOnCurrentCellChangedHandler);
+ }
+
+ private void DataGridViewOnCurrentCellChangedHandler(object sender, EventArgs e)
+ {
+ OnSelectionChanged();
+ }
+
private void UpdateClosingStructureVisibility()
{
if (data != null)
@@ -80,12 +109,6 @@
illustrationPointsDataGridViewControl.SetColumnVisibility(closingSituationColumnIndex, false);
}
- protected override void OnLoad(EventArgs e)
- {
- base.OnLoad(e);
- InitializeDataGridView();
- }
-
private void InitializeDataGridView()
{
illustrationPointsDataGridViewControl.AddTextBoxColumn(nameof(IllustrationPointRow.WindDirection),
@@ -107,11 +130,13 @@
private List CreateRows()
{
return data.TopLevelSubMechanismIllustrationPoints
- .Select(illustrationPoint => new IllustrationPointRow(illustrationPoint.WindDirection.Name,
- illustrationPoint.ClosingSituation,
- StatisticsConverter.ReliabilityToProbability(illustrationPoint.SubMechanismIllustrationPoint.Beta),
- illustrationPoint.SubMechanismIllustrationPoint.Beta))
+ .Select(illustrationPoint => new IllustrationPointRow(illustrationPoint))
.ToList();
}
+
+ private void OnSelectionChanged()
+ {
+ SelectionChanged?.Invoke(this, EventArgs.Empty);
+ }
}
}
\ No newline at end of file
Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/IllustrationPointRowTest.cs
===================================================================
diff -u -rc2866a9d5e5990afc0f141fe2616c3c43d9ab1f9 -r29c0d37342d76d0bc06b1696aeaf56a316f86a19
--- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/IllustrationPointRowTest.cs (.../IllustrationPointRowTest.cs) (revision c2866a9d5e5990afc0f141fe2616c3c43d9ab1f9)
+++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/IllustrationPointRowTest.cs (.../IllustrationPointRowTest.cs) (revision 29c0d37342d76d0bc06b1696aeaf56a316f86a19)
@@ -20,7 +20,10 @@
// All rights reserved.
using System;
+using Core.Common.Utils;
using NUnit.Framework;
+using Ringtoets.Common.Data.Hydraulics.IllustrationPoints;
+using Ringtoets.Common.Data.TestUtil.IllustrationPoints;
using Ringtoets.Common.Forms.Views;
namespace Ringtoets.Common.Forms.Test.Views
@@ -29,44 +32,33 @@
public class IllustrationPointRowTest
{
[Test]
- public void Constructor_WindDirectionNull_ThrowArgumentNullException()
+ public void Constructor_IllustrationPointNull_ThrowArgumentNullException()
{
// Call
- TestDelegate test = () => new IllustrationPointRow(null, string.Empty, 0, 0);
+ TestDelegate test = () => new IllustrationPointRow(null);
// Assert
var exception = Assert.Throws(test);
- Assert.AreEqual("windDirection", exception.ParamName);
+ Assert.AreEqual("illustrationPoint", exception.ParamName);
}
[Test]
- public void Constructor_ClosingSituationNull_ThrowArgumentNullException()
- {
- // Call
- TestDelegate test = () => new IllustrationPointRow("South", null, 0, 0);
-
- // Assert
- var exception = Assert.Throws(test);
- Assert.AreEqual("closingSituation", exception.ParamName);
- }
-
- [Test]
public void Constructor_ExpectedValues()
{
// Setup
- const string windDirection = "South";
- const string closingSituation = "Regular";
- const double probability = 0.2;
- const double reliability = 0.1;
+ var illustrationPoint = new TopLevelSubMechanismIllustrationPoint(
+ new TestWindDirection(), "Regular",
+ new TestSubMechanismIllustrationPoint());
// Call
- var row = new IllustrationPointRow(windDirection, closingSituation, probability, reliability);
+ var row = new IllustrationPointRow(illustrationPoint);
// Assert
- Assert.AreEqual(windDirection, row.WindDirection);
- Assert.AreEqual(closingSituation, row.ClosingSituation);
- Assert.AreEqual(probability, row.Probability);
- Assert.AreEqual(reliability, row.Reliability);
+ Assert.AreSame(illustrationPoint, row.IllustrationPoint);
+ Assert.AreEqual(illustrationPoint.WindDirection.Name, row.WindDirection);
+ Assert.AreEqual(illustrationPoint.ClosingSituation, row.ClosingSituation);
+ Assert.AreEqual(StatisticsConverter.ReliabilityToProbability(illustrationPoint.SubMechanismIllustrationPoint.Beta), row.Probability);
+ Assert.AreEqual(illustrationPoint.SubMechanismIllustrationPoint.Beta, row.Reliability);
}
}
}
\ No newline at end of file
Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/IllustrationPointsTableControlTest.cs
===================================================================
diff -u -r391454e567c25dbf6ccee1ebd91e7662f3d409ab -r29c0d37342d76d0bc06b1696aeaf56a316f86a19
--- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/IllustrationPointsTableControlTest.cs (.../IllustrationPointsTableControlTest.cs) (revision 391454e567c25dbf6ccee1ebd91e7662f3d409ab)
+++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/IllustrationPointsTableControlTest.cs (.../IllustrationPointsTableControlTest.cs) (revision 29c0d37342d76d0bc06b1696aeaf56a316f86a19)
@@ -24,6 +24,8 @@
using System.Linq;
using System.Windows.Forms;
using Core.Common.Controls.DataGrid;
+using Core.Common.Controls.Views;
+using NUnit.Extensions.Forms;
using NUnit.Framework;
using Ringtoets.Common.Data.Hydraulics.IllustrationPoints;
using Ringtoets.Common.Data.TestUtil.IllustrationPoints;
@@ -61,6 +63,7 @@
// Assert
Assert.IsInstanceOf(control);
+ Assert.IsInstanceOf(control);
Assert.IsNull(control.Data);
Assert.AreEqual(1, control.Controls.Count);
Assert.IsInstanceOf(control.Controls[0]);
@@ -195,6 +198,57 @@
Assert.IsFalse(dataGridView.Columns[closingScenarioColumnIndex].Visible);
}
+ [Test]
+ public void GivenFullyConfiguredControl_WhenSelectingCellInRow_ThenSelectionChangedFired()
+ {
+ // Given
+ IllustrationPointsTableControl control = ShowControl();
+ control.Data = GetGeneralResult();
+
+ var selectionChangedCount = 0;
+ control.SelectionChanged += (sender, args) => selectionChangedCount++;
+
+ var dataGridView = (DataGridView)control.Controls.Find("DataGridView", true)[0];
+
+ // When
+ dataGridView.CurrentCell = dataGridView.Rows[1].Cells[calculatedProbabilityColumnIndex];
+ EventHelper.RaiseEvent(dataGridView, "CellClick", new DataGridViewCellEventArgs(0, 0));
+
+ // Then
+ Assert.AreEqual(1, selectionChangedCount);
+ }
+
+ [Test]
+ public void Selection_WithoutIllustrationPoints_ReturnsNull()
+ {
+ // Call
+ using (var control = new IllustrationPointsTableControl())
+ {
+ // Assert
+ Assert.IsNull(control.Selection);
+ }
+ }
+
+ [Test]
+ public void Selection_WithIllustrationPoints_ReturnsSelectedWindDirection()
+ {
+ // Call
+ IllustrationPointsTableControl control = ShowControl();
+ control.Data = GetGeneralResult();
+
+ var dataGridView = (DataGridView)testForm.Controls.Find("dataGridView", true).First();
+ DataGridViewRow selectedLocationRow = dataGridView.Rows[0];
+ selectedLocationRow.Cells[0].Value = true;
+
+ // Assert
+ var selection = control.Selection as TopLevelSubMechanismIllustrationPoint;
+ var dataBoundItem = selectedLocationRow.DataBoundItem as IllustrationPointRow;
+
+ Assert.NotNull(selection);
+ Assert.NotNull(dataBoundItem);
+ Assert.AreSame(dataBoundItem.IllustrationPoint, selection);
+ }
+
private IllustrationPointsTableControl ShowControl()
{
var control = new IllustrationPointsTableControl();