From 59a3431d5d63553ffe62b7300ef8488ffb682d10 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 18 Jul 2018 15:24:42 +0200 Subject: [PATCH] fixed bug regarding erasing last maneuvers received from server Change-Id: I3288685cc0e440a9d9aff16ab15ae1161c246e1b --- .../ManeuverMarkersAndLossIndicators.java | 25 ++++++++++++++++--- .../gwt/ui/client/shared/racemap/RaceMap.java | 3 +-- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/ManeuverMarkersAndLossIndicators.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/ManeuverMarkersAndLossIndicators.java index 29778534560..c9e99a4ab70 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/ManeuverMarkersAndLossIndicators.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/ManeuverMarkersAndLossIndicators.java @@ -118,7 +118,12 @@ public class ManeuverMarkersAndLossIndicators { }); } - protected void removeAllManeuverMarkers() { + /** + * Removes the visualizations of maneuvers from the map. The maneuver objects as received from the server are remembered + * (see {@link #lastManeuverResult}) and may be restored by a subsequent call to {@link #showManeuvers(Map)} as it is, e.g., + * called by {@link #updateManeuverMarkersAfterSettingsChanged()}. + */ + void removeAllManeuverMarkers() { // clone entry set to avoid concurrent modification exception for (final Entry, Marker> keyAndMarker : new HashSet<>(maneuverMarkers.entrySet())) { removeManeuverMarker(keyAndMarker.getKey(), keyAndMarker.getValue()); @@ -257,8 +262,9 @@ public class ManeuverMarkersAndLossIndicators { } maneuverLossLinesMap.remove(key); } - if (maneuverLossInfoOverlayMap.remove(key) != null) { - maneuverLossInfoOverlayMap.get(key).removeFromMap(); + final SmallTransparentInfoOverlay overlay; + if ((overlay=maneuverLossInfoOverlayMap.remove(key)) != null) { + overlay.removeFromMap(); } } @@ -401,4 +407,17 @@ public class ManeuverMarkersAndLossIndicators { showManeuvers(lastManeuverResult); } } + + /** + * Removes all maneuver displays from the map and also clears the structure holding the maneuvers + * last received from the server so that upon the next request to show maneuvers without a previous + * update from the server no maneuvers will be displayed.

+ * + * @see #getAndShowManeuvers(RegattaAndRaceIdentifier, Map) + * @see #removeAllManeuverMarkers() + */ + void clearAllManeuverMarkers() { + removeAllManeuverMarkers(); + lastManeuverResult = null; + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.java index f384f894216..814aac67e3f 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.java @@ -1062,7 +1062,7 @@ public class RaceMap extends AbstractCompositeComponent impleme if (douglasMarkers != null) { removeAllMarkDouglasPeuckerpoints(); } - maneuverMarkersAndLossIndicators.removeAllManeuverMarkers(); + maneuverMarkersAndLossIndicators.clearAllManeuverMarkers(); if (requiresCoordinateSystemUpdateWhenCoursePositionAndWindDirectionIsKnown) { updateCoordinateSystemFromSettings(); } @@ -1093,7 +1093,6 @@ public class RaceMap extends AbstractCompositeComponent impleme } zoomMapToNewBounds(zoomToBounds); mapFirstZoomDone = true; - updateEstimatedDuration(raceMapDataDTO.estimatedDuration); } } else {