mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-10 22:30:56 +00:00
changed the folder name of flags racecommmittee (hoped to solve the
nocache.js problem), restructured the RegattaOverview page with a master-detail-principle to display the course design of a selected race
This commit is contained in:
1 parent
a21efacd34
commit
2829d8dc79
34 files changed
+402
-46
No files matched your search
+5
@@ -527,4 +527,9 @@ public interface StringMessages extends Messages {
|
||||
String timePointMustBeBeforeEndOfTracking();
|
||||
String regattaUsedForTheTrackedRace();
|
||||
String courseDesignUpdateUrl();
|
||||
String passingSide();
|
||||
String refreshNow();
|
||||
String stopUpdating();
|
||||
String startUpdating();
|
||||
String currentTime();
|
||||
}
|
||||
+5
@@ -530,3 +530,8 @@ timePointMustBeAfterStartOfTracking=Time point must be after start of tracking.
|
||||
timePointMustBeBeforeEndOfTracking=Time point must be before end of tracking.
|
||||
regattaUsedForTheTrackedRace=Regatta used for the tracked race
|
||||
courseDesignUpdateUrl=Course design update URI
|
||||
passingSide=Passing side
|
||||
refreshNow=Refresh now
|
||||
stopUpdating=Stop updating
|
||||
startUpdating=Start updating
|
||||
currentTime=Current time:
|
||||
+6
-1
@@ -526,4 +526,9 @@ netScore=Nettoergebnis
|
||||
timePointMustBeAfterStartOfTracking=Der Zeitpunkt muß nach dem Trackingbeginn sein.
|
||||
timePointMustBeBeforeEndOfTracking=Der Zeitpunkt muß vor dem Trackingende sein.
|
||||
regattaUsedForTheTrackedRace=Regatta, zu der das Rennen gehört
|
||||
courseDesignUpdateUrl=Kursvorschlag URL
|
||||
courseDesignUpdateUrl=Kursvorschlag URL
|
||||
passingSide=Wenderichtung
|
||||
refreshNow=Jetzt aktualisieren
|
||||
stopUpdating=Aktualisierung stoppen
|
||||
startUpdating=Aktualisierung starten
|
||||
currentTime=Aktuelle Zeit:
|
||||
+87
@@ -0,0 +1,87 @@
|
||||
package com.sap.sailing.gwt.ui.regattaoverview;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.user.cellview.client.CellTable;
|
||||
import com.google.gwt.user.cellview.client.TextColumn;
|
||||
import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.SimplePanel;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.view.client.ListDataProvider;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.RegattaOverviewEntryDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WaypointDTO;
|
||||
|
||||
public class CourseDesignTableComposite extends Composite {
|
||||
|
||||
private final CellTable<WaypointDTO> waypointTable;
|
||||
private ListDataProvider<WaypointDTO> waypointDataProvider;
|
||||
private final SimplePanel mainPanel;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private final SailingServiceAsync sailingService;
|
||||
private final StringMessages stringMessages;
|
||||
|
||||
private RegattaOverviewEntryDTO race;
|
||||
|
||||
|
||||
private static RegattaOverviewTableResources tableRes = GWT.create(RegattaOverviewTableResources.class);
|
||||
|
||||
public CourseDesignTableComposite(final SailingServiceAsync sailingService, ErrorReporter errorReporter,
|
||||
final StringMessages stringMessages) {
|
||||
this.sailingService = sailingService;
|
||||
this.stringMessages = stringMessages;
|
||||
|
||||
this.race = null;
|
||||
|
||||
mainPanel = new SimplePanel();
|
||||
VerticalPanel panel = new VerticalPanel();
|
||||
mainPanel.setWidget(panel);
|
||||
|
||||
waypointDataProvider = new ListDataProvider<WaypointDTO>();
|
||||
waypointTable = createCourseDesignTable();
|
||||
|
||||
panel.add(waypointTable);
|
||||
|
||||
initWidget(mainPanel);
|
||||
|
||||
}
|
||||
|
||||
private CellTable<WaypointDTO> createCourseDesignTable() {
|
||||
CellTable<WaypointDTO> table = new CellTable<WaypointDTO>(/* pageSize */10000, tableRes);
|
||||
waypointDataProvider.addDataDisplay(table);
|
||||
table.setWidth("100%");
|
||||
|
||||
TextColumn<WaypointDTO> waypointNameColumn = new TextColumn<WaypointDTO>() {
|
||||
@Override
|
||||
public String getValue(WaypointDTO waypointDTO) {
|
||||
return waypointDTO.name;
|
||||
}
|
||||
};
|
||||
|
||||
TextColumn<WaypointDTO> waypointPassingSideColumn = new TextColumn<WaypointDTO>() {
|
||||
@Override
|
||||
public String getValue(WaypointDTO waypointDTO) {
|
||||
return (waypointDTO.passingSide == null) ? "" : waypointDTO.passingSide.name();
|
||||
}
|
||||
};
|
||||
|
||||
table.addColumn(waypointNameColumn, stringMessages.waypoint());
|
||||
table.addColumn(waypointPassingSideColumn, stringMessages.passingSide());
|
||||
|
||||
return table;
|
||||
}
|
||||
|
||||
public void setRace(RegattaOverviewEntryDTO regattaOverviewEntryDTO) {
|
||||
this.race = regattaOverviewEntryDTO;
|
||||
updateCourseDetails();
|
||||
}
|
||||
|
||||
private void updateCourseDetails() {
|
||||
if (this.race != null && this.race.raceInfo.lastCourseDesign != null) {
|
||||
waypointDataProvider.getList().clear();
|
||||
waypointDataProvider.getList().addAll(this.race.raceInfo.lastCourseDesign.waypoints);
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -25,7 +25,7 @@ public class RegattaOverviewEntryPoint extends AbstractEntryPoint {
|
||||
}
|
||||
String eventIdAsString = Window.Location.getParameter("event");
|
||||
|
||||
RegattaOverviewTableComposite regattaOverviewPanel = new RegattaOverviewTableComposite(sailingService, this, stringMessages, eventIdAsString);
|
||||
RegattaOverviewPanel regattaOverviewPanel = new RegattaOverviewPanel(sailingService, this, stringMessages, eventIdAsString);
|
||||
rootPanel.add(regattaOverviewPanel);
|
||||
}
|
||||
|
||||
|
||||
+105
@@ -0,0 +1,105 @@
|
||||
package com.sap.sailing.gwt.ui.regattaoverview;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.dom.client.Style.Unit;
|
||||
import com.google.gwt.user.client.ui.Grid;
|
||||
import com.google.gwt.user.client.ui.HasVerticalAlignment;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.SimplePanel;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.MarkedAsyncCallback;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.EventDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.RegattaOverviewEntryDTO;
|
||||
|
||||
public class RegattaOverviewPanel extends SimplePanel implements RegattaOverviewRaceSelectionChangeListener {
|
||||
private final SailingServiceAsync sailingService;
|
||||
@SuppressWarnings("unused")
|
||||
private final ErrorReporter errorReporter;
|
||||
@SuppressWarnings("unused")
|
||||
private final StringMessages stringMessages;
|
||||
private final String eventIdAsString;
|
||||
|
||||
private RegattaOverviewRaceSelectionModel raceSelectionProvider;
|
||||
|
||||
private RegattaOverviewTableComposite regattaOverviewTableComposite;
|
||||
private CourseDesignTableComposite raceCourseDesignDetailsComposite;
|
||||
|
||||
private final Label eventNameLabel;
|
||||
private final Label venueNameLabel;
|
||||
|
||||
public RegattaOverviewPanel(SailingServiceAsync sailingService, ErrorReporter errorReporter, StringMessages stringMessages, String eventIdAsString) {
|
||||
this.sailingService = sailingService;
|
||||
this.errorReporter = errorReporter;
|
||||
this.stringMessages = stringMessages;
|
||||
this.eventIdAsString = eventIdAsString;
|
||||
|
||||
VerticalPanel mainPanel = new VerticalPanel();
|
||||
setWidget(mainPanel);
|
||||
mainPanel.setWidth("100%");
|
||||
|
||||
eventNameLabel = new Label();
|
||||
venueNameLabel = new Label();
|
||||
|
||||
Grid grid = new Grid(1, 2);
|
||||
|
||||
|
||||
raceSelectionProvider = new RegattaOverviewRaceSelectionModel(false);
|
||||
raceSelectionProvider.addRegattaOverviewRaceSelectionChangeListener(this);
|
||||
|
||||
regattaOverviewTableComposite = new RegattaOverviewTableComposite(sailingService, errorReporter, stringMessages, eventIdAsString, raceSelectionProvider);
|
||||
|
||||
raceCourseDesignDetailsComposite = new CourseDesignTableComposite(sailingService, errorReporter, stringMessages);
|
||||
grid.setWidget(0, 0, raceCourseDesignDetailsComposite);
|
||||
|
||||
grid.setWidget(0, 1, regattaOverviewTableComposite);
|
||||
grid.getRowFormatter().setVerticalAlign(0, HasVerticalAlignment.ALIGN_TOP);
|
||||
grid.getColumnFormatter().getElement(1).getStyle().setPaddingTop(2.0, Unit.EM);
|
||||
|
||||
mainPanel.add(eventNameLabel);
|
||||
mainPanel.add(venueNameLabel);
|
||||
mainPanel.add(grid);
|
||||
|
||||
fillEventAndVenueName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRegattaOverviewEntrySelectionChange(List<RegattaOverviewEntryDTO> selectedRegattaOverviewEntries) {
|
||||
final RegattaOverviewEntryDTO selectedRegattaOverviewEntry;
|
||||
if (selectedRegattaOverviewEntries.iterator().hasNext()) {
|
||||
selectedRegattaOverviewEntry = selectedRegattaOverviewEntries.iterator().next();
|
||||
if (selectedRegattaOverviewEntry != null && regattaOverviewTableComposite.getAllRaces() != null) {
|
||||
for(RegattaOverviewEntryDTO regattaOverviewEntryDTO: regattaOverviewTableComposite.getAllRaces()) {
|
||||
if(regattaOverviewEntryDTO.equals(selectedRegattaOverviewEntry)) {//TOTOTOTOTO!!!!!!!!!!!!
|
||||
raceCourseDesignDetailsComposite.setRace(regattaOverviewEntryDTO);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
raceCourseDesignDetailsComposite.setRace(null);
|
||||
}
|
||||
}
|
||||
|
||||
private void fillEventAndVenueName() {
|
||||
sailingService.getEventByIdAsString(eventIdAsString, new MarkedAsyncCallback<EventDTO>() {
|
||||
|
||||
@Override
|
||||
protected void handleFailure(Throwable cause) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleSuccess(EventDTO result) {
|
||||
if (result != null) {
|
||||
eventNameLabel.setText(result.name);
|
||||
venueNameLabel.setText(result.venue.name);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package com.sap.sailing.gwt.ui.regattaoverview;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.sap.sailing.gwt.ui.shared.RegattaOverviewEntryDTO;
|
||||
|
||||
public interface RegattaOverviewRaceSelectionChangeListener {
|
||||
/**
|
||||
* The first element is the first one selected
|
||||
*
|
||||
* @param selectedRegattaOverviewEntries a non-<code>null</code> list which is empty if nothing is selected
|
||||
*/
|
||||
void onRegattaOverviewEntrySelectionChange(List<RegattaOverviewEntryDTO> selectedRegattaOverviewEntries);
|
||||
}
|
||||
+92
@@ -0,0 +1,92 @@
|
||||
package com.sap.sailing.gwt.ui.regattaoverview;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import com.sap.sailing.gwt.ui.shared.RegattaOverviewEntryDTO;
|
||||
|
||||
public class RegattaOverviewRaceSelectionModel implements RegattaOverviewRaceSelectionProvider {
|
||||
|
||||
private final List<RegattaOverviewEntryDTO> selection;
|
||||
|
||||
private final List<RegattaOverviewEntryDTO> allRegattaOverviewRaces;
|
||||
|
||||
private final Set<RegattaOverviewRaceSelectionChangeListener> listeners;
|
||||
|
||||
private final boolean hasMultiSelection;
|
||||
|
||||
public RegattaOverviewRaceSelectionModel(boolean hasMultiSelection) {
|
||||
this.hasMultiSelection = hasMultiSelection;
|
||||
this.selection = new ArrayList<RegattaOverviewEntryDTO>();
|
||||
this.allRegattaOverviewRaces = new ArrayList<RegattaOverviewEntryDTO>();
|
||||
listeners = new HashSet<RegattaOverviewRaceSelectionChangeListener>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RegattaOverviewEntryDTO> getSelectedEntries() {
|
||||
return Collections.unmodifiableList(selection);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addRegattaOverviewRaceSelectionChangeListener(RegattaOverviewRaceSelectionChangeListener listener) {
|
||||
listeners.add(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeRegattaOverviewRaceSelectionChangeListener(RegattaOverviewRaceSelectionChangeListener listener) {
|
||||
listeners.remove(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelection(List<RegattaOverviewEntryDTO> newSelection, RegattaOverviewRaceSelectionChangeListener... listenersNotToNotify) {
|
||||
boolean notify = !selection.equals(newSelection);
|
||||
selection.clear();
|
||||
selection.addAll(newSelection);
|
||||
if (notify) {
|
||||
notifyListeners(listenersNotToNotify);
|
||||
}
|
||||
}
|
||||
|
||||
private void notifyListeners(RegattaOverviewRaceSelectionChangeListener[] listenersNotToNotify) {
|
||||
List<RegattaOverviewEntryDTO> selectedRegattaOverviewEntries = getSelectedEntries();
|
||||
for (RegattaOverviewRaceSelectionChangeListener listener : listeners) {
|
||||
if (listenersNotToNotify == null || !Arrays.asList(listenersNotToNotify).contains(listener)) {
|
||||
listener.onRegattaOverviewEntrySelectionChange(selectedRegattaOverviewEntries);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasMultiSelection() {
|
||||
return hasMultiSelection;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RegattaOverviewEntryDTO> getAllRegattaOverviewEntries() {
|
||||
return Collections.unmodifiableList(allRegattaOverviewRaces);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAllRegattaOverviewEntries(List<RegattaOverviewEntryDTO> newAllRegattaOverviewEntries,
|
||||
RegattaOverviewRaceSelectionChangeListener... listenersNotToNotify) {
|
||||
allRegattaOverviewRaces.clear();
|
||||
for (RegattaOverviewEntryDTO r : newAllRegattaOverviewEntries) {
|
||||
allRegattaOverviewRaces.add(r);
|
||||
}
|
||||
for (Iterator<RegattaOverviewEntryDTO> i=selection.iterator(); i.hasNext(); ) {
|
||||
RegattaOverviewEntryDTO selectedRegattaOverviewEntry = i.next();
|
||||
if (!allRegattaOverviewRaces.contains(selectedRegattaOverviewEntry)) {
|
||||
i.remove();
|
||||
}
|
||||
}
|
||||
// when setting all regatta overview entries, the actual RegattaOverviewEntryDTOs will usually have changed their identity and maybe also their state;
|
||||
// so notifying the selection listeners is necessary anyhow
|
||||
notifyListeners(listenersNotToNotify);
|
||||
}
|
||||
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
package com.sap.sailing.gwt.ui.regattaoverview;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.sap.sailing.gwt.ui.shared.RegattaOverviewEntryDTO;
|
||||
|
||||
public interface RegattaOverviewRaceSelectionProvider {
|
||||
/**
|
||||
* @return a non-<code>null</code> list which may be empty
|
||||
*/
|
||||
List<RegattaOverviewEntryDTO> getSelectedEntries();
|
||||
|
||||
void addRegattaOverviewRaceSelectionChangeListener(RegattaOverviewRaceSelectionChangeListener listener);
|
||||
|
||||
void removeRegattaOverviewRaceSelectionChangeListener(RegattaOverviewRaceSelectionChangeListener listener);
|
||||
|
||||
void setSelection(List<RegattaOverviewEntryDTO> newSelection, RegattaOverviewRaceSelectionChangeListener... listenersNotToNotify);
|
||||
|
||||
boolean hasMultiSelection();
|
||||
|
||||
/**
|
||||
* @return a non-<code>null</code> list which may be empty
|
||||
*/
|
||||
List<RegattaOverviewEntryDTO> getAllRegattaOverviewEntries();
|
||||
|
||||
void setAllRegattaOverviewEntries(List<RegattaOverviewEntryDTO> newAllRegattaOverviewEntries, RegattaOverviewRaceSelectionChangeListener... listenersNotToNotify);
|
||||
}
|
||||
+11
-11
@@ -1,12 +1,12 @@
|
||||
package com.sap.sailing.gwt.ui.regattaoverview;
|
||||
|
||||
import com.google.gwt.resources.client.ClientBundle;
|
||||
import com.google.gwt.resources.client.ImageResource;
|
||||
|
||||
interface RegattaOverviewResources extends ClientBundle {
|
||||
@Source("com/sap/sailing/gwt/ui/client/images/flags/flagsRacecommittee/ap.png")
|
||||
ImageResource flagAP();
|
||||
|
||||
@Source("com/sap/sailing/gwt/ui/client/images/flags/flagsRacecommittee/up.png")
|
||||
ImageResource arrowUp();
|
||||
package com.sap.sailing.gwt.ui.regattaoverview;
|
||||
|
||||
import com.google.gwt.resources.client.ClientBundle;
|
||||
import com.google.gwt.resources.client.ImageResource;
|
||||
|
||||
interface RegattaOverviewResources extends ClientBundle {
|
||||
@Source("com/sap/sailing/gwt/ui/client/images/flags/flags_racecommittee/ap.png")
|
||||
ImageResource flagAP();
|
||||
|
||||
@Source("com/sap/sailing/gwt/ui/client/images/flags/flags_racecommittee/up.png")
|
||||
ImageResource arrowUp();
|
||||
}
|
||||
+43
-30
@@ -1,5 +1,6 @@
|
||||
package com.sap.sailing.gwt.ui.regattaoverview;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@@ -19,6 +20,10 @@ import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.SimplePanel;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.view.client.ListDataProvider;
|
||||
import com.google.gwt.view.client.SelectionChangeEvent;
|
||||
import com.google.gwt.view.client.SelectionModel;
|
||||
import com.google.gwt.view.client.SingleSelectionModel;
|
||||
import com.sap.sailing.domain.common.RaceIdentifier;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.MarkedAsyncCallback;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
@@ -27,7 +32,6 @@ import com.sap.sailing.gwt.ui.client.TimeListener;
|
||||
import com.sap.sailing.gwt.ui.client.Timer;
|
||||
import com.sap.sailing.gwt.ui.client.Timer.PlayModes;
|
||||
import com.sap.sailing.gwt.ui.client.Timer.PlayStates;
|
||||
import com.sap.sailing.gwt.ui.shared.EventDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.RegattaOverviewEntryDTO;
|
||||
|
||||
public class RegattaOverviewTableComposite extends Composite {
|
||||
@@ -35,6 +39,7 @@ public class RegattaOverviewTableComposite extends Composite {
|
||||
private final long serverUpdateRate = 10000;
|
||||
private final long uiUpdateRate = 1000;
|
||||
|
||||
private final SelectionModel<RegattaOverviewEntryDTO> raceSelectionModel;
|
||||
private final CellTable<RegattaOverviewEntryDTO> regattaOverviewTable;
|
||||
private ListDataProvider<RegattaOverviewEntryDTO> regattaOverviewDataProvider;
|
||||
private final SimplePanel mainPanel;
|
||||
@@ -42,24 +47,24 @@ public class RegattaOverviewTableComposite extends Composite {
|
||||
private final Timer serverUpdateTimer;
|
||||
private final Timer uiUpdateTimer;
|
||||
private final Label timeLabel;
|
||||
private final Label eventNameLabel;
|
||||
private final Label venueNameLabel;
|
||||
private final Button startStopUpdatingButton;
|
||||
private final DateTimeFormat timeFormatter = DateTimeFormat.getFormat("HH:mm:ss");
|
||||
|
||||
private final SailingServiceAsync sailingService;
|
||||
private final StringMessages stringMessages;
|
||||
private final String eventIdAsString;
|
||||
private final RegattaOverviewRaceSelectionProvider raceSelectionProvider;
|
||||
|
||||
private static RegattaOverviewResources resources = GWT.create(RegattaOverviewResources.class);
|
||||
|
||||
private static RegattaOverviewTableResources tableRes = GWT.create(RegattaOverviewTableResources.class);
|
||||
|
||||
public RegattaOverviewTableComposite(final SailingServiceAsync sailingService, ErrorReporter errorReporter,
|
||||
final StringMessages stringMessages, final String eventIdAsString) {
|
||||
final StringMessages stringMessages, final String eventIdAsString, final RegattaOverviewRaceSelectionProvider raceSelectionProvider) {
|
||||
this.sailingService = sailingService;
|
||||
this.stringMessages = stringMessages;
|
||||
this.eventIdAsString = eventIdAsString;
|
||||
this.raceSelectionProvider = raceSelectionProvider;
|
||||
|
||||
this.serverUpdateTimer = new Timer(PlayModes.Live, serverUpdateRate);
|
||||
this.serverUpdateTimer.addTimeListener(new TimeListener() {
|
||||
@@ -88,12 +93,9 @@ public class RegattaOverviewTableComposite extends Composite {
|
||||
regattaOverviewDataProvider = new ListDataProvider<RegattaOverviewEntryDTO>();
|
||||
regattaOverviewTable = createRegattaTable();
|
||||
|
||||
eventNameLabel = new Label();
|
||||
venueNameLabel = new Label();
|
||||
|
||||
timeLabel = new Label();
|
||||
|
||||
Button refreshNowButton = new Button("Refresh now");
|
||||
Button refreshNowButton = new Button(stringMessages.refreshNow());
|
||||
refreshNowButton.addClickHandler(new ClickHandler() {
|
||||
|
||||
@Override
|
||||
@@ -103,56 +105,64 @@ public class RegattaOverviewTableComposite extends Composite {
|
||||
|
||||
});
|
||||
|
||||
this.startStopUpdatingButton = new Button("Stop updating");
|
||||
this.startStopUpdatingButton = new Button(stringMessages.stopUpdating());
|
||||
this.startStopUpdatingButton.addClickHandler(new ClickHandler() {
|
||||
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
if (serverUpdateTimer.getPlayState().equals(PlayStates.Playing)) {
|
||||
serverUpdateTimer.pause();
|
||||
startStopUpdatingButton.setText("Start updating");
|
||||
startStopUpdatingButton.setText(stringMessages.startUpdating());
|
||||
} else if (serverUpdateTimer.getPlayState().equals(PlayStates.Paused)) {
|
||||
serverUpdateTimer.play();
|
||||
startStopUpdatingButton.setText("Stop updating");
|
||||
startStopUpdatingButton.setText(stringMessages.stopUpdating());
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
Grid gridTimeRefreshStop = new Grid(1, 4);
|
||||
gridTimeRefreshStop.setWidget(0, 0, new Label("Current time: "));
|
||||
gridTimeRefreshStop.setWidget(0, 0, new Label(stringMessages.currentTime()));
|
||||
gridTimeRefreshStop.setWidget(0, 1, timeLabel);
|
||||
gridTimeRefreshStop.setWidget(0, 2, refreshNowButton);
|
||||
gridTimeRefreshStop.setWidget(0, 3, startStopUpdatingButton);
|
||||
|
||||
panel.add(eventNameLabel);
|
||||
panel.add(venueNameLabel);
|
||||
raceSelectionModel = new SingleSelectionModel<RegattaOverviewEntryDTO>();
|
||||
raceSelectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
|
||||
|
||||
@Override
|
||||
public void onSelectionChange(SelectionChangeEvent event) {
|
||||
List<RegattaOverviewEntryDTO> selectedRaces = getSelectedRaces();
|
||||
List<RaceIdentifier> selectedRaceIdentifiers = new ArrayList<RaceIdentifier>();
|
||||
for (RegattaOverviewEntryDTO selectedRace : selectedRaces) {
|
||||
selectedRaceIdentifiers.add(selectedRace.raceInfo.raceIdentifier);
|
||||
}
|
||||
RegattaOverviewTableComposite.this.raceSelectionProvider.setSelection(selectedRaces);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
regattaOverviewTable.setSelectionModel(raceSelectionModel);
|
||||
|
||||
panel.add(gridTimeRefreshStop);
|
||||
panel.add(regattaOverviewTable);
|
||||
|
||||
initWidget(mainPanel);
|
||||
|
||||
fillEventAndVenueName();
|
||||
loadAndUpdateEventLog();
|
||||
onUpdateUI(new Date());
|
||||
}
|
||||
|
||||
private void fillEventAndVenueName() {
|
||||
sailingService.getEventByIdAsString(eventIdAsString, new MarkedAsyncCallback<EventDTO>() {
|
||||
|
||||
@Override
|
||||
protected void handleFailure(Throwable cause) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleSuccess(EventDTO result) {
|
||||
if (result != null) {
|
||||
eventNameLabel.setText(result.name);
|
||||
venueNameLabel.setText(result.venue.name);
|
||||
protected List<RegattaOverviewEntryDTO> getSelectedRaces() {
|
||||
List<RegattaOverviewEntryDTO> result = new ArrayList<RegattaOverviewEntryDTO>();
|
||||
if (regattaOverviewDataProvider != null) {
|
||||
for (RegattaOverviewEntryDTO race : regattaOverviewDataProvider.getList()) {
|
||||
if (raceSelectionModel.isSelected(race)) {
|
||||
result.add(race);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public void onUpdateServer(Date time) {
|
||||
@@ -168,7 +178,6 @@ public class RegattaOverviewTableComposite extends Composite {
|
||||
|
||||
@Override
|
||||
protected void handleFailure(Throwable cause) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@@ -260,4 +269,8 @@ public class RegattaOverviewTableComposite extends Composite {
|
||||
|
||||
return table;
|
||||
}
|
||||
|
||||
public List<RegattaOverviewEntryDTO> getAllRaces() {
|
||||
return regattaOverviewDataProvider.getList();
|
||||
}
|
||||
}
|
||||
+4
-3
@@ -1097,7 +1097,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
return result;
|
||||
}
|
||||
|
||||
private RaceInfoDTO convertToRaceInfoDTO(RaceColumnDTO raceColumnDTO, Fleet fleet, RaceLog raceLog) {
|
||||
private RaceInfoDTO convertToRaceInfoDTO(RaceColumnDTO raceColumnDTO, FleetDTO fleetDTO, RaceLog raceLog) {
|
||||
RaceInfoDTO raceInfoDTO = new RaceInfoDTO();
|
||||
|
||||
PassAwareRaceLogImpl passAwareRaceLog = new PassAwareRaceLogImpl(raceLog);
|
||||
@@ -1107,7 +1107,8 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
}
|
||||
|
||||
raceInfoDTO.raceName = raceColumnDTO.name;
|
||||
raceInfoDTO.fleet = fleet.getName();
|
||||
raceInfoDTO.fleet = fleetDTO.name;
|
||||
raceInfoDTO.raceIdentifier = raceColumnDTO.getRaceIdentifier(fleetDTO);
|
||||
|
||||
RaceStatusAnalyzer raceStatusAnalyzer = new RaceStatusAnalyzer(passAwareRaceLog);
|
||||
raceInfoDTO.lastStatus = raceStatusAnalyzer.getStatus();
|
||||
@@ -2229,7 +2230,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
|
||||
private void addRaceInfoToRace(RaceColumn raceColumn, Fleet fleet, final FleetDTO fleetDTO, RaceColumnDTO raceColumnDTO) {
|
||||
RaceLog raceLog = raceColumn.getRaceLog(fleet);
|
||||
RaceInfoDTO raceInfoDTO = convertToRaceInfoDTO(raceColumnDTO, fleet, raceLog);
|
||||
RaceInfoDTO raceInfoDTO = convertToRaceInfoDTO(raceColumnDTO, fleetDTO, raceLog);
|
||||
raceColumnDTO.getRaceInfoPerFleet().put(fleetDTO, raceInfoDTO);
|
||||
}
|
||||
|
||||
|
||||
+2
@@ -2,6 +2,7 @@ package com.sap.sailing.gwt.ui.shared;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
|
||||
import com.sap.sailing.domain.common.racelog.Flags;
|
||||
import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus;
|
||||
|
||||
@@ -15,6 +16,7 @@ public class RaceInfoDTO implements IsSerializable {
|
||||
public Flags lastFlag;
|
||||
public boolean displayed;
|
||||
public RaceCourseDTO lastCourseDesign;
|
||||
public RegattaAndRaceIdentifier raceIdentifier;
|
||||
|
||||
// for GWT serialization
|
||||
public RaceInfoDTO() { }
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Reference in new issue
Block a user