Styled some stuff and sorted fixes

This commit is contained in:
Jonas Dann committed 2016-02-09 17:53:13 +01:00
1 parent f9ea1141cb
commit 7adc2db80a
4 files changed
+104 -30

No files matched your search

+26
View File
@@ -756,4 +756,30 @@ img.openColumn {
.EditMarkPositionPopup {
background-color: #fff;
}
.EditMarkPositionConfirmCancelButtons .gwt-MenuItem {
color: #fff;
font-size: 15px;
font-weight: bold;
padding: 15px 25px;
background-color: #efab00;
}
.EditMarkPositionConfirmCancelButtons .gwt-MenuItem:hover {
background-color: #bf8b00;
}
.EditMarkPositionConfirmCancelButtons table {
border-spacing: 20px;
border-collapse: seperate;
}
.EditMarkPositionNotification > div {
margin: 80px;
color: #f00;
font-weight: bold;
font-size: 15px;
padding: 20px;
background-color: #fff;
}
@@ -1,6 +1,7 @@
package com.sap.sailing.gwt.ui.client.shared.charts;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
@@ -8,6 +9,8 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
import org.moxieapps.gwt.highcharts.client.Axis;
import org.moxieapps.gwt.highcharts.client.BaseChart;
@@ -35,6 +38,7 @@ import com.google.gwt.maps.client.MapOptions;
import com.google.gwt.maps.client.MapWidget;
import com.google.gwt.maps.client.base.LatLng;
import com.google.gwt.maps.client.base.LatLngBounds;
import com.google.gwt.maps.client.controls.ControlPosition;
import com.google.gwt.maps.client.events.click.ClickMapEvent;
import com.google.gwt.maps.client.events.click.ClickMapHandler;
import com.google.gwt.maps.client.events.mousedown.MouseDownMapEvent;
@@ -45,6 +49,7 @@ import com.google.gwt.maps.client.mvc.MVCArray;
import com.google.gwt.maps.client.overlays.Polyline;
import com.google.gwt.maps.client.overlays.PolylineOptions;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.MenuBar;
import com.google.gwt.user.client.ui.MenuItem;
@@ -59,7 +64,6 @@ import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
import com.sap.sailing.domain.common.impl.DegreePosition;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.client.shared.charts.AbstractRaceChart;
import com.sap.sailing.gwt.ui.client.shared.racemap.BoundsUtil;
import com.sap.sailing.gwt.ui.client.shared.racemap.CourseMarkOverlay;
import com.sap.sailing.gwt.ui.client.shared.racemap.FixOverlay;
@@ -70,13 +74,13 @@ import com.sap.sailing.gwt.ui.shared.GPSFixDTO;
import com.sap.sailing.gwt.ui.shared.MarkDTO;
import com.sap.sailing.gwt.ui.shared.WindDTO;
import com.sap.sse.common.settings.AbstractSettings;
import com.sap.sse.gwt.client.async.AsyncActionsExecutor;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.async.AsyncActionsExecutor;
import com.sap.sse.gwt.client.player.TimeRangeWithZoomProvider;
import com.sap.sse.gwt.client.player.Timer;
import com.sap.sse.gwt.client.shared.components.Component;
import com.sap.sse.gwt.client.shared.components.SettingsDialog;
import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent;
import com.sap.sse.gwt.client.player.TimeRangeWithZoomProvider;
import com.sap.sse.gwt.client.player.Timer;
public class EditMarkPositionPanel extends AbstractRaceChart implements Component<AbstractSettings>, RequiresResize, SelectionChangeEvent.Handler {
private final RaceMap raceMap;
@@ -95,7 +99,7 @@ public class EditMarkPositionPanel extends AbstractRaceChart implements Componen
private boolean visible;
private Map<MarkDTO, Map<GPSFixDTO, FixOverlay>> marks;
private Map<MarkDTO, SortedMap<GPSFixDTO, FixOverlay>> marks;
private MarkDTO selectedMark;
private Map<MarkDTO, Polyline> polylines;
private final ListDataProvider<MarkDTO> markDataProvider;
@@ -242,9 +246,19 @@ public class EditMarkPositionPanel extends AbstractRaceChart implements Componen
setWidget(chart);
showLoading("Loading mark fixes...");
Map<MarkDTO, List<GPSFixDTO>> result = serviceMock.getMarkTracks("", "", "");
marks = new HashMap<MarkDTO, Map<GPSFixDTO, FixOverlay>>();
marks = new HashMap<MarkDTO, SortedMap<GPSFixDTO, FixOverlay>>();
for (final Map.Entry<MarkDTO, List<GPSFixDTO>> fixes : result.entrySet()) {
Map<GPSFixDTO, FixOverlay> fixOverlayMap = new HashMap<GPSFixDTO, FixOverlay>();
SortedMap<GPSFixDTO, FixOverlay> fixOverlayMap = new TreeMap<GPSFixDTO, FixOverlay>(new Comparator<GPSFixDTO>() {
@Override
public int compare(GPSFixDTO o1, GPSFixDTO o2) {
int result = 0;
if (o1.timepoint.before(o2.timepoint))
result = -1;
if (o1.timepoint.after(o2.timepoint))
result = 1;
return result;
}
});
PolylineOptions options = PolylineOptions.newInstance();
if (map != null) {
options.setMap(map);
@@ -271,7 +285,6 @@ public class EditMarkPositionPanel extends AbstractRaceChart implements Componen
@Override
public void onFailure(Exception reason) {
overlay.setVisible(true);
// TODO Auto-generated method stub
}
@Override
public void onSuccess(Position result) {
@@ -300,7 +313,7 @@ public class EditMarkPositionPanel extends AbstractRaceChart implements Componen
}
marks.put(fixes.getKey(), fixOverlayMap);
polylines.put(fixes.getKey(), polyline);
updatePolylinePoints(fixes.getKey()); // TODO sort polyline fixes by time
updatePolylinePoints(fixes.getKey());
}
List<MarkDTO> markList = new ArrayList<MarkDTO>();
markList.addAll(marks.keySet());
@@ -314,7 +327,7 @@ public class EditMarkPositionPanel extends AbstractRaceChart implements Componen
public void addMarkFix(MarkDTO mark, Date timepoint, Position fixPosition) {
GPSFixDTO fix = new GPSFixDTO(timepoint, fixPosition, null, new WindDTO(), null, null, false);
serviceMock.addMarkFix("", "", "", mark, fix);
FixOverlay overlay = new FixOverlay(map, 1, fix, FixType.BUOY, "#505050", raceMap.getCoordinateSystem());
FixOverlay overlay = new FixOverlay(map, 1, fix, FixType.BUOY, mark.color, raceMap.getCoordinateSystem());
marks.get(mark).put(fix, overlay);
updatePolylinePoints(mark); // TODO: update index of fixPositionChooser
setSeriesPoints(mark);
@@ -552,7 +565,7 @@ public class EditMarkPositionPanel extends AbstractRaceChart implements Componen
}
public void hideAllFixOverlays() {
for (Map.Entry<MarkDTO, Map<GPSFixDTO, FixOverlay>> mark : marks.entrySet()) {
for (Map.Entry<MarkDTO, SortedMap<GPSFixDTO, FixOverlay>> mark : marks.entrySet()) {
for (FixOverlay overlay : mark.getValue().values()) {
overlay.setVisible(false);
}
@@ -572,6 +585,36 @@ public class EditMarkPositionPanel extends AbstractRaceChart implements Componen
break;
index++;
}
return new FixPositionChooser(map, index, polylines.get(mark).getPath(), map.getCenter(), raceMap.getCoordinateSystem(), callback);
Polyline polyline = polylines.get(mark);
return new FixPositionChooser(map, index, polyline != null ? polyline.getPath() : null, map.getCenter(), raceMap.getCoordinateSystem(), callback);
}
private com.google.gwt.user.client.Timer notificationTimer;
public void showNotification(String message) {
if (notificationTimer == null || !notificationTimer.isRunning()) {
final HTMLPanel text = new HTMLPanel("<div>" + message + "</div>");
text.setStyleName("EditMarkPositionNotification");
map.setControls(ControlPosition.TOP_CENTER, text);
notificationTimer = new com.google.gwt.user.client.Timer(){
@Override
public void run() {
text.removeFromParent();
}
};
notificationTimer.schedule(8000);
}
}
public boolean hasFixAtTimePoint(MarkDTO mark) {
boolean result = false;
for(GPSFixDTO fix : marks.get(mark).keySet()) {
if (fix.timepoint.equals(timer.getTime())) {
result = true;
break;
}
}
return result;
}
}
@@ -5,12 +5,12 @@ import com.google.gwt.core.client.Scheduler.ScheduledCommand;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.maps.client.MapWidget;
import com.google.gwt.maps.client.base.LatLng;
import com.google.gwt.maps.client.controls.ControlPosition;
import com.google.gwt.maps.client.events.center.CenterChangeMapEvent;
import com.google.gwt.maps.client.events.center.CenterChangeMapHandler;
import com.google.gwt.maps.client.mvc.MVCArray;
import com.google.gwt.user.client.ui.MenuBar;
import com.google.gwt.user.client.ui.MenuItem;
import com.google.gwt.user.client.ui.PopupPanel;
import com.sap.sailing.domain.common.FixType;
import com.sap.sailing.domain.common.Position;
import com.sap.sailing.gwt.ui.client.shared.racemap.CoordinateSystem;
@@ -29,7 +29,7 @@ public class FixPositionChooser {
private CoordinateSystem coordinateSystem;
private FixOverlay moveOverlay;
private HandlerRegistration centerChangeHandlerRegistration;
private PopupPanel popup;
private MenuBar menu;
/**
* Use this constructor when there is already a fix with an overlay.
@@ -90,7 +90,9 @@ public class FixPositionChooser {
this.moveOverlay = new FixOverlay(map, 0, fix, FixType.BUOY, "#f00", coordinateSystem);
}
map.panTo(startPos);
polylinePath.insertAt(polylineFixIndex, map.getCenter());
if (polylinePath != null) {
polylinePath.insertAt(polylineFixIndex, map.getCenter());
}
centerChangeHandlerRegistration = map.addCenterChangeHandler(new CenterChangeMapHandler() {
@Override
public void onEvent(CenterChangeMapEvent event) {
@@ -101,9 +103,8 @@ public class FixPositionChooser {
}
}
});
popup = new PopupPanel(false);
popup.setStyleName("EditMarkPositionPopup");
MenuBar menu = new MenuBar(false);
menu = new MenuBar(false);
menu.setStyleName("EditMarkPositionConfirmCancelButtons");
MenuItem confirm = new MenuItem(confirmButtonText, new ScheduledCommand() {
@Override
public void execute() {
@@ -115,25 +116,24 @@ public class FixPositionChooser {
@Override
public void execute() {
destroyUIOverlay();
if (newFix) {
polylinePath.removeAt(polylineFixIndex);
} else {
polylinePath.setAt(polylineFixIndex, overlay.getLatLngPosition());
if (polylinePath != null) {
if (newFix) {
polylinePath.removeAt(polylineFixIndex);
} else {
polylinePath.setAt(polylineFixIndex, overlay.getLatLngPosition());
}
}
callback.onFailure(null);
}
});
menu.addItem(confirm);
menu.addItem(cancel);
popup.setWidget(menu);
popup.show();
popup.setPopupPosition(map.getAbsoluteLeft() + map.getOffsetWidth() - popup.getOffsetWidth() - 20,
map.getAbsoluteTop() + map.getOffsetHeight() - popup.getOffsetHeight() - 20);
map.setControls(ControlPosition.BOTTOM_CENTER, menu);
}
private void destroyUIOverlay() {
moveOverlay.removeFromMap();
centerChangeHandlerRegistration.removeHandler();
popup.hide();
menu.removeFromParent();
}
}
@@ -31,6 +31,7 @@ public class MarksPanel extends SimplePanel implements Component<AbstractSetting
private final ListDataProvider<MarkDTO> markDataProvider;
private final FlushableSortedCellTableWithStylableHeaders<MarkDTO> markTable;
// TODO: Maybe write the current time into the add new fix button
public MarksPanel(final EditMarkPositionPanel parent, final ListDataProvider<MarkDTO> markDataProvider, final StringMessages stringMessages) {
this.markDataProvider = markDataProvider;
setTitle("Marks");
@@ -70,17 +71,21 @@ public class MarksPanel extends SimplePanel implements Component<AbstractSetting
};
addFixColumn.setFieldUpdater(new FieldUpdater<MarkDTO, String>() {
@Override
public void update(int index, final MarkDTO object, String value) {
parent.createFixPositionChooserToAddFixToMark(object, new Callback<Position, Exception>() {
public void update(int index, final MarkDTO mark, String value) {
if (parent.hasFixAtTimePoint(mark)) {
parent.showNotification("Please select another timepoint. There already is a fix at the timepoint of the timeslider.");
} else {
parent.createFixPositionChooserToAddFixToMark(mark, new Callback<Position, Exception>() {
@Override
public void onFailure(Exception reason) {
// TODO Auto-generated method stub
}
@Override
public void onSuccess(Position result) {
parent.addMarkFix(object, parent.getTimepoint(), result);
parent.addMarkFix(mark, parent.timer.getTime(), result);
}
});
}
}
});
markTable.addColumn(addFixColumn, new TextHeader(""));