Index: Core/Components/src/Core.Components.DotSpatial.Forms/Core.Components.DotSpatial.Forms.csproj =================================================================== diff -u -r1795be9025cb0e054dca86a5275203966c0a9b2a -r675771641656abfb56ef89be86bad7bd21684016 --- Core/Components/src/Core.Components.DotSpatial.Forms/Core.Components.DotSpatial.Forms.csproj (.../Core.Components.DotSpatial.Forms.csproj) (revision 1795be9025cb0e054dca86a5275203966c0a9b2a) +++ Core/Components/src/Core.Components.DotSpatial.Forms/Core.Components.DotSpatial.Forms.csproj (.../Core.Components.DotSpatial.Forms.csproj) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -56,8 +56,10 @@ + + Index: Core/Components/src/Core.Components.DotSpatial.Forms/MapControl.cs =================================================================== diff -u -rd710790572caf63c49afdfb5dd71398966a5cd72 -r675771641656abfb56ef89be86bad7bd21684016 --- Core/Components/src/Core.Components.DotSpatial.Forms/MapControl.cs (.../MapControl.cs) (revision d710790572caf63c49afdfb5dd71398966a5cd72) +++ Core/Components/src/Core.Components.DotSpatial.Forms/MapControl.cs (.../MapControl.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -20,15 +20,18 @@ // All rights reserved. using System; +using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using Core.Common.Base; using Core.Components.DotSpatial.Converter; using Core.Components.DotSpatial.MapFunctions; using Core.Components.Gis.Data; +using Core.Components.Gis.Features; using Core.Components.Gis.Forms; using DotSpatial.Controls; using DotSpatial.Data; +using DotSpatial.Symbology; using DotSpatial.Topology; namespace Core.Components.DotSpatial.Forms @@ -39,14 +42,15 @@ public sealed class MapControl : Control, IMapControl { private readonly Cursor defaultCursor = Cursors.Default; + private readonly RecursiveObserver mapDataCollectionObserver; + private readonly IList drawnMapDataList = new List(); private Map map; private MapFunctionPan mapFunctionPan; private MapFunctionSelectionZoom mapFunctionSelectionZoom; private MouseCoordinatesMapExtension mouseCoordinatesMapExtension; + private MapDataCollection data; - private readonly RecursiveObserver mapDataObserver; - /// /// Creates a new instance of . /// @@ -55,14 +59,7 @@ InitializeMapView(); TogglePanning(); - Data = new MapDataCollection("Root"); - - mapDataObserver = new RecursiveObserver(DrawFeatureSets, mdc => mdc.Collection) - { - Observable = Data - }; - - DrawFeatureSets(); + mapDataCollectionObserver = new RecursiveObserver(HandleMapDataCollectionChange, mdc => mdc.Collection); } public bool IsPanningEnabled { get; private set; } @@ -71,8 +68,30 @@ public bool IsMouseCoordinatesVisible { get; private set; } - public MapDataCollection Data { get; private set; } + public MapDataCollection Data + { + get + { + return data; + } + set + { + if (data != null) + { + ClearMapData(); + } + data = value; + + mapDataCollectionObserver.Observable = data; + + if (data != null) + { + DrawInitialMapData(); + } + } + } + public void ZoomToAllVisibleLayers() { IEnvelope envelope = CreateEnvelopeForAllVisibleLayers(); @@ -116,16 +135,11 @@ } } - public void ResetMapData() - { - Data = null; - } - protected override void Dispose(bool disposing) { map.Dispose(); mouseCoordinatesMapExtension.Dispose(); - mapDataObserver.Dispose(); + mapDataCollectionObserver.Dispose(); base.Dispose(disposing); } @@ -157,18 +171,6 @@ map.FunctionMode = FunctionMode.None; } - private void DrawFeatureSets() - { - map.ClearLayers(); - if (Data != null) - { - foreach (IMapFeatureLayer mapLayer in MapFeatureLayerFactory.Create(Data)) - { - map.Layers.Add(mapLayer); - } - } - } - private void InitializeMapView() { map = new DotSpatialMap @@ -197,6 +199,136 @@ Controls.Add(map); } + private void DrawInitialMapData() + { + foreach (var featureBasedMapData in GetFeatureBasedMapDataRecursively(Data)) + { + DrawMapData(featureBasedMapData); + } + } + + private void ClearMapData() + { + foreach (DrawnMapData drawnMapData in drawnMapDataList) + { + drawnMapData.Observer.Dispose(); + } + + drawnMapDataList.Clear(); + + map.ClearLayers(); + } + + private void HandleMapDataCollectionChange() + { + var mapDataThatShouldBeDrawn = GetFeatureBasedMapDataRecursively(Data).ToList(); + var drawnMapDataLookup = drawnMapDataList.ToDictionary(dmd => dmd.FeatureBasedMapData, dmd => dmd); + + DrawMissingMapDataOnCollectionChange(mapDataThatShouldBeDrawn, drawnMapDataLookup); + RemoveRedundantMapDataOnCollectionChange(drawnMapDataLookup, mapDataThatShouldBeDrawn); + + drawnMapDataLookup = drawnMapDataList.ToDictionary(le => le.FeatureBasedMapData, le => le); + + MoveMapDataOnCollectionChange(mapDataThatShouldBeDrawn, drawnMapDataLookup); + } + + private void DrawMissingMapDataOnCollectionChange(List mapDataThatShouldBeDrawn, Dictionary drawnMapDataLookup) + { + foreach (var mapDataToDraw in mapDataThatShouldBeDrawn) + { + if (!drawnMapDataLookup.ContainsKey(mapDataToDraw)) + { + DrawMapData(mapDataToDraw); + } + } + } + + private void RemoveRedundantMapDataOnCollectionChange(Dictionary drawnMapDataLookup, List mapDataThatShouldBeDrawn) + { + foreach (var featureBasedMapData in drawnMapDataLookup.Keys.Except(mapDataThatShouldBeDrawn)) + { + RemoveMapData(drawnMapDataLookup[featureBasedMapData]); + } + } + + private void MoveMapDataOnCollectionChange(List mapDataThatShouldBeDrawn, Dictionary drawnMapDataLookup) + { + for (var i = 0; i < mapDataThatShouldBeDrawn.Count; i++) + { + map.Layers.Move(drawnMapDataLookup[mapDataThatShouldBeDrawn[i]].MapFeatureLayer, i); + } + } + + private void DrawMapData(FeatureBasedMapData featureBasedMapData) + { + var mapFeatureLayer = MapFeatureLayerFactory.Create(featureBasedMapData); + + var drawnMapData = new DrawnMapData + { + FeatureBasedMapData = featureBasedMapData, + Features = featureBasedMapData.Features, + MapFeatureLayer = mapFeatureLayer + }; + + drawnMapData.Observer = new Observer(() => + { + var newMapFeatureLayer = MapFeatureLayerFactory.Create(drawnMapData.FeatureBasedMapData); + + if (ReferenceEquals(drawnMapData.FeatureBasedMapData.Features, drawnMapData.Features)) + { + // Only update some properties when the array of drawn features is still the same + drawnMapData.MapFeatureLayer.IsVisible = newMapFeatureLayer.IsVisible; + ((FeatureLayer) drawnMapData.MapFeatureLayer).Name = ((FeatureLayer) drawnMapData.MapFeatureLayer).Name; + drawnMapData.MapFeatureLayer.ShowLabels = newMapFeatureLayer.ShowLabels; + drawnMapData.MapFeatureLayer.LabelLayer = newMapFeatureLayer.LabelLayer; + drawnMapData.MapFeatureLayer.Symbolizer = newMapFeatureLayer.Symbolizer; + } + else + { + // Otherwise redraw the feature layer and update the drawn map data lookup + var replaceIndex = map.Layers.IndexOf(drawnMapData.MapFeatureLayer); + map.Layers.RemoveAt(replaceIndex); + map.Layers.Insert(replaceIndex, newMapFeatureLayer); + drawnMapData.Features = drawnMapData.FeatureBasedMapData.Features; + drawnMapData.MapFeatureLayer = newMapFeatureLayer; + } + }) + { + Observable = featureBasedMapData + }; + + drawnMapDataList.Add(drawnMapData); + + map.Layers.Add(mapFeatureLayer); + } + + private void RemoveMapData(DrawnMapData drawnMapDataToRemove) + { + drawnMapDataToRemove.Observer.Dispose(); + drawnMapDataList.Remove(drawnMapDataToRemove); + + map.Layers.Remove(drawnMapDataToRemove.MapFeatureLayer); + } + + private static IEnumerable GetFeatureBasedMapDataRecursively(MapDataCollection mapDataCollection) + { + var featureBaseMapDataList = new List(); + + foreach (MapData mapData in mapDataCollection.Collection) + { + var nestedMapDataCollection = mapData as MapDataCollection; + if (nestedMapDataCollection != null) + { + featureBaseMapDataList.AddRange(GetFeatureBasedMapDataRecursively(nestedMapDataCollection)); + continue; + } + + featureBaseMapDataList.Add((FeatureBasedMapData) mapData); + } + + return featureBaseMapDataList; + } + private void MapFunctionActivateFunction(object sender, EventArgs e) { map.Cursor = defaultCursor; @@ -226,5 +358,16 @@ break; } } + + private class DrawnMapData + { + public FeatureBasedMapData FeatureBasedMapData { get; set; } + + public MapFeature[] Features { get; set; } + + public IMapFeatureLayer MapFeatureLayer { get; set; } + + public Observer Observer { get; set; } + } } } \ No newline at end of file Index: Core/Components/src/Core.Components.DotSpatial/Converter/IMapDataConverter.cs =================================================================== diff -u -red96d38a758365e4c0f117def83a2926c589c18a -r675771641656abfb56ef89be86bad7bd21684016 --- Core/Components/src/Core.Components.DotSpatial/Converter/IMapDataConverter.cs (.../IMapDataConverter.cs) (revision ed96d38a758365e4c0f117def83a2926c589c18a) +++ Core/Components/src/Core.Components.DotSpatial/Converter/IMapDataConverter.cs (.../IMapDataConverter.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -20,10 +20,8 @@ // All rights reserved. using System; -using System.Collections.Generic; using Core.Components.Gis.Data; using DotSpatial.Controls; -using DotSpatial.Data; namespace Core.Components.DotSpatial.Converter { @@ -41,12 +39,12 @@ bool CanConvertMapData(MapData data); /// - /// Creates a one or more based on the that was given. + /// Creates a based on the that was given. /// - /// The data to transform into one or more . - /// A new of . + /// The data to transform into a . + /// A new . /// Thrown when returns false. /// Thrown when is null. - IList Convert(MapData data); + IMapFeatureLayer Convert(MapData data); } } \ No newline at end of file Fisheye: Tag 675771641656abfb56ef89be86bad7bd21684016 refers to a dead (removed) revision in file `Core/Components/src/Core.Components.DotSpatial/Converter/MapDataCollectionConverter.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Core/Components/src/Core.Components.DotSpatial/Converter/MapDataConverter.cs =================================================================== diff -u -rd710790572caf63c49afdfb5dd71398966a5cd72 -r675771641656abfb56ef89be86bad7bd21684016 --- Core/Components/src/Core.Components.DotSpatial/Converter/MapDataConverter.cs (.../MapDataConverter.cs) (revision d710790572caf63c49afdfb5dd71398966a5cd72) +++ Core/Components/src/Core.Components.DotSpatial/Converter/MapDataConverter.cs (.../MapDataConverter.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -34,12 +34,12 @@ namespace Core.Components.DotSpatial.Converter { /// - /// The abstract base class for transforming in specific instances. + /// Abstract base class for transforming into . /// public abstract class MapDataConverter : IMapDataConverter where T : MapData { // Needed because DotSpatial can't handle special characters. - // Therefor we create an id as column name for the data table in the featureSet. + // Therefore we create an id as column name for the data table in the featureSet. // We need this lookup to match the selected attribute from the MapData with the created id. private readonly Dictionary columnLookup; @@ -56,27 +56,28 @@ return data is T; } - public IList Convert(MapData data) + public IMapFeatureLayer Convert(MapData data) { if (data == null) { - throw new ArgumentNullException("data", @"Null data cannot be converted into feature sets."); + throw new ArgumentNullException("data", @"Null data cannot be converted into a feature layer."); } if (!CanConvertMapData(data)) { var message = string.Format("The data of type {0} cannot be converted by this converter.", data.GetType()); throw new ArgumentException(message); } + return Convert((T) data); } /// - /// Creates one or more based on the that was given. + /// Creates a based on the that was given. /// - /// The data to transform into one or more . - /// A new of . - protected abstract IList Convert(T data); + /// The data to transform into a . + /// A new . + protected abstract IMapFeatureLayer Convert(T data); protected static IEnumerable ConvertPoint2DElementsToCoordinates(IEnumerable points) { Index: Core/Components/src/Core.Components.DotSpatial/Converter/MapFeatureLayerFactory.cs =================================================================== diff -u -rd710790572caf63c49afdfb5dd71398966a5cd72 -r675771641656abfb56ef89be86bad7bd21684016 --- Core/Components/src/Core.Components.DotSpatial/Converter/MapFeatureLayerFactory.cs (.../MapFeatureLayerFactory.cs) (revision d710790572caf63c49afdfb5dd71398966a5cd72) +++ Core/Components/src/Core.Components.DotSpatial/Converter/MapFeatureLayerFactory.cs (.../MapFeatureLayerFactory.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -20,7 +20,6 @@ // All rights reserved. using System; -using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using Core.Components.Gis.Data; @@ -34,22 +33,21 @@ public static class MapFeatureLayerFactory { /// - /// Creates one or more new from the given . + /// Creates a from the given . /// /// The to base the creation of upon. - /// A new of . + /// A new . /// Thrown when the given type is not supported. - public static IList Create(MapData data) + public static IMapFeatureLayer Create(MapData data) { var converters = new Collection { - new MapDataCollectionConverter(), new MapPointDataConverter(), new MapLineDataConverter(), new MapPolygonDataConverter() }; - foreach (var converter in converters.Where(c => c.CanConvertMapData(data))) + foreach (var converter in converters.Where(c => c.CanConvertMapData(data))) { return converter.Convert(data); } Index: Core/Components/src/Core.Components.DotSpatial/Converter/MapLineDataConverter.cs =================================================================== diff -u -r1520a1345ab3cbd5214edf0919495563d98b0e53 -r675771641656abfb56ef89be86bad7bd21684016 --- Core/Components/src/Core.Components.DotSpatial/Converter/MapLineDataConverter.cs (.../MapLineDataConverter.cs) (revision 1520a1345ab3cbd5214edf0919495563d98b0e53) +++ Core/Components/src/Core.Components.DotSpatial/Converter/MapLineDataConverter.cs (.../MapLineDataConverter.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -19,7 +19,6 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. -using System.Collections.Generic; using System.Drawing.Drawing2D; using System.Linq; using Core.Common.Base.Geometry; @@ -40,18 +39,13 @@ /// public class MapLineDataConverter : MapDataConverter { - protected override IList Convert(MapLineData data) + protected override IMapFeatureLayer Convert(MapLineData data) { var featureSet = new FeatureSet(FeatureType.Line); foreach (var mapFeature in data.Features) { - var feature = new Feature(GetGeometry(mapFeature), featureSet); - - if (data.ShowLabels) - { - AddMetaDataAsAttributes(mapFeature, featureSet, feature); - } + AddMetaDataAsAttributes(mapFeature, featureSet, new Feature(GetGeometry(mapFeature), featureSet)); } featureSet.InitializeVertices(); @@ -66,10 +60,7 @@ CreateStyle(layer, data.Style); - return new List - { - layer - }; + return layer; } private static IBasicGeometry GetGeometry(MapFeature mapFeature) @@ -96,7 +87,7 @@ return lineString; } - private void CreateStyle(MapLineLayer layer, LineStyle style) + private static void CreateStyle(MapLineLayer layer, LineStyle style) { if (style != null) { Index: Core/Components/src/Core.Components.DotSpatial/Converter/MapPointDataConverter.cs =================================================================== diff -u -rbea6d03f513b16bb85259b9f3ad9d34f476d8fde -r675771641656abfb56ef89be86bad7bd21684016 --- Core/Components/src/Core.Components.DotSpatial/Converter/MapPointDataConverter.cs (.../MapPointDataConverter.cs) (revision bea6d03f513b16bb85259b9f3ad9d34f476d8fde) +++ Core/Components/src/Core.Components.DotSpatial/Converter/MapPointDataConverter.cs (.../MapPointDataConverter.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -37,18 +37,17 @@ /// public class MapPointDataConverter : MapDataConverter { - protected override IList Convert(MapPointData data) + protected override IMapFeatureLayer Convert(MapPointData data) { var featureSet = new FeatureSet(FeatureType.Point); foreach (var ringtoetsMapFeature in data.Features) { foreach (var feature in GetAllMapFeatureCoordinates(ringtoetsMapFeature) - .Select(c => new Feature(new Point(c.X, c.Y), featureSet)) - .Where(feature => data.ShowLabels)) - { - AddMetaDataAsAttributes(ringtoetsMapFeature, featureSet, feature); - } + .Select(c => new Feature(new Point(c.X, c.Y), featureSet))) + { + AddMetaDataAsAttributes(ringtoetsMapFeature, featureSet, feature); + } } featureSet.InitializeVertices(); @@ -63,10 +62,7 @@ CreateStyle(layer, data.Style); - return new List - { - layer - }; + return layer; } private static IEnumerable GetAllMapFeatureCoordinates(MapFeature feature) Index: Core/Components/src/Core.Components.DotSpatial/Converter/MapPolygonDataConverter.cs =================================================================== diff -u -r038c9ca2c7731645e350beee83088b4ae20cbc7c -r675771641656abfb56ef89be86bad7bd21684016 --- Core/Components/src/Core.Components.DotSpatial/Converter/MapPolygonDataConverter.cs (.../MapPolygonDataConverter.cs) (revision 038c9ca2c7731645e350beee83088b4ae20cbc7c) +++ Core/Components/src/Core.Components.DotSpatial/Converter/MapPolygonDataConverter.cs (.../MapPolygonDataConverter.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -37,7 +37,7 @@ /// public class MapPolygonDataConverter : MapDataConverter { - protected override IList Convert(MapPolygonData data) + protected override IMapFeatureLayer Convert(MapPolygonData data) { var featureSet = new FeatureSet(FeatureType.Polygon); @@ -63,12 +63,7 @@ geometryList.Add(polygon); } - var feature = new Feature(GetGeometry(geometryList), featureSet); - - if (data.ShowLabels) - { - AddMetaDataAsAttributes(mapFeature, featureSet, feature); - } + AddMetaDataAsAttributes(mapFeature, featureSet, new Feature(GetGeometry(geometryList), featureSet)); } featureSet.InitializeVertices(); @@ -83,10 +78,7 @@ CreateStyle(layer, data.Style); - return new List - { - layer - }; + return layer; } private static IBasicGeometry GetGeometry(List geometryList) Index: Core/Components/src/Core.Components.DotSpatial/Core.Components.DotSpatial.csproj =================================================================== diff -u -r39b0ea19fee7f9373ca435ceed191355713d6749 -r675771641656abfb56ef89be86bad7bd21684016 --- Core/Components/src/Core.Components.DotSpatial/Core.Components.DotSpatial.csproj (.../Core.Components.DotSpatial.csproj) (revision 39b0ea19fee7f9373ca435ceed191355713d6749) +++ Core/Components/src/Core.Components.DotSpatial/Core.Components.DotSpatial.csproj (.../Core.Components.DotSpatial.csproj) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -64,7 +64,6 @@ Properties\GlobalAssembly.cs - Index: Core/Components/src/Core.Components.Gis.Forms/IMapControl.cs =================================================================== diff -u -rf04895089d34bddb618db8c7001c574428be10c6 -r675771641656abfb56ef89be86bad7bd21684016 --- Core/Components/src/Core.Components.Gis.Forms/IMapControl.cs (.../IMapControl.cs) (revision f04895089d34bddb618db8c7001c574428be10c6) +++ Core/Components/src/Core.Components.Gis.Forms/IMapControl.cs (.../IMapControl.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -44,9 +44,9 @@ bool IsMouseCoordinatesVisible { get; } /// - /// Gets the data to show in the . + /// Gets or sets the data to show in the . /// - MapDataCollection Data { get; } + MapDataCollection Data { get; set; } /// /// Zooms to a level so that all visible layers are in view. @@ -67,10 +67,5 @@ /// 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/test/Core.Components.DotSpatial.Forms.Test/MapControlTest.cs =================================================================== diff -u -rc09cca89155759682fcb5f11e1c4bf35051795b0 -r675771641656abfb56ef89be86bad7bd21684016 --- Core/Components/test/Core.Components.DotSpatial.Forms.Test/MapControlTest.cs (.../MapControlTest.cs) (revision c09cca89155759682fcb5f11e1c4bf35051795b0) +++ Core/Components/test/Core.Components.DotSpatial.Forms.Test/MapControlTest.cs (.../MapControlTest.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -48,9 +48,7 @@ // Assert Assert.IsInstanceOf(map); Assert.IsInstanceOf(map); - Assert.IsInstanceOf(map.Data); - Assert.IsNotNull(map.Data); - CollectionAssert.IsEmpty(map.Data.Collection); + Assert.IsNull(map.Data); Assert.IsTrue(map.IsPanningEnabled); Assert.IsFalse(map.IsRectangleZoomingEnabled); Assert.IsTrue(map.IsMouseCoordinatesVisible); @@ -78,77 +76,88 @@ } [Test] - public void Data_NotNull_ReturnsData() + public void GivenMapControlWithoutData_WhenDataSetToMapDataCollection_MapControlUpdated() { - // Setup - using (var map = new MapControl()) - { - var testData = new MapPointData("test data"); - - // Call - map.Data.Add(testData); - - // Assert - Assert.AreSame(testData, map.Data.Collection.First()); - } - } - - [Test] - public void GivenMapControlWithMapData_WhenNestedMapDataAdded_MapControlUpdated() - { // Given using (var map = new MapControl()) { var mapView = map.Controls.OfType().First(); - var testData = new MapPointData("test data"); + var mapPointData = new MapPointData("Points"); + var mapLineData = new MapLineData("Lines"); + var mapPolygonData = new MapPolygonData("Polygons"); + var mapDataCollection = new MapDataCollection("Root collection"); + var nestedMapDataCollection1 = new MapDataCollection("Nested collection 1"); + var nestedMapDataCollection2 = new MapDataCollection("Nested collection 2"); + mapDataCollection.Add(mapPointData); + mapDataCollection.Add(nestedMapDataCollection1); + nestedMapDataCollection1.Add(mapLineData); + nestedMapDataCollection1.Add(nestedMapDataCollection2); + nestedMapDataCollection2.Add(mapPolygonData); + // When - map.Data.Add(testData); - map.Data.NotifyObservers(); + map.Data = mapDataCollection; // Then - Assert.AreEqual(1, mapView.Layers.Count); + Assert.AreEqual(3, mapView.Layers.Count); Assert.IsInstanceOf(mapView.Layers[0]); + Assert.IsInstanceOf(mapView.Layers[1]); + Assert.IsInstanceOf(mapView.Layers[2]); } } [Test] - public void GivenMapControlWithNestedMapData_WhenNestedMapDataChanged_MapControlUpdated() + public void GivenMapControlWithData_WhenMapDataNotifiesFeaturesChange_CorrespondingLayerReplaced() { // Given using (var map = new MapControl()) { - var testData = new MapPointData("test data"); - var view = map.Controls.OfType().First(); + var mapView = map.Controls.OfType().First(); + var mapPointData = new MapPointData("Points"); + var mapLineData = new MapLineData("Lines"); + var mapPolygonData = new MapPolygonData("Polygons"); + var mapDataCollection = new MapDataCollection("Root collection"); + var nestedMapDataCollection1 = new MapDataCollection("Nested collection 1"); + var nestedMapDataCollection2 = new MapDataCollection("Nested collection 2"); - map.Data.Add(testData); - map.Data.NotifyObservers(); + mapDataCollection.Add(mapPointData); + mapDataCollection.Add(nestedMapDataCollection1); + nestedMapDataCollection1.Add(mapLineData); + nestedMapDataCollection1.Add(nestedMapDataCollection2); + nestedMapDataCollection2.Add(mapPolygonData); - var layers = view.Layers.ToList(); + map.Data = mapDataCollection; + var layersBeforeUpdate = mapView.Layers.ToList(); + // Call - testData.NotifyObservers(); + mapLineData.Features = new MapFeature[0]; + mapLineData.NotifyObservers(); // Assert - Assert.AreEqual(1, view.Layers.Count); - Assert.AreNotSame(layers[0], view.Layers[0]); + Assert.AreEqual(3, mapView.Layers.Count); + Assert.AreSame(layersBeforeUpdate[0], mapView.Layers[0]); + Assert.AreNotSame(layersBeforeUpdate[1], mapView.Layers[1]); + Assert.AreSame(layersBeforeUpdate[2], mapView.Layers[2]); } } [Test] [RequiresSTA] - public void ZoomToAllVisibleLayers_MapInFormWithEmptyDataset_ViewInvalidatedLayersSame() + public void ZoomToAllVisibleLayers_MapInFormWithEmptyDataSet_ViewInvalidatedLayersSame() { // Setup using (var map = new MapControl()) { - var testData = new MapPointData("test data"); - var mapView = map.Controls.OfType().First(); + var mapDataCollection = new MapDataCollection("Collection"); + var mapData = new MapPointData("Test data"); var invalidated = 0; + var mapView = map.Controls.OfType().First(); - map.Data.Add(testData); - map.Data.NotifyObservers(); + mapDataCollection.Add(mapData); + map.Data = mapDataCollection; + mapView.Invalidated += (sender, args) => { invalidated++; }; Assert.AreEqual(0, invalidated, "Precondition failed: mapView.Invalidated > 0"); @@ -185,15 +194,18 @@ }) }) }; - var testData = new MapPointData("test data") + var mapDataCollection = new MapDataCollection("Collection"); + var mapData = new MapPointData("Test data") { Features = mapFeatures }; var mapView = map.Controls.OfType().First(); var invalidated = 0; - map.Data.Add(testData); - map.Data.NotifyObservers(); + mapDataCollection.Add(mapData); + + map.Data = mapDataCollection; + form.Controls.Add(map); mapView.Invalidated += (sender, args) => { invalidated++; }; @@ -221,10 +233,9 @@ using (var map = new MapControl()) { var mapView = map.Controls.OfType().First(); - var testData = GetTestData(); - map.Data.Add(testData); - map.Data.NotifyObservers(); + map.Data = GetTestData(); + var expectedExtent = new Extent(0.0, 0.5, 1.6, 2.1); var smallest = expectedExtent.Height < expectedExtent.Width ? expectedExtent.Height : expectedExtent.Width; expectedExtent.ExpandBy(smallest*padding); @@ -254,9 +265,9 @@ using (var map = new MapControl()) { var mapView = map.Controls.OfType().First(); - var mapDataCollection = new MapDataCollection("test data"); + var mapDataCollection = new MapDataCollection("Test data"); - mapDataCollection.Add(new MapPointData("test data") + mapDataCollection.Add(new MapPointData("Test data") { Features = new[] { @@ -274,8 +285,7 @@ } }); - map.Data.Add(mapDataCollection); - map.Data.NotifyObservers(); + map.Data = mapDataCollection; var expectedExtent = new Extent(0.0, 0.0, xMax, yMax); var smallest = expectedExtent.Height < expectedExtent.Width ? expectedExtent.Height : expectedExtent.Width; @@ -676,28 +686,11 @@ } } - [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 static MapDataCollection GetTestData() { - var mapDataCollection = new MapDataCollection("test data"); + var mapDataCollection = new MapDataCollection("Test data"); - mapDataCollection.Add(new MapPointData("test data") + mapDataCollection.Add(new MapPointData("Test data") { Features = new[] { @@ -728,7 +721,7 @@ } }); - mapDataCollection.Add(new MapLineData("test data") + mapDataCollection.Add(new MapLineData("Test data") { Features = new[] { @@ -747,7 +740,7 @@ } }); - mapDataCollection.Add(new MapPolygonData("test data") + mapDataCollection.Add(new MapPolygonData("Test data") { Features = new[] { Fisheye: Tag 675771641656abfb56ef89be86bad7bd21684016 refers to a dead (removed) revision in file `Core/Components/test/Core.Components.DotSpatial.Test/Converter/MapDataCollectionConverterTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Core/Components/test/Core.Components.DotSpatial.Test/Converter/MapDataConverterTest.cs =================================================================== diff -u -red96d38a758365e4c0f117def83a2926c589c18a -r675771641656abfb56ef89be86bad7bd21684016 --- Core/Components/test/Core.Components.DotSpatial.Test/Converter/MapDataConverterTest.cs (.../MapDataConverterTest.cs) (revision ed96d38a758365e4c0f117def83a2926c589c18a) +++ Core/Components/test/Core.Components.DotSpatial.Test/Converter/MapDataConverterTest.cs (.../MapDataConverterTest.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -20,7 +20,6 @@ // All rights reserved. using System; -using System.Collections.Generic; using Core.Common.TestUtil; using Core.Components.DotSpatial.Converter; using Core.Components.DotSpatial.TestUtil; @@ -60,7 +59,7 @@ TestDelegate test = () => testConverter.Convert(null); // Assert - const string expectedMessage = "Null data cannot be converted into feature sets."; + const string expectedMessage = "Null data cannot be converted into a feature layer."; TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage); } @@ -111,9 +110,9 @@ private class TestMapDataConverter : MapDataConverter where T : MapData { - protected override IList Convert(T data) + protected override IMapFeatureLayer Convert(T data) { - return new List(); // Dummy implementation + return new MapPointLayer(); } } } Index: Core/Components/test/Core.Components.DotSpatial.Test/Converter/MapFeatureLayerFactoryTest.cs =================================================================== diff -u -rd710790572caf63c49afdfb5dd71398966a5cd72 -r675771641656abfb56ef89be86bad7bd21684016 --- Core/Components/test/Core.Components.DotSpatial.Test/Converter/MapFeatureLayerFactoryTest.cs (.../MapFeatureLayerFactoryTest.cs) (revision d710790572caf63c49afdfb5dd71398966a5cd72) +++ Core/Components/test/Core.Components.DotSpatial.Test/Converter/MapFeatureLayerFactoryTest.cs (.../MapFeatureLayerFactoryTest.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -20,16 +20,13 @@ // All rights reserved. using System; -using System.Collections.Generic; -using System.Linq; using Core.Common.Base.Geometry; using Core.Components.DotSpatial.Converter; using Core.Components.DotSpatial.TestUtil; using Core.Components.Gis.Data; using Core.Components.Gis.Features; using Core.Components.Gis.Geometries; using DotSpatial.Controls; -using DotSpatial.Topology; using NUnit.Framework; namespace Core.Components.DotSpatial.Test.Converter @@ -41,101 +38,45 @@ public void Create_MapPointData_ReturnMapPointLayer() { // Call - IList layers = MapFeatureLayerFactory.Create(new MapPointData("test data") + IMapFeatureLayer layer = MapFeatureLayerFactory.Create(new MapPointData("test data") { Features = CreateTestData() }); // Assert - Assert.IsInstanceOf>(layers); - var layer = layers[0]; + Assert.AreEqual(3, layer.DataSet.Features.Count); Assert.IsInstanceOf(layer); } [Test] public void Create_MapLineData_ReturnMapLineLayer() { // Call - IList layers = MapFeatureLayerFactory.Create(new MapLineData("test data") + IMapFeatureLayer layer = MapFeatureLayerFactory.Create(new MapLineData("test data") { Features = CreateTestData() }); // Assert - Assert.IsInstanceOf>(layers); - var layer = layers[0]; + Assert.AreEqual(1, layer.DataSet.Features.Count); Assert.IsInstanceOf(layer); } [Test] public void Create_MapPolygonData_ReturnMapPolygonLayer() { // Call - IList layers = MapFeatureLayerFactory.Create(new MapPolygonData("test data") + IMapFeatureLayer layer = MapFeatureLayerFactory.Create(new MapPolygonData("test data") { Features = CreateTestData() }); // Assert - Assert.IsInstanceOf>(layers); - var layer = layers[0]; Assert.AreEqual(1, layer.DataSet.Features.Count); Assert.IsInstanceOf(layer); - Assert.IsInstanceOf(layer.DataSet.Features[0].BasicGeometry); - Assert.AreEqual(FeatureType.Polygon, layer.DataSet.FeatureType); } [Test] - public void Create_MapDataCollection_ReturnMapLayersCorrespondingToListItems() - { - // Setup - var testData = CreateTestData(); - var mapDataCollection = new MapDataCollection("test data"); - - mapDataCollection.Add(new MapPointData("test data") - { - Features = testData - }); - - mapDataCollection.Add(new MapLineData("test data") - { - Features = testData - }); - - mapDataCollection.Add(new MapPolygonData("test data") - { - Features = testData - }); - - var points = testData.First().MapGeometries.First().PointCollections.First().ToArray(); - - // Call - IList layers = MapFeatureLayerFactory.Create(mapDataCollection); - - // Assert - Assert.IsInstanceOf>(layers); - Assert.AreEqual(3, layers.Count); - - var layer = layers[0]; - Assert.AreEqual(points.Length, layer.DataSet.Features.Count); - Assert.IsInstanceOf(layer); - Assert.AreEqual(FeatureType.Point, layer.DataSet.FeatureType); - CollectionAssert.AreNotEqual(testData, layer.DataSet.Features[0].Coordinates); - - layer = layers[1]; - Assert.AreEqual(1, layer.DataSet.Features.Count); - Assert.IsInstanceOf(layer); - Assert.IsInstanceOf(layer.DataSet.Features[0].BasicGeometry); - Assert.AreEqual(FeatureType.Line, layer.DataSet.FeatureType); - - layer = layers[2]; - Assert.AreEqual(1, layer.DataSet.Features.Count); - Assert.IsInstanceOf(layer); - Assert.IsInstanceOf(layer.DataSet.Features[0].BasicGeometry); - Assert.AreEqual(FeatureType.Polygon, layer.DataSet.FeatureType); - } - - [Test] public void Create_OtherData_ThrownsNotSupportedException() { // Setup Index: Core/Components/test/Core.Components.DotSpatial.Test/Converter/MapLineDataConverterTest.cs =================================================================== diff -u -rd710790572caf63c49afdfb5dd71398966a5cd72 -r675771641656abfb56ef89be86bad7bd21684016 --- Core/Components/test/Core.Components.DotSpatial.Test/Converter/MapLineDataConverterTest.cs (.../MapLineDataConverterTest.cs) (revision d710790572caf63c49afdfb5dd71398966a5cd72) +++ Core/Components/test/Core.Components.DotSpatial.Test/Converter/MapLineDataConverterTest.cs (.../MapLineDataConverterTest.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -105,7 +105,7 @@ TestDelegate test = () => testConverter.Convert(null); // Assert - const string expectedMessage = "Null data cannot be converted into feature sets."; + const string expectedMessage = "Null data cannot be converted into a feature layer."; TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage); } @@ -155,10 +155,9 @@ }; // Call - var mapLayers = converter.Convert(lineData); + IMapFeatureLayer layer = converter.Convert(lineData); // Assert - var layer = mapLayers[0]; Assert.IsInstanceOf(layer.DataSet.Features[0].BasicGeometry); } @@ -199,10 +198,9 @@ }; // Call - var mapLayers = converter.Convert(lineData); + IMapFeatureLayer layer = converter.Convert(lineData); // Assert - var layer = mapLayers[0]; Assert.IsInstanceOf(layer.DataSet.Features[0].BasicGeometry); } @@ -237,12 +235,9 @@ }; // Call - var mapLayers = converter.Convert(lineData); + IMapFeatureLayer layer = converter.Convert(lineData); // Assert - Assert.IsInstanceOf>(mapLayers); - var layer = mapLayers[0]; - Assert.AreEqual(lineData.Features.ToArray().Length, layer.DataSet.Features.Count); Assert.IsInstanceOf(layer); Assert.AreEqual(FeatureType.Line, layer.DataSet.FeatureType); @@ -287,19 +282,20 @@ }; // Call - IList mapLayers = converter.Convert(lineData); + IMapFeatureLayer layer = converter.Convert(lineData); // Assert - Assert.IsInstanceOf>(mapLayers); - IMapFeatureLayer layer = mapLayers[0]; - Assert.AreEqual(lineData.Features.ToArray().Length, layer.DataSet.Features.Count); Assert.IsInstanceOf(layer); Assert.AreEqual(FeatureType.Line, layer.DataSet.FeatureType); CollectionAssert.AreNotEqual(lineData.Features.First().MapGeometries.First().PointCollections, layer.DataSet.Features[0].Coordinates); Assert.IsFalse(layer.ShowLabels); - CollectionAssert.IsEmpty(layer.DataSet.GetColumns()); + DataColumn[] dataColumns = layer.DataSet.GetColumns(); + Assert.AreEqual(2, dataColumns.Length); + Assert.AreEqual("1", dataColumns[0].ColumnName); + Assert.AreEqual("2", dataColumns[1].ColumnName); + Assert.IsNotNull(layer.LabelLayer); Assert.AreEqual("FID", layer.LabelLayer.Symbology.Categories[0].Symbolizer.PriorityField); Assert.IsNull(layer.LabelLayer.Symbology.Categories[0].Expression); @@ -340,12 +336,9 @@ }; // Call - IList mapLayers = converter.Convert(lineData); + IMapFeatureLayer layer = converter.Convert(lineData); // Assert - Assert.IsInstanceOf>(mapLayers); - IMapFeatureLayer layer = mapLayers[0]; - Assert.AreEqual(lineData.Features.ToArray().Length, layer.DataSet.Features.Count); Assert.IsInstanceOf(layer); Assert.AreEqual(FeatureType.Line, layer.DataSet.FeatureType); @@ -396,12 +389,9 @@ }; // Call - var mapLayers = converter.Convert(lineData); + IMapFeatureLayer layer = converter.Convert(lineData); // Assert - Assert.IsInstanceOf>(mapLayers); - var layer = mapLayers[0]; - Assert.AreEqual(1, mapLayers.Count); Assert.IsInstanceOf(layer); } @@ -423,11 +413,9 @@ }; // Call - var mapLayers = converter.Convert(lineData); + IMapFeatureLayer layer = converter.Convert(lineData); // Assert - Assert.AreEqual(1, mapLayers.Count); - var layer = mapLayers[0]; Assert.AreEqual(features.Length, layer.DataSet.Features.Count); } @@ -483,11 +471,9 @@ }; // Call - var mapLayers = converter.Convert(lineData); + IMapFeatureLayer layer = converter.Convert(lineData); // Assert - Assert.AreEqual(1, mapLayers.Count); - var layer = mapLayers[0]; Assert.AreEqual(features.Length, layer.DataSet.Features.Count); layer.DataSet.InitializeVertices(); var layerGeometries = layer.DataSet.ShapeIndices.First().Parts; @@ -507,10 +493,10 @@ }; // Call - var layers = converter.Convert(data); + IMapFeatureLayer layer = converter.Convert(data); // Assert - Assert.AreEqual(isVisible, layers.First().IsVisible); + Assert.AreEqual(isVisible, layer.IsVisible); } [Test] @@ -522,10 +508,9 @@ var data = new MapLineData(name); // Call - var layers = converter.Convert(data); + var layer = (MapLineLayer) converter.Convert(data); // Assert - var layer = (MapLineLayer) layers.First(); Assert.AreEqual(name, layer.Name); } @@ -545,10 +530,9 @@ }; // Call - var layers = converter.Convert(data); + var layer = (MapLineLayer) converter.Convert(data); // Assert - var layer = (MapLineLayer) layers.First(); AssertAreEqual(new LineSymbolizer(expectedColor, expectedColor, 3, DashStyle.Solid, LineCap.Round), layer.Symbolizer); } @@ -567,10 +551,9 @@ }; // Call - var layers = converter.Convert(data); + var layer = (MapLineLayer) converter.Convert(data); // Assert - var layer = (MapLineLayer) layers.First(); AssertAreEqual(new LineSymbolizer(Color.AliceBlue, Color.AliceBlue, width, DashStyle.Solid, LineCap.Round), layer.Symbolizer); } @@ -589,14 +572,13 @@ }; // Call - var layers = converter.Convert(data); + var layer = (MapLineLayer) converter.Convert(data); // Assert - var layer = (MapLineLayer) layers.First(); AssertAreEqual(new LineSymbolizer(Color.AliceBlue, Color.AliceBlue, 3, lineStyle, LineCap.Round), layer.Symbolizer); } - private void AssertAreEqual(ILineSymbolizer firstSymbolizer, ILineSymbolizer secondSymbolizer) + private static void AssertAreEqual(ILineSymbolizer firstSymbolizer, ILineSymbolizer secondSymbolizer) { var firstStrokes = firstSymbolizer.Strokes; var secondStrokes = secondSymbolizer.Strokes; Index: Core/Components/test/Core.Components.DotSpatial.Test/Converter/MapPointDataConverterTest.cs =================================================================== diff -u -rd710790572caf63c49afdfb5dd71398966a5cd72 -r675771641656abfb56ef89be86bad7bd21684016 --- Core/Components/test/Core.Components.DotSpatial.Test/Converter/MapPointDataConverterTest.cs (.../MapPointDataConverterTest.cs) (revision d710790572caf63c49afdfb5dd71398966a5cd72) +++ Core/Components/test/Core.Components.DotSpatial.Test/Converter/MapPointDataConverterTest.cs (.../MapPointDataConverterTest.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -126,12 +126,9 @@ }; // Call - var mapLayers = converter.Convert(pointData); + IMapFeatureLayer layer = converter.Convert(pointData); // Assert - Assert.IsInstanceOf>(mapLayers); - var layer = mapLayers[0]; - Assert.AreEqual(pointData.Features.ToArray().Length, layer.DataSet.Features.Count); Assert.IsInstanceOf(layer); Assert.AreEqual(FeatureType.Point, layer.DataSet.FeatureType); @@ -143,7 +140,7 @@ Assert.AreEqual("FID", layer.LabelLayer.Symbology.Categories[0].Symbolizer.PriorityField); Assert.IsNull(layer.LabelLayer.Symbology.Categories[0].Expression); } - + [Test] public void Convert_RandomPointDataWithAttributesShowLabelsFalse_ReturnsNewMapPointLayerListWithDefaultLabelLayer() { @@ -178,24 +175,25 @@ }; // Call - IList mapLayers = converter.Convert(pointData); + IMapFeatureLayer layer = converter.Convert(pointData); // Assert - Assert.IsInstanceOf>(mapLayers); - IMapFeatureLayer layer = mapLayers[0]; - Assert.AreEqual(pointData.Features.ToArray().Length, layer.DataSet.Features.Count); Assert.IsInstanceOf(layer); Assert.AreEqual(FeatureType.Point, layer.DataSet.FeatureType); CollectionAssert.AreNotEqual(pointData.Features.First().MapGeometries.First().PointCollections, layer.DataSet.Features[0].Coordinates); Assert.IsFalse(layer.ShowLabels); - CollectionAssert.IsEmpty(layer.DataSet.GetColumns()); + DataColumn[] dataColumns = layer.DataSet.GetColumns(); + Assert.AreEqual(2, dataColumns.Length); + Assert.AreEqual("1", dataColumns[0].ColumnName); + Assert.AreEqual("2", dataColumns[1].ColumnName); + Assert.IsNotNull(layer.LabelLayer); Assert.AreEqual("FID", layer.LabelLayer.Symbology.Categories[0].Symbolizer.PriorityField); Assert.IsNull(layer.LabelLayer.Symbology.Categories[0].Expression); } - + [Test] [TestCase("ID", 1)] [TestCase("Name", 2)] @@ -233,12 +231,9 @@ }; // Call - IList mapLayers = converter.Convert(pointData); + IMapFeatureLayer layer = converter.Convert(pointData); // Assert - Assert.IsInstanceOf>(mapLayers); - IMapFeatureLayer layer = mapLayers[0]; - Assert.AreEqual(pointData.Features.ToArray().Length, layer.DataSet.Features.Count); Assert.IsInstanceOf(layer); Assert.AreEqual(FeatureType.Point, layer.DataSet.FeatureType); @@ -303,10 +298,9 @@ }; // Call - var layers = converter.Convert(pointData); + IMapFeatureLayer layer = converter.Convert(pointData); // Assert - var layer = layers.First(); Assert.AreEqual(features.Length, layer.DataSet.Features.Count); layer.DataSet.InitializeVertices(); Assert.AreEqual(3, layer.DataSet.ShapeIndices.Count); @@ -327,7 +321,7 @@ TestDelegate test = () => testConverter.Convert(null); // Assert - const string expectedMessage = "Null data cannot be converted into feature sets."; + const string expectedMessage = "Null data cannot be converted into a feature layer."; TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage); } @@ -362,10 +356,10 @@ }; // Call - var layers = converter.Convert(data); + IMapFeatureLayer layer = converter.Convert(data); // Assert - Assert.AreEqual(isVisible, layers.First().IsVisible); + Assert.AreEqual(isVisible, layer.IsVisible); } [Test] @@ -377,10 +371,9 @@ var data = new MapPointData(name); // Call - var layers = converter.Convert(data); + var layer = (MapPointLayer) converter.Convert(data); // Assert - var layer = (MapPointLayer) layers.First(); Assert.AreEqual(name, layer.Name); } @@ -400,10 +393,9 @@ }; // Call - var layers = converter.Convert(data); + var layer = (MapPointLayer) converter.Convert(data); // Assert - var layer = (MapPointLayer) layers.First(); AssertAreEqual(new PointSymbolizer(expectedColor, PointShape.Ellipse, 3), layer.Symbolizer); } @@ -422,10 +414,9 @@ }; // Call - var layers = converter.Convert(data); + var layer = (MapPointLayer) converter.Convert(data); // Assert - var layer = (MapPointLayer) layers.First(); AssertAreEqual(new PointSymbolizer(Color.AliceBlue, PointShape.Ellipse, width), layer.Symbolizer); } @@ -444,10 +435,9 @@ }; // Call - var layers = converter.Convert(data); + var layer = (MapPointLayer) converter.Convert(data); // Assert - var layer = (MapPointLayer) layers.First(); PointShape expectedPointShape = pointStyle == PointSymbol.Circle ? PointShape.Ellipse : pointStyle == PointSymbol.Square @@ -456,7 +446,7 @@ AssertAreEqual(new PointSymbolizer(Color.AliceBlue, expectedPointShape, 3), layer.Symbolizer); } - private void AssertAreEqual(IPointSymbolizer firstSymbolizer, IPointSymbolizer secondSymbolizer) + private static void AssertAreEqual(IPointSymbolizer firstSymbolizer, IPointSymbolizer secondSymbolizer) { var firstSymbols = firstSymbolizer.Symbols; var secondSymbols = secondSymbolizer.Symbols; Index: Core/Components/test/Core.Components.DotSpatial.Test/Converter/MapPolygonDataConverterTest.cs =================================================================== diff -u -rd710790572caf63c49afdfb5dd71398966a5cd72 -r675771641656abfb56ef89be86bad7bd21684016 --- Core/Components/test/Core.Components.DotSpatial.Test/Converter/MapPolygonDataConverterTest.cs (.../MapPolygonDataConverterTest.cs) (revision d710790572caf63c49afdfb5dd71398966a5cd72) +++ Core/Components/test/Core.Components.DotSpatial.Test/Converter/MapPolygonDataConverterTest.cs (.../MapPolygonDataConverterTest.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -126,11 +126,9 @@ }; // Call - var mapLayers = converter.Convert(polygonData); + IMapFeatureLayer layer = converter.Convert(polygonData); // Assert - Assert.IsInstanceOf>(mapLayers); - var layer = mapLayers[0]; Assert.AreEqual(1, layer.DataSet.Features.Count); Assert.IsInstanceOf(layer); Assert.AreEqual(FeatureType.Polygon, layer.DataSet.FeatureType); @@ -159,17 +157,15 @@ }; // Call - IList layers = new MapPolygonDataConverter().Convert(polygonData); + var layer = (PolygonLayer) new MapPolygonDataConverter().Convert(polygonData); // Assert - Assert.AreEqual(1, layers.Count); - var polygonLayer = (MapPolygonLayer) layers[0]; - Assert.AreEqual(polygonData.IsVisible, polygonLayer.IsVisible); - Assert.AreEqual(layerName, polygonLayer.Name); - Assert.AreEqual(FeatureType.Polygon, polygonLayer.FeatureSet.FeatureType); - Assert.AreEqual(1, polygonLayer.FeatureSet.Features.Count); + Assert.AreEqual(polygonData.IsVisible, layer.IsVisible); + Assert.AreEqual(layerName, layer.Name); + Assert.AreEqual(FeatureType.Polygon, layer.FeatureSet.FeatureType); + Assert.AreEqual(1, layer.FeatureSet.Features.Count); - var polygonGeometry = (Polygon)polygonLayer.FeatureSet.Features[0].BasicGeometry; + var polygonGeometry = (Polygon) layer.FeatureSet.Features[0].BasicGeometry; Assert.AreEqual(1, polygonGeometry.NumGeometries); CollectionAssert.AreEqual(outerRingPoints, polygonGeometry.Shell.Coordinates.Select(c => new Point2D(c.X, c.Y))); @@ -202,19 +198,17 @@ }; // Call - IList layers = new MapPolygonDataConverter().Convert(polygonData); + var layer = (PolygonLayer) new MapPolygonDataConverter().Convert(polygonData); // Assert - Assert.AreEqual(1, layers.Count); - var polygonLayer = (MapPolygonLayer) layers[0]; - Assert.AreEqual(polygonData.IsVisible, polygonLayer.IsVisible); - Assert.AreEqual(layerName, polygonLayer.Name); - Assert.AreEqual(FeatureType.Polygon, polygonLayer.FeatureSet.FeatureType); - Assert.AreEqual(1, polygonLayer.FeatureSet.Features.Count); + Assert.AreEqual(polygonData.IsVisible, layer.IsVisible); + Assert.AreEqual(layerName, layer.Name); + Assert.AreEqual(FeatureType.Polygon, layer.FeatureSet.FeatureType); + Assert.AreEqual(1, layer.FeatureSet.Features.Count); - var polygonGeometry = (Polygon)polygonLayer.FeatureSet.Features[0].BasicGeometry; + var polygonGeometry = (Polygon) layer.FeatureSet.Features[0].BasicGeometry; Assert.AreEqual(1, polygonGeometry.NumGeometries); - + CollectionAssert.AreEqual(outerRingPoints, polygonGeometry.Shell.Coordinates.Select(c => new Point2D(c.X, c.Y))); Assert.AreEqual(2, polygonGeometry.Holes.Length); CollectionAssert.AreEqual(innerRing1Points, polygonGeometry.Holes.ElementAt(0).Coordinates.Select(c => new Point2D(c.X, c.Y))); @@ -239,11 +233,9 @@ }; // Call - var mapLayers = converter.Convert(polygonData); + IMapFeatureLayer layer = converter.Convert(polygonData); // Assert - Assert.AreEqual(1, mapLayers.Count); - var layer = mapLayers[0]; Assert.AreEqual(features.Length, layer.DataSet.Features.Count); } @@ -298,11 +290,9 @@ }; // Call - var mapLayers = converter.Convert(polygonData); + IMapFeatureLayer layer = converter.Convert(polygonData); // Assert - Assert.AreEqual(1, mapLayers.Count); - var layer = mapLayers[0]; Assert.AreEqual(features.Length, layer.DataSet.Features.Count); layer.DataSet.InitializeVertices(); var layerGeometries = layer.DataSet.ShapeIndices.First().Parts; @@ -319,7 +309,7 @@ TestDelegate test = () => testConverter.Convert(null); // Assert - const string expectedMessage = "Null data cannot be converted into feature sets."; + const string expectedMessage = "Null data cannot be converted into a feature layer."; TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage); } @@ -375,10 +365,9 @@ }; // Call - var mapLayers = converter.Convert(polygonData); + IMapFeatureLayer layer = converter.Convert(polygonData); // Assert - var layer = mapLayers[0]; Assert.IsInstanceOf(layer.DataSet.Features[0].BasicGeometry); } @@ -431,10 +420,9 @@ }; // Call - var mapLayers = converter.Convert(lineData); + IMapFeatureLayer layer = converter.Convert(lineData); // Assert - var layer = mapLayers[0]; Assert.IsInstanceOf(layer.DataSet.Features[0].BasicGeometry); } @@ -472,12 +460,9 @@ }; // Call - var mapLayers = converter.Convert(polygonData); + IMapFeatureLayer layer = converter.Convert(polygonData); // Assert - Assert.IsInstanceOf>(mapLayers); - var layer = mapLayers[0]; - Assert.AreEqual(polygonData.Features.ToArray().Length, layer.DataSet.Features.Count); Assert.IsInstanceOf(layer); Assert.AreEqual(FeatureType.Polygon, layer.DataSet.FeatureType); @@ -526,19 +511,20 @@ }; // Call - IList mapLayers = converter.Convert(polygonData); + IMapFeatureLayer layer = converter.Convert(polygonData); // Assert - Assert.IsInstanceOf>(mapLayers); - IMapFeatureLayer layer = mapLayers[0]; - Assert.AreEqual(polygonData.Features.ToArray().Length, layer.DataSet.Features.Count); Assert.IsInstanceOf(layer); Assert.AreEqual(FeatureType.Polygon, layer.DataSet.FeatureType); CollectionAssert.AreNotEqual(polygonData.Features.First().MapGeometries.First().PointCollections, layer.DataSet.Features[0].Coordinates); Assert.IsFalse(layer.ShowLabels); - CollectionAssert.IsEmpty(layer.DataSet.GetColumns()); + DataColumn[] dataColumns = layer.DataSet.GetColumns(); + Assert.AreEqual(2, dataColumns.Length); + Assert.AreEqual("1", dataColumns[0].ColumnName); + Assert.AreEqual("2", dataColumns[1].ColumnName); + Assert.IsNotNull(layer.LabelLayer); Assert.AreEqual("FID", layer.LabelLayer.Symbology.Categories[0].Symbolizer.PriorityField); Assert.IsNull(layer.LabelLayer.Symbology.Categories[0].Expression); @@ -583,12 +569,9 @@ }; // Call - IList mapLayers = converter.Convert(polygonData); + IMapFeatureLayer layer = converter.Convert(polygonData); // Assert - Assert.IsInstanceOf>(mapLayers); - IMapFeatureLayer layer = mapLayers[0]; - Assert.AreEqual(polygonData.Features.ToArray().Length, layer.DataSet.Features.Count); Assert.IsInstanceOf(layer); Assert.AreEqual(FeatureType.Polygon, layer.DataSet.FeatureType); @@ -621,10 +604,10 @@ }; // Call - var layers = converter.Convert(data); + IMapFeatureLayer layer = converter.Convert(data); // Assert - Assert.AreEqual(isVisible, layers.First().IsVisible); + Assert.AreEqual(isVisible, layer.IsVisible); } [Test] @@ -636,10 +619,9 @@ var data = new MapPolygonData(name); // Call - var layers = converter.Convert(data); + var layer = (MapPolygonLayer) converter.Convert(data); // Assert - var layer = (MapPolygonLayer) layers.First(); Assert.AreEqual(name, layer.Name); } @@ -659,10 +641,9 @@ }; // Call - var layers = converter.Convert(data); + var layer = (MapPolygonLayer) converter.Convert(data); // Assert - var layer = (MapPolygonLayer) layers.First(); AssertAreEqual(new PolygonSymbolizer(expectedColor, Color.AliceBlue, 3), layer.Symbolizer); } @@ -682,10 +663,9 @@ }; // Call - var layers = converter.Convert(data); + var layer = (MapPolygonLayer) converter.Convert(data); // Assert - var layer = (MapPolygonLayer) layers.First(); AssertAreEqual(new PolygonSymbolizer(Color.AliceBlue, expectedColor, 3), layer.Symbolizer); } @@ -704,10 +684,9 @@ }; // Call - var layers = converter.Convert(data); + var layer = (MapPolygonLayer) converter.Convert(data); // Assert - var layer = (MapPolygonLayer) layers.First(); AssertAreEqual(new PolygonSymbolizer(Color.AliceBlue, Color.AliceBlue, width), layer.Symbolizer); } @@ -723,7 +702,7 @@ }; } - private void AssertAreEqual(IPolygonSymbolizer firstSymbolizer, IPolygonSymbolizer secondSymbolizer) + private static void AssertAreEqual(IPolygonSymbolizer firstSymbolizer, IPolygonSymbolizer secondSymbolizer) { var firstSymbols = firstSymbolizer.Patterns; var secondSymbols = secondSymbolizer.Patterns; Index: Core/Components/test/Core.Components.DotSpatial.Test/Core.Components.DotSpatial.Test.csproj =================================================================== diff -u -r39b0ea19fee7f9373ca435ceed191355713d6749 -r675771641656abfb56ef89be86bad7bd21684016 --- Core/Components/test/Core.Components.DotSpatial.Test/Core.Components.DotSpatial.Test.csproj (.../Core.Components.DotSpatial.Test.csproj) (revision 39b0ea19fee7f9373ca435ceed191355713d6749) +++ Core/Components/test/Core.Components.DotSpatial.Test/Core.Components.DotSpatial.Test.csproj (.../Core.Components.DotSpatial.Test.csproj) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -78,7 +78,6 @@ Properties\GlobalAssembly.cs - Index: Demo/Ringtoets/src/Demo.Ringtoets/Views/MapDataView.cs =================================================================== diff -u -rfea3ed82dfb6dfcad535eef16efcbaa9c01564ed -r675771641656abfb56ef89be86bad7bd21684016 --- Demo/Ringtoets/src/Demo.Ringtoets/Views/MapDataView.cs (.../MapDataView.cs) (revision fea3ed82dfb6dfcad535eef16efcbaa9c01564ed) +++ Demo/Ringtoets/src/Demo.Ringtoets/Views/MapDataView.cs (.../MapDataView.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -30,8 +30,6 @@ /// public partial class MapDataView : UserControl, IMapView { - private MapDataCollection data; - /// /// Creates a new instance of . /// @@ -44,22 +42,11 @@ { get { - return data; + return Map.Data; } set { - data = (MapDataCollection) value; - - if (data != null) - { - foreach (var mapData in data.Collection) - { - Map.Data.Add(mapData); - } - - Map.Data.Name = data.Name; - Map.Data.NotifyObservers(); - } + Map.Data = value as MapDataCollection; } } Index: Demo/Ringtoets/test/Demo.Ringtoets.Test/Views/MapDataViewTest.cs =================================================================== diff -u -rfea3ed82dfb6dfcad535eef16efcbaa9c01564ed -r675771641656abfb56ef89be86bad7bd21684016 --- Demo/Ringtoets/test/Demo.Ringtoets.Test/Views/MapDataViewTest.cs (.../MapDataViewTest.cs) (revision fea3ed82dfb6dfcad535eef16efcbaa9c01564ed) +++ Demo/Ringtoets/test/Demo.Ringtoets.Test/Views/MapDataViewTest.cs (.../MapDataViewTest.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -49,19 +49,16 @@ } [Test] - public void DefaultConstructor_Always_AddsMapControl() + public void DefaultConstructor_Always_AddEmptyMapControl() { // Call - using (var mapView = new MapDataView()) + using (var view = new MapDataView()) { // Assert - Assert.AreEqual(1, mapView.Controls.Count); - object mapObject = mapView.Controls[0]; - Assert.IsInstanceOf(mapObject); - - var map = (MapControl) mapObject; - Assert.AreEqual(DockStyle.Fill, map.Dock); - Assert.NotNull(mapView.Map); + Assert.AreEqual(1, view.Controls.Count); + Assert.AreSame(view.Map, view.Controls[0]); + Assert.AreEqual(DockStyle.Fill, ((Control)view.Map).Dock); + Assert.IsNull(view.Map.Data); } } @@ -84,7 +81,7 @@ } [Test] - public void Data_SetToObject_ThrowsInvalidCastException() + public void Data_SetToObject_DoesNotThrow() { // Setup using (var mapView = new MapDataView()) @@ -93,7 +90,8 @@ TestDelegate testDelegate = () => mapView.Data = new object(); // Assert - Assert.Throws(testDelegate); + Assert.DoesNotThrow(testDelegate); + Assert.IsNull(mapView.Data); } } Index: Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Forms/Views/ClosingStructuresFailureMechanismView.cs =================================================================== diff -u -r8c5e80bfb6d67d30ee660f6901461bcc76aff057 -r675771641656abfb56ef89be86bad7bd21684016 --- Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Forms/Views/ClosingStructuresFailureMechanismView.cs (.../ClosingStructuresFailureMechanismView.cs) (revision 8c5e80bfb6d67d30ee660f6901461bcc76aff057) +++ Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Forms/Views/ClosingStructuresFailureMechanismView.cs (.../ClosingStructuresFailureMechanismView.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -25,14 +25,14 @@ using Core.Common.Base; using Core.Components.Gis.Data; using Core.Components.Gis.Forms; -using Ringtoets.Common.Data.DikeProfiles; -using Ringtoets.Common.Forms.Views; using Ringtoets.ClosingStructures.Data; using Ringtoets.ClosingStructures.Forms.PresentationObjects; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Calculation; +using Ringtoets.Common.Data.DikeProfiles; using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Data.Structures; +using Ringtoets.Common.Forms.Views; using Ringtoets.HydraRing.Data; using RingtoetsCommonDataResources = Ringtoets.Common.Data.Properties.Resources; using ClosingStructuresDataResources = Ringtoets.ClosingStructures.Data.Properties.Resources; @@ -54,6 +54,7 @@ private readonly RecursiveObserver calculationGroupObserver; private readonly RecursiveObserver> calculationObserver; + private readonly MapDataCollection mapDataCollection; private readonly MapLineData referenceLineMapData; private readonly MapLineData sectionsMapData; private readonly MapPointData sectionsStartPointMapData; @@ -83,27 +84,24 @@ calculationGroupObserver = new RecursiveObserver(UpdateMapData, pcg => pcg.Children); calculationObserver = new RecursiveObserver>(UpdateMapData, pcg => pcg.Children); + mapDataCollection = new MapDataCollection(ClosingStructuresDataResources.ClosingStructuresFailureMechanism_DisplayName); referenceLineMapData = RingtoetsMapDataFactory.CreateReferenceLineMapData(); hydraulicBoundaryDatabaseMapData = RingtoetsMapDataFactory.CreateHydraulicBoundaryDatabaseMapData(); foreshoreProfilesMapData = RingtoetsMapDataFactory.CreateForeshoreProfileMapData(); structuresMapData = RingtoetsMapDataFactory.CreateStructuresMapData(); - sectionsMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsMapData(); sectionsStartPointMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsStartPointMapData(); sectionsEndPointMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsEndPointMapData(); calculationsMapData = RingtoetsMapDataFactory.CreateCalculationsMapData(); - mapControl.Data.Add(referenceLineMapData); - mapControl.Data.Add(sectionsMapData); - mapControl.Data.Add(sectionsStartPointMapData); - mapControl.Data.Add(sectionsEndPointMapData); - mapControl.Data.Add(hydraulicBoundaryDatabaseMapData); - mapControl.Data.Add(foreshoreProfilesMapData); - mapControl.Data.Add(structuresMapData); - mapControl.Data.Add(calculationsMapData); - - mapControl.Data.Name = ClosingStructuresDataResources.ClosingStructuresFailureMechanism_DisplayName; - mapControl.Data.NotifyObservers(); + mapDataCollection.Add(referenceLineMapData); + mapDataCollection.Add(sectionsMapData); + mapDataCollection.Add(sectionsStartPointMapData); + mapDataCollection.Add(sectionsEndPointMapData); + mapDataCollection.Add(hydraulicBoundaryDatabaseMapData); + mapDataCollection.Add(foreshoreProfilesMapData); + mapDataCollection.Add(structuresMapData); + mapDataCollection.Add(calculationsMapData); } public object Data @@ -126,6 +124,8 @@ calculationInputObserver.Observable = null; calculationGroupObserver.Observable = null; calculationObserver.Observable = null; + + Map.Data = null; } else { @@ -137,8 +137,11 @@ calculationInputObserver.Observable = data.WrappedData.CalculationsGroup; calculationGroupObserver.Observable = data.WrappedData.CalculationsGroup; calculationObserver.Observable = data.WrappedData.CalculationsGroup; + + SetMapDataFeatures(); + + mapControl.Data = mapDataCollection; } - UpdateMapData(); } } @@ -169,32 +172,36 @@ private void UpdateMapData() { - if (data == null) - { - Map.ResetMapData(); - } - else - { - ReferenceLine referenceLine = data.Parent.ReferenceLine; - IEnumerable failureMechanismSections = data.WrappedData.Sections; - HydraulicBoundaryDatabase hydraulicBoundaryDatabase = data.Parent.HydraulicBoundaryDatabase; - IEnumerable foreshoreProfiles = data.WrappedData.ForeshoreProfiles; - IEnumerable structures = data.WrappedData.ClosingStructures; - IEnumerable> calculations = - data.WrappedData.CalculationsGroup.GetCalculations().Cast>(); + SetMapDataFeatures(); - referenceLineMapData.Features = RingtoetsMapDataFeaturesFactory.CreateReferenceLineFeatures(referenceLine, data.Parent.Id, data.Parent.Name); - sectionsMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionFeatures(failureMechanismSections); - sectionsStartPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionStartPointFeatures(failureMechanismSections); - sectionsEndPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionEndPointFeatures(failureMechanismSections); - hydraulicBoundaryDatabaseMapData.Features = RingtoetsMapDataFeaturesFactory.CreateHydraulicBoundaryDatabaseFeaturesWithDefaultLabels(hydraulicBoundaryDatabase); - foreshoreProfilesMapData.Features = RingtoetsMapDataFeaturesFactory.CreateForeshoreProfilesFeatures(foreshoreProfiles); - structuresMapData.Features = RingtoetsMapDataFeaturesFactory.CreateStructuresFeatures(structures); - calculationsMapData.Features = RingtoetsMapDataFeaturesFactory.CreateStructureCalculationsFeatures - (calculations); + referenceLineMapData.NotifyObservers(); + sectionsMapData.NotifyObservers(); + sectionsStartPointMapData.NotifyObservers(); + sectionsEndPointMapData.NotifyObservers(); + hydraulicBoundaryDatabaseMapData.NotifyObservers(); + foreshoreProfilesMapData.NotifyObservers(); + structuresMapData.NotifyObservers(); + calculationsMapData.NotifyObservers(); + } - mapControl.Data.NotifyObservers(); - } + private void SetMapDataFeatures() + { + ReferenceLine referenceLine = data.Parent.ReferenceLine; + IEnumerable failureMechanismSections = data.WrappedData.Sections; + HydraulicBoundaryDatabase hydraulicBoundaryDatabase = data.Parent.HydraulicBoundaryDatabase; + IEnumerable foreshoreProfiles = data.WrappedData.ForeshoreProfiles; + IEnumerable structures = data.WrappedData.ClosingStructures; + IEnumerable> calculations = + data.WrappedData.CalculationsGroup.GetCalculations().Cast>(); + + referenceLineMapData.Features = RingtoetsMapDataFeaturesFactory.CreateReferenceLineFeatures(referenceLine, data.Parent.Id, data.Parent.Name); + sectionsMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionFeatures(failureMechanismSections); + sectionsStartPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionStartPointFeatures(failureMechanismSections); + sectionsEndPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionEndPointFeatures(failureMechanismSections); + hydraulicBoundaryDatabaseMapData.Features = RingtoetsMapDataFeaturesFactory.CreateHydraulicBoundaryDatabaseFeaturesWithDefaultLabels(hydraulicBoundaryDatabase); + foreshoreProfilesMapData.Features = RingtoetsMapDataFeaturesFactory.CreateForeshoreProfilesFeatures(foreshoreProfiles); + structuresMapData.Features = RingtoetsMapDataFeaturesFactory.CreateStructuresFeatures(structures); + calculationsMapData.Features = RingtoetsMapDataFeaturesFactory.CreateStructureCalculationsFeatures(calculations); } } } \ No newline at end of file Index: Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Forms.Test/Views/ClosingStructuresFailureMechanismViewTest.cs =================================================================== diff -u -r8c5e80bfb6d67d30ee660f6901461bcc76aff057 -r675771641656abfb56ef89be86bad7bd21684016 --- Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Forms.Test/Views/ClosingStructuresFailureMechanismViewTest.cs (.../ClosingStructuresFailureMechanismViewTest.cs) (revision 8c5e80bfb6d67d30ee660f6901461bcc76aff057) +++ Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Forms.Test/Views/ClosingStructuresFailureMechanismViewTest.cs (.../ClosingStructuresFailureMechanismViewTest.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -76,7 +76,7 @@ } [Test] - public void DefaultConstructor_Always_AddMapControlWithCollectionOfEmptyMapData() + public void DefaultConstructor_Always_AddEmptyMapControl() { // Call using (var view = new ClosingStructuresFailureMechanismView()) @@ -85,8 +85,7 @@ Assert.AreEqual(1, view.Controls.Count); Assert.AreSame(view.Map, view.Controls[0]); Assert.AreEqual(DockStyle.Fill, ((Control) view.Map).Dock); - Assert.AreEqual(ClosingStructuresDataResources.ClosingStructuresFailureMechanism_DisplayName, view.Map.Data.Name); - AssertEmptyMapData(view.Map.Data); + Assert.IsNull(view.Map.Data); } } Index: Ringtoets/Common/src/Ringtoets.Common.Forms/Views/FailureMechanismView.cs =================================================================== diff -u -r8c5e80bfb6d67d30ee660f6901461bcc76aff057 -r675771641656abfb56ef89be86bad7bd21684016 --- Ringtoets/Common/src/Ringtoets.Common.Forms/Views/FailureMechanismView.cs (.../FailureMechanismView.cs) (revision 8c5e80bfb6d67d30ee660f6901461bcc76aff057) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/Views/FailureMechanismView.cs (.../FailureMechanismView.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -37,10 +37,13 @@ /// public partial class FailureMechanismView : UserControl, IMapView where T : IFailureMechanism { + private const string defaultMapDataCollectionName = "-"; + private readonly Observer failureMechanismObserver; private readonly Observer assessmentSectionObserver; private readonly Observer hydraulicBoundaryLocationObserver; + private readonly MapDataCollection mapDataCollection; private readonly MapLineData referenceLineMapData; private readonly MapLineData sectionsMapData; private readonly MapPointData sectionsStartPointMapData; @@ -60,20 +63,18 @@ assessmentSectionObserver = new Observer(UpdateMapData); hydraulicBoundaryLocationObserver = new Observer(UpdateMapData); + mapDataCollection = new MapDataCollection(defaultMapDataCollectionName); referenceLineMapData = RingtoetsMapDataFactory.CreateReferenceLineMapData(); hydraulicBoundaryDatabaseMapData = RingtoetsMapDataFactory.CreateHydraulicBoundaryDatabaseMapData(); - sectionsMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsMapData(); sectionsStartPointMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsStartPointMapData(); sectionsEndPointMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsEndPointMapData(); - mapControl.Data.Add(referenceLineMapData); - mapControl.Data.Add(sectionsMapData); - mapControl.Data.Add(sectionsStartPointMapData); - mapControl.Data.Add(sectionsEndPointMapData); - mapControl.Data.Add(hydraulicBoundaryDatabaseMapData); - - mapControl.Data.NotifyObservers(); + mapDataCollection.Add(referenceLineMapData); + mapDataCollection.Add(sectionsMapData); + mapDataCollection.Add(sectionsStartPointMapData); + mapDataCollection.Add(sectionsEndPointMapData); + mapDataCollection.Add(hydraulicBoundaryDatabaseMapData); } public object Data @@ -92,16 +93,22 @@ assessmentSectionObserver.Observable = null; hydraulicBoundaryLocationObserver.Observable = null; - Map.ResetMapData(); - return; + mapDataCollection.Name = defaultMapDataCollectionName; + + Map.Data = null; } + else + { + failureMechanismObserver.Observable = data.WrappedData; + assessmentSectionObserver.Observable = data.Parent; - mapControl.Data.Name = data.WrappedData.Name; - failureMechanismObserver.Observable = data.WrappedData; - assessmentSectionObserver.Observable = data.Parent; + mapDataCollection.Name = data.WrappedData.Name; hydraulicBoundaryLocationObserver.Observable = data.Parent.HydraulicBoundaryDatabase; - UpdateMapData(); + SetMapDataFeatures(); + + Map.Data = mapDataCollection; + } } } @@ -128,24 +135,26 @@ private void UpdateMapData() { - ReferenceLine referenceLine = null; - HydraulicBoundaryDatabase hydraulicBoundaryDatabase = null; - IEnumerable failureMechanismSections = null; + SetMapDataFeatures(); - if (data != null) - { - referenceLine = data.Parent.ReferenceLine; - hydraulicBoundaryDatabase = data.Parent.HydraulicBoundaryDatabase; - failureMechanismSections = data.WrappedData.Sections; - } + referenceLineMapData.NotifyObservers(); + sectionsMapData.NotifyObservers(); + sectionsStartPointMapData.NotifyObservers(); + sectionsEndPointMapData.NotifyObservers(); + hydraulicBoundaryDatabaseMapData.NotifyObservers(); + } + private void SetMapDataFeatures() + { + ReferenceLine referenceLine = data.Parent.ReferenceLine; + HydraulicBoundaryDatabase hydraulicBoundaryDatabase = data.Parent.HydraulicBoundaryDatabase; + IEnumerable failureMechanismSections = data.WrappedData.Sections; + referenceLineMapData.Features = RingtoetsMapDataFeaturesFactory.CreateReferenceLineFeatures(referenceLine, data.Parent.Id, data.Parent.Name); sectionsMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionFeatures(failureMechanismSections); sectionsStartPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionStartPointFeatures(failureMechanismSections); sectionsEndPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionEndPointFeatures(failureMechanismSections); hydraulicBoundaryDatabaseMapData.Features = RingtoetsMapDataFeaturesFactory.CreateHydraulicBoundaryDatabaseFeaturesWithDefaultLabels(hydraulicBoundaryDatabase); - - mapControl.Data.NotifyObservers(); } } } \ No newline at end of file Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/FailureMechanismViewTest.cs =================================================================== diff -u -r8c5e80bfb6d67d30ee660f6901461bcc76aff057 -r675771641656abfb56ef89be86bad7bd21684016 --- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/FailureMechanismViewTest.cs (.../FailureMechanismViewTest.cs) (revision 8c5e80bfb6d67d30ee660f6901461bcc76aff057) +++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/FailureMechanismViewTest.cs (.../FailureMechanismViewTest.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -67,7 +67,7 @@ } [Test] - public void DefaultConstructor_Always_AddMapControlWithCollectionOfEmptyMapData() + public void DefaultConstructor_Always_AddEmptyMapControl() { // Call using (var view = new FailureMechanismView()) @@ -76,7 +76,7 @@ Assert.AreEqual(1, view.Controls.Count); Assert.AreSame(view.Map, view.Controls[0]); Assert.AreEqual(DockStyle.Fill, ((Control) view.Map).Dock); - AssertEmptyMapData(view.Map.Data); + Assert.IsNull(view.Map.Data); } } Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsFailureMechanismView.cs =================================================================== diff -u -r8c5e80bfb6d67d30ee660f6901461bcc76aff057 -r675771641656abfb56ef89be86bad7bd21684016 --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsFailureMechanismView.cs (.../GrassCoverErosionInwardsFailureMechanismView.cs) (revision 8c5e80bfb6d67d30ee660f6901461bcc76aff057) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsFailureMechanismView.cs (.../GrassCoverErosionInwardsFailureMechanismView.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -53,6 +53,7 @@ private readonly RecursiveObserver calculationGroupObserver; private readonly RecursiveObserver calculationObserver; + private readonly MapDataCollection mapDataCollection; private readonly MapLineData referenceLineMapData; private readonly MapLineData sectionsMapData; private readonly MapPointData sectionsStartPointMapData; @@ -81,27 +82,24 @@ calculationGroupObserver = new RecursiveObserver(UpdateMapData, pcg => pcg.Children); calculationObserver = new RecursiveObserver(UpdateMapData, pcg => pcg.Children); + mapDataCollection = new MapDataCollection(GrassCoverErosionInwardsDataResources.GrassCoverErosionInwardsFailureMechanism_DisplayName); referenceLineMapData = RingtoetsMapDataFactory.CreateReferenceLineMapData(); hydraulicBoundaryDatabaseMapData = RingtoetsMapDataFactory.CreateHydraulicBoundaryDatabaseMapData(); dikeProfilesMapData = RingtoetsMapDataFactory.CreateDikeProfileMapData(); foreshoreProfilesMapData = RingtoetsMapDataFactory.CreateForeshoreProfileMapData(); - sectionsMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsMapData(); sectionsStartPointMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsStartPointMapData(); sectionsEndPointMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsEndPointMapData(); calculationsMapData = RingtoetsMapDataFactory.CreateCalculationsMapData(); - mapControl.Data.Add(referenceLineMapData); - mapControl.Data.Add(sectionsMapData); - mapControl.Data.Add(sectionsStartPointMapData); - mapControl.Data.Add(sectionsEndPointMapData); - mapControl.Data.Add(hydraulicBoundaryDatabaseMapData); - mapControl.Data.Add(dikeProfilesMapData); - mapControl.Data.Add(foreshoreProfilesMapData); - mapControl.Data.Add(calculationsMapData); - - mapControl.Data.Name = GrassCoverErosionInwardsDataResources.GrassCoverErosionInwardsFailureMechanism_DisplayName; - mapControl.Data.NotifyObservers(); + mapDataCollection.Add(referenceLineMapData); + mapDataCollection.Add(sectionsMapData); + mapDataCollection.Add(sectionsStartPointMapData); + mapDataCollection.Add(sectionsEndPointMapData); + mapDataCollection.Add(hydraulicBoundaryDatabaseMapData); + mapDataCollection.Add(dikeProfilesMapData); + mapDataCollection.Add(foreshoreProfilesMapData); + mapDataCollection.Add(calculationsMapData); } public object Data @@ -123,6 +121,8 @@ calculationInputObserver.Observable = null; calculationGroupObserver.Observable = null; calculationObserver.Observable = null; + + Map.Data = null; } else { @@ -133,9 +133,11 @@ calculationInputObserver.Observable = data.WrappedData.CalculationsGroup; calculationGroupObserver.Observable = data.WrappedData.CalculationsGroup; calculationObserver.Observable = data.WrappedData.CalculationsGroup; - } - UpdateMapData(); + SetMapDataFeatures(); + + Map.Data = mapDataCollection; + } } } @@ -166,30 +168,35 @@ private void UpdateMapData() { - if (data == null) - { - Map.ResetMapData(); - } - else - { - ReferenceLine referenceLine = data.Parent.ReferenceLine; - IEnumerable failureMechanismSections = data.WrappedData.Sections; - HydraulicBoundaryDatabase hydraulicBoundaryDatabase = data.Parent.HydraulicBoundaryDatabase; - IEnumerable dikeProfiles = data.WrappedData.DikeProfiles; - IEnumerable calculations = - data.WrappedData.CalculationsGroup.GetCalculations().Cast(); + SetMapDataFeatures(); - referenceLineMapData.Features = RingtoetsMapDataFeaturesFactory.CreateReferenceLineFeatures(referenceLine, data.Parent.Id, data.Parent.Name); - sectionsMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionFeatures(failureMechanismSections); - sectionsStartPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionStartPointFeatures(failureMechanismSections); - sectionsEndPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionEndPointFeatures(failureMechanismSections); - hydraulicBoundaryDatabaseMapData.Features = RingtoetsMapDataFeaturesFactory.CreateHydraulicBoundaryDatabaseFeaturesWithDefaultLabels(hydraulicBoundaryDatabase); - dikeProfilesMapData.Features = RingtoetsMapDataFeaturesFactory.CreateDikeProfilesFeatures(dikeProfiles); - foreshoreProfilesMapData.Features = RingtoetsMapDataFeaturesFactory.CreateForeshoreProfilesFeatures(dikeProfiles.Select(dp => dp.ForeshoreProfile)); - calculationsMapData.Features = GrassCoverErosionInwardsMapDataFeaturesFactory.CreateCalculationFeatures(calculations); + referenceLineMapData.NotifyObservers(); + sectionsMapData.NotifyObservers(); + sectionsStartPointMapData.NotifyObservers(); + sectionsEndPointMapData.NotifyObservers(); + hydraulicBoundaryDatabaseMapData.NotifyObservers(); + dikeProfilesMapData.NotifyObservers(); + foreshoreProfilesMapData.NotifyObservers(); + calculationsMapData.NotifyObservers(); + } - mapControl.Data.NotifyObservers(); - } + private void SetMapDataFeatures() + { + ReferenceLine referenceLine = data.Parent.ReferenceLine; + IEnumerable failureMechanismSections = data.WrappedData.Sections; + HydraulicBoundaryDatabase hydraulicBoundaryDatabase = data.Parent.HydraulicBoundaryDatabase; + IEnumerable dikeProfiles = data.WrappedData.DikeProfiles; + IEnumerable calculations = + data.WrappedData.CalculationsGroup.GetCalculations().Cast(); + + referenceLineMapData.Features = RingtoetsMapDataFeaturesFactory.CreateReferenceLineFeatures(referenceLine, data.Parent.Id, data.Parent.Name); + sectionsMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionFeatures(failureMechanismSections); + sectionsStartPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionStartPointFeatures(failureMechanismSections); + sectionsEndPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionEndPointFeatures(failureMechanismSections); + hydraulicBoundaryDatabaseMapData.Features = RingtoetsMapDataFeaturesFactory.CreateHydraulicBoundaryDatabaseFeaturesWithDefaultLabels(hydraulicBoundaryDatabase); + dikeProfilesMapData.Features = RingtoetsMapDataFeaturesFactory.CreateDikeProfilesFeatures(dikeProfiles); + foreshoreProfilesMapData.Features = RingtoetsMapDataFeaturesFactory.CreateForeshoreProfilesFeatures(dikeProfiles.Select(dp => dp.ForeshoreProfile)); + calculationsMapData.Features = GrassCoverErosionInwardsMapDataFeaturesFactory.CreateCalculationFeatures(calculations); } } } \ No newline at end of file Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsFailureMechanismViewTest.cs =================================================================== diff -u -r8c5e80bfb6d67d30ee660f6901461bcc76aff057 -r675771641656abfb56ef89be86bad7bd21684016 --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsFailureMechanismViewTest.cs (.../GrassCoverErosionInwardsFailureMechanismViewTest.cs) (revision 8c5e80bfb6d67d30ee660f6901461bcc76aff057) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsFailureMechanismViewTest.cs (.../GrassCoverErosionInwardsFailureMechanismViewTest.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -75,17 +75,16 @@ } [Test] - public void DefaultConstructor_Always_AddMapControlWithCollectionOfEmptyMapData() + public void DefaultConstructor_Always_AddEmptyMapControl() { // Call using (var view = new GrassCoverErosionInwardsFailureMechanismView()) { // Assert Assert.AreEqual(1, view.Controls.Count); Assert.AreSame(view.Map, view.Controls[0]); - Assert.AreEqual(DockStyle.Fill, ((Control) view.Map).Dock); - Assert.AreEqual(GrassCoverErosionInwardsDataResources.GrassCoverErosionInwardsFailureMechanism_DisplayName, view.Map.Data.Name); - AssertEmptyMapData(view.Map.Data); + Assert.AreEqual(DockStyle.Fill, ((Control)view.Map).Dock); + Assert.IsNull(view.Map.Data); } } Index: Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Forms/Views/GrassCoverErosionOutwardsFailureMechanismView.cs =================================================================== diff -u -r8c5e80bfb6d67d30ee660f6901461bcc76aff057 -r675771641656abfb56ef89be86bad7bd21684016 --- Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Forms/Views/GrassCoverErosionOutwardsFailureMechanismView.cs (.../GrassCoverErosionOutwardsFailureMechanismView.cs) (revision 8c5e80bfb6d67d30ee660f6901461bcc76aff057) +++ Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Forms/Views/GrassCoverErosionOutwardsFailureMechanismView.cs (.../GrassCoverErosionOutwardsFailureMechanismView.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -31,8 +31,8 @@ using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Forms.Views; using Ringtoets.GrassCoverErosionOutwards.Data; -using Ringtoets.HydraRing.Data; using Ringtoets.GrassCoverErosionOutwards.Forms.PresentationObjects; +using Ringtoets.HydraRing.Data; using Ringtoets.Revetment.Data; using RingtoetsCommonDataResources = Ringtoets.Common.Data.Properties.Resources; using GrassCoverErosionOutwardsDataResources = Ringtoets.GrassCoverErosionOutwards.Data.Properties.Resources; @@ -54,6 +54,7 @@ private readonly RecursiveObserver calculationGroupObserver; private readonly RecursiveObserver calculationObserver; + private readonly MapDataCollection mapDataCollection; private readonly MapLineData referenceLineMapData; private readonly MapLineData sectionsMapData; private readonly MapPointData sectionsStartPointMapData; @@ -81,25 +82,22 @@ calculationGroupObserver = new RecursiveObserver(UpdateMapData, pcg => pcg.Children); calculationObserver = new RecursiveObserver(UpdateMapData, pcg => pcg.Children); + mapDataCollection = new MapDataCollection(GrassCoverErosionOutwardsDataResources.GrassCoverErosionOutwardsFailureMechanism_DisplayName); referenceLineMapData = RingtoetsMapDataFactory.CreateReferenceLineMapData(); hydraulicBoundaryDatabaseMapData = RingtoetsMapDataFactory.CreateHydraulicBoundaryDatabaseMapData(); foreshoreProfilesMapData = RingtoetsMapDataFactory.CreateForeshoreProfileMapData(); - sectionsMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsMapData(); sectionsStartPointMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsStartPointMapData(); sectionsEndPointMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsEndPointMapData(); calculationsMapData = RingtoetsMapDataFactory.CreateCalculationsMapData(); - mapControl.Data.Add(referenceLineMapData); - mapControl.Data.Add(sectionsMapData); - mapControl.Data.Add(sectionsStartPointMapData); - mapControl.Data.Add(sectionsEndPointMapData); - mapControl.Data.Add(hydraulicBoundaryDatabaseMapData); - mapControl.Data.Add(foreshoreProfilesMapData); - mapControl.Data.Add(calculationsMapData); - - mapControl.Data.Name = GrassCoverErosionOutwardsDataResources.GrassCoverErosionOutwardsFailureMechanism_DisplayName; - mapControl.Data.NotifyObservers(); + mapDataCollection.Add(referenceLineMapData); + mapDataCollection.Add(sectionsMapData); + mapDataCollection.Add(sectionsStartPointMapData); + mapDataCollection.Add(sectionsEndPointMapData); + mapDataCollection.Add(hydraulicBoundaryDatabaseMapData); + mapDataCollection.Add(foreshoreProfilesMapData); + mapDataCollection.Add(calculationsMapData); } public object Data @@ -121,6 +119,8 @@ calculationInputObserver.Observable = null; calculationGroupObserver.Observable = null; calculationObserver.Observable = null; + + Map.Data = null; } else { @@ -131,8 +131,11 @@ calculationInputObserver.Observable = data.WrappedData.WaveConditionsCalculationGroup; calculationGroupObserver.Observable = data.WrappedData.WaveConditionsCalculationGroup; calculationObserver.Observable = data.WrappedData.WaveConditionsCalculationGroup; + + SetMapDataFeatures(); + + Map.Data = mapDataCollection; } - UpdateMapData(); } } @@ -163,29 +166,33 @@ private void UpdateMapData() { - if (data == null) - { - Map.ResetMapData(); - } - else - { - ReferenceLine referenceLine = data.Parent.ReferenceLine; - IEnumerable failureMechanismSections = data.WrappedData.Sections; - HydraulicBoundaryDatabase hydraulicBoundaryDatabase = data.Parent.HydraulicBoundaryDatabase; - IEnumerable foreshoreProfiles = data.WrappedData.ForeshoreProfiles; - IEnumerable calculations = - data.WrappedData.WaveConditionsCalculationGroup.GetCalculations().Cast(); + SetMapDataFeatures(); - referenceLineMapData.Features = RingtoetsMapDataFeaturesFactory.CreateReferenceLineFeatures(referenceLine, data.Parent.Id, data.Parent.Name); - sectionsMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionFeatures(failureMechanismSections); - sectionsStartPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionStartPointFeatures(failureMechanismSections); - sectionsEndPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionEndPointFeatures(failureMechanismSections); - hydraulicBoundaryDatabaseMapData.Features = RingtoetsMapDataFeaturesFactory.CreateHydraulicBoundaryDatabaseFeaturesWithOptionalLabels(hydraulicBoundaryDatabase); - foreshoreProfilesMapData.Features = RingtoetsMapDataFeaturesFactory.CreateForeshoreProfilesFeatures(foreshoreProfiles); - calculationsMapData.Features = GrassCoverErosionOutwardsMapDataFeaturesFactory.CreateCalculationFeatures(calculations); + referenceLineMapData.NotifyObservers(); + sectionsMapData.NotifyObservers(); + sectionsStartPointMapData.NotifyObservers(); + sectionsEndPointMapData.NotifyObservers(); + hydraulicBoundaryDatabaseMapData.NotifyObservers(); + foreshoreProfilesMapData.NotifyObservers(); + calculationsMapData.NotifyObservers(); + } - mapControl.Data.NotifyObservers(); - } + private void SetMapDataFeatures() + { + ReferenceLine referenceLine = data.Parent.ReferenceLine; + IEnumerable failureMechanismSections = data.WrappedData.Sections; + HydraulicBoundaryDatabase hydraulicBoundaryDatabase = data.Parent.HydraulicBoundaryDatabase; + IEnumerable foreshoreProfiles = data.WrappedData.ForeshoreProfiles; + IEnumerable calculations = + data.WrappedData.WaveConditionsCalculationGroup.GetCalculations().Cast(); + + referenceLineMapData.Features = RingtoetsMapDataFeaturesFactory.CreateReferenceLineFeatures(referenceLine, data.Parent.Id, data.Parent.Name); + sectionsMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionFeatures(failureMechanismSections); + sectionsStartPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionStartPointFeatures(failureMechanismSections); + sectionsEndPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionEndPointFeatures(failureMechanismSections); + hydraulicBoundaryDatabaseMapData.Features = RingtoetsMapDataFeaturesFactory.CreateHydraulicBoundaryDatabaseFeaturesWithOptionalLabels(hydraulicBoundaryDatabase); + foreshoreProfilesMapData.Features = RingtoetsMapDataFeaturesFactory.CreateForeshoreProfilesFeatures(foreshoreProfiles); + calculationsMapData.Features = GrassCoverErosionOutwardsMapDataFeaturesFactory.CreateCalculationFeatures(calculations); } } } \ No newline at end of file Index: Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/Views/GrassCoverErosionOutwardsFailureMechanismViewTest.cs =================================================================== diff -u -r8c5e80bfb6d67d30ee660f6901461bcc76aff057 -r675771641656abfb56ef89be86bad7bd21684016 --- Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/Views/GrassCoverErosionOutwardsFailureMechanismViewTest.cs (.../GrassCoverErosionOutwardsFailureMechanismViewTest.cs) (revision 8c5e80bfb6d67d30ee660f6901461bcc76aff057) +++ Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/Views/GrassCoverErosionOutwardsFailureMechanismViewTest.cs (.../GrassCoverErosionOutwardsFailureMechanismViewTest.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -74,17 +74,16 @@ } [Test] - public void DefaultConstructor_Always_AddMapControlWithCollectionOfEmptyMapData() + public void DefaultConstructor_Always_AddEmptyMapControl() { // Call using (var view = new GrassCoverErosionOutwardsFailureMechanismView()) { // Assert Assert.AreEqual(1, view.Controls.Count); Assert.AreSame(view.Map, view.Controls[0]); - Assert.AreEqual(DockStyle.Fill, ((Control) view.Map).Dock); - Assert.AreEqual(GrassCoverErosionOutwardsDataResources.GrassCoverErosionOutwardsFailureMechanism_DisplayName, view.Map.Data.Name); - AssertEmptyMapData(view.Map.Data); + Assert.AreEqual(DockStyle.Fill, ((Control)view.Map).Dock); + Assert.IsNull(view.Map.Data); } } Index: Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Forms/Views/HeightStructuresFailureMechanismView.cs =================================================================== diff -u -r8c5e80bfb6d67d30ee660f6901461bcc76aff057 -r675771641656abfb56ef89be86bad7bd21684016 --- Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Forms/Views/HeightStructuresFailureMechanismView.cs (.../HeightStructuresFailureMechanismView.cs) (revision 8c5e80bfb6d67d30ee660f6901461bcc76aff057) +++ Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Forms/Views/HeightStructuresFailureMechanismView.cs (.../HeightStructuresFailureMechanismView.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -54,6 +54,7 @@ private readonly RecursiveObserver calculationGroupObserver; private readonly RecursiveObserver> calculationObserver; + private readonly MapDataCollection mapDataCollection; private readonly MapLineData referenceLineMapData; private readonly MapLineData sectionsMapData; private readonly MapPointData sectionsStartPointMapData; @@ -83,27 +84,24 @@ calculationGroupObserver = new RecursiveObserver(UpdateMapData, pcg => pcg.Children); calculationObserver = new RecursiveObserver>(UpdateMapData, pcg => pcg.Children); + mapDataCollection = new MapDataCollection(HeightStructuresDataResources.HeightStructuresFailureMechanism_DisplayName); referenceLineMapData = RingtoetsMapDataFactory.CreateReferenceLineMapData(); hydraulicBoundaryDatabaseMapData = RingtoetsMapDataFactory.CreateHydraulicBoundaryDatabaseMapData(); foreshoreProfilesMapData = RingtoetsMapDataFactory.CreateForeshoreProfileMapData(); structuresMapData = RingtoetsMapDataFactory.CreateStructuresMapData(); - sectionsMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsMapData(); sectionsStartPointMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsStartPointMapData(); sectionsEndPointMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsEndPointMapData(); calculationsMapData = RingtoetsMapDataFactory.CreateCalculationsMapData(); - mapControl.Data.Add(referenceLineMapData); - mapControl.Data.Add(sectionsMapData); - mapControl.Data.Add(sectionsStartPointMapData); - mapControl.Data.Add(sectionsEndPointMapData); - mapControl.Data.Add(hydraulicBoundaryDatabaseMapData); - mapControl.Data.Add(foreshoreProfilesMapData); - mapControl.Data.Add(structuresMapData); - mapControl.Data.Add(calculationsMapData); - - mapControl.Data.Name = HeightStructuresDataResources.HeightStructuresFailureMechanism_DisplayName; - mapControl.Data.NotifyObservers(); + mapDataCollection.Add(referenceLineMapData); + mapDataCollection.Add(sectionsMapData); + mapDataCollection.Add(sectionsStartPointMapData); + mapDataCollection.Add(sectionsEndPointMapData); + mapDataCollection.Add(hydraulicBoundaryDatabaseMapData); + mapDataCollection.Add(foreshoreProfilesMapData); + mapDataCollection.Add(structuresMapData); + mapDataCollection.Add(calculationsMapData); } public object Data @@ -126,6 +124,8 @@ calculationInputObserver.Observable = null; calculationGroupObserver.Observable = null; calculationObserver.Observable = null; + + Map.Data = null; } else { @@ -138,9 +138,11 @@ calculationInputObserver.Observable = data.WrappedData.CalculationsGroup; calculationGroupObserver.Observable = data.WrappedData.CalculationsGroup; calculationObserver.Observable = data.WrappedData.CalculationsGroup; + + SetMapDataFeatures(); + + Map.Data = mapDataCollection; } - - UpdateMapData(); } } @@ -171,32 +173,36 @@ private void UpdateMapData() { - if (data == null) - { - Map.ResetMapData(); - } - else - { - ReferenceLine referenceLine = data.Parent.ReferenceLine; - IEnumerable failureMechanismSections = data.WrappedData.Sections; - HydraulicBoundaryDatabase hydraulicBoundaryDatabase = data.Parent.HydraulicBoundaryDatabase; - IEnumerable foreshoreProfiles = data.WrappedData.ForeshoreProfiles; - IEnumerable structures = data.WrappedData.HeightStructures; - IEnumerable> calculations = - data.WrappedData.CalculationsGroup.GetCalculations().Cast>(); + SetMapDataFeatures(); - referenceLineMapData.Features = RingtoetsMapDataFeaturesFactory.CreateReferenceLineFeatures(referenceLine, data.Parent.Id, data.Parent.Name); - sectionsMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionFeatures(failureMechanismSections); - sectionsStartPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionStartPointFeatures(failureMechanismSections); - sectionsEndPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionEndPointFeatures(failureMechanismSections); - hydraulicBoundaryDatabaseMapData.Features = RingtoetsMapDataFeaturesFactory.CreateHydraulicBoundaryDatabaseFeaturesWithDefaultLabels(hydraulicBoundaryDatabase); - foreshoreProfilesMapData.Features = RingtoetsMapDataFeaturesFactory.CreateForeshoreProfilesFeatures(foreshoreProfiles); - structuresMapData.Features = RingtoetsMapDataFeaturesFactory.CreateStructuresFeatures(structures); - calculationsMapData.Features = RingtoetsMapDataFeaturesFactory.CreateStructureCalculationsFeatures - (calculations); + referenceLineMapData.NotifyObservers(); + sectionsMapData.NotifyObservers(); + sectionsStartPointMapData.NotifyObservers(); + sectionsEndPointMapData.NotifyObservers(); + hydraulicBoundaryDatabaseMapData.NotifyObservers(); + foreshoreProfilesMapData.NotifyObservers(); + structuresMapData.NotifyObservers(); + calculationsMapData.NotifyObservers(); + } - mapControl.Data.NotifyObservers(); - } + private void SetMapDataFeatures() + { + ReferenceLine referenceLine = data.Parent.ReferenceLine; + IEnumerable failureMechanismSections = data.WrappedData.Sections; + HydraulicBoundaryDatabase hydraulicBoundaryDatabase = data.Parent.HydraulicBoundaryDatabase; + IEnumerable foreshoreProfiles = data.WrappedData.ForeshoreProfiles; + IEnumerable structures = data.WrappedData.HeightStructures; + IEnumerable> calculations = + data.WrappedData.CalculationsGroup.GetCalculations().Cast>(); + + referenceLineMapData.Features = RingtoetsMapDataFeaturesFactory.CreateReferenceLineFeatures(referenceLine, data.Parent.Id, data.Parent.Name); + sectionsMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionFeatures(failureMechanismSections); + sectionsStartPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionStartPointFeatures(failureMechanismSections); + sectionsEndPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionEndPointFeatures(failureMechanismSections); + hydraulicBoundaryDatabaseMapData.Features = RingtoetsMapDataFeaturesFactory.CreateHydraulicBoundaryDatabaseFeaturesWithDefaultLabels(hydraulicBoundaryDatabase); + foreshoreProfilesMapData.Features = RingtoetsMapDataFeaturesFactory.CreateForeshoreProfilesFeatures(foreshoreProfiles); + structuresMapData.Features = RingtoetsMapDataFeaturesFactory.CreateStructuresFeatures(structures); + calculationsMapData.Features = RingtoetsMapDataFeaturesFactory.CreateStructureCalculationsFeatures(calculations); } } } \ No newline at end of file Index: Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Forms.Test/Views/HeightStructuresFailureMechanismViewTest.cs =================================================================== diff -u -r8c5e80bfb6d67d30ee660f6901461bcc76aff057 -r675771641656abfb56ef89be86bad7bd21684016 --- Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Forms.Test/Views/HeightStructuresFailureMechanismViewTest.cs (.../HeightStructuresFailureMechanismViewTest.cs) (revision 8c5e80bfb6d67d30ee660f6901461bcc76aff057) +++ Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Forms.Test/Views/HeightStructuresFailureMechanismViewTest.cs (.../HeightStructuresFailureMechanismViewTest.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -75,17 +75,16 @@ } [Test] - public void DefaultConstructor_Always_AddMapControlWithCollectionOfEmptyMapData() + public void DefaultConstructor_Always_AddEmptyMapControl() { // Call using (var view = new HeightStructuresFailureMechanismView()) { // Assert Assert.AreEqual(1, view.Controls.Count); Assert.AreSame(view.Map, view.Controls[0]); - Assert.AreEqual(DockStyle.Fill, ((Control) view.Map).Dock); - Assert.AreEqual(HeightStructuresDataResources.HeightStructuresFailureMechanism_DisplayName, view.Map.Data.Name); - AssertEmptyMapData(view.Map.Data); + Assert.AreEqual(DockStyle.Fill, ((Control)view.Map).Dock); + Assert.IsNull(view.Map.Data); } } Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/AssessmentSectionView.cs =================================================================== diff -u -r403d28f4a18673acd687cfd5192ec26a1af353f2 -r675771641656abfb56ef89be86bad7bd21684016 --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/AssessmentSectionView.cs (.../AssessmentSectionView.cs) (revision 403d28f4a18673acd687cfd5192ec26a1af353f2) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/AssessmentSectionView.cs (.../AssessmentSectionView.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -25,7 +25,6 @@ using Core.Components.Gis.Forms; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Forms.Views; -using Ringtoets.HydraRing.Data; using Ringtoets.Integration.Forms.Properties; using RingtoetsCommonDataResources = Ringtoets.Common.Data.Properties.Resources; @@ -39,6 +38,7 @@ private readonly Observer assessmentSectionObserver; private readonly Observer hydraulicBoundaryDatabaseObserver; + private readonly MapDataCollection mapDataCollection; private readonly MapLineData referenceLineMapData; private readonly MapPointData hydraulicBoundaryDatabaseMapData; @@ -54,14 +54,12 @@ assessmentSectionObserver = new Observer(UpdateMapData); hydraulicBoundaryDatabaseObserver = new Observer(UpdateMapData); + mapDataCollection = new MapDataCollection(Resources.AssessmentSectionMap_DisplayName); referenceLineMapData = RingtoetsMapDataFactory.CreateReferenceLineMapData(); hydraulicBoundaryDatabaseMapData = RingtoetsMapDataFactory.CreateHydraulicBoundaryDatabaseMapData(); - mapControl.Data.Add(referenceLineMapData); - mapControl.Data.Add(hydraulicBoundaryDatabaseMapData); - mapControl.Data.Name = Resources.AssessmentSectionMap_DisplayName; - - mapControl.Data.NotifyObservers(); + mapDataCollection.Add(referenceLineMapData); + mapDataCollection.Add(hydraulicBoundaryDatabaseMapData); } public object Data @@ -79,11 +77,14 @@ if (data == null) { - Map.ResetMapData(); - return; + Map.Data = null; } + else + { + SetMapDataFeatures(); - UpdateMapData(); + Map.Data = mapDataCollection; + } } } @@ -109,19 +110,16 @@ private void UpdateMapData() { - ReferenceLine referenceLine = null; - HydraulicBoundaryDatabase hydraulicBoundaryDatabase = null; + SetMapDataFeatures(); - if (data != null) - { - referenceLine = data.ReferenceLine; - hydraulicBoundaryDatabase = data.HydraulicBoundaryDatabase; - } + referenceLineMapData.NotifyObservers(); + hydraulicBoundaryDatabaseMapData.NotifyObservers(); + } - referenceLineMapData.Features = RingtoetsMapDataFeaturesFactory.CreateReferenceLineFeatures(referenceLine, data.Id, data.Name); - hydraulicBoundaryDatabaseMapData.Features = RingtoetsMapDataFeaturesFactory.CreateHydraulicBoundaryDatabaseFeaturesWithDefaultLabels(hydraulicBoundaryDatabase); - - mapControl.Data.NotifyObservers(); + private void SetMapDataFeatures() + { + referenceLineMapData.Features = RingtoetsMapDataFeaturesFactory.CreateReferenceLineFeatures(data.ReferenceLine, data.Id, data.Name); + hydraulicBoundaryDatabaseMapData.Features = RingtoetsMapDataFeaturesFactory.CreateHydraulicBoundaryDatabaseFeaturesWithDefaultLabels(data.HydraulicBoundaryDatabase); } } } \ No newline at end of file Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/AssessmentSectionViewTest.cs =================================================================== diff -u -r403d28f4a18673acd687cfd5192ec26a1af353f2 -r675771641656abfb56ef89be86bad7bd21684016 --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/AssessmentSectionViewTest.cs (.../AssessmentSectionViewTest.cs) (revision 403d28f4a18673acd687cfd5192ec26a1af353f2) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/AssessmentSectionViewTest.cs (.../AssessmentSectionViewTest.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -60,17 +60,16 @@ } [Test] - public void DefaultConstructor_Always_AddMapControlWithCollectionOfEmptyMapData() + public void DefaultConstructor_Always_AddEmptyMapControl() { // Call using (var view = new AssessmentSectionView()) { // Assert Assert.AreEqual(1, view.Controls.Count); Assert.AreSame(view.Map, view.Controls[0]); - Assert.AreEqual(DockStyle.Fill, ((Control) view.Map).Dock); - Assert.AreEqual(Resources.AssessmentSectionMap_DisplayName, view.Map.Data.Name); - AssertEmptyMapData(view.Map.Data); + Assert.AreEqual(DockStyle.Fill, ((Control)view.Map).Dock); + Assert.IsNull(view.Map.Data); } } Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingFailureMechanismView.cs =================================================================== diff -u -r8c5e80bfb6d67d30ee660f6901461bcc76aff057 -r675771641656abfb56ef89be86bad7bd21684016 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingFailureMechanismView.cs (.../PipingFailureMechanismView.cs) (revision 8c5e80bfb6d67d30ee660f6901461bcc76aff057) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingFailureMechanismView.cs (.../PipingFailureMechanismView.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -54,6 +54,7 @@ private readonly RecursiveObserver calculationGroupObserver; private readonly RecursiveObserver calculationObserver; + private readonly MapDataCollection mapDataCollection; private readonly MapLineData referenceLineMapData; private readonly MapLineData sectionsMapData; private readonly MapLineData stochasticSoilModelsMapData; @@ -83,27 +84,24 @@ calculationGroupObserver = new RecursiveObserver(UpdateMapData, pcg => pcg.Children); calculationObserver = new RecursiveObserver(UpdateMapData, pcg => pcg.Children); + mapDataCollection = new MapDataCollection(PipingDataResources.PipingFailureMechanism_DisplayName); referenceLineMapData = RingtoetsMapDataFactory.CreateReferenceLineMapData(); hydraulicBoundaryDatabaseMapData = RingtoetsMapDataFactory.CreateHydraulicBoundaryDatabaseMapData(); - sectionsMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsMapData(); stochasticSoilModelsMapData = PipingMapDataFactory.CreateStochasticSoilModelsMapData(); surfaceLinesMapData = PipingMapDataFactory.CreateSurfaceLinesMapData(); sectionsStartPointMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsStartPointMapData(); sectionsEndPointMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsEndPointMapData(); calculationsMapData = RingtoetsMapDataFactory.CreateCalculationsMapData(); - mapControl.Data.Add(referenceLineMapData); - mapControl.Data.Add(sectionsMapData); - mapControl.Data.Add(stochasticSoilModelsMapData); - mapControl.Data.Add(surfaceLinesMapData); - mapControl.Data.Add(sectionsStartPointMapData); - mapControl.Data.Add(sectionsEndPointMapData); - mapControl.Data.Add(hydraulicBoundaryDatabaseMapData); - mapControl.Data.Add(calculationsMapData); - - mapControl.Data.Name = PipingDataResources.PipingFailureMechanism_DisplayName; - mapControl.Data.NotifyObservers(); + mapDataCollection.Add(referenceLineMapData); + mapDataCollection.Add(sectionsMapData); + mapDataCollection.Add(stochasticSoilModelsMapData); + mapDataCollection.Add(surfaceLinesMapData); + mapDataCollection.Add(sectionsStartPointMapData); + mapDataCollection.Add(sectionsEndPointMapData); + mapDataCollection.Add(hydraulicBoundaryDatabaseMapData); + mapDataCollection.Add(calculationsMapData); } public object Data @@ -126,6 +124,8 @@ calculationInputObserver.Observable = null; calculationGroupObserver.Observable = null; calculationObserver.Observable = null; + + Map.Data = null; } else { @@ -137,9 +137,11 @@ calculationInputObserver.Observable = data.WrappedData.CalculationsGroup; calculationGroupObserver.Observable = data.WrappedData.CalculationsGroup; calculationObserver.Observable = data.WrappedData.CalculationsGroup; - } - UpdateMapData(); + SetMapDataFeatures(); + + Map.Data = mapDataCollection; + } } } @@ -171,31 +173,36 @@ private void UpdateMapData() { - if (data == null) - { - Map.ResetMapData(); - } - else - { - ReferenceLine referenceLine = data.Parent.ReferenceLine; - IEnumerable failureMechanismSections = data.WrappedData.Sections; - ObservableList stochasticSoilModels = data.WrappedData.StochasticSoilModels; - ObservableList ringtoetsPipingSurfaceLines = data.WrappedData.SurfaceLines; - HydraulicBoundaryDatabase hydraulicBoundaryDatabase = data.Parent.HydraulicBoundaryDatabase; - IEnumerable calculations = - data.WrappedData.CalculationsGroup.GetCalculations().Cast(); + SetMapDataFeatures(); - referenceLineMapData.Features = RingtoetsMapDataFeaturesFactory.CreateReferenceLineFeatures(referenceLine, data.Parent.Id, data.Parent.Name); - sectionsMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionFeatures(failureMechanismSections); - stochasticSoilModelsMapData.Features = PipingMapDataFeaturesFactory.CreateStochasticSoilModelFeatures(stochasticSoilModels); - surfaceLinesMapData.Features = PipingMapDataFeaturesFactory.CreateSurfaceLineFeatures(ringtoetsPipingSurfaceLines); - sectionsStartPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionStartPointFeatures(failureMechanismSections); - sectionsEndPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionEndPointFeatures(failureMechanismSections); - hydraulicBoundaryDatabaseMapData.Features = RingtoetsMapDataFeaturesFactory.CreateHydraulicBoundaryDatabaseFeaturesWithDefaultLabels(hydraulicBoundaryDatabase); - calculationsMapData.Features = PipingMapDataFeaturesFactory.CreateCalculationFeatures(calculations); + referenceLineMapData.NotifyObservers(); + sectionsMapData.NotifyObservers(); + stochasticSoilModelsMapData.NotifyObservers(); + surfaceLinesMapData.NotifyObservers(); + sectionsStartPointMapData.NotifyObservers(); + sectionsEndPointMapData.NotifyObservers(); + hydraulicBoundaryDatabaseMapData.NotifyObservers(); + calculationsMapData.NotifyObservers(); + } - mapControl.Data.NotifyObservers(); - } + private void SetMapDataFeatures() + { + ReferenceLine referenceLine = data.Parent.ReferenceLine; + IEnumerable failureMechanismSections = data.WrappedData.Sections; + ObservableList stochasticSoilModels = data.WrappedData.StochasticSoilModels; + ObservableList ringtoetsPipingSurfaceLines = data.WrappedData.SurfaceLines; + HydraulicBoundaryDatabase hydraulicBoundaryDatabase = data.Parent.HydraulicBoundaryDatabase; + IEnumerable calculations = + data.WrappedData.CalculationsGroup.GetCalculations().Cast(); + + referenceLineMapData.Features = RingtoetsMapDataFeaturesFactory.CreateReferenceLineFeatures(referenceLine, data.Parent.Id, data.Parent.Name); + sectionsMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionFeatures(failureMechanismSections); + stochasticSoilModelsMapData.Features = PipingMapDataFeaturesFactory.CreateStochasticSoilModelFeatures(stochasticSoilModels); + surfaceLinesMapData.Features = PipingMapDataFeaturesFactory.CreateSurfaceLineFeatures(ringtoetsPipingSurfaceLines); + sectionsStartPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionStartPointFeatures(failureMechanismSections); + sectionsEndPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionEndPointFeatures(failureMechanismSections); + hydraulicBoundaryDatabaseMapData.Features = RingtoetsMapDataFeaturesFactory.CreateHydraulicBoundaryDatabaseFeaturesWithDefaultLabels(hydraulicBoundaryDatabase); + calculationsMapData.Features = PipingMapDataFeaturesFactory.CreateCalculationFeatures(calculations); } } } \ No newline at end of file Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingFailureMechanismViewTest.cs =================================================================== diff -u -r8c5e80bfb6d67d30ee660f6901461bcc76aff057 -r675771641656abfb56ef89be86bad7bd21684016 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingFailureMechanismViewTest.cs (.../PipingFailureMechanismViewTest.cs) (revision 8c5e80bfb6d67d30ee660f6901461bcc76aff057) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingFailureMechanismViewTest.cs (.../PipingFailureMechanismViewTest.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -75,17 +75,16 @@ } [Test] - public void DefaultConstructor_Always_AddMapControlWithCollectionOfEmptyMapData() + public void DefaultConstructor_Always_AddEmptyMapControl() { // Call using (var view = new PipingFailureMechanismView()) { // Assert Assert.AreEqual(1, view.Controls.Count); Assert.AreSame(view.Map, view.Controls[0]); - Assert.AreEqual(DockStyle.Fill, ((Control) view.Map).Dock); - Assert.AreEqual(PipingDataResources.PipingFailureMechanism_DisplayName, view.Map.Data.Name); - AssertEmptyMapData(view.Map.Data); + Assert.AreEqual(DockStyle.Fill, ((Control)view.Map).Dock); + Assert.IsNull(view.Map.Data); } } Index: Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.Forms/Views/StabilityPointStructuresFailureMechanismView.cs =================================================================== diff -u -r8c5e80bfb6d67d30ee660f6901461bcc76aff057 -r675771641656abfb56ef89be86bad7bd21684016 --- Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.Forms/Views/StabilityPointStructuresFailureMechanismView.cs (.../StabilityPointStructuresFailureMechanismView.cs) (revision 8c5e80bfb6d67d30ee660f6901461bcc76aff057) +++ Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.Forms/Views/StabilityPointStructuresFailureMechanismView.cs (.../StabilityPointStructuresFailureMechanismView.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -31,9 +31,9 @@ using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Data.Structures; using Ringtoets.Common.Forms.Views; +using Ringtoets.HydraRing.Data; using Ringtoets.StabilityPointStructures.Data; using Ringtoets.StabilityPointStructures.Forms.PresentationObjects; -using Ringtoets.HydraRing.Data; using RingtoetsCommonDataResources = Ringtoets.Common.Data.Properties.Resources; using StabilityPointStructuresDataResources = Ringtoets.StabilityPointStructures.Data.Properties.Resources; @@ -54,6 +54,7 @@ private readonly RecursiveObserver calculationGroupObserver; private readonly RecursiveObserver> calculationObserver; + private readonly MapDataCollection mapDataCollection; private readonly MapLineData referenceLineMapData; private readonly MapLineData sectionsMapData; private readonly MapPointData sectionsStartPointMapData; @@ -83,27 +84,24 @@ calculationGroupObserver = new RecursiveObserver(UpdateMapData, pcg => pcg.Children); calculationObserver = new RecursiveObserver>(UpdateMapData, pcg => pcg.Children); + mapDataCollection = new MapDataCollection(StabilityPointStructuresDataResources.StabilityPointStructuresFailureMechanism_DisplayName); referenceLineMapData = RingtoetsMapDataFactory.CreateReferenceLineMapData(); hydraulicBoundaryDatabaseMapData = RingtoetsMapDataFactory.CreateHydraulicBoundaryDatabaseMapData(); foreshoreProfilesMapData = RingtoetsMapDataFactory.CreateForeshoreProfileMapData(); structuresMapData = RingtoetsMapDataFactory.CreateStructuresMapData(); - sectionsMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsMapData(); sectionsStartPointMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsStartPointMapData(); sectionsEndPointMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsEndPointMapData(); calculationsMapData = RingtoetsMapDataFactory.CreateCalculationsMapData(); - mapControl.Data.Add(referenceLineMapData); - mapControl.Data.Add(sectionsMapData); - mapControl.Data.Add(sectionsStartPointMapData); - mapControl.Data.Add(sectionsEndPointMapData); - mapControl.Data.Add(hydraulicBoundaryDatabaseMapData); - mapControl.Data.Add(foreshoreProfilesMapData); - mapControl.Data.Add(structuresMapData); - mapControl.Data.Add(calculationsMapData); - - mapControl.Data.Name = StabilityPointStructuresDataResources.StabilityPointStructuresFailureMechanism_DisplayName; - mapControl.Data.NotifyObservers(); + mapDataCollection.Add(referenceLineMapData); + mapDataCollection.Add(sectionsMapData); + mapDataCollection.Add(sectionsStartPointMapData); + mapDataCollection.Add(sectionsEndPointMapData); + mapDataCollection.Add(hydraulicBoundaryDatabaseMapData); + mapDataCollection.Add(foreshoreProfilesMapData); + mapDataCollection.Add(structuresMapData); + mapDataCollection.Add(calculationsMapData); } public object Data @@ -126,6 +124,8 @@ calculationInputObserver.Observable = null; calculationGroupObserver.Observable = null; calculationObserver.Observable = null; + + Map.Data = null; } else { @@ -137,9 +137,11 @@ calculationInputObserver.Observable = data.WrappedData.CalculationsGroup; calculationGroupObserver.Observable = data.WrappedData.CalculationsGroup; calculationObserver.Observable = data.WrappedData.CalculationsGroup; - } - UpdateMapData(); + SetMapDataFeatures(); + + Map.Data = mapDataCollection; + } } } @@ -170,32 +172,37 @@ private void UpdateMapData() { - if (data == null) - { - Map.ResetMapData(); - } - else - { - ReferenceLine referenceLine = data.Parent.ReferenceLine; - IEnumerable failureMechanismSections = data.WrappedData.Sections; - HydraulicBoundaryDatabase hydraulicBoundaryDatabase = data.Parent.HydraulicBoundaryDatabase; - IEnumerable foreshoreProfiles = data.WrappedData.ForeshoreProfiles; - IEnumerable structures = data.WrappedData.StabilityPointStructures; - IEnumerable> calculations = - data.WrappedData.CalculationsGroup.GetCalculations().Cast>(); + SetMapDataFeatures(); - referenceLineMapData.Features = RingtoetsMapDataFeaturesFactory.CreateReferenceLineFeatures(referenceLine, data.Parent.Id, data.Parent.Name); - sectionsMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionFeatures(failureMechanismSections); - sectionsStartPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionStartPointFeatures(failureMechanismSections); - sectionsEndPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionEndPointFeatures(failureMechanismSections); - hydraulicBoundaryDatabaseMapData.Features = RingtoetsMapDataFeaturesFactory.CreateHydraulicBoundaryDatabaseFeaturesWithDefaultLabels(hydraulicBoundaryDatabase); - foreshoreProfilesMapData.Features = RingtoetsMapDataFeaturesFactory.CreateForeshoreProfilesFeatures(foreshoreProfiles); - structuresMapData.Features = RingtoetsMapDataFeaturesFactory.CreateStructuresFeatures(structures); - calculationsMapData.Features = RingtoetsMapDataFeaturesFactory.CreateStructureCalculationsFeatures - (calculations); + referenceLineMapData.NotifyObservers(); + sectionsMapData.NotifyObservers(); + sectionsStartPointMapData.NotifyObservers(); + sectionsEndPointMapData.NotifyObservers(); + hydraulicBoundaryDatabaseMapData.NotifyObservers(); + foreshoreProfilesMapData.NotifyObservers(); + structuresMapData.NotifyObservers(); + calculationsMapData.NotifyObservers(); + } - mapControl.Data.NotifyObservers(); - } + private void SetMapDataFeatures() + { + ReferenceLine referenceLine = data.Parent.ReferenceLine; + IEnumerable failureMechanismSections = data.WrappedData.Sections; + HydraulicBoundaryDatabase hydraulicBoundaryDatabase = data.Parent.HydraulicBoundaryDatabase; + IEnumerable foreshoreProfiles = data.WrappedData.ForeshoreProfiles; + IEnumerable structures = data.WrappedData.StabilityPointStructures; + IEnumerable> calculations = + data.WrappedData.CalculationsGroup.GetCalculations().Cast>(); + + referenceLineMapData.Features = RingtoetsMapDataFeaturesFactory.CreateReferenceLineFeatures(referenceLine, data.Parent.Id, data.Parent.Name); + sectionsMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionFeatures(failureMechanismSections); + sectionsStartPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionStartPointFeatures(failureMechanismSections); + sectionsEndPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionEndPointFeatures(failureMechanismSections); + hydraulicBoundaryDatabaseMapData.Features = RingtoetsMapDataFeaturesFactory.CreateHydraulicBoundaryDatabaseFeaturesWithDefaultLabels(hydraulicBoundaryDatabase); + foreshoreProfilesMapData.Features = RingtoetsMapDataFeaturesFactory.CreateForeshoreProfilesFeatures(foreshoreProfiles); + structuresMapData.Features = RingtoetsMapDataFeaturesFactory.CreateStructuresFeatures(structures); + calculationsMapData.Features = RingtoetsMapDataFeaturesFactory.CreateStructureCalculationsFeatures + (calculations); } } } \ No newline at end of file Index: Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Forms.Test/Views/StabilityPointStructuresFailureMechanismViewTest.cs =================================================================== diff -u -r8c5e80bfb6d67d30ee660f6901461bcc76aff057 -r675771641656abfb56ef89be86bad7bd21684016 --- Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Forms.Test/Views/StabilityPointStructuresFailureMechanismViewTest.cs (.../StabilityPointStructuresFailureMechanismViewTest.cs) (revision 8c5e80bfb6d67d30ee660f6901461bcc76aff057) +++ Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Forms.Test/Views/StabilityPointStructuresFailureMechanismViewTest.cs (.../StabilityPointStructuresFailureMechanismViewTest.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -75,17 +75,16 @@ } [Test] - public void DefaultConstructor_Always_AddMapControlWithCollectionOfEmptyMapData() + public void DefaultConstructor_Always_AddEmptyMapControl() { // Call using (var view = new StabilityPointStructuresFailureMechanismView()) { // Assert Assert.AreEqual(1, view.Controls.Count); Assert.AreSame(view.Map, view.Controls[0]); - Assert.AreEqual(DockStyle.Fill, ((Control) view.Map).Dock); - Assert.AreEqual(StabilityPointStructuresDataResources.StabilityPointStructuresFailureMechanism_DisplayName, view.Map.Data.Name); - AssertEmptyMapData(view.Map.Data); + Assert.AreEqual(DockStyle.Fill, ((Control)view.Map).Dock); + Assert.IsNull(view.Map.Data); } } Index: Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Forms/Views/StabilityStoneCoverFailureMechanismView.cs =================================================================== diff -u -r8c5e80bfb6d67d30ee660f6901461bcc76aff057 -r675771641656abfb56ef89be86bad7bd21684016 --- Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Forms/Views/StabilityStoneCoverFailureMechanismView.cs (.../StabilityStoneCoverFailureMechanismView.cs) (revision 8c5e80bfb6d67d30ee660f6901461bcc76aff057) +++ Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Forms/Views/StabilityStoneCoverFailureMechanismView.cs (.../StabilityStoneCoverFailureMechanismView.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -54,6 +54,7 @@ private readonly RecursiveObserver calculationGroupObserver; private readonly RecursiveObserver calculationObserver; + private readonly MapDataCollection mapDataCollection; private readonly MapLineData referenceLineMapData; private readonly MapLineData sectionsMapData; private readonly MapPointData sectionsStartPointMapData; @@ -81,25 +82,22 @@ calculationGroupObserver = new RecursiveObserver(UpdateMapData, pcg => pcg.Children); calculationObserver = new RecursiveObserver(UpdateMapData, pcg => pcg.Children); + mapDataCollection = new MapDataCollection(StabilityStoneCoverDataResources.StabilityStoneCoverFailureMechanism_DisplayName); referenceLineMapData = RingtoetsMapDataFactory.CreateReferenceLineMapData(); hydraulicBoundaryDatabaseMapData = RingtoetsMapDataFactory.CreateHydraulicBoundaryDatabaseMapData(); foreshoreProfilesMapData = RingtoetsMapDataFactory.CreateForeshoreProfileMapData(); - sectionsMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsMapData(); sectionsStartPointMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsStartPointMapData(); sectionsEndPointMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsEndPointMapData(); calculationsMapData = RingtoetsMapDataFactory.CreateCalculationsMapData(); - mapControl.Data.Add(referenceLineMapData); - mapControl.Data.Add(sectionsMapData); - mapControl.Data.Add(sectionsStartPointMapData); - mapControl.Data.Add(sectionsEndPointMapData); - mapControl.Data.Add(hydraulicBoundaryDatabaseMapData); - mapControl.Data.Add(foreshoreProfilesMapData); - mapControl.Data.Add(calculationsMapData); - - mapControl.Data.Name = StabilityStoneCoverDataResources.StabilityStoneCoverFailureMechanism_DisplayName; - mapControl.Data.NotifyObservers(); + mapDataCollection.Add(referenceLineMapData); + mapDataCollection.Add(sectionsMapData); + mapDataCollection.Add(sectionsStartPointMapData); + mapDataCollection.Add(sectionsEndPointMapData); + mapDataCollection.Add(hydraulicBoundaryDatabaseMapData); + mapDataCollection.Add(foreshoreProfilesMapData); + mapDataCollection.Add(calculationsMapData); } public object Data @@ -121,6 +119,8 @@ calculationInputObserver.Observable = null; calculationGroupObserver.Observable = null; calculationObserver.Observable = null; + + Map.Data = null; } else { @@ -131,9 +131,11 @@ calculationInputObserver.Observable = data.WrappedData.WaveConditionsCalculationGroup; calculationGroupObserver.Observable = data.WrappedData.WaveConditionsCalculationGroup; calculationObserver.Observable = data.WrappedData.WaveConditionsCalculationGroup; - } - UpdateMapData(); + SetMapDataFeatures(); + + Map.Data = mapDataCollection; + } } } @@ -164,29 +166,33 @@ private void UpdateMapData() { - if (data == null) - { - Map.ResetMapData(); - } - else - { - ReferenceLine referenceLine = data.Parent.ReferenceLine; - IEnumerable failureMechanismSections = data.WrappedData.Sections; - HydraulicBoundaryDatabase hydraulicBoundaryDatabase = data.Parent.HydraulicBoundaryDatabase; - IEnumerable foreshoreProfiles = data.WrappedData.ForeshoreProfiles; - IEnumerable calculations = - data.WrappedData.WaveConditionsCalculationGroup.GetCalculations().Cast(); + SetMapDataFeatures(); - referenceLineMapData.Features = RingtoetsMapDataFeaturesFactory.CreateReferenceLineFeatures(referenceLine, data.Parent.Id, data.Parent.Name); - sectionsMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionFeatures(failureMechanismSections); - sectionsStartPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionStartPointFeatures(failureMechanismSections); - sectionsEndPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionEndPointFeatures(failureMechanismSections); - hydraulicBoundaryDatabaseMapData.Features = RingtoetsMapDataFeaturesFactory.CreateHydraulicBoundaryDatabaseFeaturesWithDefaultLabels(hydraulicBoundaryDatabase); - foreshoreProfilesMapData.Features = RingtoetsMapDataFeaturesFactory.CreateForeshoreProfilesFeatures(foreshoreProfiles); - calculationsMapData.Features = StabilityStoneCoverMapDataFeaturesFactory.CreateCalculationFeatures(calculations); + referenceLineMapData.NotifyObservers(); + sectionsMapData.NotifyObservers(); + sectionsStartPointMapData.NotifyObservers(); + sectionsEndPointMapData.NotifyObservers(); + hydraulicBoundaryDatabaseMapData.NotifyObservers(); + foreshoreProfilesMapData.NotifyObservers(); + calculationsMapData.NotifyObservers(); + } - mapControl.Data.NotifyObservers(); - } + private void SetMapDataFeatures() + { + ReferenceLine referenceLine = data.Parent.ReferenceLine; + IEnumerable failureMechanismSections = data.WrappedData.Sections; + HydraulicBoundaryDatabase hydraulicBoundaryDatabase = data.Parent.HydraulicBoundaryDatabase; + IEnumerable foreshoreProfiles = data.WrappedData.ForeshoreProfiles; + IEnumerable calculations = + data.WrappedData.WaveConditionsCalculationGroup.GetCalculations().Cast(); + + referenceLineMapData.Features = RingtoetsMapDataFeaturesFactory.CreateReferenceLineFeatures(referenceLine, data.Parent.Id, data.Parent.Name); + sectionsMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionFeatures(failureMechanismSections); + sectionsStartPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionStartPointFeatures(failureMechanismSections); + sectionsEndPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionEndPointFeatures(failureMechanismSections); + hydraulicBoundaryDatabaseMapData.Features = RingtoetsMapDataFeaturesFactory.CreateHydraulicBoundaryDatabaseFeaturesWithDefaultLabels(hydraulicBoundaryDatabase); + foreshoreProfilesMapData.Features = RingtoetsMapDataFeaturesFactory.CreateForeshoreProfilesFeatures(foreshoreProfiles); + calculationsMapData.Features = StabilityStoneCoverMapDataFeaturesFactory.CreateCalculationFeatures(calculations); } } } \ No newline at end of file Index: Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Forms.Test/Views/StabilityStoneCoverFailureMechanismViewTest.cs =================================================================== diff -u -r8c5e80bfb6d67d30ee660f6901461bcc76aff057 -r675771641656abfb56ef89be86bad7bd21684016 --- Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Forms.Test/Views/StabilityStoneCoverFailureMechanismViewTest.cs (.../StabilityStoneCoverFailureMechanismViewTest.cs) (revision 8c5e80bfb6d67d30ee660f6901461bcc76aff057) +++ Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Forms.Test/Views/StabilityStoneCoverFailureMechanismViewTest.cs (.../StabilityStoneCoverFailureMechanismViewTest.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -74,17 +74,16 @@ } [Test] - public void DefaultConstructor_Always_AddMapControlWithCollectionOfEmptyMapData() + public void DefaultConstructor_Always_AddEmptyMapControl() { // Call using (var view = new StabilityStoneCoverFailureMechanismView()) { // Assert Assert.AreEqual(1, view.Controls.Count); Assert.AreSame(view.Map, view.Controls[0]); - Assert.AreEqual(DockStyle.Fill, ((Control) view.Map).Dock); - Assert.AreEqual(StabilityStoneCoverDataResources.StabilityStoneCoverFailureMechanism_DisplayName, view.Map.Data.Name); - AssertEmptyMapData(view.Map.Data); + Assert.AreEqual(DockStyle.Fill, ((Control)view.Map).Dock); + Assert.IsNull(view.Map.Data); } } Index: Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Forms/Views/WaveImpactAsphaltCoverFailureMechanismView.cs =================================================================== diff -u -r8c5e80bfb6d67d30ee660f6901461bcc76aff057 -r675771641656abfb56ef89be86bad7bd21684016 --- Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Forms/Views/WaveImpactAsphaltCoverFailureMechanismView.cs (.../WaveImpactAsphaltCoverFailureMechanismView.cs) (revision 8c5e80bfb6d67d30ee660f6901461bcc76aff057) +++ Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Forms/Views/WaveImpactAsphaltCoverFailureMechanismView.cs (.../WaveImpactAsphaltCoverFailureMechanismView.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -54,6 +54,7 @@ private readonly RecursiveObserver calculationGroupObserver; private readonly RecursiveObserver calculationObserver; + private readonly MapDataCollection mapDataCollection; private readonly MapLineData referenceLineMapData; private readonly MapLineData sectionsMapData; private readonly MapPointData sectionsStartPointMapData; @@ -81,25 +82,22 @@ calculationGroupObserver = new RecursiveObserver(UpdateMapData, pcg => pcg.Children); calculationObserver = new RecursiveObserver(UpdateMapData, pcg => pcg.Children); + mapDataCollection = new MapDataCollection(WaveImpactAsphaltCoverDataResources.WaveImpactAsphaltCoverFailureMechanism_DisplayName); referenceLineMapData = RingtoetsMapDataFactory.CreateReferenceLineMapData(); hydraulicBoundaryDatabaseMapData = RingtoetsMapDataFactory.CreateHydraulicBoundaryDatabaseMapData(); foreshoreProfilesMapData = RingtoetsMapDataFactory.CreateForeshoreProfileMapData(); - sectionsMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsMapData(); sectionsStartPointMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsStartPointMapData(); sectionsEndPointMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsEndPointMapData(); calculationsMapData = RingtoetsMapDataFactory.CreateCalculationsMapData(); - mapControl.Data.Add(referenceLineMapData); - mapControl.Data.Add(sectionsMapData); - mapControl.Data.Add(sectionsStartPointMapData); - mapControl.Data.Add(sectionsEndPointMapData); - mapControl.Data.Add(hydraulicBoundaryDatabaseMapData); - mapControl.Data.Add(foreshoreProfilesMapData); - mapControl.Data.Add(calculationsMapData); - - mapControl.Data.Name = WaveImpactAsphaltCoverDataResources.WaveImpactAsphaltCoverFailureMechanism_DisplayName; - mapControl.Data.NotifyObservers(); + mapDataCollection.Add(referenceLineMapData); + mapDataCollection.Add(sectionsMapData); + mapDataCollection.Add(sectionsStartPointMapData); + mapDataCollection.Add(sectionsEndPointMapData); + mapDataCollection.Add(hydraulicBoundaryDatabaseMapData); + mapDataCollection.Add(foreshoreProfilesMapData); + mapDataCollection.Add(calculationsMapData); } public object Data @@ -121,6 +119,8 @@ calculationInputObserver.Observable = null; calculationGroupObserver.Observable = null; calculationObserver.Observable = null; + + Map.Data = null; } else { @@ -131,8 +131,11 @@ calculationInputObserver.Observable = data.WrappedData.WaveConditionsCalculationGroup; calculationGroupObserver.Observable = data.WrappedData.WaveConditionsCalculationGroup; calculationObserver.Observable = data.WrappedData.WaveConditionsCalculationGroup; + + SetMapDataFeatures(); + + Map.Data = mapDataCollection; } - UpdateMapData(); } } @@ -163,29 +166,33 @@ private void UpdateMapData() { - if (data == null) - { - Map.ResetMapData(); - } - else - { - ReferenceLine referenceLine = data.Parent.ReferenceLine; - IEnumerable failureMechanismSections = data.WrappedData.Sections; - HydraulicBoundaryDatabase hydraulicBoundaryDatabase = data.Parent.HydraulicBoundaryDatabase; - IEnumerable foreshoreProfiles = data.WrappedData.ForeshoreProfiles; - IEnumerable calculations = - data.WrappedData.WaveConditionsCalculationGroup.GetCalculations().Cast(); + SetMapDataFeatures(); - referenceLineMapData.Features = RingtoetsMapDataFeaturesFactory.CreateReferenceLineFeatures(referenceLine, data.Parent.Id, data.Parent.Name); - sectionsMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionFeatures(failureMechanismSections); - sectionsStartPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionStartPointFeatures(failureMechanismSections); - sectionsEndPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionEndPointFeatures(failureMechanismSections); - hydraulicBoundaryDatabaseMapData.Features = RingtoetsMapDataFeaturesFactory.CreateHydraulicBoundaryDatabaseFeaturesWithDefaultLabels(hydraulicBoundaryDatabase); - foreshoreProfilesMapData.Features = RingtoetsMapDataFeaturesFactory.CreateForeshoreProfilesFeatures(foreshoreProfiles); - calculationsMapData.Features = WaveImpactAsphaltCoverMapDataFeaturesFactory.CreateCalculationFeatures(calculations); + referenceLineMapData.NotifyObservers(); + sectionsMapData.NotifyObservers(); + sectionsStartPointMapData.NotifyObservers(); + sectionsEndPointMapData.NotifyObservers(); + hydraulicBoundaryDatabaseMapData.NotifyObservers(); + foreshoreProfilesMapData.NotifyObservers(); + calculationsMapData.NotifyObservers(); + } - mapControl.Data.NotifyObservers(); - } + private void SetMapDataFeatures() + { + ReferenceLine referenceLine = data.Parent.ReferenceLine; + IEnumerable failureMechanismSections = data.WrappedData.Sections; + HydraulicBoundaryDatabase hydraulicBoundaryDatabase = data.Parent.HydraulicBoundaryDatabase; + IEnumerable foreshoreProfiles = data.WrappedData.ForeshoreProfiles; + IEnumerable calculations = + data.WrappedData.WaveConditionsCalculationGroup.GetCalculations().Cast(); + + referenceLineMapData.Features = RingtoetsMapDataFeaturesFactory.CreateReferenceLineFeatures(referenceLine, data.Parent.Id, data.Parent.Name); + sectionsMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionFeatures(failureMechanismSections); + sectionsStartPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionStartPointFeatures(failureMechanismSections); + sectionsEndPointMapData.Features = RingtoetsMapDataFeaturesFactory.CreateFailureMechanismSectionEndPointFeatures(failureMechanismSections); + hydraulicBoundaryDatabaseMapData.Features = RingtoetsMapDataFeaturesFactory.CreateHydraulicBoundaryDatabaseFeaturesWithDefaultLabels(hydraulicBoundaryDatabase); + foreshoreProfilesMapData.Features = RingtoetsMapDataFeaturesFactory.CreateForeshoreProfilesFeatures(foreshoreProfiles); + calculationsMapData.Features = WaveImpactAsphaltCoverMapDataFeaturesFactory.CreateCalculationFeatures(calculations); } } } \ No newline at end of file Index: Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Forms.Test/Views/WaveImpactAsphaltCoverFailureMechanismViewTest.cs =================================================================== diff -u -r8c5e80bfb6d67d30ee660f6901461bcc76aff057 -r675771641656abfb56ef89be86bad7bd21684016 --- Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Forms.Test/Views/WaveImpactAsphaltCoverFailureMechanismViewTest.cs (.../WaveImpactAsphaltCoverFailureMechanismViewTest.cs) (revision 8c5e80bfb6d67d30ee660f6901461bcc76aff057) +++ Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Forms.Test/Views/WaveImpactAsphaltCoverFailureMechanismViewTest.cs (.../WaveImpactAsphaltCoverFailureMechanismViewTest.cs) (revision 675771641656abfb56ef89be86bad7bd21684016) @@ -74,17 +74,16 @@ } [Test] - public void DefaultConstructor_Always_AddMapControlWithCollectionOfEmptyMapData() + public void DefaultConstructor_Always_AddEmptyMapControl() { // Call using (var view = new WaveImpactAsphaltCoverFailureMechanismView()) { // Assert Assert.AreEqual(1, view.Controls.Count); Assert.AreSame(view.Map, view.Controls[0]); - Assert.AreEqual(DockStyle.Fill, ((Control) view.Map).Dock); - Assert.AreEqual(WaveImpactAsphaltCoverDataResources.WaveImpactAsphaltCoverFailureMechanism_DisplayName, view.Map.Data.Name); - AssertEmptyMapData(view.Map.Data); + Assert.AreEqual(DockStyle.Fill, ((Control)view.Map).Dock); + Assert.IsNull(view.Map.Data); } }