added a (still empty) settings dialog for the RegattaRaceStatesComponent

This commit is contained in:
fmittag committed 2013-05-24 11:22:42 +02:00
1 parent c7b50c8af2
commit ee15fc8de0
9 files changed
+198 -67

No files matched your search

@@ -77,7 +77,7 @@ sapSailingAnalytics=Sailing Analytics
leaderboard=Leaderboard
leaderboards=Leaderboards
leaderboardSettings=Leaderboard Settings
settings=Settings (e.g., leg detail selection)
settings=Settings
selectAtLeastOneLegDetail=Select at least one leg detail
currentSpeedOverGroundInKnots=SOG
currentSpeedOverGroundInKnotsTooltip=The current speed over ground.
@@ -77,7 +77,7 @@ sapSailingAnalytics=Sailing Analytics
leaderboard=Ergebnisse
leaderboards=Ranglistenlisten
leaderboardSettings=Einstellungen Rangliste
settings=Einstellungen (z.B. Abschnittdetails auswählen)
settings=Einstellungen
selectAtLeastOneLegDetail=Mindestens ein Detail auswählen
currentSpeedOverGroundInKnots=FüG
currentSpeedOverGroundInKnotsTooltip=Die aktuelle Fahrt über Grund
@@ -14,7 +14,7 @@ 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 {
public class RaceCourseComposite extends Composite {
private final CellTable<WaypointDTO> waypointTable;
private ListDataProvider<WaypointDTO> waypointDataProvider;
@@ -26,12 +26,12 @@ public class CourseDesignTableComposite extends Composite {
private RegattaOverviewEntryDTO race;
private static RegattaOverviewTableResources tableRes = GWT.create(RegattaOverviewTableResources.class);
private static RegattaRaceStatesTableResources tableRes = GWT.create(RegattaRaceStatesTableResources.class);
private static final String STYLE_NAME_PREFIX = "RegattaOverview-";
private static final String STYLE_WORD_WRAP = STYLE_NAME_PREFIX + "wordWrap";
public CourseDesignTableComposite(final SailingServiceAsync sailingService, ErrorReporter errorReporter,
public RaceCourseComposite(final SailingServiceAsync sailingService, ErrorReporter errorReporter,
final StringMessages stringMessages) {
this.sailingService = sailingService;
this.stringMessages = stringMessages;
@@ -23,13 +23,14 @@ 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.client.shared.components.SettingsDialog;
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 long serverUpdateRate = 10000;
private final long uiUpdateRate = 1000;
private final long serverUpdateRateInMs = 10000;
private final long uiUpdateRateInMs = 1000;
private final Timer serverUpdateTimer;
private final Timer uiUpdateTimer;
@@ -41,13 +42,14 @@ public class RegattaOverviewPanel extends SimplePanel implements RegattaOverview
private RegattaOverviewRaceSelectionModel raceSelectionProvider;
private RegattaOverviewTableComposite regattaOverviewTableComposite;
private CourseDesignTableComposite raceCourseDesignDetailsComposite;
private RegattaRaceStatesComponent regattaRaceStatesComponent;
private RaceCourseComposite raceCourseComposite;
private final Label eventNameLabel;
private final Label venueNameLabel;
private final Label timeLabel;
private final Button filterButton;
// private final Button filterButton;
private final Button settingsButton;
private final Button refreshNowButton;
private final Button startStopUpdatingButton;
@@ -87,11 +89,11 @@ public class RegattaOverviewPanel extends SimplePanel implements RegattaOverview
raceSelectionProvider = new RegattaOverviewRaceSelectionModel(false);
raceSelectionProvider.addRegattaOverviewRaceSelectionChangeListener(this);
regattaOverviewTableComposite = new RegattaOverviewTableComposite(sailingService, errorReporter, stringMessages, eventIdAsString, raceSelectionProvider);
grid.setWidget(1, 0, regattaOverviewTableComposite);
regattaRaceStatesComponent = new RegattaRaceStatesComponent(sailingService, errorReporter, stringMessages, eventIdAsString, raceSelectionProvider);
grid.setWidget(1, 0, regattaRaceStatesComponent);
raceCourseDesignDetailsComposite = new CourseDesignTableComposite(sailingService, errorReporter, stringMessages);
grid.setWidget(1, 1, raceCourseDesignDetailsComposite);
raceCourseComposite = new RaceCourseComposite(sailingService, errorReporter, stringMessages);
grid.setWidget(1, 1, raceCourseComposite);
grid.getRowFormatter().setVerticalAlign(0, HasVerticalAlignment.ALIGN_TOP);
grid.getRowFormatter().setVerticalAlign(1, HasVerticalAlignment.ALIGN_TOP);
@@ -101,29 +103,39 @@ public class RegattaOverviewPanel extends SimplePanel implements RegattaOverview
grid.getColumnFormatter().getElement(1).getStyle().setPaddingLeft(20.0, Unit.PX);
//TODO: change filter button
this.filterButton = new Button(stringMessages.disableRaceFilter());
filterButton.addClickHandler(new ClickHandler() {
// filterButton = new Button(stringMessages.disableRaceFilter());
// filterButton.addClickHandler(new ClickHandler() {
//
// @Override
// public void onClick(ClickEvent event) {
// boolean isFilterActive = regattaRaceStatesComponent.switchFilter();
// filterButton.setText(isFilterActive ?
// stringMessages.disableRaceFilter() : stringMessages.enableRaceFilter());
// }
// });
@Override
public void onClick(ClickEvent event) {
boolean isFilterActive = regattaOverviewTableComposite.switchFilter();
filterButton.setText(isFilterActive ?
stringMessages.disableRaceFilter() : stringMessages.enableRaceFilter());
}
});
this.refreshNowButton = new Button(stringMessages.refreshNow());
refreshNowButton = new Button(stringMessages.refreshNow());
refreshNowButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
regattaOverviewTableComposite.loadAndUpdateEventLog();
regattaRaceStatesComponent.loadAndUpdateEventLog();
}
});
this.startStopUpdatingButton = new Button(stringMessages.stopUpdating());
this.startStopUpdatingButton.addClickHandler(new ClickHandler() {
settingsButton = new Button(stringMessages.settings());
settingsButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
new SettingsDialog<RegattaRaceStatesSettings>(regattaRaceStatesComponent, stringMessages).show();
}
});
startStopUpdatingButton = new Button(stringMessages.stopUpdating());
startStopUpdatingButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
@@ -141,17 +153,17 @@ public class RegattaOverviewPanel extends SimplePanel implements RegattaOverview
this.refreshNowButton.getElement().getStyle().setMarginLeft(20.0, Unit.PX);
this.startStopUpdatingButton.getElement().getStyle().setMarginLeft(20.0, Unit.PX);
this.serverUpdateTimer = new Timer(PlayModes.Live, serverUpdateRate);
this.serverUpdateTimer = new Timer(PlayModes.Live, serverUpdateRateInMs);
this.serverUpdateTimer.addTimeListener(new TimeListener() {
@Override
public void timeChanged(Date date) {
regattaOverviewTableComposite.onUpdateServer(date);
regattaRaceStatesComponent.onUpdateServer(date);
}
});
this.serverUpdateTimer.play();
this.uiUpdateTimer = new Timer(PlayModes.Live, uiUpdateRate);
this.uiUpdateTimer = new Timer(PlayModes.Live, uiUpdateRateInMs);
this.uiUpdateTimer.addTimeListener(new TimeListener() {
@Override
@@ -202,7 +214,8 @@ public class RegattaOverviewPanel extends SimplePanel implements RegattaOverview
refreshStartStopClockPanel.setStyleName(STYLE_REFRESH_STOP_TIME);
refreshStartStopClockPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
refreshStartStopClockPanel.add(filterButton);
// refreshStartStopClockPanel.add(filterButton);
refreshStartStopClockPanel.add(settingsButton);
refreshStartStopClockPanel.add(refreshNowButton);
refreshStartStopClockPanel.add(startStopUpdatingButton);
refreshStartStopClockPanel.add(timeLabel);
@@ -218,16 +231,16 @@ public class RegattaOverviewPanel extends SimplePanel implements RegattaOverview
final RegattaOverviewEntryDTO selectedRegattaOverviewEntry;
if (selectedRegattaOverviewEntries.iterator().hasNext()) {
selectedRegattaOverviewEntry = selectedRegattaOverviewEntries.iterator().next();
if (selectedRegattaOverviewEntry != null && regattaOverviewTableComposite.getAllRaces() != null) {
for(RegattaOverviewEntryDTO regattaOverviewEntryDTO: regattaOverviewTableComposite.getAllRaces()) {
if (selectedRegattaOverviewEntry != null && regattaRaceStatesComponent.getAllRaces() != null) {
for(RegattaOverviewEntryDTO regattaOverviewEntryDTO: regattaRaceStatesComponent.getAllRaces()) {
if(regattaOverviewEntryDTO.equals(selectedRegattaOverviewEntry)) {
raceCourseDesignDetailsComposite.setRace(regattaOverviewEntryDTO);
raceCourseComposite.setRace(regattaOverviewEntryDTO);
break;
}
}
}
} else {
raceCourseDesignDetailsComposite.setRace(null);
raceCourseComposite.setRace(null);
}
}
@@ -7,8 +7,6 @@ import java.util.Comparator;
import java.util.Date;
import java.util.List;
import com.sap.sailing.domain.common.impl.Util.NaturalComparator;
import com.google.gwt.cell.client.ImageResourceCell;
import com.google.gwt.core.client.GWT;
import com.google.gwt.i18n.client.DateTimeFormat;
@@ -18,33 +16,34 @@ import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.ColumnSortEvent;
import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
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.impl.Util.NaturalComparator;
import com.sap.sailing.domain.common.racelog.Flags;
import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus;
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.client.shared.components.Component;
import com.sap.sailing.gwt.ui.client.shared.components.SettingsDialogComponent;
import com.sap.sailing.gwt.ui.shared.RaceInfoDTO;
import com.sap.sailing.gwt.ui.shared.RegattaOverviewEntryDTO;
public class RegattaOverviewTableComposite extends Composite {
public class RegattaRaceStatesComponent extends SimplePanel implements Component<RegattaRaceStatesSettings> {
private List<RegattaOverviewEntryDTO> allEntries;
private boolean isFilterActive;
private final SelectionModel<RegattaOverviewEntryDTO> raceSelectionModel;
private final CellTable<RegattaOverviewEntryDTO> regattaOverviewTable;
private ListDataProvider<RegattaOverviewEntryDTO> regattaOverviewDataProvider;
private final SimplePanel mainPanel;
private final VerticalPanel panel;
private final VerticalPanel mainPanel;
private final DateTimeFormat timeFormatter = DateTimeFormat.getFormat("HH:mm:ss");
private final SailingServiceAsync sailingService;
@@ -54,9 +53,11 @@ public class RegattaOverviewTableComposite extends Composite {
private final FlagImageResolver flagImageResolver;
private static RegattaOverviewTableResources tableRes = GWT.create(RegattaOverviewTableResources.class);
private RegattaRaceStatesSettings settings;
public RegattaOverviewTableComposite(final SailingServiceAsync sailingService, ErrorReporter errorReporter,
private static RegattaRaceStatesTableResources tableRes = GWT.create(RegattaRaceStatesTableResources.class);
public RegattaRaceStatesComponent(final SailingServiceAsync sailingService, ErrorReporter errorReporter,
final StringMessages stringMessages, final String eventIdAsString, final RegattaOverviewRaceSelectionProvider raceSelectionProvider) {
this.sailingService = sailingService;
this.stringMessages = stringMessages;
@@ -64,12 +65,10 @@ public class RegattaOverviewTableComposite extends Composite {
this.raceSelectionProvider = raceSelectionProvider;
this.flagImageResolver = new FlagImageResolver();
this.isFilterActive = true;
settings = new RegattaRaceStatesSettings();
mainPanel = new SimplePanel();
panel = new VerticalPanel();
mainPanel.setWidget(panel);
mainPanel.setWidth("100%");
mainPanel = new VerticalPanel();
setWidth("100%");
regattaOverviewDataProvider = new ListDataProvider<RegattaOverviewEntryDTO>();
regattaOverviewTable = createRegattaTable();
@@ -86,9 +85,8 @@ public class RegattaOverviewTableComposite extends Composite {
regattaOverviewTable.setSelectionModel(raceSelectionModel);
panel.add(regattaOverviewTable);
initWidget(mainPanel);
mainPanel.add(regattaOverviewTable);
setWidget(mainPanel);
loadAndUpdateEventLog();
}
@@ -109,12 +107,6 @@ public class RegattaOverviewTableComposite extends Composite {
loadAndUpdateEventLog();
}
public boolean switchFilter() {
this.isFilterActive = !isFilterActive;
updateTable(allEntries);
return isFilterActive;
}
private void updateTable(List<RegattaOverviewEntryDTO> newEntries) {
allEntries = newEntries;
regattaOverviewDataProvider.getList().clear();
@@ -148,11 +140,6 @@ public class RegattaOverviewTableComposite extends Composite {
}
});
// And now we are going to filter
if (!isFilterActive) {
return reversedUnfilterted;
}
List<RegattaOverviewEntryDTO> filtered = new ArrayList<RegattaOverviewEntryDTO>();
int maxAddtionalRacesCount = 2;
for (RegattaOverviewEntryDTO entry : reversedUnfilterted) {
@@ -404,7 +391,7 @@ public class RegattaOverviewTableComposite extends Composite {
private void showSelectedRaces() {
List<RegattaOverviewEntryDTO> selectedRaces = getSelectedRaces();
RegattaOverviewTableComposite.this.raceSelectionProvider.setSelection(selectedRaces);
RegattaRaceStatesComponent.this.raceSelectionProvider.setSelection(selectedRaces);
}
private String getStatusText(RaceInfoDTO raceInfo) {
@@ -438,4 +425,30 @@ public class RegattaOverviewTableComposite extends Composite {
}
return statusText;
}
@Override
public boolean hasSettings() {
return true;
}
@Override
public SettingsDialogComponent<RegattaRaceStatesSettings> getSettingsDialogComponent() {
return new RegattaRaceStatesSettingsDialogComponent(settings, stringMessages);
}
@Override
public void updateSettings(RegattaRaceStatesSettings newSettings) {
// TODO: update the settings here
updateTable(allEntries);
}
@Override
public String getLocalizedShortName() {
return "Regatta Overview";
}
@Override
public Widget getEntryWidget() {
return this;
}
}
@@ -0,0 +1,45 @@
package com.sap.sailing.gwt.ui.regattaoverview;
import java.util.ArrayList;
import java.util.List;
import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus;
public class RegattaRaceStatesSettings {
private List<RaceLogRaceStatus> visibleRaceStates;
private List<String> visibleCourseAreas;
private List<String> visibleRegattas;
private boolean showOnlyRacesOfSameDay;
public RegattaRaceStatesSettings() {
this.visibleRaceStates = new ArrayList<RaceLogRaceStatus>();
this.visibleCourseAreas = new ArrayList<String>();
this.visibleRegattas = new ArrayList<String>();
this.showOnlyRacesOfSameDay = false;
}
public RegattaRaceStatesSettings(List<RaceLogRaceStatus> visibleRaceStates, List<String> visibleCourseAreas,
List<String> visibleRegattas, boolean showOnlyRacesOfSameDay) {
this.visibleRaceStates = visibleRaceStates;
this.visibleCourseAreas = visibleCourseAreas;
this.visibleRegattas = visibleRegattas;
this.showOnlyRacesOfSameDay = showOnlyRacesOfSameDay;
}
public List<RaceLogRaceStatus> getVisibleRaceStates() {
return visibleRaceStates;
}
public List<String> getVisibleCourseAreas() {
return visibleCourseAreas;
}
public List<String> getVisibleRegattas() {
return visibleRegattas;
}
public boolean isShowOnlyRacesOfSameDay() {
return showOnlyRacesOfSameDay;
}
}
@@ -0,0 +1,60 @@
package com.sap.sailing.gwt.ui.regattaoverview;
import com.google.gwt.user.client.ui.FocusWidget;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.ui.client.DataEntryDialog;
import com.sap.sailing.gwt.ui.client.DataEntryDialog.Validator;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.client.shared.components.SettingsDialogComponent;
public class RegattaRaceStatesSettingsDialogComponent implements SettingsDialogComponent<RegattaRaceStatesSettings> {
private final StringMessages stringMessages;
private final RegattaRaceStatesSettings initialSettings;
private TextBox test;
public RegattaRaceStatesSettingsDialogComponent(RegattaRaceStatesSettings settings, StringMessages stringMessages) {
this.stringMessages = stringMessages;
this.initialSettings = settings;
}
@Override
public Widget getAdditionalWidget(DataEntryDialog<?> dialog) {
VerticalPanel vp = new VerticalPanel();
vp.add(new Label("Hallo Settings"));
test = dialog.createTextBox("???");
vp.add(test);
return vp;
}
@Override
public RegattaRaceStatesSettings getResult() {
RegattaRaceStatesSettings result = new RegattaRaceStatesSettings();
// TODO: set the values of the settings from the UI widgets here
return result;
}
@Override
public Validator<RegattaRaceStatesSettings> getValidator() {
return new Validator<RegattaRaceStatesSettings>() {
@Override
public String getErrorMessage(RegattaRaceStatesSettings valueToValidate) {
String errorMessage = null;
return errorMessage;
}
};
}
@Override
public FocusWidget getFocusWidget() {
return test;
}
}
@@ -2,7 +2,7 @@ package com.sap.sailing.gwt.ui.regattaoverview;
import com.google.gwt.user.cellview.client.CellTable;
public interface RegattaOverviewTableResources extends CellTable.Resources {
public interface RegattaRaceStatesTableResources extends CellTable.Resources {
interface AdminConsoleTableStyle extends CellTable.Style {
/**
* Applied to header cells of race columns
@@ -17,6 +17,6 @@ public interface RegattaOverviewTableResources extends CellTable.Resources {
}
@Override
@Source({ CellTable.Style.DEFAULT_CSS, "RegattaOverviewTable.css" })
@Source({ CellTable.Style.DEFAULT_CSS, "RegattaRaceStatesTable.css" })
AdminConsoleTableStyle cellTableStyle();
}