mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-06 19:12:23 +00:00
Adding display options based on UI.
This commit is contained in:
1 parent
f6a65351df
commit
f4104a9659
8 files changed
+274
-97
No files matched your search
+6
@@ -2,11 +2,13 @@ package com.sap.sailing.gwt.ui.client;
|
||||
|
||||
import com.google.gwt.user.client.rpc.RemoteService;
|
||||
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
|
||||
import com.sap.sailing.gwt.ui.shared.BoatClassDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.PositionDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindFieldDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindFieldGenParamsDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindLatticeDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindLatticeGenParamsDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindFieldGenParamsDTO.WindPattern;
|
||||
|
||||
@RemoteServiceRelativePath("simulator")
|
||||
public interface SimulatorService extends RemoteService {
|
||||
@@ -16,4 +18,8 @@ public interface SimulatorService extends RemoteService {
|
||||
public WindLatticeDTO getWindLatice(WindLatticeGenParamsDTO params);
|
||||
|
||||
public WindFieldDTO getWindField(WindFieldGenParamsDTO params);
|
||||
|
||||
public WindPattern[] getWindPatterns();
|
||||
|
||||
public BoatClassDTO[] getBoatClasses();
|
||||
}
|
||||
+5
@@ -1,11 +1,13 @@
|
||||
package com.sap.sailing.gwt.ui.client;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.sap.sailing.gwt.ui.shared.BoatClassDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.PositionDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindFieldDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindFieldGenParamsDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindLatticeDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindLatticeGenParamsDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindFieldGenParamsDTO.WindPattern;
|
||||
|
||||
public interface SimulatorServiceAsync {
|
||||
|
||||
@@ -17,4 +19,7 @@ public interface SimulatorServiceAsync {
|
||||
void getWindField(WindFieldGenParamsDTO params,
|
||||
AsyncCallback<WindFieldDTO> callback);
|
||||
|
||||
void getWindPatterns(AsyncCallback<WindPattern[]> callback);
|
||||
|
||||
void getBoatClasses(AsyncCallback<BoatClassDTO[]> callback);
|
||||
}
|
||||
+33
@@ -294,4 +294,37 @@ public interface StringMessages extends Messages {
|
||||
String finishLine();
|
||||
String advantageLine();
|
||||
String courseMiddleLine();
|
||||
|
||||
/*Start of simulator related messages*/
|
||||
String simulator();
|
||||
String optionsBar();
|
||||
String update();
|
||||
|
||||
String setup();
|
||||
String pattern();
|
||||
String strength();
|
||||
String oscillation();
|
||||
String oscillating();
|
||||
String amplitude();
|
||||
String frequency();
|
||||
String noise();
|
||||
|
||||
String sailing();
|
||||
String boatClass();
|
||||
String optimality();
|
||||
String maximumTurns();
|
||||
String raceDirection();
|
||||
String upWind();
|
||||
String downWind();
|
||||
String strategies();
|
||||
String omniscient();
|
||||
String opportunistic();
|
||||
String mixed();
|
||||
String maps();
|
||||
String startEnd();
|
||||
String course();
|
||||
String summary();
|
||||
String replay();
|
||||
String display();
|
||||
/*End of simulator related messages*/
|
||||
}
|
||||
+28
@@ -289,3 +289,31 @@ startLine=Start line
|
||||
finishLine=Finish line
|
||||
advantageLine=Advantage line
|
||||
courseMiddleLine=Course middle line
|
||||
simulator=Simulator
|
||||
optionsBar=Optionsbar
|
||||
update=Update
|
||||
setup=Setup
|
||||
pattern=Pattern
|
||||
strength=Strength(in kn)
|
||||
oscillation=Oscillation
|
||||
oscillating=Oscillating
|
||||
amplitude=Amplitude(in Grad)
|
||||
frequency=Frequency(in 1/h)
|
||||
noise=Noise
|
||||
sailing=Sailing
|
||||
boatClass=Boat Class
|
||||
optimality=Optimality
|
||||
maximumTurns=Maximum Turns
|
||||
raceDirection=Race Direction
|
||||
upWind=Upwind
|
||||
downWind=Downwind
|
||||
strategies=Strategies
|
||||
omniscient=Omniscient
|
||||
opportunistic=Opportunistic
|
||||
mixed=Mixed
|
||||
maps=Maps
|
||||
startEnd=Start-End
|
||||
course=Course
|
||||
summary=Summary
|
||||
replay=Replay
|
||||
display=Display
|
||||
+28
@@ -290,3 +290,31 @@ startLine=Startlinie
|
||||
finishLine=Ziellinie
|
||||
advantageLine=Führungslinie
|
||||
courseMiddleLine=Kursmittellinie
|
||||
simulator=Simulator
|
||||
optionsBar=Optionsbar
|
||||
update=Update
|
||||
setup=Setup
|
||||
pattern=Pattern
|
||||
strength=Strength(in kn)
|
||||
oscillation=Oscillation
|
||||
oscillating=Oscillating
|
||||
amplitude=Amplitude(in Grad)
|
||||
frequency=Frequency(in 1/h)
|
||||
noise=Noise
|
||||
sailing=Sailing
|
||||
boatClass=Boat Class
|
||||
optimality=Optimality
|
||||
maximumTurns=Maximum Turns
|
||||
raceDirection=Race Direction
|
||||
upWind=Upwind
|
||||
downWind=Downwind
|
||||
strategies=Strategies
|
||||
omniscient=Omniscient
|
||||
opportunistic=Opportunistic
|
||||
mixed=Mixed
|
||||
maps=Maps
|
||||
startEnd=Start-End
|
||||
course=Course
|
||||
summary=Summary
|
||||
replay=Replay
|
||||
display=Display
|
||||
+12
@@ -12,10 +12,12 @@ import com.sap.sailing.domain.common.impl.DegreePosition;
|
||||
import com.sap.sailing.domain.common.impl.NauticalMileDistance;
|
||||
import com.sap.sailing.domain.tracking.Wind;
|
||||
import com.sap.sailing.gwt.ui.client.SimulatorService;
|
||||
import com.sap.sailing.gwt.ui.shared.BoatClassDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.PositionDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindFieldDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindFieldGenParamsDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindFieldGenParamsDTO.WindPattern;
|
||||
import com.sap.sailing.gwt.ui.shared.WindLatticeDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindLatticeGenParamsDTO;
|
||||
import com.sap.sailing.simulator.WindField;
|
||||
@@ -137,4 +139,14 @@ public class SimulatorServiceImpl extends RemoteServiceServlet implements Simul
|
||||
|
||||
}
|
||||
|
||||
public WindPattern[] getWindPatterns() {
|
||||
return WindFieldGenParamsDTO.WindPattern.values();
|
||||
}
|
||||
|
||||
public BoatClassDTO[] getBoatClasses() {
|
||||
BoatClassDTO boatClassDTO = new BoatClassDTO("49er");
|
||||
|
||||
return new BoatClassDTO[]{boatClassDTO};
|
||||
|
||||
}
|
||||
}
|
||||
+5
-1
@@ -3,7 +3,11 @@ package com.sap.sailing.gwt.ui.shared;
|
||||
import java.io.Serializable;
|
||||
|
||||
public class WindFieldGenParamsDTO implements Serializable {
|
||||
|
||||
|
||||
public enum WindPattern {
|
||||
CONSTANT,
|
||||
OSCILLATING
|
||||
}
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private PositionDTO northWest;
|
||||
|
||||
+157
-96
@@ -15,6 +15,7 @@ import com.google.gwt.user.client.ui.HasHorizontalAlignment;
|
||||
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.ListBox;
|
||||
import com.google.gwt.user.client.ui.Panel;
|
||||
import com.google.gwt.user.client.ui.RadioButton;
|
||||
import com.google.gwt.user.client.ui.SplitLayoutPanel;
|
||||
@@ -25,129 +26,187 @@ import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.PositionDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindFieldDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindFieldGenParamsDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindFieldGenParamsDTO.WindPattern;
|
||||
|
||||
public class SimulatorMainPanel extends SplitLayoutPanel {
|
||||
|
||||
|
||||
private FlowPanel leftPanel = new FlowPanel();
|
||||
private FlowPanel rightPanel = new FlowPanel();
|
||||
|
||||
|
||||
Button updateButton;
|
||||
Button courseInputButton;
|
||||
|
||||
RadioButton summaryButton = new RadioButton("Map Display Options", "Summary");
|
||||
RadioButton replayButton = new RadioButton("Map Display Options", "Replay");
|
||||
RadioButton windDisplayButton = new RadioButton("Map Display Options", "Wind Display");
|
||||
|
||||
|
||||
RadioButton summaryButton;
|
||||
RadioButton replayButton;
|
||||
RadioButton windDisplayButton;
|
||||
|
||||
private WindFieldCanvasOverlay windFieldCanvasOverlay;
|
||||
private RaceCourseCanvasOverlay raceCourseCanvasOverlay;
|
||||
|
||||
|
||||
private final StringMessages stringMessages;
|
||||
private MapWidget mapw;
|
||||
private SimulatorServiceAsync simulatorSvc;
|
||||
|
||||
private ListBox patternSelector = new ListBox();
|
||||
private ListBox boatSelector = new ListBox();
|
||||
|
||||
private static Logger logger = Logger.getLogger("com.sap.sailing");
|
||||
|
||||
|
||||
public SimulatorMainPanel(MapWidget mapw, StringMessages stringMessages,SimulatorServiceAsync svc) {
|
||||
//splitPanel = new SplitLayoutPanel();
|
||||
|
||||
public SimulatorMainPanel(MapWidget mapw, StringMessages stringMessages, SimulatorServiceAsync svc) {
|
||||
// splitPanel = new SplitLayoutPanel();
|
||||
super();
|
||||
this.mapw = mapw;
|
||||
this.stringMessages = stringMessages;
|
||||
this.simulatorSvc = svc;
|
||||
|
||||
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel("Simulator", stringMessages);
|
||||
|
||||
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(stringMessages.simulator(), stringMessages);
|
||||
logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
|
||||
this.addNorth(logoAndTitlePanel,68);
|
||||
|
||||
//leftPanel.getElement().getStyle().setBackgroundColor("#4f4f4f");
|
||||
this.addNorth(logoAndTitlePanel, 68);
|
||||
|
||||
// leftPanel.getElement().getStyle().setBackgroundColor("#4f4f4f");
|
||||
createOptionsPanelTop();
|
||||
createOptionsPanel();
|
||||
createMapOptionsPanel();
|
||||
|
||||
|
||||
|
||||
this.addWest(leftPanel, 400);
|
||||
//leftPanel.getElement().getStyle().setFloat(Style.Float.LEFT);
|
||||
// leftPanel.getElement().getStyle().setFloat(Style.Float.LEFT);
|
||||
rightPanel.getElement().getStyle().setBackgroundColor("#e0e0e0");
|
||||
this.add(rightPanel);
|
||||
//rightPanel.getElement().getStyle().setFloat(Style.Float.RIGHT);
|
||||
// rightPanel.getElement().getStyle().setFloat(Style.Float.RIGHT);
|
||||
addOverlays();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void createOptionsPanelTop() {
|
||||
HorizontalPanel optionsPanel = new HorizontalPanel();
|
||||
optionsPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
|
||||
|
||||
|
||||
optionsPanel.setTitle("Optionsbar");
|
||||
Label options = new Label("Optionsbar");
|
||||
Label options = new Label(stringMessages.optionsBar());
|
||||
optionsPanel.setSize("100%", "7%");
|
||||
optionsPanel.add(options);
|
||||
optionsPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);
|
||||
initUpdateButton();
|
||||
//updateButton.getElement().getStyle().setFloat(Style.Float.RIGHT);
|
||||
// updateButton.getElement().getStyle().setFloat(Style.Float.RIGHT);
|
||||
optionsPanel.add(updateButton);
|
||||
|
||||
|
||||
leftPanel.add(optionsPanel);
|
||||
}
|
||||
|
||||
|
||||
private void createOptionsPanel() {
|
||||
FlowPanel controlPanel = new FlowPanel();
|
||||
controlPanel.setSize("100%", "92%");
|
||||
controlPanel.setTitle("Control Settings");
|
||||
controlPanel.getElement().getStyle().setBackgroundColor(" #e0e0e0");
|
||||
Label windSetupLabel = new Label("Wind Setup");
|
||||
|
||||
String windSetup = stringMessages.wind() + " " + stringMessages.setup();
|
||||
Label windSetupLabel = new Label(windSetup);
|
||||
|
||||
controlPanel.add(windSetupLabel);
|
||||
leftPanel.add(controlPanel);
|
||||
|
||||
Label pattern = new Label(stringMessages.pattern());
|
||||
controlPanel.add(pattern);
|
||||
|
||||
simulatorSvc.getWindPatterns(new AsyncCallback<WindPattern[]>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable message) {
|
||||
Window.alert("Failed to initialize wind patterns\n" + message);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(WindPattern[] patterns) {
|
||||
for (int i = 0; i < patterns.length; ++i) {
|
||||
patternSelector.addItem(patterns[i].toString());
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
controlPanel.add(patternSelector);
|
||||
leftPanel.add(controlPanel);
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void createSailingSetup(Panel controlPanel) {
|
||||
|
||||
String sailingSetup = stringMessages.sailing() + " " + stringMessages.setup();
|
||||
Label sailingSetupLabel = new Label(sailingSetup);
|
||||
|
||||
controlPanel.add(sailingSetupLabel);
|
||||
|
||||
Label boatClassLabel = new Label(stringMessages.boatClass());
|
||||
controlPanel.add(boatClassLabel);
|
||||
|
||||
simulatorSvc.getWindPatterns(new AsyncCallback<WindPattern[]>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable message) {
|
||||
Window.alert("Failed to initialize wind patterns\n" + message);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(WindPattern[] patterns) {
|
||||
for (int i = 0; i < patterns.length; ++i) {
|
||||
patternSelector.addItem(patterns[i].toString());
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
controlPanel.add(patternSelector);
|
||||
leftPanel.add(controlPanel);
|
||||
|
||||
}
|
||||
|
||||
private void createMapOptionsPanel() {
|
||||
HorizontalPanel mapOptions = new HorizontalPanel();
|
||||
mapOptions.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
|
||||
mapOptions.setSize("100%", "7%");
|
||||
mapOptions.setTitle("Maps");
|
||||
Label mapsLabel = new Label("Maps");
|
||||
Label mapsLabel = new Label(stringMessages.maps());
|
||||
mapOptions.add(mapsLabel);
|
||||
|
||||
|
||||
mapOptions.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);
|
||||
|
||||
|
||||
initCourseInputButton();
|
||||
|
||||
|
||||
mapOptions.add(courseInputButton);
|
||||
rightPanel.add(mapOptions);
|
||||
|
||||
|
||||
initDisplayOptions(mapOptions);
|
||||
|
||||
|
||||
FlowPanel mapPanel = new FlowPanel();
|
||||
mapPanel.setTitle("Map");
|
||||
|
||||
|
||||
mapPanel.add(mapw);
|
||||
//mapPanel.setSize("100%", "80%");
|
||||
// mapPanel.setSize("100%", "80%");
|
||||
rightPanel.add(mapPanel);
|
||||
}
|
||||
|
||||
|
||||
private void addOverlays() {
|
||||
raceCourseCanvasOverlay = new RaceCourseCanvasOverlay();
|
||||
mapw.addOverlay(raceCourseCanvasOverlay);
|
||||
|
||||
|
||||
windFieldCanvasOverlay = new WindFieldCanvasOverlay();
|
||||
//mapw.addOverlay(windFieldCanvasOverlay);
|
||||
// mapw.addOverlay(windFieldCanvasOverlay);
|
||||
}
|
||||
|
||||
|
||||
private void generateWindField() {
|
||||
logger.info("In generateWindField");
|
||||
WindFieldGenParamsDTO params = new WindFieldGenParamsDTO();
|
||||
|
||||
PositionDTO startPointDTO = new PositionDTO(raceCourseCanvasOverlay.startPoint.getLatitude(), raceCourseCanvasOverlay.startPoint.getLongitude());
|
||||
PositionDTO endPointDTO = new PositionDTO(raceCourseCanvasOverlay.endPoint.getLatitude(), raceCourseCanvasOverlay.endPoint.getLongitude());
|
||||
|
||||
|
||||
PositionDTO startPointDTO = new PositionDTO(raceCourseCanvasOverlay.startPoint.getLatitude(),
|
||||
raceCourseCanvasOverlay.startPoint.getLongitude());
|
||||
PositionDTO endPointDTO = new PositionDTO(raceCourseCanvasOverlay.endPoint.getLatitude(),
|
||||
raceCourseCanvasOverlay.endPoint.getLongitude());
|
||||
|
||||
params.setNorthWest(startPointDTO);
|
||||
params.setSouthEast(endPointDTO);
|
||||
params.setxRes(5);
|
||||
params.setyRes(5);
|
||||
params.setWindBearing(45);
|
||||
params.setWindSpeed(7.2);
|
||||
|
||||
|
||||
simulatorSvc.getWindField(params, new AsyncCallback<WindFieldDTO>() {
|
||||
@Override
|
||||
public void onFailure(Throwable message) {
|
||||
@@ -160,106 +219,108 @@ public class SimulatorMainPanel extends SplitLayoutPanel {
|
||||
refreshWindFieldOverlay(wl);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void refreshWindFieldOverlay(WindFieldDTO wl) {
|
||||
windFieldCanvasOverlay.setWindField(wl);
|
||||
windFieldCanvasOverlay.redraw(true);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void initUpdateButton() {
|
||||
updateButton = new Button("Update");
|
||||
updateButton = new Button(stringMessages.update());
|
||||
updateButton.addClickHandler(new ClickHandler() {
|
||||
|
||||
|
||||
@Override
|
||||
public void onClick(ClickEvent arg0) {
|
||||
|
||||
|
||||
|
||||
if (raceCourseCanvasOverlay.isCourseSet()) {
|
||||
if (windDisplayButton.isChecked()) {
|
||||
mapw.addOverlay(windFieldCanvasOverlay);
|
||||
generateWindField();
|
||||
//raceCourseCanvasOverlay.setVisible(true);
|
||||
if (windDisplayButton.getValue()) {
|
||||
mapw.addOverlay(windFieldCanvasOverlay);
|
||||
generateWindField();
|
||||
// raceCourseCanvasOverlay.setVisible(true);
|
||||
}
|
||||
} else {
|
||||
Window.alert("No course set, please initialize the course with Start-End Input");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void initCourseInputButton() {
|
||||
courseInputButton = new Button("Start-End");
|
||||
|
||||
courseInputButton = new Button(stringMessages.startEnd());
|
||||
|
||||
courseInputButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent arg0) {
|
||||
|
||||
mapw.removeOverlay(windFieldCanvasOverlay);
|
||||
|
||||
//raceCourseCanvasOverlay.setSelected(true);
|
||||
//raceCourseCanvasOverlay.setVisible(true);
|
||||
|
||||
mapw.removeOverlay(windFieldCanvasOverlay);
|
||||
|
||||
// raceCourseCanvasOverlay.setSelected(true);
|
||||
// raceCourseCanvasOverlay.setVisible(true);
|
||||
raceCourseCanvasOverlay.reset();
|
||||
raceCourseCanvasOverlay.redraw(true);
|
||||
|
||||
raceCourseCanvasOverlay.redraw(true);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void initDisplayOptions(Panel mapOptions) {
|
||||
|
||||
|
||||
summaryButton = new RadioButton("Map Display Options", stringMessages.summary());
|
||||
|
||||
summaryButton.addClickHandler(new ClickHandler() {
|
||||
|
||||
@Override
|
||||
public void onClick(ClickEvent arg0) {
|
||||
mapw.removeOverlay(windFieldCanvasOverlay);
|
||||
|
||||
mapw.removeOverlay(windFieldCanvasOverlay);
|
||||
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
replayButton = new RadioButton("Map Display Options", stringMessages.replay());
|
||||
|
||||
replayButton.addClickHandler(new ClickHandler() {
|
||||
|
||||
@Override
|
||||
public void onClick(ClickEvent arg0) {
|
||||
mapw.removeOverlay(windFieldCanvasOverlay);
|
||||
|
||||
mapw.removeOverlay(windFieldCanvasOverlay);
|
||||
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
windDisplayButton = new RadioButton("Map Display Options", stringMessages.wind() + " "
|
||||
+ stringMessages.display());
|
||||
windDisplayButton.addClickHandler(new ClickHandler() {
|
||||
|
||||
@Override
|
||||
public void onClick(ClickEvent arg0) {
|
||||
|
||||
if (raceCourseCanvasOverlay.isCourseSet()) {
|
||||
if (windDisplayButton.isChecked()) {
|
||||
mapw.addOverlay(windFieldCanvasOverlay);
|
||||
generateWindField();
|
||||
//raceCourseCanvasOverlay.setVisible(true);
|
||||
}
|
||||
mapw.addOverlay(windFieldCanvasOverlay);
|
||||
generateWindField();
|
||||
// raceCourseCanvasOverlay.setVisible(true);
|
||||
} else {
|
||||
Window.alert("No course set, please initialize the course with Start-End Input");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
HorizontalPanel p = new HorizontalPanel();
|
||||
|
||||
|
||||
DecoratorPanel d = new DecoratorPanel();
|
||||
p.add(summaryButton);
|
||||
p.add(replayButton);
|
||||
p.add(windDisplayButton);
|
||||
//windDisplayButton.setValue(true);
|
||||
d.add(p);
|
||||
mapOptions.add(d);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user