From 9c471a54eb90f30ba1fe06617c28dda912820794 Mon Sep 17 00:00:00 2001 From: Radeck Date: Tue, 2 May 2017 23:25:39 +0200 Subject: [PATCH 1/6] Increased opacity of boat tail when it is not selected. --- .../com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.java | 2 ++ 1 file changed, 2 insertions(+) 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 21d58460a9d..3b2d54417a5 100644 --- 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 @@ -152,6 +152,7 @@ public class RaceMap extends AbstractCompositeComponent impleme private static final Color LOWLIGHTED_TAIL_COLOR = new RGBColor(200, 200, 200); public static final String GET_RACE_MAP_DATA_CATEGORY = "getRaceMapData"; public static final String GET_WIND_DATA_CATEGORY = "getWindData"; + private static final double LOWLIGHTED_TAIL_OPACITY = 0.3; private static final String COMPACT_HEADER_STYLE = "compactHeader"; public static final Color WATER_COLOR = new RGBColor(0, 67, 125); @@ -2745,6 +2746,7 @@ public class RaceMap extends AbstractCompositeComponent impleme options.setStrokeColor(competitorSelection.getColor(competitor, raceIdentifier).getAsHtml()); } else { options.setStrokeColor(LOWLIGHTED_TAIL_COLOR.getAsHtml()); + options.setStrokeOpacity(LOWLIGHTED_TAIL_OPACITY); } if (isHighlighted) { options.setStrokeWeight(2); From 640097a25148e9b03760fd15943b8912aa7da357 Mon Sep 17 00:00:00 2001 From: Radeck Date: Thu, 4 May 2017 17:44:23 +0200 Subject: [PATCH 2/6] Introduced displayMode to switch between three states DEFAULT, SELECTED, NOT_SELECTED. Displays boats accordingly. --- .../ui/client/shared/racemap/BoatOverlay.java | 13 +++++- .../gwt/ui/client/shared/racemap/RaceMap.java | 46 ++++++++++++++----- .../ui/client/shared/racemap/TailFactory.java | 3 +- .../racemap/BoatClassVectorGraphics.java | 7 +-- .../DinghyWithSpinnakerVectorGraphics.java | 37 +++++++++++---- .../racemap/Extreme40VectorGraphics.java | 9 ++-- .../ui/shared/racemap/GC32VectorGraphics.java | 9 ++-- .../KeelBoatWithGennakerVectorGraphics.java | 7 +-- .../shared/racemap/LaserVectorGraphics.java | 7 +-- .../racemap/SmallMultihullVectorGraphics.java | 9 ++-- .../shared/racemap/_49erVectorGraphics.java | 7 +-- 11 files changed, 108 insertions(+), 46 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/BoatOverlay.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/BoatOverlay.java index 8fb290dc5d6..68752b20a11 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/BoatOverlay.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/BoatOverlay.java @@ -56,6 +56,9 @@ public class BoatOverlay extends CanvasOverlayV3 { private Integer lastHeight; private Size lastScale; private Color lastColor; + + public static enum DisplayMode { DEFAULT, SELECTED, NOT_SELECTED }; + private DisplayMode displayMode; /** * Remembers the old drawing angle as passed to {@link #setCanvasRotation(double)} to minimize rotation angle upon @@ -91,7 +94,7 @@ public class BoatOverlay extends CanvasOverlayV3 { setCanvasSize(canvasWidth, canvasHeight); } if (needToDraw(boatFix.legType, boatFix.tack, isSelected(), canvasWidth, canvasHeight, boatSizeScaleFactor, color)) { - boatVectorGraphics.drawBoatToCanvas(getCanvas().getContext2d(), boatFix.legType, boatFix.tack, isSelected(), + boatVectorGraphics.drawBoatToCanvas(getCanvas().getContext2d(), boatFix.legType, boatFix.tack, getDisplayMode(), canvasWidth, canvasHeight, boatSizeScaleFactor, color); lastLegType = boatFix.legType; lastTack = boatFix.tack; @@ -186,4 +189,12 @@ public class BoatOverlay extends CanvasOverlayV3 { } } + public DisplayMode getDisplayMode() { + return displayMode; + } + + public void setDisplayMode(DisplayMode displayMode) { + this.displayMode = displayMode; + } + } 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 3b2d54417a5..fad77ae9d61 100644 --- 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 @@ -101,6 +101,7 @@ import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.client.WindSourceTypeFormatter; import com.sap.sailing.gwt.ui.client.shared.filter.QuickRankProvider; +import com.sap.sailing.gwt.ui.client.shared.racemap.BoatOverlay.DisplayMode; import com.sap.sailing.gwt.ui.client.shared.racemap.RaceCompetitorSet.CompetitorsForRaceDefinedListener; import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapHelpLinesSettings.HelpLineTypes; import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapZoomSettings.ZoomTypes; @@ -1915,12 +1916,12 @@ public class RaceMap extends AbstractCompositeComponent impleme if (boatOverlay == null) { boatOverlay = createBoatOverlay(RaceMapOverlaysZIndexes.BOATS_ZINDEX, competitorDTO, displayHighlighted(competitorDTO)); boatOverlays.put(competitorDTO, boatOverlay); - boatOverlay.setSelected(displayHighlighted(competitorDTO)); + boatOverlay.setDisplayMode(displayHighlighted(competitorDTO)); boatOverlay.setBoatFix(lastBoatFix, timeForPositionTransitionMillis); boatOverlay.addToMap(); } else { usedExistingCanvas = true; - boatOverlay.setSelected(displayHighlighted(competitorDTO)); + boatOverlay.setDisplayMode(displayHighlighted(competitorDTO)); boatOverlay.setBoatFix(lastBoatFix, timeForPositionTransitionMillis); boatOverlay.draw(); } @@ -1929,8 +1930,29 @@ public class RaceMap extends AbstractCompositeComponent impleme return usedExistingCanvas; } - private boolean displayHighlighted(CompetitorDTO competitorDTO) { - return !settings.isShowOnlySelectedCompetitors() && competitorSelection.isSelected(competitorDTO); + private DisplayMode displayHighlighted(CompetitorDTO competitorDTO) { + boolean competitorisSelected = competitorSelection.isSelected(competitorDTO); + if(!settings.isShowOnlySelectedCompetitors()){ + if(competitorisSelected){ + return DisplayMode.SELECTED; + } + else{ + if(isSomeOtherCompetitorSelected()){ + return DisplayMode.NOT_SELECTED; + } + else{ + return DisplayMode.DEFAULT; + } + } + } + else{ + return competitorSelection.isSelected(competitorDTO) ? DisplayMode.SELECTED : DisplayMode.DEFAULT; + } + + } + + private boolean isSomeOtherCompetitorSelected(){ + return Util.size(competitorSelection.getSelectedCompetitors()) > 0; } private class CourseMarkInfoWindowClickHandler implements ClickMapHandler { @@ -1987,9 +2009,9 @@ public class RaceMap extends AbstractCompositeComponent impleme return infoText.toString(); } - private BoatOverlay createBoatOverlay(int zIndex, final CompetitorDTO competitorDTO, boolean highlighted) { + private BoatOverlay createBoatOverlay(int zIndex, final CompetitorDTO competitorDTO, DisplayMode displayMode) { final BoatOverlay boatCanvas = new BoatOverlay(map, zIndex, competitorDTO, competitorSelection.getColor(competitorDTO, raceIdentifier), coordinateSystem); - boatCanvas.setSelected(highlighted); + boatCanvas.setDisplayMode(displayMode); boatCanvas.addClickHandler(new ClickMapHandler() { @Override public void onEvent(ClickMapEvent event) { @@ -2421,7 +2443,7 @@ public class RaceMap extends AbstractCompositeComponent impleme // only change highlighting BoatOverlay boatCanvas = boatOverlays.get(competitor); if (boatCanvas != null) { - boatCanvas.setSelected(displayHighlighted(competitor)); + boatCanvas.setDisplayMode(displayHighlighted(competitor)); boatCanvas.draw(); showCompetitorInfoOnMap(timer.getTime(), -1, competitorSelection.getSelectedFilteredCompetitors()); } else { @@ -2431,6 +2453,7 @@ public class RaceMap extends AbstractCompositeComponent impleme timeChanged(timer.getTime(), null); } } + // Now update tails for all competitors because selection change may also affect all unselected competitors for (CompetitorDTO oneOfAllCompetitors : competitorSelection.getAllCompetitors()) { Polyline tail = fixesAndTails.getTail(oneOfAllCompetitors); @@ -2439,6 +2462,7 @@ public class RaceMap extends AbstractCompositeComponent impleme tail.setOptions(newOptions); } } + timeChanged(timer.getTime(), null); // Trigger auto-zoom if needed RaceMapZoomSettings zoomSettings = settings.getZoomSettings(); if (!zoomSettings.containsZoomType(ZoomTypes.NONE) && zoomSettings.isZoomToSelectedCompetitors()) { @@ -2471,7 +2495,7 @@ public class RaceMap extends AbstractCompositeComponent impleme // "lowlight" currently selected competitor BoatOverlay boatCanvas = boatOverlays.get(competitor); if (boatCanvas != null) { - boatCanvas.setSelected(displayHighlighted(competitor)); + boatCanvas.setDisplayMode(displayHighlighted(competitor)); boatCanvas.draw(); } showCompetitorInfoOnMap(timer.getTime(), -1, competitorSelection.getSelectedFilteredCompetitors()); @@ -2736,19 +2760,19 @@ public class RaceMap extends AbstractCompositeComponent impleme } @Override - public PolylineOptions createTailStyle(CompetitorDTO competitor, boolean isHighlighted) { + public PolylineOptions createTailStyle(CompetitorDTO competitor, DisplayMode displayMode) { PolylineOptions options = PolylineOptions.newInstance(); options.setClickable(true); options.setGeodesic(true); options.setStrokeOpacity(1.0); boolean noCompetitorSelected = Util.isEmpty(competitorSelection.getSelectedCompetitors()); - if (isHighlighted || noCompetitorSelected || getSettings().isShowOnlySelectedCompetitors()) { + if (displayMode == DisplayMode.SELECTED || noCompetitorSelected || getSettings().isShowOnlySelectedCompetitors()) { options.setStrokeColor(competitorSelection.getColor(competitor, raceIdentifier).getAsHtml()); } else { options.setStrokeColor(LOWLIGHTED_TAIL_COLOR.getAsHtml()); options.setStrokeOpacity(LOWLIGHTED_TAIL_OPACITY); } - if (isHighlighted) { + if (displayMode == DisplayMode.SELECTED) { options.setStrokeWeight(2); } else { options.setStrokeWeight(1); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/TailFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/TailFactory.java index dc17a3f0007..6a8a985eb2f 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/TailFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/TailFactory.java @@ -6,6 +6,7 @@ import com.google.gwt.maps.client.base.LatLng; import com.google.gwt.maps.client.overlays.Polyline; import com.google.gwt.maps.client.overlays.PolylineOptions; import com.sap.sailing.domain.common.dto.CompetitorDTO; +import com.sap.sailing.gwt.ui.client.shared.racemap.BoatOverlay.DisplayMode; /** * Creates tails and their styles for the map. @@ -16,5 +17,5 @@ import com.sap.sailing.domain.common.dto.CompetitorDTO; public interface TailFactory { Polyline createTail(CompetitorDTO competitor, List points); - PolylineOptions createTailStyle(CompetitorDTO competitor, boolean isHighlighted); + PolylineOptions createTailStyle(CompetitorDTO competitor, DisplayMode displayMode); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/BoatClassVectorGraphics.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/BoatClassVectorGraphics.java index bc04c97d42f..d5ea2e995d3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/BoatClassVectorGraphics.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/BoatClassVectorGraphics.java @@ -9,6 +9,7 @@ import com.google.gwt.maps.client.base.Size; import com.sap.sailing.domain.common.BoatClassMasterdata; import com.sap.sailing.domain.common.LegType; import com.sap.sailing.domain.common.Tack; +import com.sap.sailing.gwt.ui.client.shared.racemap.BoatOverlay.DisplayMode; import com.sap.sse.common.Color; /** @@ -55,7 +56,7 @@ public abstract class BoatClassVectorGraphics { return Collections.unmodifiableSet(compatibleBoatClasses); } - protected abstract void drawBoat(Context2d ctx, boolean isSelected, String color); + protected abstract void drawBoat(Context2d ctx, DisplayMode displayMode, String color); protected abstract void drawDownwindPortTackSails(Context2d ctx); @@ -111,14 +112,14 @@ public abstract class BoatClassVectorGraphics { } } - public void drawBoatToCanvas(Context2d ctx, LegType legType, Tack tack, boolean isSelected, double width, + public void drawBoatToCanvas(Context2d ctx, LegType legType, Tack tack, DisplayMode displayMode, double width, double height, Size scaleFactor, Color color) { ctx.save(); ctx.clearRect(0, 0, width, height); ctx.translate(width / 2.0, height / 2.0); ctx.scale(scaleFactor.getWidth(), scaleFactor.getHeight()); ctx.translate(-hullLengthInPx / 2.0, -beamInPx / 2.0); - drawBoat(ctx, isSelected, color.getAsHtml()); + drawBoat(ctx, displayMode, color.getAsHtml()); drawSails(ctx, legType, tack); ctx.restore(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/DinghyWithSpinnakerVectorGraphics.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/DinghyWithSpinnakerVectorGraphics.java index 7ab44a9a82f..78a18f6c3c4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/DinghyWithSpinnakerVectorGraphics.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/DinghyWithSpinnakerVectorGraphics.java @@ -2,6 +2,7 @@ package com.sap.sailing.gwt.ui.shared.racemap; import com.google.gwt.canvas.dom.client.Context2d; import com.sap.sailing.domain.common.BoatClassMasterdata; +import com.sap.sailing.gwt.ui.client.shared.racemap.BoatOverlay.DisplayMode; public class DinghyWithSpinnakerVectorGraphics extends BoatClassVectorGraphics { @@ -10,18 +11,28 @@ public class DinghyWithSpinnakerVectorGraphics extends BoatClassVectorGraphics { } @Override - protected void drawBoat(Context2d ctx, boolean isSelected, String color) { + protected void drawBoat(Context2d ctx, DisplayMode displayMode, String color) { ctx.translate(0,-823); //draw hull - if(isSelected) { - ctx.setFillStyle(color); - ctx.setStrokeStyle(color); - } else { + //draw cockpit + switch (displayMode){ + case DEFAULT: ctx.setFillStyle ("#FFFFFF"); ctx.setStrokeStyle("#FFFFFF"); + break; + case SELECTED: + ctx.setFillStyle (color); + ctx.setStrokeStyle(color); + break; + case NOT_SELECTED: + ctx.setGlobalAlpha(0.1); + ctx.setFillStyle(color); + ctx.setStrokeStyle(color); + break; } + ctx.setLineWidth(1.0); ctx.beginPath(); ctx.moveTo(7,871); @@ -32,13 +43,21 @@ public class DinghyWithSpinnakerVectorGraphics extends BoatClassVectorGraphics { ctx.stroke(); //draw cockpit - if(isSelected) { - ctx.setFillStyle ("#FFFFFF"); - ctx.setStrokeStyle("#FFFFFF"); - } else { + switch (displayMode){ + case DEFAULT: ctx.setFillStyle(color); ctx.setStrokeStyle(color); + break; + case SELECTED: + ctx.setFillStyle ("#FFFFFF"); + ctx.setStrokeStyle("#FFFFFF"); + break; + case NOT_SELECTED: + ctx.setFillStyle ("#FFFFFF"); + ctx.setStrokeStyle("#FFFFFF"); + break; } + ctx.beginPath(); ctx.moveTo(15,970); ctx.lineTo(14,899); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/Extreme40VectorGraphics.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/Extreme40VectorGraphics.java index 5412fbb511e..52361cb6635 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/Extreme40VectorGraphics.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/Extreme40VectorGraphics.java @@ -3,6 +3,7 @@ package com.sap.sailing.gwt.ui.shared.racemap; import com.google.gwt.canvas.dom.client.Context2d; import com.google.gwt.canvas.dom.client.Context2d.LineJoin; import com.sap.sailing.domain.common.BoatClassMasterdata; +import com.sap.sailing.gwt.ui.client.shared.racemap.BoatOverlay.DisplayMode; public class Extreme40VectorGraphics extends BoatClassVectorGraphics { @@ -11,9 +12,9 @@ public class Extreme40VectorGraphics extends BoatClassVectorGraphics { } @Override - protected void drawBoat(Context2d ctx, boolean isSelected, String color) { + protected void drawBoat(Context2d ctx, DisplayMode displayMode, String color) { // outer net - if(isSelected) { + if(displayMode == DisplayMode.SELECTED) { ctx.setFillStyle(color); ctx.setStrokeStyle(color); } else { @@ -36,7 +37,7 @@ public class Extreme40VectorGraphics extends BoatClassVectorGraphics { ctx.stroke(); // inner net - if(isSelected) { + if(displayMode == DisplayMode.SELECTED) { ctx.setFillStyle("#FFFFFF"); ctx.setStrokeStyle("#FFFFFF"); } else { @@ -59,7 +60,7 @@ public class Extreme40VectorGraphics extends BoatClassVectorGraphics { ctx.stroke(); // hull - left and right part - if(isSelected) { + if(displayMode == DisplayMode.SELECTED) { ctx.setFillStyle(color); ctx.setStrokeStyle(color); } else { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/GC32VectorGraphics.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/GC32VectorGraphics.java index 122db788ac8..0b16b607c9d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/GC32VectorGraphics.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/GC32VectorGraphics.java @@ -3,6 +3,7 @@ package com.sap.sailing.gwt.ui.shared.racemap; import com.google.gwt.canvas.dom.client.Context2d; import com.google.gwt.canvas.dom.client.Context2d.LineJoin; import com.sap.sailing.domain.common.BoatClassMasterdata; +import com.sap.sailing.gwt.ui.client.shared.racemap.BoatOverlay.DisplayMode; /** * Graphics for a GC32 - currently same as {@link Extreme40VectorGraphics} but @@ -17,9 +18,9 @@ public class GC32VectorGraphics extends BoatClassVectorGraphics { } @Override - protected void drawBoat(Context2d ctx, boolean isSelected, String color) { + protected void drawBoat(Context2d ctx, DisplayMode displayMode, String color) { // outer net - if(isSelected) { + if(displayMode == DisplayMode.SELECTED) { ctx.setFillStyle(color); ctx.setStrokeStyle(color); } else { @@ -42,7 +43,7 @@ public class GC32VectorGraphics extends BoatClassVectorGraphics { ctx.stroke(); // inner net - if(isSelected) { + if(displayMode == DisplayMode.SELECTED) { ctx.setFillStyle("#FFFFFF"); ctx.setStrokeStyle("#FFFFFF"); } else { @@ -65,7 +66,7 @@ public class GC32VectorGraphics extends BoatClassVectorGraphics { ctx.stroke(); // hull - left and right part - if(isSelected) { + if(displayMode == DisplayMode.SELECTED) { ctx.setFillStyle(color); ctx.setStrokeStyle(color); } else { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/KeelBoatWithGennakerVectorGraphics.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/KeelBoatWithGennakerVectorGraphics.java index 3adc986118c..509971b6906 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/KeelBoatWithGennakerVectorGraphics.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/KeelBoatWithGennakerVectorGraphics.java @@ -2,6 +2,7 @@ package com.sap.sailing.gwt.ui.shared.racemap; import com.google.gwt.canvas.dom.client.Context2d; import com.sap.sailing.domain.common.BoatClassMasterdata; +import com.sap.sailing.gwt.ui.client.shared.racemap.BoatOverlay.DisplayMode; public class KeelBoatWithGennakerVectorGraphics extends BoatClassVectorGraphics { @@ -10,12 +11,12 @@ public class KeelBoatWithGennakerVectorGraphics extends BoatClassVectorGraphics } @Override - protected void drawBoat(Context2d ctx, boolean isSelected, String color) { + protected void drawBoat(Context2d ctx, DisplayMode displayMode, String color) { ctx.translate(0,-803); //draw hull - if(isSelected) { + if(displayMode == DisplayMode.SELECTED) { ctx.setFillStyle(color); ctx.setStrokeStyle(color); } else { @@ -53,7 +54,7 @@ public class KeelBoatWithGennakerVectorGraphics extends BoatClassVectorGraphics ctx.stroke(); //draw cockpit - if(isSelected) { + if(displayMode == DisplayMode.SELECTED) { ctx.setFillStyle ("#FFFFFF"); ctx.setStrokeStyle("#FFFFFF"); } else { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/LaserVectorGraphics.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/LaserVectorGraphics.java index b30244df06a..eeb00566e36 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/LaserVectorGraphics.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/LaserVectorGraphics.java @@ -2,6 +2,7 @@ package com.sap.sailing.gwt.ui.shared.racemap; import com.google.gwt.canvas.dom.client.Context2d; import com.sap.sailing.domain.common.BoatClassMasterdata; +import com.sap.sailing.gwt.ui.client.shared.racemap.BoatOverlay.DisplayMode; public class LaserVectorGraphics extends BoatClassVectorGraphics { @@ -10,9 +11,9 @@ public class LaserVectorGraphics extends BoatClassVectorGraphics { } @Override - protected void drawBoat(Context2d ctx, boolean isSelected, String color) { + protected void drawBoat(Context2d ctx, DisplayMode displayMode, String color) { // outer part of the hull - if(isSelected) { + if(displayMode == DisplayMode.SELECTED) { ctx.setFillStyle(color); ctx.setStrokeStyle(color); } else { @@ -33,7 +34,7 @@ public class LaserVectorGraphics extends BoatClassVectorGraphics { ctx.stroke(); // inner part of the hull - if(isSelected) { + if(displayMode == DisplayMode.SELECTED) { ctx.setFillStyle ("#FFFFFF"); ctx.setStrokeStyle("#FFFFFF"); } else { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/SmallMultihullVectorGraphics.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/SmallMultihullVectorGraphics.java index b72bc864965..b2d1f861954 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/SmallMultihullVectorGraphics.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/SmallMultihullVectorGraphics.java @@ -3,6 +3,7 @@ package com.sap.sailing.gwt.ui.shared.racemap; import com.google.gwt.canvas.dom.client.Context2d; import com.google.gwt.canvas.dom.client.Context2d.LineJoin; import com.sap.sailing.domain.common.BoatClassMasterdata; +import com.sap.sailing.gwt.ui.client.shared.racemap.BoatOverlay.DisplayMode; public class SmallMultihullVectorGraphics extends BoatClassVectorGraphics { @@ -11,9 +12,9 @@ public class SmallMultihullVectorGraphics extends BoatClassVectorGraphics { } @Override - protected void drawBoat(Context2d ctx, boolean isSelected, String color) { + protected void drawBoat(Context2d ctx, DisplayMode displayMode, String color) { // outer net - if(isSelected) { + if(displayMode == DisplayMode.SELECTED) { ctx.setFillStyle(color); ctx.setStrokeStyle(color); } else { @@ -37,7 +38,7 @@ public class SmallMultihullVectorGraphics extends BoatClassVectorGraphics { ctx.stroke(); // inner net - if(isSelected) { + if(displayMode == DisplayMode.SELECTED) { ctx.setFillStyle("#FFFFFF"); ctx.setStrokeStyle("#FFFFFF"); } else { @@ -61,7 +62,7 @@ public class SmallMultihullVectorGraphics extends BoatClassVectorGraphics { ctx.stroke(); // hull - left and right part - if(isSelected) { + if(displayMode == DisplayMode.SELECTED) { ctx.setFillStyle(color); ctx.setStrokeStyle(color); } else { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/_49erVectorGraphics.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/_49erVectorGraphics.java index 1d049b3598d..89b189edacb 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/_49erVectorGraphics.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/_49erVectorGraphics.java @@ -3,6 +3,7 @@ package com.sap.sailing.gwt.ui.shared.racemap; import com.google.gwt.canvas.dom.client.Context2d; import com.google.gwt.canvas.dom.client.Context2d.LineJoin; import com.sap.sailing.domain.common.BoatClassMasterdata; +import com.sap.sailing.gwt.ui.client.shared.racemap.BoatOverlay.DisplayMode; public class _49erVectorGraphics extends BoatClassVectorGraphics { @@ -11,8 +12,8 @@ public class _49erVectorGraphics extends BoatClassVectorGraphics { } @Override - protected void drawBoat(Context2d ctx, boolean isSelected, String color) { - if(isSelected) { + protected void drawBoat(Context2d ctx, DisplayMode displayMode, String color) { + if(displayMode == DisplayMode.SELECTED) { ctx.setFillStyle(color); ctx.setStrokeStyle(color); } else { @@ -62,7 +63,7 @@ public class _49erVectorGraphics extends BoatClassVectorGraphics { ctx.fill(); ctx.stroke(); - if(isSelected) { + if(displayMode == DisplayMode.SELECTED) { ctx.setFillStyle ("#FFFFFF"); ctx.setStrokeStyle("#FFFFFF"); } else { From cf3cd2c7910e711e437e955f7eebab6cc5bcbad3 Mon Sep 17 00:00:00 2001 From: Radeck Date: Thu, 4 May 2017 17:56:30 +0200 Subject: [PATCH 3/6] Code before refactoring. --- .../gwt/ui/client/shared/racemap/RaceMap.java | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) 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 fad77ae9d61..64b152893c7 100644 --- 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 @@ -2452,16 +2452,14 @@ public class RaceMap extends AbstractCompositeComponent impleme // data for newly selected competitor supposedly missing; refresh timeChanged(timer.getTime(), null); } - } - // Now update tails for all competitors because selection change may also affect all unselected competitors - for (CompetitorDTO oneOfAllCompetitors : competitorSelection.getAllCompetitors()) { - Polyline tail = fixesAndTails.getTail(oneOfAllCompetitors); + Polyline tail = fixesAndTails.getTail(competitor); if (tail != null) { - PolylineOptions newOptions = createTailStyle(oneOfAllCompetitors, displayHighlighted(oneOfAllCompetitors)); + PolylineOptions newOptions = createTailStyle(competitor, displayHighlighted(competitor)); tail.setOptions(newOptions); } } + timeChanged(timer.getTime(), null); // Trigger auto-zoom if needed RaceMapZoomSettings zoomSettings = settings.getZoomSettings(); @@ -2765,18 +2763,22 @@ public class RaceMap extends AbstractCompositeComponent impleme options.setClickable(true); options.setGeodesic(true); options.setStrokeOpacity(1.0); - boolean noCompetitorSelected = Util.isEmpty(competitorSelection.getSelectedCompetitors()); - if (displayMode == DisplayMode.SELECTED || noCompetitorSelected || getSettings().isShowOnlySelectedCompetitors()) { + + switch(displayMode){ + case DEFAULT: options.setStrokeColor(competitorSelection.getColor(competitor, raceIdentifier).getAsHtml()); - } else { + options.setStrokeWeight(1); + break; + case SELECTED: + options.setStrokeColor(competitorSelection.getColor(competitor, raceIdentifier).getAsHtml()); + options.setStrokeWeight(2); + break; + case NOT_SELECTED: options.setStrokeColor(LOWLIGHTED_TAIL_COLOR.getAsHtml()); options.setStrokeOpacity(LOWLIGHTED_TAIL_OPACITY); + break; } - if (displayMode == DisplayMode.SELECTED) { - options.setStrokeWeight(2); - } else { - options.setStrokeWeight(1); - } + options.setZindex(RaceMapOverlaysZIndexes.BOATTAILS_ZINDEX); return options; } From d1399b924d9a07865296df9c2d0fb29f258ff536 Mon Sep 17 00:00:00 2001 From: Radeck Date: Sat, 6 May 2017 20:17:01 +0200 Subject: [PATCH 4/6] Refactored code a bit. --- .../gwt/ui/client/shared/racemap/RaceMap.java | 146 +++++++++++------- 1 file changed, 90 insertions(+), 56 deletions(-) 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 64b152893c7..86fa355624a 100644 --- 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 @@ -762,7 +762,7 @@ public class RaceMap extends AbstractCompositeComponent impleme } public void redraw() { - timeChanged(timer.getTime(), null); + refreshData(); } Map getBoatOverlays() { @@ -2422,88 +2422,122 @@ public class RaceMap extends AbstractCompositeComponent impleme @Override public void addedToSelection(CompetitorDTO competitor) { if (settings.isShowOnlySelectedCompetitors()) { - if (Util.size(competitorSelection.getSelectedCompetitors()) == 1) { - // first competitors selected; remove all others from map - Iterator> i = boatOverlays.entrySet().iterator(); - while (i.hasNext()) { - Entry next = i.next(); - if (!next.getKey().equals(competitor)) { - CanvasOverlayV3 boatOverlay = next.getValue(); - boatOverlay.removeFromMap(); - fixesAndTails.removeTail(next.getKey()); - i.remove(); // only this way a ConcurrentModificationException while looping can be avoided - } - } - showCompetitorInfoOnMap(timer.getTime(), -1, competitorSelection.getSelectedFilteredCompetitors()); + if (onlyOneCompetitorIsSelected()) { + removeAllCompetitorsExceptedThisOne(competitor); + showInfoForSelectedCompetitors(); } else { - // adding a single competitor; may need to re-load data, so refresh: - timeChanged(timer.getTime(), null); + refreshData(); } } else { - // only change highlighting - BoatOverlay boatCanvas = boatOverlays.get(competitor); - if (boatCanvas != null) { - boatCanvas.setDisplayMode(displayHighlighted(competitor)); - boatCanvas.draw(); - showCompetitorInfoOnMap(timer.getTime(), -1, competitorSelection.getSelectedFilteredCompetitors()); + if (boatExists(competitor)) { + showInfoForSelectedCompetitors(); } else { // seems like an internal error not to find the lowlighted marker; but maybe the // competitor was added late to the race; // data for newly selected competitor supposedly missing; refresh - timeChanged(timer.getTime(), null); - } - - Polyline tail = fixesAndTails.getTail(competitor); - if (tail != null) { - PolylineOptions newOptions = createTailStyle(competitor, displayHighlighted(competitor)); - tail.setOptions(newOptions); + refreshData(); } + updateDisplayModeForAllCompetitors(); } - - timeChanged(timer.getTime(), null); - // Trigger auto-zoom if needed + updateMapZoom(); + } + + private void updateMapZoom() { RaceMapZoomSettings zoomSettings = settings.getZoomSettings(); if (!zoomSettings.containsZoomType(ZoomTypes.NONE) && zoomSettings.isZoomToSelectedCompetitors()) { zoomMapToNewBounds(zoomSettings.getNewBounds(this)); } } + private boolean boatExists(CompetitorDTO competitor){ + return boatOverlays.get(competitor) != null; + } + + private void updateDisplayModeForAllCompetitors() { + for (CompetitorDTO oneOfAllCompetitors : competitorSelection.getAllCompetitors()) { + updateDisplayMode(oneOfAllCompetitors); + } + } + + private void showInfoForSelectedCompetitors() { + showCompetitorInfoOnMap(timer.getTime(), -1, competitorSelection.getSelectedFilteredCompetitors()); + } + + private void refreshData() { + timeChanged(timer.getTime(), null); + } + + private void updateDisplayMode(CompetitorDTO oneOfAllCompetitors) { + updateTailDisplayMode(oneOfAllCompetitors); + updateBoatDisplayMode(oneOfAllCompetitors); + } + + private void updateTailDisplayMode(CompetitorDTO oneOfAllCompetitors) { + Polyline tail = fixesAndTails.getTail(oneOfAllCompetitors); + if (tail != null) { + PolylineOptions newOptions = createTailStyle(oneOfAllCompetitors, + displayHighlighted(oneOfAllCompetitors)); + tail.setOptions(newOptions); + } + } + + private void updateBoatDisplayMode(CompetitorDTO oneOfAllCompetitors) { + BoatOverlay boatCanvas = boatOverlays.get(oneOfAllCompetitors); + if (boatCanvas != null) { + boatCanvas.setDisplayMode(displayHighlighted(oneOfAllCompetitors)); + boatCanvas.draw(); + } + } + + private void removeAllCompetitorsExceptedThisOne(CompetitorDTO competitor) { + Iterator> i = boatOverlays.entrySet().iterator(); + while (i.hasNext()) { + Entry next = i.next(); + if (!next.getKey().equals(competitor)) { + CanvasOverlayV3 boatOverlay = next.getValue(); + boatOverlay.removeFromMap(); + fixesAndTails.removeTail(next.getKey()); + i.remove(); // only this way a ConcurrentModificationException while looping can be avoided + } + } + } + + private boolean onlyOneCompetitorIsSelected() { + return Util.size(competitorSelection.getSelectedCompetitors()) == 1; + } + @Override public void removedFromSelection(CompetitorDTO competitor) { if (isShowAnyHelperLines()) { // helper lines depend on which competitor is visible, because the *visible* leader is used for // deciding which helper lines to show: - timeChanged(timer.getTime(), null); + refreshData(); } else { - // try a more incremental update otherwise if (settings.isShowOnlySelectedCompetitors()) { - // if selection is now empty, show all competitors - if (Util.isEmpty(competitorSelection.getSelectedCompetitors())) { - timeChanged(timer.getTime(), null); + if (noCompetitorsSelected()) { + refreshData(); } else { - // otherwise remove only deselected competitor's boat images and tail - BoatOverlay removedBoatOverlay = boatOverlays.remove(competitor); - if (removedBoatOverlay != null) { - removedBoatOverlay.removeFromMap(); - } - fixesAndTails.removeTail(competitor); - showCompetitorInfoOnMap(timer.getTime(), -1, competitorSelection.getSelectedFilteredCompetitors()); + removeFromMap(competitor); + showInfoForSelectedCompetitors(); } } else { - // "lowlight" currently selected competitor - BoatOverlay boatCanvas = boatOverlays.get(competitor); - if (boatCanvas != null) { - boatCanvas.setDisplayMode(displayHighlighted(competitor)); - boatCanvas.draw(); + updateBoatDisplayMode(competitor); + showInfoForSelectedCompetitors(); } - showCompetitorInfoOnMap(timer.getTime(), -1, competitorSelection.getSelectedFilteredCompetitors()); } + updateMapZoom(); } - //Trigger auto-zoom if needed - RaceMapZoomSettings zoomSettings = settings.getZoomSettings(); - if (!zoomSettings.containsZoomType(ZoomTypes.NONE) && zoomSettings.isZoomToSelectedCompetitors()) { - zoomMapToNewBounds(zoomSettings.getNewBounds(this)); + + private boolean noCompetitorsSelected() { + return Util.isEmpty(competitorSelection.getSelectedCompetitors()); } + + private void removeFromMap(CompetitorDTO competitor) { + BoatOverlay removedBoatOverlay = boatOverlays.remove(competitor); + if (removedBoatOverlay != null) { + removedBoatOverlay.removeFromMap(); + } + fixesAndTails.removeTail(competitor); } private boolean isShowAnyHelperLines() { @@ -2743,12 +2777,12 @@ public class RaceMap extends AbstractCompositeComponent impleme @Override public void competitorsListChanged(Iterable competitors) { - timeChanged(timer.getTime(), null); + refreshData(); } @Override public void filteredCompetitorsListChanged(Iterable filteredCompetitors) { - timeChanged(timer.getTime(), null); + refreshData(); } @Override From 890994551e56c7de8cea855b63edbf1fc3e54c06 Mon Sep 17 00:00:00 2001 From: Radeck Date: Sat, 6 May 2017 20:50:51 +0200 Subject: [PATCH 5/6] Adjusted boat drawing to displayMode. --- .../racemap/BoatClassVectorGraphics.java | 1 + .../DinghyWithSpinnakerVectorGraphics.java | 13 ++-- .../racemap/Extreme40VectorGraphics.java | 60 ++++++++++++++----- .../ui/shared/racemap/GC32VectorGraphics.java | 56 +++++++++++++---- .../KeelBoatWithGennakerVectorGraphics.java | 39 +++++++++--- .../shared/racemap/LaserVectorGraphics.java | 32 +++++++--- .../racemap/SmallMultihullVectorGraphics.java | 50 ++++++++++++---- .../shared/racemap/_49erVectorGraphics.java | 36 ++++++++--- 8 files changed, 217 insertions(+), 70 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/BoatClassVectorGraphics.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/BoatClassVectorGraphics.java index d5ea2e995d3..66ce40fa437 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/BoatClassVectorGraphics.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/BoatClassVectorGraphics.java @@ -29,6 +29,7 @@ import com.sap.sse.common.Color; public abstract class BoatClassVectorGraphics { protected static final String SAIL_FILLCOLOR = "#888888"; protected static final String SAIL_STROKECOLOR = "#000000"; + protected static final double BOAT_NOT_SELECTED_OPACITY = 0.3; /** the minimal length of the hull in pixel when the boat is drawn */ private static final double MIN_HULL_LENGTH_IN_PX = 25; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/DinghyWithSpinnakerVectorGraphics.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/DinghyWithSpinnakerVectorGraphics.java index 78a18f6c3c4..b40adcf04f4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/DinghyWithSpinnakerVectorGraphics.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/DinghyWithSpinnakerVectorGraphics.java @@ -16,7 +16,7 @@ public class DinghyWithSpinnakerVectorGraphics extends BoatClassVectorGraphics { ctx.translate(0,-823); //draw hull - //draw cockpit + switch (displayMode){ case DEFAULT: ctx.setFillStyle ("#FFFFFF"); @@ -27,9 +27,9 @@ public class DinghyWithSpinnakerVectorGraphics extends BoatClassVectorGraphics { ctx.setStrokeStyle(color); break; case NOT_SELECTED: - ctx.setGlobalAlpha(0.1); - ctx.setFillStyle(color); - ctx.setStrokeStyle(color); + ctx.setGlobalAlpha(BOAT_NOT_SELECTED_OPACITY); + ctx.setFillStyle ("#FFFFFF"); + ctx.setStrokeStyle("#FFFFFF"); break; } @@ -53,8 +53,9 @@ public class DinghyWithSpinnakerVectorGraphics extends BoatClassVectorGraphics { ctx.setStrokeStyle("#FFFFFF"); break; case NOT_SELECTED: - ctx.setFillStyle ("#FFFFFF"); - ctx.setStrokeStyle("#FFFFFF"); + ctx.setGlobalAlpha(BOAT_NOT_SELECTED_OPACITY); + ctx.setFillStyle(color); + ctx.setStrokeStyle(color); break; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/Extreme40VectorGraphics.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/Extreme40VectorGraphics.java index 52361cb6635..f36c6411f40 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/Extreme40VectorGraphics.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/Extreme40VectorGraphics.java @@ -14,13 +14,23 @@ public class Extreme40VectorGraphics extends BoatClassVectorGraphics { @Override protected void drawBoat(Context2d ctx, DisplayMode displayMode, String color) { // outer net - if(displayMode == DisplayMode.SELECTED) { - ctx.setFillStyle(color); - ctx.setStrokeStyle(color); - } else { + + switch (displayMode){ + case DEFAULT: ctx.setFillStyle ("#FFFFFF"); ctx.setStrokeStyle("#FFFFFF"); + break; + case SELECTED: + ctx.setFillStyle (color); + ctx.setStrokeStyle(color); + break; + case NOT_SELECTED: + ctx.setGlobalAlpha(BOAT_NOT_SELECTED_OPACITY); + ctx.setFillStyle ("#FFFFFF"); + ctx.setStrokeStyle("#FFFFFF"); + break; } + ctx.setLineWidth(1.0); ctx.beginPath(); ctx.moveTo(195,72); @@ -36,14 +46,24 @@ public class Extreme40VectorGraphics extends BoatClassVectorGraphics { ctx.fill(); ctx.stroke(); - // inner net - if(displayMode == DisplayMode.SELECTED) { - ctx.setFillStyle("#FFFFFF"); - ctx.setStrokeStyle("#FFFFFF"); - } else { - ctx.setFillStyle(color); + // inner net + switch (displayMode){ + case DEFAULT: + ctx.setFillStyle (color); ctx.setStrokeStyle(color); + break; + case SELECTED: + ctx.setFillStyle ("#FFFFFF"); + ctx.setStrokeStyle("#FFFFFF"); + break; + case NOT_SELECTED: + ctx.setGlobalAlpha(BOAT_NOT_SELECTED_OPACITY); + ctx.setFillStyle (color); + ctx.setStrokeStyle(color); + break; } + + ctx.setLineWidth(1.0); ctx.beginPath(); ctx.moveTo(271,163); @@ -60,13 +80,23 @@ public class Extreme40VectorGraphics extends BoatClassVectorGraphics { ctx.stroke(); // hull - left and right part - if(displayMode == DisplayMode.SELECTED) { - ctx.setFillStyle(color); - ctx.setStrokeStyle(color); - } else { - ctx.setFillStyle("#FFFFFF"); + + switch (displayMode){ + case DEFAULT: + ctx.setFillStyle ("#FFFFFF"); ctx.setStrokeStyle("#000000"); + break; + case SELECTED: + ctx.setFillStyle (color); + ctx.setStrokeStyle(color); + break; + case NOT_SELECTED: + ctx.setGlobalAlpha(BOAT_NOT_SELECTED_OPACITY); + ctx.setFillStyle ("#FFFFFF"); + ctx.setStrokeStyle("#000000"); + break; } + ctx.setLineWidth(5.0); ctx.setLineJoin(LineJoin.ROUND); ctx.beginPath(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/GC32VectorGraphics.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/GC32VectorGraphics.java index 0b16b607c9d..6a3c8b9b40c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/GC32VectorGraphics.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/GC32VectorGraphics.java @@ -20,13 +20,23 @@ public class GC32VectorGraphics extends BoatClassVectorGraphics { @Override protected void drawBoat(Context2d ctx, DisplayMode displayMode, String color) { // outer net - if(displayMode == DisplayMode.SELECTED) { - ctx.setFillStyle(color); - ctx.setStrokeStyle(color); - } else { + + switch (displayMode){ + case DEFAULT: ctx.setFillStyle ("#FFFFFF"); ctx.setStrokeStyle("#FFFFFF"); + break; + case SELECTED: + ctx.setFillStyle (color); + ctx.setStrokeStyle(color); + break; + case NOT_SELECTED: + ctx.setGlobalAlpha(BOAT_NOT_SELECTED_OPACITY); + ctx.setFillStyle ("#FFFFFF"); + ctx.setStrokeStyle("#FFFFFF"); + break; } + ctx.setLineWidth(1.0); ctx.beginPath(); ctx.moveTo(195,72); @@ -43,13 +53,23 @@ public class GC32VectorGraphics extends BoatClassVectorGraphics { ctx.stroke(); // inner net - if(displayMode == DisplayMode.SELECTED) { - ctx.setFillStyle("#FFFFFF"); - ctx.setStrokeStyle("#FFFFFF"); - } else { - ctx.setFillStyle(color); + + switch (displayMode){ + case DEFAULT: + ctx.setFillStyle (color); ctx.setStrokeStyle(color); + break; + case SELECTED: + ctx.setFillStyle ("#FFFFFF"); + ctx.setStrokeStyle("#FFFFFF"); + break; + case NOT_SELECTED: + ctx.setGlobalAlpha(BOAT_NOT_SELECTED_OPACITY); + ctx.setFillStyle (color); + ctx.setStrokeStyle(color); + break; } + ctx.setLineWidth(1.0); ctx.beginPath(); ctx.moveTo(271,163); @@ -66,13 +86,23 @@ public class GC32VectorGraphics extends BoatClassVectorGraphics { ctx.stroke(); // hull - left and right part - if(displayMode == DisplayMode.SELECTED) { + + switch (displayMode){ + case DEFAULT: + ctx.setFillStyle ("#FFFFFF"); + ctx.setStrokeStyle("#FFFFFF"); + break; + case SELECTED: ctx.setFillStyle(color); ctx.setStrokeStyle(color); - } else { - ctx.setFillStyle("#FFFFFF"); - ctx.setStrokeStyle("#000000"); + break; + case NOT_SELECTED: + ctx.setGlobalAlpha(BOAT_NOT_SELECTED_OPACITY); + ctx.setFillStyle ("#FFFFFF"); + ctx.setStrokeStyle("#FFFFFF"); + break; } + ctx.setLineWidth(5.0); ctx.setLineJoin(LineJoin.ROUND); ctx.beginPath(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/KeelBoatWithGennakerVectorGraphics.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/KeelBoatWithGennakerVectorGraphics.java index 509971b6906..ef3e19346a3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/KeelBoatWithGennakerVectorGraphics.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/KeelBoatWithGennakerVectorGraphics.java @@ -16,13 +16,23 @@ public class KeelBoatWithGennakerVectorGraphics extends BoatClassVectorGraphics ctx.translate(0,-803); //draw hull - if(displayMode == DisplayMode.SELECTED) { - ctx.setFillStyle(color); - ctx.setStrokeStyle(color); - } else { + + switch (displayMode){ + case DEFAULT: ctx.setFillStyle ("#FFFFFF"); ctx.setStrokeStyle("#FFFFFF"); + break; + case SELECTED: + ctx.setFillStyle(color); + ctx.setStrokeStyle(color); + break; + case NOT_SELECTED: + ctx.setGlobalAlpha(BOAT_NOT_SELECTED_OPACITY); + ctx.setFillStyle ("#FFFFFF"); + ctx.setStrokeStyle("#FFFFFF"); + break; } + ctx.setLineWidth(1.0); ctx.beginPath(); ctx.moveTo(2.4885714,1009.9999); @@ -54,13 +64,24 @@ public class KeelBoatWithGennakerVectorGraphics extends BoatClassVectorGraphics ctx.stroke(); //draw cockpit - if(displayMode == DisplayMode.SELECTED) { - ctx.setFillStyle ("#FFFFFF"); - ctx.setStrokeStyle("#FFFFFF"); - } else { - ctx.setFillStyle(color); + + switch (displayMode){ + case DEFAULT: + ctx.setFillStyle (color); ctx.setStrokeStyle(color); + break; + case SELECTED: + ctx.setFillStyle("#FFFFFF"); + ctx.setStrokeStyle("#FFFFFF"); + break; + case NOT_SELECTED: + ctx.setGlobalAlpha(BOAT_NOT_SELECTED_OPACITY); + ctx.setFillStyle (color); + ctx.setStrokeStyle(color); + break; } + + ctx.setLineWidth(1.0); ctx.beginPath(); ctx.moveTo(343.42857,966.99996); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/LaserVectorGraphics.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/LaserVectorGraphics.java index eeb00566e36..9b4ef2550bf 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/LaserVectorGraphics.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/LaserVectorGraphics.java @@ -13,12 +13,21 @@ public class LaserVectorGraphics extends BoatClassVectorGraphics { @Override protected void drawBoat(Context2d ctx, DisplayMode displayMode, String color) { // outer part of the hull - if(displayMode == DisplayMode.SELECTED) { - ctx.setFillStyle(color); - ctx.setStrokeStyle(color); - } else { + + switch (displayMode){ + case DEFAULT: ctx.setFillStyle ("#FFFFFF"); ctx.setStrokeStyle("#FFFFFF"); + break; + case SELECTED: + ctx.setFillStyle(color); + ctx.setStrokeStyle(color); + break; + case NOT_SELECTED: + ctx.setGlobalAlpha(BOAT_NOT_SELECTED_OPACITY); + ctx.setFillStyle ("#FFFFFF"); + ctx.setStrokeStyle("#FFFFFF"); + break; } ctx.setLineWidth(2.0); @@ -34,12 +43,21 @@ public class LaserVectorGraphics extends BoatClassVectorGraphics { ctx.stroke(); // inner part of the hull - if(displayMode == DisplayMode.SELECTED) { + + switch (displayMode){ + case DEFAULT: + ctx.setFillStyle (color); + ctx.setStrokeStyle(color); + break; + case SELECTED: ctx.setFillStyle ("#FFFFFF"); ctx.setStrokeStyle("#FFFFFF"); - } else { - ctx.setFillStyle(color); + break; + case NOT_SELECTED: + ctx.setGlobalAlpha(BOAT_NOT_SELECTED_OPACITY); + ctx.setFillStyle (color); ctx.setStrokeStyle(color); + break; } ctx.setLineWidth(1.0); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/SmallMultihullVectorGraphics.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/SmallMultihullVectorGraphics.java index b2d1f861954..a607f54fd6d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/SmallMultihullVectorGraphics.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/SmallMultihullVectorGraphics.java @@ -14,12 +14,21 @@ public class SmallMultihullVectorGraphics extends BoatClassVectorGraphics { @Override protected void drawBoat(Context2d ctx, DisplayMode displayMode, String color) { // outer net - if(displayMode == DisplayMode.SELECTED) { - ctx.setFillStyle(color); - ctx.setStrokeStyle(color); - } else { + + switch (displayMode){ + case DEFAULT: ctx.setFillStyle ("#FFFFFF"); ctx.setStrokeStyle("#FFFFFF"); + break; + case SELECTED: + ctx.setFillStyle(color); + ctx.setStrokeStyle(color); + break; + case NOT_SELECTED: + ctx.setGlobalAlpha(BOAT_NOT_SELECTED_OPACITY); + ctx.setFillStyle ("#FFFFFF"); + ctx.setStrokeStyle("#FFFFFF"); + break; } ctx.setLineWidth(1.0); @@ -38,13 +47,23 @@ public class SmallMultihullVectorGraphics extends BoatClassVectorGraphics { ctx.stroke(); // inner net - if(displayMode == DisplayMode.SELECTED) { + + switch (displayMode){ + case DEFAULT: + ctx.setFillStyle (color); + ctx.setStrokeStyle(color); + break; + case SELECTED: ctx.setFillStyle("#FFFFFF"); ctx.setStrokeStyle("#FFFFFF"); - } else { - ctx.setFillStyle(color); + break; + case NOT_SELECTED: + ctx.setGlobalAlpha(BOAT_NOT_SELECTED_OPACITY); + ctx.setFillStyle (color); ctx.setStrokeStyle(color); + break; } + ctx.setLineWidth(1.0); ctx.beginPath(); @@ -62,12 +81,21 @@ public class SmallMultihullVectorGraphics extends BoatClassVectorGraphics { ctx.stroke(); // hull - left and right part - if(displayMode == DisplayMode.SELECTED) { - ctx.setFillStyle(color); - ctx.setStrokeStyle(color); - } else { + + switch (displayMode){ + case DEFAULT: ctx.setFillStyle("#FFFFFF"); ctx.setStrokeStyle("#000000"); + break; + case SELECTED: + ctx.setFillStyle(color); + ctx.setStrokeStyle(color); + break; + case NOT_SELECTED: + ctx.setGlobalAlpha(BOAT_NOT_SELECTED_OPACITY); + ctx.setFillStyle("#FFFFFF"); + ctx.setStrokeStyle("#000000"); + break; } ctx.setLineWidth(5.0); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/_49erVectorGraphics.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/_49erVectorGraphics.java index 89b189edacb..62917d59ad9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/_49erVectorGraphics.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/_49erVectorGraphics.java @@ -13,12 +13,22 @@ public class _49erVectorGraphics extends BoatClassVectorGraphics { @Override protected void drawBoat(Context2d ctx, DisplayMode displayMode, String color) { - if(displayMode == DisplayMode.SELECTED) { - ctx.setFillStyle(color); - ctx.setStrokeStyle(color); - } else { + // draw hull + + switch (displayMode){ + case DEFAULT: ctx.setFillStyle ("#FFFFFF"); ctx.setStrokeStyle("#FFFFFF"); + break; + case SELECTED: + ctx.setFillStyle (color); + ctx.setStrokeStyle(color); + break; + case NOT_SELECTED: + ctx.setGlobalAlpha(BOAT_NOT_SELECTED_OPACITY); + ctx.setFillStyle ("#FFFFFF"); + ctx.setStrokeStyle("#FFFFFF"); + break; } ctx.setLineJoin(LineJoin.ROUND); @@ -62,13 +72,21 @@ public class _49erVectorGraphics extends BoatClassVectorGraphics { ctx.lineTo(226,68.5); ctx.fill(); ctx.stroke(); - - if(displayMode == DisplayMode.SELECTED) { - ctx.setFillStyle ("#FFFFFF"); - ctx.setStrokeStyle("#FFFFFF"); - } else { + + switch (displayMode){ + case DEFAULT: ctx.setFillStyle(color); ctx.setStrokeStyle(color); + break; + case SELECTED: + ctx.setFillStyle ("#FFFFFF"); + ctx.setStrokeStyle("#FFFFFF"); + break; + case NOT_SELECTED: + ctx.setGlobalAlpha(BOAT_NOT_SELECTED_OPACITY); + ctx.setFillStyle(color); + ctx.setStrokeStyle(color); + break; } ctx.beginPath(); From 2f2efb2a67842cf4fb438eead3ddf4f369d995ab Mon Sep 17 00:00:00 2001 From: Radeck Date: Sat, 6 May 2017 20:52:28 +0200 Subject: [PATCH 6/6] Renamed method. --- .../com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 86fa355624a..21c03927fac 100644 --- 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 @@ -2423,7 +2423,7 @@ public class RaceMap extends AbstractCompositeComponent impleme public void addedToSelection(CompetitorDTO competitor) { if (settings.isShowOnlySelectedCompetitors()) { if (onlyOneCompetitorIsSelected()) { - removeAllCompetitorsExceptedThisOne(competitor); + removeAllCompetitorsExceptThisOne(competitor); showInfoForSelectedCompetitors(); } else { refreshData(); @@ -2489,7 +2489,7 @@ public class RaceMap extends AbstractCompositeComponent impleme } } - private void removeAllCompetitorsExceptedThisOne(CompetitorDTO competitor) { + private void removeAllCompetitorsExceptThisOne(CompetitorDTO competitor) { Iterator> i = boatOverlays.entrySet().iterator(); while (i.hasNext()) { Entry next = i.next();