Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingFailureMechanismView.cs =================================================================== diff -u -rdb376befd1575a80aa5f4d3e84f803e132ac1a75 -r3607710d80a1f77bf97f81b10869074b765686a0 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingFailureMechanismView.cs (.../PipingFailureMechanismView.cs) (revision db376befd1575a80aa5f4d3e84f803e132ac1a75) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingFailureMechanismView.cs (.../PipingFailureMechanismView.cs) (revision 3607710d80a1f77bf97f81b10869074b765686a0) @@ -57,17 +57,41 @@ } set { - data = value as PipingFailureMechanismContext; + var newValue = value as PipingFailureMechanismContext; - if (data != null) + DetachFromData(); + data = newValue; + SetDataToMap(); + AttachToData(); + } + } + + private void AttachToData() + { + if (data != null) + { + data.Parent.Attach(this); + var surfaceLines = data.WrappedData.SurfaceLines as IObservable; + if (surfaceLines != null) { - data.Parent.Detach(this); - SetDataToMap(); - data.Parent.Attach(this); + surfaceLines.Attach(this); } } } + private void DetachFromData() + { + if (data != null) + { + data.Parent.Detach(this); + var surfaceLines = data.WrappedData.SurfaceLines as IObservable; + if (surfaceLines != null) + { + surfaceLines.Detach(this); + } + } + } + public IMap Map { get @@ -80,14 +104,22 @@ { var mapDataList = new List(); - if (HasReferenceLinePoints()) + if (data != null) { - mapDataList.Add(GetReferenceLineData()); - } + if (HasReferenceLinePoints()) + { + mapDataList.Add(GetReferenceLineData()); + } - if (HasHydraulicBoundaryLocations()) - { - mapDataList.Add(GetHydraulicBoundaryLocations()); + if (HasHydraulicBoundaryLocations()) + { + mapDataList.Add(GetHydraulicBoundaryLocations()); + } + + if (HasSurfaceLines()) + { + mapDataList.Add(GetSurfaceLines()); + } } map.Data = new MapDataCollection(mapDataList); @@ -105,6 +137,12 @@ return new MapPointData(hrLocations); } + private MapData GetSurfaceLines() + { + IEnumerable> surfaceLines = data.WrappedData.SurfaceLines.Select(sl => sl.Points.Select(p => new Point2D(p.X, p.Y))); + return new MapMultiLineData(surfaceLines); + } + private bool HasReferenceLinePoints() { return data.Parent.ReferenceLine != null && data.Parent.ReferenceLine.Points.Any(); @@ -115,6 +153,11 @@ return data.Parent.HydraulicBoundaryDatabase != null && data.Parent.HydraulicBoundaryDatabase.Locations.Any(); } + private bool HasSurfaceLines() + { + return data.WrappedData.SurfaceLines.Any(); + } + public void UpdateObserver() { if (data != null)