Index: Core/Components/src/Core.Components.Charting.Forms/IChartControl.cs =================================================================== diff -u -rf816a8ef737d38b4f044855b73abf3ea32b79422 -rf04895089d34bddb618db8c7001c574428be10c6 --- Core/Components/src/Core.Components.Charting.Forms/IChartControl.cs (.../IChartControl.cs) (revision f816a8ef737d38b4f044855b73abf3ea32b79422) +++ Core/Components/src/Core.Components.Charting.Forms/IChartControl.cs (.../IChartControl.cs) (revision f04895089d34bddb618db8c7001c574428be10c6) @@ -72,5 +72,10 @@ /// Zooms to a level so that everything is in view. /// void ZoomToAll(); + + /// + /// Sets the data of the chart to null. + /// + void ResetChartData(); } } \ No newline at end of file Index: Core/Components/src/Core.Components.DotSpatial.Forms/MapControl.cs =================================================================== diff -u -r1d8207d879e9aca8d34bd5b62410c04229c7d0d5 -rf04895089d34bddb618db8c7001c574428be10c6 --- Core/Components/src/Core.Components.DotSpatial.Forms/MapControl.cs (.../MapControl.cs) (revision 1d8207d879e9aca8d34bd5b62410c04229c7d0d5) +++ Core/Components/src/Core.Components.DotSpatial.Forms/MapControl.cs (.../MapControl.cs) (revision f04895089d34bddb618db8c7001c574428be10c6) @@ -112,6 +112,11 @@ } } + public void ResetMapData() + { + Data = null; + } + public void UpdateObserver() { DrawFeatureSets(); Index: Core/Components/src/Core.Components.Gis.Forms/IMapControl.cs =================================================================== diff -u -recef7aa46cb8fb7d138a5cc00a35f9e7aa7676b6 -rf04895089d34bddb618db8c7001c574428be10c6 --- Core/Components/src/Core.Components.Gis.Forms/IMapControl.cs (.../IMapControl.cs) (revision ecef7aa46cb8fb7d138a5cc00a35f9e7aa7676b6) +++ Core/Components/src/Core.Components.Gis.Forms/IMapControl.cs (.../IMapControl.cs) (revision f04895089d34bddb618db8c7001c574428be10c6) @@ -67,5 +67,10 @@ /// Toggles the visibility mouse coordinates of the . /// void ToggleMouseCoordinatesVisibility(); + + /// + /// Sets the data of the map to null. + /// + void ResetMapData(); } } \ No newline at end of file Index: Core/Components/src/Core.Components.OxyPlot.Forms/ChartControl.cs =================================================================== diff -u -rba81c979693c5d5467b232696a688b6305e57c5e -rf04895089d34bddb618db8c7001c574428be10c6 --- Core/Components/src/Core.Components.OxyPlot.Forms/ChartControl.cs (.../ChartControl.cs) (revision ba81c979693c5d5467b232696a688b6305e57c5e) +++ Core/Components/src/Core.Components.OxyPlot.Forms/ChartControl.cs (.../ChartControl.cs) (revision f04895089d34bddb618db8c7001c574428be10c6) @@ -159,6 +159,11 @@ DrawSeries(); } + public void ResetChartData() + { + Data = null; + } + #endregion } } \ No newline at end of file Index: Core/Components/test/Core.Components.DotSpatial.Forms.Test/MapControlTest.cs =================================================================== diff -u -r04b631b486b742c5339deb1d5504bb13ab5e248d -rf04895089d34bddb618db8c7001c574428be10c6 --- Core/Components/test/Core.Components.DotSpatial.Forms.Test/MapControlTest.cs (.../MapControlTest.cs) (revision 04b631b486b742c5339deb1d5504bb13ab5e248d) +++ Core/Components/test/Core.Components.DotSpatial.Forms.Test/MapControlTest.cs (.../MapControlTest.cs) (revision f04895089d34bddb618db8c7001c574428be10c6) @@ -685,6 +685,23 @@ } } + [Test] + public void ResetMapData_Always_SetsDataToNull() + { + // Setup + using (var map = new MapControl()) + { + // Precondition + Assert.IsNotNull(map.Data); + + // Call + map.ResetMapData(); + + // Assert + Assert.IsNull(map.Data); + } + } + private const double padding = 0.05; private static MapDataCollection GetTestData() Index: Core/Components/test/Core.Components.OxyPlot.Forms.Test/ChartControlTest.cs =================================================================== diff -u -rba81c979693c5d5467b232696a688b6305e57c5e -rf04895089d34bddb618db8c7001c574428be10c6 --- Core/Components/test/Core.Components.OxyPlot.Forms.Test/ChartControlTest.cs (.../ChartControlTest.cs) (revision ba81c979693c5d5467b232696a688b6305e57c5e) +++ Core/Components/test/Core.Components.OxyPlot.Forms.Test/ChartControlTest.cs (.../ChartControlTest.cs) (revision f04895089d34bddb618db8c7001c574428be10c6) @@ -231,5 +231,22 @@ Assert.AreEqual(1, invalidated); } } + + [Test] + public void ResetChartData_Always_SetsDataToNull() + { + // Setup + using (var chart = new ChartControl()) + { + // Precondition + Assert.IsNotNull(chart.Data); + + // Call + chart.ResetChartData(); + + // Assert + Assert.IsNull(chart.Data); + } + } } } \ No newline at end of file Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/AssessmentSectionView.cs =================================================================== diff -u -rf1bd17ba95b3fbae5928d4240523d50d8b83b64d -rf04895089d34bddb618db8c7001c574428be10c6 --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/AssessmentSectionView.cs (.../AssessmentSectionView.cs) (revision f1bd17ba95b3fbae5928d4240523d50d8b83b64d) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/AssessmentSectionView.cs (.../AssessmentSectionView.cs) (revision f04895089d34bddb618db8c7001c574428be10c6) @@ -61,17 +61,37 @@ } set { - data = value as IAssessmentSection; + var newValue = value as IAssessmentSection; - if (data != null) + DetachFromData(); + data = newValue; + if (data == null) { - data.Detach(this); - SetDataToMap(); - data.Attach(this); + Map.ResetMapData(); + return; } + + SetDataToMap(); + AttachToData(); } } + private void AttachToData() + { + if (data != null) + { + data.Attach(this); + } + } + + private void DetachFromData() + { + if (data != null) + { + data.Detach(this); + } + } + public IMapControl Map { get Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/AssessmentSectionViewTest.cs =================================================================== diff -u -r04b631b486b742c5339deb1d5504bb13ab5e248d -rf04895089d34bddb618db8c7001c574428be10c6 --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/AssessmentSectionViewTest.cs (.../AssessmentSectionViewTest.cs) (revision 04b631b486b742c5339deb1d5504bb13ab5e248d) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/AssessmentSectionViewTest.cs (.../AssessmentSectionViewTest.cs) (revision f04895089d34bddb618db8c7001c574428be10c6) @@ -272,7 +272,7 @@ } [Test] - public void UpdateObserver_DataNull_MapDataNotUpdated() + public void Data_SetToNull_MapDataCleared() { // Setup var view = new AssessmentSectionView(); @@ -292,22 +292,15 @@ view.Data = assessmentSection; - MapData dataBeforeUpdate = map.Data; - view.Data = null; + // Precondition + Assert.AreEqual(assessmentSection, view.Data); - assessmentSection.ReferenceLine = new ReferenceLine(); - assessmentSection.ReferenceLine.SetGeometry(new List - { - new Point2D(2.0, 5.0), - new Point2D(34.0, 2.0) - }); - // Call - assessmentSection.NotifyObservers(); + view.Data = null; // Assert Assert.IsNull(view.Data); - Assert.AreEqual(dataBeforeUpdate, map.Data); + Assert.IsNull(view.Map.Data); } private class TestAssessmentSection : Observable, IAssessmentSection Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingFailureMechanismView.cs =================================================================== diff -u -r9b82ed0cf3ec503d05ac1e21243e9c1e1177b9b2 -rf04895089d34bddb618db8c7001c574428be10c6 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingFailureMechanismView.cs (.../PipingFailureMechanismView.cs) (revision 9b82ed0cf3ec503d05ac1e21243e9c1e1177b9b2) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingFailureMechanismView.cs (.../PipingFailureMechanismView.cs) (revision f04895089d34bddb618db8c7001c574428be10c6) @@ -67,6 +67,13 @@ DetachFromData(); data = newValue; + + if (data == null) + { + Map.ResetMapData(); + return; + } + SetDataToMap(); AttachToData(); } Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingInputView.cs =================================================================== diff -u -r6ae3b82563c665574a6e8e1465e1fec3d8080dbe -rf04895089d34bddb618db8c7001c574428be10c6 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingInputView.cs (.../PipingInputView.cs) (revision 6ae3b82563c665574a6e8e1465e1fec3d8080dbe) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingInputView.cs (.../PipingInputView.cs) (revision f04895089d34bddb618db8c7001c574428be10c6) @@ -86,6 +86,13 @@ DetachFromData(); data = newValue; + + if (data == null) + { + Chart.ResetChartData(); + return; + } + SetDataToChart(); AttachToData(); } @@ -107,12 +114,9 @@ private void SetChartTitle() { - if (calculation != null) - { - chartControl.ChartTitle = calculation.Name; - } + chartControl.ChartTitle = calculation != null ? calculation.Name : string.Empty; } - + private void SetDataToChart() { chartControl.Data.Name = Resources.PipingInputContext_NodeDisplayName; Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingFailureMechanismViewTest.cs =================================================================== diff -u -re0e813ab11c3b35020a785cebf275366cd2eaf9d -rf04895089d34bddb618db8c7001c574428be10c6 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingFailureMechanismViewTest.cs (.../PipingFailureMechanismViewTest.cs) (revision e0e813ab11c3b35020a785cebf275366cd2eaf9d) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingFailureMechanismViewTest.cs (.../PipingFailureMechanismViewTest.cs) (revision f04895089d34bddb618db8c7001c574428be10c6) @@ -210,6 +210,33 @@ } [Test] + public void Data_SetToNull_MapDataCleared() + { + // Setup + using (var view = new PipingFailureMechanismView()) + { + var mocks = new MockRepository(); + var assessmentSectionMock = mocks.Stub(); + mocks.ReplayAll(); + + var pipingFailureMechanism = new PipingFailureMechanism(); + var pipingContext = new PipingFailureMechanismContext(pipingFailureMechanism, assessmentSectionMock); + + view.Data = pipingContext; + + // Precondition + Assert.AreEqual(7, view.Map.Data.List.Count); + + // Call + view.Data = null; + + // Assert + Assert.IsNull(view.Data); + Assert.IsNull(view.Map.Data); + } + } + + [Test] public void UpdateObserver_HydraulicBoundaryDatabaseUpdated_SetNewMapData() { // Setup Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingInputViewTest.cs =================================================================== diff -u -r6ae3b82563c665574a6e8e1465e1fec3d8080dbe -rf04895089d34bddb618db8c7001c574428be10c6 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingInputViewTest.cs (.../PipingInputViewTest.cs) (revision 6ae3b82563c665574a6e8e1465e1fec3d8080dbe) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingInputViewTest.cs (.../PipingInputViewTest.cs) (revision f04895089d34bddb618db8c7001c574428be10c6) @@ -104,6 +104,42 @@ } [Test] + public void Data_SetToNull_ChartDataCleared() + { + // Setup + using (PipingInputView view = new PipingInputView()) + { + var points = new[] + { + new Point3D(1.2, 2.3, 4.0), + new Point3D(2.7, 2.8, 6.0) + }; + + var surfaceLine = new RingtoetsPipingSurfaceLine + { + Name = "Surface line name" + }; + surfaceLine.SetGeometry(points); + var input = new PipingInput(new GeneralPipingInput()) + { + SurfaceLine = surfaceLine + }; + + view.Data = input; + + // Precondition + Assert.AreEqual(9, view.Chart.Data.List.Count); + + // Call + view.Data = null; + + // Assert + Assert.IsNull(view.Data); + Assert.IsNull(view.Chart.Data); + } + } + + [Test] public void Calculation_Always_SetsCalculationAndUpdateChartTitle() { // Setup @@ -124,6 +160,32 @@ } [Test] + public void Calculation_SetToNull_ChartTitleCleared() + { + // Setup + using (PipingInputView view = new PipingInputView()) + { + PipingCalculationScenario calculation = new PipingCalculationScenario(new GeneralPipingInput()) + { + Name = "Test name" + }; + + view.Calculation = calculation; + + // Precondition + Assert.AreSame(calculation, view.Calculation); + Assert.AreEqual(calculation.Name, view.Chart.ChartTitle); + + // Call + view.Calculation = null; + + // Assert + Assert.IsNull(view.Calculation); + Assert.AreEqual(string.Empty, view.Chart.ChartTitle); + } + } + + [Test] public void Data_SetChartData_ChartDataSet() { // Setup @@ -222,7 +284,7 @@ } [Test] - public void UpdateObservers_CalculationNotSet_ChartTitleNotUpdated() + public void UpdateObservers_CalculationNotSet_ChartTitleSetToEmptyString() { // Setup using (PipingInputView view = new PipingInputView()) @@ -237,7 +299,7 @@ pipingInput.NotifyObservers(); // Assert - Assert.IsNull(view.Chart.ChartTitle); + Assert.AreEqual(string.Empty, view.Chart.ChartTitle); } } @@ -322,8 +384,13 @@ // Precondition Assert.AreEqual(initialName, view.Chart.ChartTitle); - view.Calculation = null; + var calculation2 = new PipingCalculationScenario(new GeneralPipingInput()) + { + Name = initialName + }; + view.Calculation = calculation2; + calculation.Name = updatedName; // Call @@ -483,53 +550,6 @@ } [Test] - public void UpdateObserver_DataNull_ChartDataNotUpdated() - { - // Setup - using (PipingInputView view = new PipingInputView()) - { - var points = new[] - { - new Point3D(1.2, 2.3, 4.0), - new Point3D(2.7, 2.8, 6.0) - }; - - var surfaceLine = new RingtoetsPipingSurfaceLine - { - Name = "Surface line name" - }; - surfaceLine.SetGeometry(points); - var input = new PipingInput(new GeneralPipingInput()) - { - SurfaceLine = surfaceLine - }; - - view.Data = input; - - ChartData dataBeforeUpdate = view.Chart.Data; - - view.Data = null; - - var points2 = new[] - { - new Point3D(3.5, 2.3, 8.0), - new Point3D(6.9, 2.0, 2.0) - }; - - var surfaceLine2 = new RingtoetsPipingSurfaceLine(); - surfaceLine2.SetGeometry(points2); - - input.SurfaceLine = surfaceLine2; - - // Call - input.NotifyObservers(); - - // Assert - Assert.AreEqual(dataBeforeUpdate, view.Chart.Data); - } - } - - [Test] public void NotifyObservers_DataUpdatedNotifyObserversOnOldData_NoUpdateInViewData() { // Setup