added settings button to RaceMapPanel inside AdminConsole

This commit is contained in:
Axel Uhl committed 2012-01-17 23:47:07 +01:00
1 parent a55dc5e97d
commit 3f34b89487
4 files changed
+35 -25

No files matched your search

@@ -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);
@@ -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();
@@ -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;
}
}
@@ -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() {