mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-04 11:23:50 +00:00
added settings button to RaceMapPanel inside AdminConsole
This commit is contained in:
1 parent
a55dc5e97d
commit
3f34b89487
4 files changed
+35
-25
No files matched your search
+4
-6
@@ -203,9 +203,7 @@ public class RaceMap implements TimeListener, CompetitorSelectionChangeListener,
|
||||
map.setContinuousZoom(true);
|
||||
parentPanel.add(map);
|
||||
map.setSize("100%", "100%");
|
||||
|
||||
imageResources = new RaceMapResources(map);
|
||||
|
||||
imageResources = new RaceMapResources();
|
||||
map.addMapZoomEndHandler(new MapZoomEndHandler() {
|
||||
@Override
|
||||
public void onZoomEnd(MapZoomEndEvent event) {
|
||||
@@ -514,13 +512,13 @@ public class RaceMap implements TimeListener, CompetitorSelectionChangeListener,
|
||||
// check if anchors match; re-use marker with setImage only if anchors match
|
||||
ImageTransformer transformer = imageResources.getBoatImageTransformer(lastPos,
|
||||
competitorSelection.isSelected(competitorDAO));
|
||||
Point newAnchor = transformer.getAnchor(imageResources.getRealBoatSizeScaleFactor());
|
||||
Point newAnchor = transformer.getAnchor(imageResources.getRealBoatSizeScaleFactor(map));
|
||||
Point oldAnchor = boatMarker.getIcon().getIconAnchor();
|
||||
if (oldAnchor.getX() == newAnchor.getX() && oldAnchor.getY() == newAnchor.getY()) {
|
||||
boatMarker.setLatLng(LatLng.newInstance(lastPos.position.latDeg,
|
||||
lastPos.position.lngDeg));
|
||||
boatMarker.setImage(imageResources.getBoatImageURL(lastPos,
|
||||
displayHighlighted(competitorDAO)));
|
||||
displayHighlighted(competitorDAO), map));
|
||||
} else {
|
||||
// anchors don't match; replace marker
|
||||
map.removeOverlay(boatMarker);
|
||||
@@ -560,7 +558,7 @@ public class RaceMap implements TimeListener, CompetitorSelectionChangeListener,
|
||||
double latDeg = boatFix.position.latDeg;
|
||||
double lngDeg = boatFix.position.lngDeg;
|
||||
MarkerOptions options = MarkerOptions.newInstance();
|
||||
Icon icon = imageResources.getBoatImageIcon(boatFix, highlighted);
|
||||
Icon icon = imageResources.getBoatImageIcon(boatFix, highlighted, map);
|
||||
options.setIcon(icon);
|
||||
options.setTitle(competitorDAO.name);
|
||||
final Marker boatMarker = new Marker(LatLng.newInstance(latDeg, lngDeg), options);
|
||||
|
||||
+17
-4
@@ -3,9 +3,13 @@ package com.sap.sailing.gwt.ui.adminconsole;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.maps.client.geom.LatLng;
|
||||
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.AbsolutePanel;
|
||||
import com.google.gwt.user.client.ui.Anchor;
|
||||
import com.google.gwt.user.client.ui.FormPanel;
|
||||
import com.google.gwt.user.client.ui.Grid;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
@@ -29,6 +33,7 @@ import com.sap.sailing.gwt.ui.shared.PositionDAO;
|
||||
import com.sap.sailing.gwt.ui.shared.QuickRankDAO;
|
||||
import com.sap.sailing.gwt.ui.shared.RaceDAO;
|
||||
import com.sap.sailing.gwt.ui.shared.RegattaDAO;
|
||||
import com.sap.sailing.gwt.ui.shared.components.SettingsDialog;
|
||||
import com.sap.sailing.server.api.EventNameAndRaceName;
|
||||
|
||||
public class RaceMapPanel extends FormPanel implements EventDisplayer, TimeListener, ProvidesResize, RequiresResize,
|
||||
@@ -39,19 +44,17 @@ public class RaceMapPanel extends FormPanel implements EventDisplayer, TimeListe
|
||||
private final Grid grid;
|
||||
private final RacesListBoxPanel raceListBox;
|
||||
private final TimePanel timePanel;
|
||||
|
||||
private final Timer timer;
|
||||
|
||||
private final RaceMap raceMap;
|
||||
private final QuickRanksListBoxComposite quickRanksListBox;
|
||||
|
||||
public RaceMapPanel(SailingServiceAsync sailingService, CompetitorSelectionProvider competitorSelectionProvider,
|
||||
ErrorReporter errorReporter, final EventRefresher eventRefresher, StringMessages stringMessages) {
|
||||
ErrorReporter errorReporter, final EventRefresher eventRefresher, final StringMessages stringMessages) {
|
||||
this.sailingService = sailingService;
|
||||
this.errorReporter = errorReporter;
|
||||
this.competitorSelectionProvider = competitorSelectionProvider;
|
||||
this.timer = new Timer(/* delayBetweenAutoAdvancesInMilliseconds */500);
|
||||
this.grid = new Grid(3, 2);
|
||||
this.grid = new Grid(3, 3);
|
||||
setWidget(grid);
|
||||
grid.setSize("100%", "100%");
|
||||
grid.getColumnFormatter().setWidth(0, "20%");
|
||||
@@ -76,6 +79,16 @@ public class RaceMapPanel extends FormPanel implements EventDisplayer, TimeListe
|
||||
/* time interval between displays in milliseconds */5000, stringMessages, errorReporter);
|
||||
raceListBox.addRaceSelectionChangeListener(windHistory);
|
||||
grid.setWidget(1, 0, windHistory);
|
||||
Anchor showConfigAnchor = new Anchor(new SafeHtmlBuilder().appendHtmlConstant(
|
||||
"<img class=\"linkNoBorder\" src=\"/gwt/images/settings.png\"/>").toSafeHtml());
|
||||
showConfigAnchor.setTitle(stringMessages.configuration());
|
||||
showConfigAnchor.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
new SettingsDialog<RaceMapSettings>(raceMap, stringMessages).show();
|
||||
}
|
||||
});
|
||||
grid.setWidget(1, 2, showConfigAnchor);
|
||||
HorizontalPanel horizontalRanksVerticalAndCheckboxesManeuversPanel = new HorizontalPanel();
|
||||
horizontalRanksVerticalAndCheckboxesManeuversPanel.setSpacing(15);
|
||||
VerticalPanel ranksAndCheckboxAndTailLengthPanel = new VerticalPanel();
|
||||
|
||||
+10
-15
@@ -16,9 +16,6 @@ import com.sap.sailing.domain.common.impl.Util.Pair;
|
||||
import com.sap.sailing.gwt.ui.shared.GPSFixDAO;
|
||||
|
||||
public class RaceMapResources {
|
||||
|
||||
private final MapWidget map;
|
||||
|
||||
/**
|
||||
* Two sails on downwind leg, wind from port (sails on starboard); no highlighting
|
||||
*/
|
||||
@@ -65,9 +62,7 @@ public class RaceMapResources {
|
||||
|
||||
private static AdminConsoleResources resources = GWT.create(AdminConsoleResources.class);
|
||||
|
||||
public RaceMapResources(final MapWidget map)
|
||||
{
|
||||
this.map = map;
|
||||
public RaceMapResources() {
|
||||
maneuverIconsForTypeAndTargetTack = new HashMap<Pair<ManeuverType, Tack>, Icon>();
|
||||
boatIconDownwindPortRotator = new ImageTransformer(resources.lowlightedBoatIconDW_Port());
|
||||
boatIconHighlightedDownwindPortRotator = new ImageTransformer(resources.highlightedBoatIconDW_Port());
|
||||
@@ -168,18 +163,18 @@ public class RaceMapResources {
|
||||
}
|
||||
}
|
||||
|
||||
public String getBoatImageURL(GPSFixDAO boatFix, boolean highlighted) {
|
||||
return getBoatImageURL(getBoatImageTransformer(boatFix, highlighted), boatFix);
|
||||
public String getBoatImageURL(GPSFixDAO boatFix, boolean highlighted, MapWidget map) {
|
||||
return getBoatImageURL(getBoatImageTransformer(boatFix, highlighted), boatFix, map);
|
||||
}
|
||||
|
||||
public String getBoatImageURL(ImageTransformer boatImageTransformer, GPSFixDAO boatFix) {
|
||||
double realBoatSizeScaleFactor = getRealBoatSizeScaleFactor();
|
||||
public String getBoatImageURL(ImageTransformer boatImageTransformer, GPSFixDAO boatFix, MapWidget map) {
|
||||
double realBoatSizeScaleFactor = getRealBoatSizeScaleFactor(map);
|
||||
return boatImageTransformer.getTransformedImageURL(boatFix.speedWithBearing.bearingInDegrees, realBoatSizeScaleFactor);
|
||||
}
|
||||
|
||||
public double getRealBoatSizeScaleFactor() {
|
||||
public double getRealBoatSizeScaleFactor(MapWidget map) {
|
||||
// the possible zoom level range is 0 to 21 (zoom level 0 would show the whole world)
|
||||
int zoomLevel = map.getZoomLevel();
|
||||
int zoomLevel = map == null ? 1 : map.getZoomLevel();
|
||||
double minScaleFactor = 0.33;
|
||||
double realBoatSizeScaleFactor = minScaleFactor;
|
||||
double boatLengthInMeter = 5.0;
|
||||
@@ -200,10 +195,10 @@ public class RaceMapResources {
|
||||
return realBoatSizeScaleFactor;
|
||||
}
|
||||
|
||||
public Icon getBoatImageIcon(GPSFixDAO boatFix, boolean highlighted) {
|
||||
public Icon getBoatImageIcon(GPSFixDAO boatFix, boolean highlighted, MapWidget map) {
|
||||
ImageTransformer boatImageTransformer = getBoatImageTransformer(boatFix, highlighted);
|
||||
Icon icon = Icon.newInstance(getBoatImageURL(boatImageTransformer, boatFix));
|
||||
icon.setIconAnchor(boatImageTransformer.getAnchor(getRealBoatSizeScaleFactor()));
|
||||
Icon icon = Icon.newInstance(getBoatImageURL(boatImageTransformer, boatFix, map));
|
||||
icon.setIconAnchor(boatImageTransformer.getAnchor(getRealBoatSizeScaleFactor(map)));
|
||||
return icon;
|
||||
}
|
||||
}
|
||||
+4
@@ -16,6 +16,10 @@ public class RaceMapSettings {
|
||||
|
||||
public RaceMapSettings() {
|
||||
maneuverTypesToShow = new HashSet<ManeuverType>();
|
||||
maneuverTypesToShow.add(ManeuverType.TACK);
|
||||
maneuverTypesToShow.add(ManeuverType.JIBE);
|
||||
maneuverTypesToShow.add(ManeuverType.PENALTY_CIRCLE);
|
||||
maneuverTypesToShow.add(ManeuverType.MARK_PASSING);
|
||||
}
|
||||
|
||||
public long getTailLengthInMilliseconds() {
|
||||
|
||||
Reference in new issue
Block a user