mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-02 18:33:54 +00:00
added settings for enable/disable the drawing of the help lines like start, finish and advantage line
This commit is contained in:
1 parent
0a93d0cbad
commit
65d4a6f9bc
11 files changed
+206
-53
No files matched your search
+9
@@ -1,5 +1,7 @@
|
||||
package com.sap.sailing.gwt.ui.client;
|
||||
|
||||
import com.google.gwt.dom.client.Style.FontWeight;
|
||||
import com.google.gwt.dom.client.Style.Unit;
|
||||
import com.google.gwt.event.dom.client.ChangeEvent;
|
||||
import com.google.gwt.event.dom.client.ChangeHandler;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
@@ -230,6 +232,13 @@ public abstract class DataEntryDialog<T> {
|
||||
return longBox;
|
||||
}
|
||||
|
||||
public Label createHeadlineLabel(String headlineText) {
|
||||
Label headlineLabel = new Label(headlineText);
|
||||
headlineLabel.getElement().getStyle().setFontWeight(FontWeight.BOLD);
|
||||
headlineLabel.getElement().getStyle().setPaddingTop(1, Unit.EM);
|
||||
return headlineLabel;
|
||||
}
|
||||
|
||||
public CheckBox createCheckbox(String checkboxLabel) {
|
||||
CheckBox result = new CheckBox(checkboxLabel);
|
||||
result.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
|
||||
|
||||
+5
@@ -289,4 +289,9 @@ public interface StringMessages extends Messages {
|
||||
String averageCrossTrackErrorInMeters();
|
||||
String enterMaster();
|
||||
String errorStartingReplication(String hostname, String message);
|
||||
String helpLines();
|
||||
String startLine();
|
||||
String finishLine();
|
||||
String advantageLine();
|
||||
String courseMiddleLine();
|
||||
}
|
||||
+6
-1
@@ -283,4 +283,9 @@ replication=Replication
|
||||
errorFetchingReplicaData=Error fetching replica data: {0}
|
||||
averageCrossTrackErrorInMeters=\u2205 XTE
|
||||
enterMaster=Hostname of Master Instance
|
||||
errorStartingReplication=Error starting replication from host {0}: {1}
|
||||
errorStartingReplication=Error starting replication from host {0}: {1}
|
||||
helpLines=Help lines
|
||||
startLine=Start line
|
||||
finishLine=Finish line
|
||||
advantageLine=Advantage line
|
||||
courseMiddleLine=Course middle line
|
||||
+6
-1
@@ -284,4 +284,9 @@ replication=Replikation
|
||||
errorFetchingReplicaData=Fehler beim Beschaffen der Replikationsdaten: {0}
|
||||
averageCrossTrackErrorInMeters=\u2205 XTE
|
||||
enterMaster=Hostname der Master-Instanz
|
||||
errorStartingReplication=Fehler beim Starten der Replikation von Host {0}: {1}
|
||||
errorStartingReplication=Fehler beim Starten der Replikation von Host {0}: {1}
|
||||
helpLines=Hilfslinien
|
||||
startLine=Startlinie
|
||||
finishLine=Ziellinie
|
||||
advantageLine=Führungslinie
|
||||
courseMiddleLine=Kursmittellinie
|
||||
+25
-12
@@ -87,6 +87,7 @@ import com.sap.sailing.gwt.ui.shared.WindInfoForRaceDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindTrackInfoDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.components.Component;
|
||||
import com.sap.sailing.gwt.ui.shared.components.SettingsDialogComponent;
|
||||
import com.sap.sailing.gwt.ui.shared.racemap.RaceMapHelpLinesSettings.HelpLineTypes;
|
||||
import com.sap.sailing.gwt.ui.shared.racemap.RaceMapZoomSettings.ZoomTypes;
|
||||
|
||||
public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSelectionChangeListener, RaceSelectionChangeListener,
|
||||
@@ -367,9 +368,10 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe
|
||||
showMarksOnMap(raceMapDataDTO.coursePositions);
|
||||
showStartAndFinishLines(raceMapDataDTO.coursePositions);
|
||||
showAdvantageLine(competitorsToShow);
|
||||
|
||||
// Rezoom the map
|
||||
// TODO make this a loop across the LatLngBoundsCalculators, pulling them from a collection updated in updateSettings
|
||||
if (!getSettings().getZoomSettings().contains(ZoomTypes.NONE)) { // Auto zoom if setting is not manual
|
||||
if (!getSettings().getZoomSettings().containsZoomType(ZoomTypes.NONE)) { // Auto zoom if setting is not manual
|
||||
LatLngBounds bounds = getSettings().getZoomSettings().getNewBounds(RaceMap.this);
|
||||
zoomMapToNewBounds(bounds);
|
||||
mapFirstZoomDone = true;
|
||||
@@ -645,7 +647,8 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe
|
||||
}
|
||||
}
|
||||
|
||||
if (leadingCompetitorDTO != null && lastShownFix.containsKey(leadingCompetitorDTO) && lastShownFix.get(leadingCompetitorDTO) != -1
|
||||
if (leadingCompetitorDTO != null && getSettings().getHelpLinesSettings().containsHelpLine(HelpLineTypes.ADVANTAGELINE) &&
|
||||
lastShownFix.containsKey(leadingCompetitorDTO) && lastShownFix.get(leadingCompetitorDTO) != -1
|
||||
&& legOfLeaderCompetitor > 0 && legOfLeaderCompetitor <= lastRaceTimesInfo.getLegInfos().size()) {
|
||||
LegInfoDTO legInfoDTO = lastRaceTimesInfo.getLegInfos().get(legOfLeaderCompetitor-1);
|
||||
GPSFixDTO lastBoatFix = getBoatFix(leadingCompetitorDTO);
|
||||
@@ -709,14 +712,15 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe
|
||||
private void showStartAndFinishLines(final CourseDTO courseDTO) {
|
||||
if(map != null && courseDTO != null && quickRanks != null && !quickRanks.isEmpty() && lastRaceTimesInfo != null) {
|
||||
int legOfLeadingCompetitor = quickRanks.get(0).legNumber;
|
||||
int numberOfLegs = lastRaceTimesInfo.legInfos.size() - 1;
|
||||
if(courseDTO.startGate != null && legOfLeadingCompetitor == 1) {
|
||||
int numberOfLegs = lastRaceTimesInfo.legInfos.size();
|
||||
if(courseDTO.startGate != null && legOfLeadingCompetitor == 1 &&
|
||||
getSettings().getHelpLinesSettings().containsHelpLine(HelpLineTypes.STARTLINE)) {
|
||||
LatLng[] startGatePoints = new LatLng[2];
|
||||
startGatePoints[0] = LatLng.newInstance(courseDTO.startGate.getA().position.latDeg, courseDTO.startGate.getA().position.lngDeg);
|
||||
startGatePoints[1] = LatLng.newInstance(courseDTO.startGate.getB().position.latDeg, courseDTO.startGate.getB().position.lngDeg);
|
||||
if(startLine == null) {
|
||||
PolylineOptions options = PolylineOptions.newInstance(/* clickable */false, /* geodesic */true);
|
||||
startLine = new Polyline(startGatePoints, /* color */ "#1e60bc", /* width */ 1, /* opacity */1.0, options);
|
||||
startLine = new Polyline(startGatePoints, /* color */ "#FFFFFF", /* width */ 1, /* opacity */1.0, options);
|
||||
map.addOverlay(startLine);
|
||||
} else {
|
||||
startLine.deleteVertex(1);
|
||||
@@ -731,13 +735,14 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe
|
||||
startLine.deleteVertex(0);
|
||||
}
|
||||
}
|
||||
if(courseDTO.finishGate != null && legOfLeadingCompetitor == numberOfLegs) {
|
||||
if(courseDTO.finishGate != null && legOfLeadingCompetitor == numberOfLegs &&
|
||||
getSettings().getHelpLinesSettings().containsHelpLine(HelpLineTypes.FINISHLINE)) {
|
||||
LatLng[] finishGatePoints = new LatLng[2];
|
||||
finishGatePoints[0] = LatLng.newInstance(courseDTO.finishGate.getA().position.latDeg, courseDTO.finishGate.getA().position.lngDeg);
|
||||
finishGatePoints[1] = LatLng.newInstance(courseDTO.finishGate.getB().position.latDeg, courseDTO.finishGate.getB().position.lngDeg);
|
||||
if(finishLine == null) {
|
||||
PolylineOptions options = PolylineOptions.newInstance(/* clickable */false, /* geodesic */true);
|
||||
finishLine = new Polyline(finishGatePoints, /* color */ "#1e60bc", /* width */ 1, /* opacity */1.0, options);
|
||||
finishLine = new Polyline(finishGatePoints, /* color */ "#000000", /* width */ 1, /* opacity */1.0, options);
|
||||
map.addOverlay(finishLine);
|
||||
} else {
|
||||
finishLine.deleteVertex(1);
|
||||
@@ -1278,7 +1283,7 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe
|
||||
}
|
||||
//Trigger auto-zoom if needed
|
||||
RaceMapZoomSettings zoomSettings = getSettings().getZoomSettings();
|
||||
if (!zoomSettings.contains(ZoomTypes.NONE) && zoomSettings.isZoomToSelectedCompetitors()) {
|
||||
if (!zoomSettings.containsZoomType(ZoomTypes.NONE) && zoomSettings.isZoomToSelectedCompetitors()) {
|
||||
zoomMapToNewBounds(zoomSettings.getNewBounds(this));
|
||||
}
|
||||
}
|
||||
@@ -1320,7 +1325,7 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe
|
||||
}
|
||||
//Trigger auto-zoom if needed
|
||||
RaceMapZoomSettings zoomSettings = getSettings().getZoomSettings();
|
||||
if (!zoomSettings.contains(ZoomTypes.NONE) && zoomSettings.isZoomToSelectedCompetitors()) {
|
||||
if (!zoomSettings.containsZoomType(ZoomTypes.NONE) && zoomSettings.isZoomToSelectedCompetitors()) {
|
||||
zoomMapToNewBounds(zoomSettings.getNewBounds(this));
|
||||
}
|
||||
}
|
||||
@@ -1348,6 +1353,7 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe
|
||||
@Override
|
||||
public void updateSettings(RaceMapSettings newSettings) {
|
||||
boolean maneuverTypeSelectionChanged = false;
|
||||
boolean requiredRedraw = false;
|
||||
for (ManeuverType maneuverType : ManeuverType.values()) {
|
||||
if (newSettings.isShowManeuverType(maneuverType) != getSettings().isShowManeuverType(maneuverType)) {
|
||||
maneuverTypeSelectionChanged = true;
|
||||
@@ -1372,18 +1378,25 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe
|
||||
}
|
||||
if (newSettings.getTailLengthInMilliseconds() != getSettings().getTailLengthInMilliseconds()) {
|
||||
getSettings().setTailLengthInMilliseconds(newSettings.getTailLengthInMilliseconds());
|
||||
redraw();
|
||||
requiredRedraw = true;
|
||||
}
|
||||
if (newSettings.isShowOnlySelectedCompetitors() != getSettings().isShowOnlySelectedCompetitors()) {
|
||||
getSettings().setShowOnlySelectedCompetitors(newSettings.isShowOnlySelectedCompetitors());
|
||||
redraw();
|
||||
requiredRedraw = true;
|
||||
}
|
||||
if (!newSettings.getZoomSettings().equals(getSettings().getZoomSettings())) {
|
||||
getSettings().setZoomSettings(newSettings.getZoomSettings());
|
||||
if (!getSettings().getZoomSettings().contains(ZoomTypes.NONE)) {
|
||||
if (!getSettings().getZoomSettings().containsZoomType(ZoomTypes.NONE)) {
|
||||
zoomMapToNewBounds(getSettings().getZoomSettings().getNewBounds(this));
|
||||
}
|
||||
}
|
||||
if (!newSettings.getHelpLinesSettings().equals(getSettings().getHelpLinesSettings())) {
|
||||
getSettings().setHelpLinesSettings(newSettings.getHelpLinesSettings());
|
||||
requiredRedraw = true;
|
||||
}
|
||||
if(requiredRedraw) {
|
||||
redraw();
|
||||
}
|
||||
}
|
||||
|
||||
public static class BoatsBoundsCalculator extends LatLngBoundsCalculatorForSelected {
|
||||
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
package com.sap.sailing.gwt.ui.shared.racemap;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class RaceMapHelpLinesSettings {
|
||||
|
||||
/**
|
||||
* Types of help lines on the map
|
||||
*/
|
||||
public enum HelpLineTypes {
|
||||
STARTLINE, FINISHLINE, ADVANTAGELINE, // COURSEMIDDLELINE ..not supported yet
|
||||
}
|
||||
|
||||
private ArrayList<HelpLineTypes> visibleHelpLines;
|
||||
|
||||
/**
|
||||
* Creates new RaceMapHelpLinesSettings with the {@link HelpLineTypes} <code>STARTLINE</code>, <code>FINISHLINE</code> and <code>ADVANTAGELINE</code>.<br />
|
||||
*/
|
||||
public RaceMapHelpLinesSettings() {
|
||||
visibleHelpLines = new ArrayList<HelpLineTypes>();
|
||||
visibleHelpLines.add(HelpLineTypes.STARTLINE);
|
||||
visibleHelpLines.add(HelpLineTypes.FINISHLINE);
|
||||
visibleHelpLines.add(HelpLineTypes.ADVANTAGELINE);
|
||||
}
|
||||
|
||||
public RaceMapHelpLinesSettings(ArrayList<HelpLineTypes> visibleHelpLines) {
|
||||
this.visibleHelpLines = visibleHelpLines;
|
||||
}
|
||||
|
||||
public List<HelpLineTypes> getVisibleHelpLines() {
|
||||
return visibleHelpLines;
|
||||
}
|
||||
|
||||
public void setVisibleHelpLines(List<HelpLineTypes> visibleHelpLines) {
|
||||
this.visibleHelpLines = new ArrayList<HelpLineTypes>(visibleHelpLines);
|
||||
}
|
||||
|
||||
public boolean containsHelpLine(HelpLineTypes helpLineType) {
|
||||
return visibleHelpLines.contains(helpLineType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + ((visibleHelpLines == null) ? 0 : visibleHelpLines.hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj)
|
||||
return true;
|
||||
if (obj == null)
|
||||
return false;
|
||||
if (getClass() != obj.getClass())
|
||||
return false;
|
||||
RaceMapHelpLinesSettings other = (RaceMapHelpLinesSettings) obj;
|
||||
if (visibleHelpLines == null) {
|
||||
if (other.visibleHelpLines != null)
|
||||
return false;
|
||||
} else if (!visibleHelpLines.equals(other.visibleHelpLines))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
+12
-1
@@ -14,7 +14,9 @@ public class RaceMapSettings {
|
||||
private boolean showOnlySelectedCompetitors = false;
|
||||
|
||||
private RaceMapZoomSettings zoomSettings;
|
||||
|
||||
|
||||
private RaceMapHelpLinesSettings helpLinesSettings;
|
||||
|
||||
private long tailLengthInMilliseconds = 100000l;
|
||||
|
||||
public RaceMapSettings() {
|
||||
@@ -25,6 +27,7 @@ public class RaceMapSettings {
|
||||
maneuverTypesToShow.add(ManeuverType.MARK_PASSING);
|
||||
|
||||
this.zoomSettings = new RaceMapZoomSettings();
|
||||
this.helpLinesSettings = new RaceMapHelpLinesSettings();
|
||||
}
|
||||
|
||||
public long getTailLengthInMilliseconds() {
|
||||
@@ -71,4 +74,12 @@ public class RaceMapSettings {
|
||||
this.zoomSettings = zoomSettings;
|
||||
}
|
||||
|
||||
public RaceMapHelpLinesSettings getHelpLinesSettings() {
|
||||
return helpLinesSettings;
|
||||
}
|
||||
|
||||
public void setHelpLinesSettings(RaceMapHelpLinesSettings helpLinesSettings) {
|
||||
this.helpLinesSettings = helpLinesSettings;
|
||||
}
|
||||
|
||||
}
|
||||
+35
-10
@@ -3,12 +3,11 @@ package com.sap.sailing.gwt.ui.shared.racemap;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.dom.client.Style.FontWeight;
|
||||
import com.google.gwt.dom.client.Style.Unit;
|
||||
import com.google.gwt.event.logical.shared.ValueChangeEvent;
|
||||
import com.google.gwt.event.logical.shared.ValueChangeHandler;
|
||||
import com.google.gwt.user.client.ui.CheckBox;
|
||||
import com.google.gwt.user.client.ui.FocusWidget;
|
||||
import com.google.gwt.user.client.ui.HasVerticalAlignment;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.LongBox;
|
||||
@@ -21,12 +20,14 @@ import com.sap.sailing.gwt.ui.client.DataEntryDialog.Validator;
|
||||
import com.sap.sailing.gwt.ui.client.ManeuverTypeFormatter;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.components.SettingsDialogComponent;
|
||||
import com.sap.sailing.gwt.ui.shared.racemap.RaceMapHelpLinesSettings.HelpLineTypes;
|
||||
import com.sap.sailing.gwt.ui.shared.racemap.RaceMapZoomSettings.ZoomTypes;
|
||||
|
||||
public class RaceMapSettingsDialogComponent implements SettingsDialogComponent<RaceMapSettings> {
|
||||
//Initializing the lists to prevent a null pointer exception in the first validation call
|
||||
private List<Pair<CheckBox, ManeuverType>> checkboxAndManeuverType = new ArrayList<Pair<CheckBox, ManeuverType>>();
|
||||
private List<Pair<CheckBox, ZoomTypes>> checkboxAndZoomType = new ArrayList<Pair<CheckBox,ZoomTypes>>();
|
||||
private List<Pair<CheckBox, HelpLineTypes>> checkboxAndHelpLineType = new ArrayList<Pair<CheckBox,HelpLineTypes>>();
|
||||
private CheckBox zoomOnlyToSelectedCompetitors = new CheckBox();
|
||||
private CheckBox checkBoxDouglasPeuckerPoints = new CheckBox();
|
||||
private CheckBox showOnlySelectedCompetitors = new CheckBox();
|
||||
@@ -46,17 +47,19 @@ public class RaceMapSettingsDialogComponent implements SettingsDialogComponent<R
|
||||
public Widget getAdditionalWidget(DataEntryDialog<?> dialog) {
|
||||
VerticalPanel vp = new VerticalPanel();
|
||||
HorizontalPanel labelAndTailLengthBoxPanel = new HorizontalPanel();
|
||||
labelAndTailLengthBoxPanel.add(new Label(stringMessages.tailLength()));
|
||||
labelAndTailLengthBoxPanel.setSpacing(5);
|
||||
Label tailLengthLabel = new Label(stringMessages.tailLength() + ":");
|
||||
labelAndTailLengthBoxPanel.add(tailLengthLabel);
|
||||
labelAndTailLengthBoxPanel.setCellVerticalAlignment(tailLengthLabel, HasVerticalAlignment.ALIGN_MIDDLE);
|
||||
tailLengthBox = dialog.createLongBox((int) (initialSettings.getTailLengthInMilliseconds() / 1000), 4);
|
||||
labelAndTailLengthBoxPanel.add(tailLengthBox);
|
||||
labelAndTailLengthBoxPanel.setCellVerticalAlignment(tailLengthBox, HasVerticalAlignment.ALIGN_MIDDLE);
|
||||
vp.add(labelAndTailLengthBoxPanel);
|
||||
showOnlySelectedCompetitors = dialog.createCheckbox(stringMessages.showOnlySelected());
|
||||
showOnlySelectedCompetitors.setValue(initialSettings.isShowOnlySelectedCompetitors());
|
||||
vp.add(showOnlySelectedCompetitors);
|
||||
|
||||
Label zoomLabel = new Label(stringMessages.zoom());
|
||||
zoomLabel.getElement().getStyle().setFontWeight(FontWeight.BOLD);
|
||||
zoomLabel.getElement().getStyle().setPaddingTop(1, Unit.EM);
|
||||
Label zoomLabel = dialog.createHeadlineLabel(stringMessages.zoom());
|
||||
vp.add(zoomLabel);
|
||||
|
||||
HorizontalPanel labelAndZoomSettingsPanel = new HorizontalPanel();
|
||||
@@ -66,7 +69,7 @@ public class RaceMapSettingsDialogComponent implements SettingsDialogComponent<R
|
||||
disableOnlySelectedWhenAreFalse = new ArrayList<CheckBox>();
|
||||
for (ZoomTypes zoomType : ZoomTypes.values()) {
|
||||
if (zoomType != ZoomTypes.NONE) {
|
||||
CheckBox cb = dialog.createCheckbox(ZoomTypeFormatter.format(zoomType, stringMessages));
|
||||
CheckBox cb = dialog.createCheckbox(RaceMapSettingsTypeFormatter.formatZoomType(zoomType, stringMessages));
|
||||
cb.setValue(initialSettings.getZoomSettings().getTypesToConsiderOnZoom().contains(zoomType), true);
|
||||
checkboxAndZoomType.add(new Pair<CheckBox, ZoomTypes>(cb, zoomType));
|
||||
zoomSettingsBoxesPanel.add(cb);
|
||||
@@ -92,9 +95,7 @@ public class RaceMapSettingsDialogComponent implements SettingsDialogComponent<R
|
||||
//Run zoomSettingsChanged to set the checkboxes to their correct state
|
||||
zoomSettingsChanged();
|
||||
|
||||
Label maneuversLabel = new Label(stringMessages.maneuverTypes());
|
||||
maneuversLabel.getElement().getStyle().setFontWeight(FontWeight.BOLD);
|
||||
maneuversLabel.getElement().getStyle().setPaddingTop(1, Unit.EM);
|
||||
Label maneuversLabel = dialog.createHeadlineLabel(stringMessages.maneuverTypes());
|
||||
vp.add(maneuversLabel);
|
||||
for (ManeuverType maneuverType : ManeuverType.values()) {
|
||||
CheckBox checkbox = dialog.createCheckbox(ManeuverTypeFormatter.format(maneuverType, stringMessages));
|
||||
@@ -105,6 +106,19 @@ public class RaceMapSettingsDialogComponent implements SettingsDialogComponent<R
|
||||
checkBoxDouglasPeuckerPoints = dialog.createCheckbox(stringMessages.douglasPeuckerPoints());
|
||||
checkBoxDouglasPeuckerPoints.setValue(initialSettings.isShowDouglasPeuckerPoints());
|
||||
vp.add(checkBoxDouglasPeuckerPoints);
|
||||
|
||||
Label helpLinesLabel = dialog.createHeadlineLabel(stringMessages.helpLines());
|
||||
vp.add(helpLinesLabel);
|
||||
|
||||
VerticalPanel helpLineSettingsBoxesPanel = new VerticalPanel();
|
||||
for (HelpLineTypes helpLineType : HelpLineTypes.values()) {
|
||||
CheckBox cb = dialog.createCheckbox(RaceMapSettingsTypeFormatter.formatHelpLineType(helpLineType, stringMessages));
|
||||
cb.setValue(initialSettings.getHelpLinesSettings().containsHelpLine(helpLineType), true);
|
||||
checkboxAndHelpLineType.add(new Pair<CheckBox, HelpLineTypes>(cb, helpLineType));
|
||||
helpLineSettingsBoxesPanel.add(cb);
|
||||
}
|
||||
vp.add(helpLineSettingsBoxesPanel);
|
||||
|
||||
return vp;
|
||||
}
|
||||
|
||||
@@ -132,6 +146,7 @@ public class RaceMapSettingsDialogComponent implements SettingsDialogComponent<R
|
||||
result.showManeuverType(p.getB(), p.getA().getValue());
|
||||
}
|
||||
result.setZoomSettings(getZoomSettings());
|
||||
result.setHelpLinesSettings(getHelpLinesSettings());
|
||||
result.setShowDouglasPeuckerPoints(checkBoxDouglasPeuckerPoints.getValue());
|
||||
result.setShowOnlySelectedCompetitors(showOnlySelectedCompetitors.getValue());
|
||||
result.setTailLengthInMilliseconds(tailLengthBox.getValue() == null ? -1 : tailLengthBox.getValue()*1000l);
|
||||
@@ -153,6 +168,16 @@ public class RaceMapSettingsDialogComponent implements SettingsDialogComponent<R
|
||||
return new RaceMapZoomSettings(zoomTypes, zoomOnlyToSelectedCompetitors.getValue());
|
||||
}
|
||||
|
||||
private RaceMapHelpLinesSettings getHelpLinesSettings() {
|
||||
ArrayList<HelpLineTypes> helpLineTypes = new ArrayList<HelpLineTypes>();
|
||||
for (Pair<CheckBox, HelpLineTypes> pair : checkboxAndHelpLineType) {
|
||||
if (pair.getA().getValue()) {
|
||||
helpLineTypes.add(pair.getB());
|
||||
}
|
||||
}
|
||||
return new RaceMapHelpLinesSettings(helpLineTypes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Validator<RaceMapSettings> getValidator() {
|
||||
return new Validator<RaceMapSettings>() {
|
||||
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
package com.sap.sailing.gwt.ui.shared.racemap;
|
||||
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.racemap.RaceMapHelpLinesSettings.HelpLineTypes;
|
||||
import com.sap.sailing.gwt.ui.shared.racemap.RaceMapZoomSettings.ZoomTypes;
|
||||
|
||||
public class RaceMapSettingsTypeFormatter {
|
||||
public static String formatZoomType(ZoomTypes zoomType, StringMessages stringConstants) {
|
||||
switch (zoomType) {
|
||||
case NONE:
|
||||
return stringConstants.autoZoomOff();
|
||||
case BOATS:
|
||||
return stringConstants.autoZoomToBoats();
|
||||
case TAILS:
|
||||
return stringConstants.autoZoomToTails();
|
||||
case BUOYS:
|
||||
return stringConstants.autoZoomToBuoys();
|
||||
case WINDSENSORS:
|
||||
return stringConstants.autoZoomToWindSensors();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static String formatHelpLineType(HelpLineTypes helpLineType, StringMessages stringConstants) {
|
||||
switch (helpLineType) {
|
||||
case STARTLINE:
|
||||
return stringConstants.startLine();
|
||||
case FINISHLINE:
|
||||
return stringConstants.finishLine();
|
||||
case ADVANTAGELINE:
|
||||
return stringConstants.advantageLine();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
+6
-6
@@ -5,13 +5,14 @@ import java.util.List;
|
||||
|
||||
import com.google.gwt.maps.client.geom.LatLngBounds;
|
||||
|
||||
/**
|
||||
* @author Lennart Hensler (D054527)
|
||||
*/
|
||||
public class RaceMapZoomSettings {
|
||||
|
||||
/**
|
||||
* The auto-zoom types for a {@link RaceMap}.<br />
|
||||
* Each zoom type has a {@link LatLngBoundsCalculator}, which calculates the new bounds for a map.
|
||||
* @author Lennart Hensler (D054527)
|
||||
*
|
||||
*/
|
||||
public enum ZoomTypes {
|
||||
NONE(null), WINDSENSORS(new RaceMap.WindSensorsBoundsCalculator()), BOATS(new RaceMap.BoatsBoundsCalculator()),
|
||||
@@ -27,13 +28,13 @@ public class RaceMapZoomSettings {
|
||||
return calculater.calculateNewBounds(forMap);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
private ArrayList<ZoomTypes> typesToConsiderOnZoom;
|
||||
private boolean zoomToSelectedCompetitors;
|
||||
|
||||
/**
|
||||
* Creates new RaceMapZoomSettings with the {@link ZoomTypes} <code>BOATS</code> and <code>TAILS</code>.<br />
|
||||
* The attritbute <code>zoomToSelectedCompetitors</code> will be <code>false</code>.
|
||||
* The attribute <code>zoomToSelectedCompetitors</code> will be <code>false</code>.
|
||||
*/
|
||||
public RaceMapZoomSettings() {
|
||||
typesToConsiderOnZoom = new ArrayList<ZoomTypes>();
|
||||
@@ -85,7 +86,7 @@ public class RaceMapZoomSettings {
|
||||
return zoomToSelectedCompetitors;
|
||||
}
|
||||
|
||||
public boolean contains(ZoomTypes zoomType) {
|
||||
public boolean containsZoomType(ZoomTypes zoomType) {
|
||||
return typesToConsiderOnZoom.contains(zoomType);
|
||||
}
|
||||
|
||||
@@ -116,5 +117,4 @@ public class RaceMapZoomSettings {
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
-22
@@ -1,22 +0,0 @@
|
||||
package com.sap.sailing.gwt.ui.shared.racemap;
|
||||
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.racemap.RaceMapZoomSettings.ZoomTypes;
|
||||
|
||||
public class ZoomTypeFormatter {
|
||||
public static String format(ZoomTypes zoomType, StringMessages stringConstants) {
|
||||
switch (zoomType) {
|
||||
case NONE:
|
||||
return stringConstants.autoZoomOff();
|
||||
case BOATS:
|
||||
return stringConstants.autoZoomToBoats();
|
||||
case TAILS:
|
||||
return stringConstants.autoZoomToTails();
|
||||
case BUOYS:
|
||||
return stringConstants.autoZoomToBuoys();
|
||||
case WINDSENSORS:
|
||||
return stringConstants.autoZoomToWindSensors();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user