Merge remote-tracking branch 'server/master'

This commit is contained in:
Axel Uhl committed 2012-10-16 14:55:02 +02:00
commit e4350351bc
9 files changed
+72 -12

No files matched your search

@@ -206,7 +206,7 @@ public class RaceColumnInRegattaSeriesDialog extends DataEntryDialog<Pair<Series
raceNamePrefixTextBox.setText(seriesName.substring(0, 1).toUpperCase());
}
} else {
seriesListBox.addItem("Please select a series");
seriesListBox.addItem(stringMessages.pleaseSelectASeries());
for (SeriesDTO series : regatta.series) {
seriesListBox.addItem(series.name);
}
@@ -13,7 +13,7 @@ import com.sap.sailing.gwt.ui.shared.RaceTimesInfoDTO;
import com.sap.sailing.gwt.ui.shared.components.SettingsDialogComponent;
public class RaceTimePanel extends TimePanel<RaceTimePanelSettings> implements RaceSelectionChangeListener, RaceTimesInfoProviderListener {
private RaceTimesInfoProvider raceTimesInfoProvider;
private final RaceTimesInfoProvider raceTimesInfoProvider;
private RegattaAndRaceIdentifier selectedRace;
private boolean autoAdjustPlayMode;
private RaceTimesInfoDTO lastRaceTimesInfo;
@@ -407,4 +407,5 @@ public interface StringMessages extends Messages {
String unsuppress();
String suppressedCompetitors();
String pleaseSelectASeries();
String pleaseSelectARace();
}
@@ -407,4 +407,5 @@ isPublic=Is public
suppress=Suppress
unsuppress=Unsuppress
suppressedCompetitors=Suppressed Competitors
pleaseSelectASeries=Please select a series.
pleaseSelectASeries=Please select a series
pleaseSelectARace=Please select a race
@@ -408,4 +408,5 @@ isPublic=Öffentlich zugänglich
suppress=Entfernen
unsuppress=Wieder hinzufügen
suppressedCompetitors=Unterdrückte Wettkampfteilnehmer
pleaseSelectASeries=Bitte wählen Sie eine Serie aus.
pleaseSelectASeries=Bitte wählen Sie eine Serie aus
pleaseSelectARace=Bitte wählen Sie ein Rennen aus
@@ -1,27 +1,37 @@
package com.sap.sailing.gwt.ui.leaderboard;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;
import com.google.gwt.dom.client.Style.Float;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.FlowPanel;
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.VerticalPanel;
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
import com.sap.sailing.domain.common.impl.Util.Pair;
import com.sap.sailing.gwt.ui.actions.AsyncActionsExecutor;
import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider;
import com.sap.sailing.gwt.ui.client.ErrorReporter;
import com.sap.sailing.gwt.ui.client.RaceSelectionModel;
import com.sap.sailing.gwt.ui.client.RaceSelectionProvider;
import com.sap.sailing.gwt.ui.client.RaceTimesCalculationUtil;
import com.sap.sailing.gwt.ui.client.RaceTimesInfoProvider;
import com.sap.sailing.gwt.ui.client.RaceTimesInfoProviderListener;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.client.TimeRangeChangeListener;
import com.sap.sailing.gwt.ui.client.TimeRangeWithZoomModel;
import com.sap.sailing.gwt.ui.client.TimeRangeWithZoomProvider;
import com.sap.sailing.gwt.ui.client.Timer;
import com.sap.sailing.gwt.ui.shared.RaceTimesInfoDTO;
import com.sap.sailing.gwt.ui.shared.charts.MultiChartPanel;
import com.sap.sailing.gwt.ui.shared.charts.MultiChartSettings;
import com.sap.sailing.gwt.ui.shared.components.ComponentToolbar;
@@ -32,27 +42,36 @@ import com.sap.sailing.gwt.ui.shared.components.ComponentToolbar;
* @author Benjamin Ebling, Axel Uhl (d043530)
*
*/
public class CompareCompetitorsChartDialog extends DialogBoxExt {
public class CompareCompetitorsChartDialog extends DialogBoxExt implements RaceTimesInfoProviderListener {
private final RaceSelectionProvider raceSelectionProvider;
private final SailingServiceAsync sailingService;
private final TimeRangeWithZoomProvider timeRangeWithZoomProvider;
private final Timer timer;
private final ErrorReporter errorReporter;
private final MultiChartPanel multiChartPanel;
final ListBox racesListBox;
private final ListBox racesListBox;
public CompareCompetitorsChartDialog(SailingServiceAsync sailingService,
List<RegattaAndRaceIdentifier> races, final CompetitorSelectionProvider competitorSelectionProvider, Timer timer,
StringMessages stringConstants, ErrorReporter errorReporter) {
List<RegattaAndRaceIdentifier> races, final RaceTimesInfoProvider raceTimesInfoProvider, final CompetitorSelectionProvider competitorSelectionProvider,
Timer timer, StringMessages stringConstants, ErrorReporter errorReporter) {
super(new Label(stringConstants.close()));
this.sailingService = sailingService;
this.timer = timer;
this.errorReporter = errorReporter;
this.timeRangeWithZoomProvider = new TimeRangeWithZoomModel();
this.setPopupPosition(15, 15);
this.setHTML(stringConstants.compareCompetitors());
this.setWidth(Window.getClientWidth() - 250 + "px");
this.setAnimationEnabled(true);
raceTimesInfoProvider.addRaceTimesInfoProviderListener(this);
raceSelectionProvider = new RaceSelectionModel();
raceSelectionProvider.setAllRaces(races);
multiChartPanel = new MultiChartPanel(sailingService, new AsyncActionsExecutor(), competitorSelectionProvider, raceSelectionProvider,
timer, new TimeRangeWithZoomModel(), stringConstants, errorReporter, false, false);
timer, timeRangeWithZoomProvider, stringConstants, errorReporter, false, false);
multiChartPanel.setSize("100%", "100%");
VerticalPanel contentPanel = new VerticalPanel();
@@ -66,7 +85,7 @@ public class CompareCompetitorsChartDialog extends DialogBoxExt {
HorizontalPanel raceSelectionPanel = new HorizontalPanel();
raceSelectionPanel.setSpacing(3);
racesListBox = new ListBox();
raceSelectionPanel.add(new Label("Select a race:"));
raceSelectionPanel.add(new Label(stringConstants.pleaseSelectARace() + ":"));
raceSelectionPanel.add(racesListBox);
for (RegattaAndRaceIdentifier race : raceSelectionProvider.getAllRaces()) {
racesListBox.addItem(race.toString());
@@ -101,7 +120,43 @@ public class CompareCompetitorsChartDialog extends DialogBoxExt {
}
private void selectRace(final RegattaAndRaceIdentifier selectedRace) {
raceSelectionProvider.setSelection(Collections.singletonList(selectedRace));
sailingService.getRaceTimesInfo(selectedRace, new AsyncCallback<RaceTimesInfoDTO>() {
@Override
public void onSuccess(RaceTimesInfoDTO raceTimesInfo) {
updateMinMax(raceTimesInfo);
raceSelectionProvider.setSelection(Collections.singletonList(selectedRace));
}
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Error obtaining race times: " + caught.getMessage(), true /*silentMode */);
}
});
}
private void updateMinMax(RaceTimesInfoDTO newRaceTimesInfo) {
Pair<Date, Date> raceMinMax = RaceTimesCalculationUtil.caluclateRaceMinMax(timer, newRaceTimesInfo);
Date min = raceMinMax.getA();
Date max = raceMinMax.getB();
// never reduce max if it was already set
if (min != null && max != null && (timeRangeWithZoomProvider.getToTime() == null || timeRangeWithZoomProvider.getToTime().before(max))) {
timeRangeWithZoomProvider.setTimeRange(min, max, new TimeRangeChangeListener[0]);
}
}
private RegattaAndRaceIdentifier getSelectedRace() {
return raceSelectionProvider.getSelectedRaces().size() > 0 ? raceSelectionProvider.getSelectedRaces().get(0) : null;
}
@Override
public void raceTimesInfosReceived(Map<RegattaAndRaceIdentifier, RaceTimesInfoDTO> raceTimesInfos) {
RegattaAndRaceIdentifier selectedRace = getSelectedRace();
if(selectedRace != null) {
updateMinMax(raceTimesInfos.get(selectedRace));
}
}
}
@@ -63,6 +63,7 @@ import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider;
import com.sap.sailing.gwt.ui.client.ErrorReporter;
import com.sap.sailing.gwt.ui.client.FlagImageResolver;
import com.sap.sailing.gwt.ui.client.PlayStateListener;
import com.sap.sailing.gwt.ui.client.RaceTimesInfoProvider;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.client.TimeListener;
@@ -2025,7 +2026,8 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
Window.alert(stringMessages.selectAtLeastOneCompetitor());
} else {
List<RegattaAndRaceIdentifier> races = getTrackedRacesIdentifiers();
CompareCompetitorsChartDialog chartDialog = new CompareCompetitorsChartDialog(sailingService, races,
RaceTimesInfoProvider raceTimesInfoProvider = new RaceTimesInfoProvider(sailingService, errorReporter, races, 5000l /* requestInterval*/);
CompareCompetitorsChartDialog chartDialog = new CompareCompetitorsChartDialog(sailingService, races, raceTimesInfoProvider,
competitorSelectionProvider, timer, stringMessages, errorReporter);
chartDialog.show();
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB