diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SimulatorService.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SimulatorService.java index 91adc5722d2..aec834d10eb 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SimulatorService.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SimulatorService.java @@ -1,5 +1,7 @@ package com.sap.sailing.gwt.ui.client; +import java.util.List; + import com.google.gwt.user.client.rpc.RemoteService; import com.google.gwt.user.client.rpc.RemoteServiceRelativePath; import com.sap.sailing.gwt.ui.shared.BoatClassDTO; @@ -9,7 +11,9 @@ 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; +import com.sap.sailing.gwt.ui.shared.WindPatternDTO; +import com.sap.sailing.gwt.ui.shared.windpattern.WindPatternDisplay; + @RemoteServiceRelativePath("simulator") public interface SimulatorService extends RemoteService { @@ -22,7 +26,9 @@ public interface SimulatorService extends RemoteService { public PathDTO[] getPaths(WindFieldGenParamsDTO params); - public WindPattern[] getWindPatterns(); + public List getWindPatterns(); + + public WindPatternDisplay getWindPatternDisplay(WindPatternDTO pattern); public BoatClassDTO[] getBoatClasses(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SimulatorServiceAsync.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SimulatorServiceAsync.java index d62a5d8f1a8..8204218beb3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SimulatorServiceAsync.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SimulatorServiceAsync.java @@ -1,5 +1,7 @@ package com.sap.sailing.gwt.ui.client; +import java.util.List; + import com.google.gwt.user.client.rpc.AsyncCallback; import com.sap.sailing.gwt.ui.shared.BoatClassDTO; import com.sap.sailing.gwt.ui.shared.PathDTO; @@ -8,7 +10,8 @@ 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; +import com.sap.sailing.gwt.ui.shared.WindPatternDTO; +import com.sap.sailing.gwt.ui.shared.windpattern.WindPatternDisplay; public interface SimulatorServiceAsync { @@ -20,8 +23,10 @@ public interface SimulatorServiceAsync { void getPaths(WindFieldGenParamsDTO params, AsyncCallback callback); - void getWindPatterns(AsyncCallback callback); + void getWindPatterns(AsyncCallback> callback); + void getWindPatternDisplay(WindPatternDTO pattern, AsyncCallback callback); + void getBoatClasses(AsyncCallback callback); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SimulatorServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SimulatorServiceImpl.java index 1ddfc7af3ce..c967c3746fb 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SimulatorServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SimulatorServiceImpl.java @@ -22,9 +22,12 @@ 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.gwt.ui.shared.WindPatternDTO; +import com.sap.sailing.gwt.ui.shared.windpattern.WindPatternDisplay; +import com.sap.sailing.gwt.ui.shared.windpattern.WindPatternDisplayManager; +import com.sap.sailing.gwt.ui.shared.windpattern.WindPatternDisplayManager.WindPattern; import com.sap.sailing.simulator.Path; import com.sap.sailing.simulator.PolarDiagram; import com.sap.sailing.simulator.SailingSimulator; @@ -194,7 +197,7 @@ public class SimulatorServiceImpl extends RemoteServiceServlet implements Simula PathDTO[] pathDTO = new PathDTO[1]; List path = getOptimumPath(course, wf); - pathDTO[0] = new PathDTO(); + pathDTO[0] = new PathDTO("Path 1"); pathDTO[0].setMatrix(path); return pathDTO; } @@ -206,6 +209,7 @@ public class SimulatorServiceImpl extends RemoteServiceServlet implements Simula SailingSimulator solver = new SailingSimulatorImpl(sp); Path pth = solver.getOptimumPath(); + int i = 0; List wList = new ArrayList(); for (TimedPositionWithSpeed p : pth.getPathPoints()) { // the null in the Wind output is the timestamp - this Wind is time-invariant! @@ -216,14 +220,16 @@ public class SimulatorServiceImpl extends RemoteServiceServlet implements Simula Wind localWind = wf.getWind(pth.getPositionAtTime(p.getTimePoint())); logger.fine(localWind.toString()); WindDTO w = createWindDTO(localWind); + //w.trueWindBearingDeg = 10.0*i; + ++i; wList.add(w); } return wList; } - public WindPattern[] getWindPatterns() { - return WindFieldGenParamsDTO.WindPattern.values(); + public List getWindPatterns() { + return WindPatternDisplayManager.INSTANCE.getWindPatterns(); } public BoatClassDTO[] getBoatClasses() { @@ -249,4 +255,9 @@ public class SimulatorServiceImpl extends RemoteServiceServlet implements Simula return windDTO; } + + @Override + public WindPatternDisplay getWindPatternDisplay(WindPatternDTO pattern) { + return WindPatternDisplayManager.INSTANCE.getDisplay(WindPattern.valueOf(pattern.name)); + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/PathDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/PathDTO.java index 5ee36310724..b6fb6689746 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/PathDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/PathDTO.java @@ -4,10 +4,18 @@ import java.util.List; import com.google.gwt.user.client.rpc.IsSerializable; -public class PathDTO implements IsSerializable { +public class PathDTO extends NamedDTO implements IsSerializable { private List matrix; - + + public PathDTO() { + + } + + public PathDTO(String name) { + super(name); + } + public List getMatrix() { return matrix; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/WindFieldGenParamsDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/WindFieldGenParamsDTO.java index 02d76ed5457..6ba126bd196 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/WindFieldGenParamsDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/WindFieldGenParamsDTO.java @@ -4,11 +4,7 @@ import com.google.gwt.user.client.rpc.IsSerializable; public class WindFieldGenParamsDTO implements IsSerializable { - public enum WindPattern { - CONSTANT, - OSCILLATING - } - + private PositionDTO northWest; private PositionDTO southEast; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/simulator/SimulatorMainPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/simulator/SimulatorMainPanel.java index 8c7fc9141da..5371c3c9149 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/simulator/SimulatorMainPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/simulator/SimulatorMainPanel.java @@ -1,8 +1,12 @@ package com.sap.sailing.gwt.ui.simulator; import java.util.Date; +import java.util.List; import java.util.logging.Logger; +import com.google.gwt.dom.client.Style; +import com.google.gwt.event.dom.client.ChangeEvent; +import com.google.gwt.event.dom.client.ChangeHandler; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.logical.shared.ValueChangeEvent; @@ -31,8 +35,10 @@ import com.sap.sailing.gwt.ui.client.TimePanelSettings; import com.sap.sailing.gwt.ui.client.Timer; import com.sap.sailing.gwt.ui.client.Timer.PlayModes; import com.sap.sailing.gwt.ui.shared.BoatClassDTO; -import com.sap.sailing.gwt.ui.shared.WindFieldGenParamsDTO.WindPattern; +import com.sap.sailing.gwt.ui.shared.WindPatternDTO; import com.sap.sailing.gwt.ui.shared.controls.slider.SliderBar; +import com.sap.sailing.gwt.ui.shared.windpattern.WindPatternDisplay; + public class SimulatorMainPanel extends SplitLayoutPanel { @@ -70,6 +76,32 @@ public class SimulatorMainPanel extends SplitLayoutPanel { } } + + private class PatternSelectorHandler implements ChangeHandler { + + @Override + public void onChange(ChangeEvent arg0) { + logger.info(patternSelector.getItemText(patternSelector.getSelectedIndex())); + WindPatternDTO pattern = new WindPatternDTO(patternSelector.getItemText(patternSelector.getSelectedIndex())); + + simulatorSvc.getWindPatternDisplay(pattern, new AsyncCallback() { + + @Override + public void onFailure(Throwable message) { + errorReporter.reportError("Error retreiving wind patterns" + message.getMessage()); + + } + + @Override + public void onSuccess(final WindPatternDisplay display) { + logger.info(display.getSettings().toString()); + } + + }); + + } + + } public SimulatorMainPanel(SimulatorServiceAsync svc, StringMessages stringMessages, ErrorReporter errorReporter) { @@ -83,6 +115,8 @@ public class SimulatorMainPanel extends SplitLayoutPanel { rightPanel = new FlowPanel(); wControls = new WindControlParameters(1, 0); patternSelector = new ListBox(); + patternSelector.addChangeHandler(new PatternSelectorHandler()); + boatSelector = new ListBox(); timer = new Timer(PlayModes.Replay, 1000l); timer.setPlaySpeedFactor(30); @@ -150,7 +184,7 @@ public class SimulatorMainPanel extends SplitLayoutPanel { Label pattern = new Label(stringMessages.pattern()); hp.add(pattern); - simulatorSvc.getWindPatterns(new AsyncCallback() { + simulatorSvc.getWindPatterns(new AsyncCallback> () { @Override public void onFailure(Throwable message) { @@ -158,9 +192,9 @@ public class SimulatorMainPanel extends SplitLayoutPanel { } @Override - public void onSuccess(WindPattern[] patterns) { - for (int i = 0; i < patterns.length; ++i) { - patternSelector.addItem(patterns[i].toString()); + public void onSuccess(List patterns) { + for (WindPatternDTO p : patterns) { + patternSelector.addItem(p.name); } } @@ -175,12 +209,12 @@ public class SimulatorMainPanel extends SplitLayoutPanel { private void addSlider(Panel parentPanel, String labelName, double minValue, double maxValue, final ValueChangeHandler handler) { - VerticalPanel vp = new VerticalPanel(); - vp.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER); + FlowPanel vp = new FlowPanel(); + //vp.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER); Label label = new Label(labelName); vp.add(label); - + //FlowPanel fp = new FlowPanel(); final SliderBar sliderBar = new SliderBar(minValue, maxValue); sliderBar.setStepSize(1, false); @@ -207,10 +241,14 @@ public class SimulatorMainPanel extends SplitLayoutPanel { // sliderBar.setMaxValue(10.0, false); sliderBar.setCurrentValue(wControls.windSpeedInKnots); vp.add(sliderBar); - sliderBar.setWidth("60%"); - + // sliderBar.setWidth("100%"); + //vp.add(fp); parentPanel.add(vp); - vp.setWidth("80%"); + label.getElement().getStyle().setFloat(Style.Float.LEFT); + sliderBar.getElement().getStyle().setFloat(Style.Float.RIGHT); + sliderBar.setWidth("60%"); + sliderBar.setHeight("25px"); + // vp.setWidth("80%"); } private void createSailingSetup(Panel controlPanel) {