mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-08 20:12:23 +00:00
Adjusted RegattaOverview to use Lifecycle/ComponentContext for handling
of settings
This commit is contained in:
1 parent
e39fc2cee8
commit
29fa3bc38f
12 files changed
+130
-108
No files matched your search
+4
-9
@@ -55,7 +55,7 @@ public class RegattaOverviewEntryPoint extends AbstractSailingEntryPoint {
|
||||
|
||||
siteHeader.addWidgetToRightSide(clockLabel);
|
||||
containerPanel.addNorth(siteHeader, 75);
|
||||
|
||||
|
||||
RegattaOverviewBaseSettings regattaOverviewSettings = serializer
|
||||
.deserializeFromCurrentLocation(new RegattaOverviewBaseSettings());
|
||||
|
||||
@@ -65,7 +65,7 @@ public class RegattaOverviewEntryPoint extends AbstractSailingEntryPoint {
|
||||
}
|
||||
|
||||
createAndAddDetailPanel();
|
||||
createAndAddRegattaPanel(regattaOverviewSettings.getEvent(), regattaOverviewSettings.isIgnoreLocalSettings());
|
||||
createAndAddRegattaPanel(regattaOverviewSettings);
|
||||
toggleDetailPanel(false);
|
||||
|
||||
regattaPanel.setEntryClickedHandler(new EntryHandler() {
|
||||
@@ -87,9 +87,8 @@ public class RegattaOverviewEntryPoint extends AbstractSailingEntryPoint {
|
||||
containerPanel.animate(500);
|
||||
}
|
||||
|
||||
private void createAndAddRegattaPanel(UUID eventId, boolean ignoreLocalSettings) {
|
||||
RegattaRaceStatesSettings settings = createRegattaRaceStatesSettingsFromURL();
|
||||
regattaPanel = new RegattaOverviewPanel(sailingService, this, getStringMessages(), eventId, settings, userAgent, ignoreLocalSettings);
|
||||
private void createAndAddRegattaPanel(RegattaOverviewBaseSettings regattaOverviewContextDefinition) {
|
||||
regattaPanel = new RegattaOverviewPanel(sailingService, getUserService(), this, getStringMessages(), regattaOverviewContextDefinition, userAgent);
|
||||
|
||||
regattaPanel.addHandler(new EventDTOLoadedEvent.Handler() {
|
||||
@Override
|
||||
@@ -122,10 +121,6 @@ public class RegattaOverviewEntryPoint extends AbstractSailingEntryPoint {
|
||||
containerPanel.addSouth(detailPanel, 110);
|
||||
}
|
||||
|
||||
public static RegattaRaceStatesSettings createRegattaRaceStatesSettingsFromURL() {
|
||||
return serializer.deserializeFromCurrentLocation(new RegattaRaceStatesSettings());
|
||||
}
|
||||
|
||||
public static String getUrl(UUID eventId, RegattaRaceStatesSettings settings) {
|
||||
UrlBuilder urlBuilder = serializer.serializeUrlBuilderBasedOnCurrentLocationWithCleanParameters(settings);
|
||||
serializer.serializeToUrlBuilder(new RegattaOverviewBaseSettings(eventId), urlBuilder);
|
||||
|
||||
+42
-22
@@ -3,7 +3,6 @@ package com.sap.sailing.gwt.regattaoverview.client;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.google.gwt.dom.client.Style.Unit;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
@@ -21,6 +20,7 @@ import com.google.gwt.user.client.ui.TabPanel;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.sap.sailing.gwt.common.client.SharedResources;
|
||||
import com.sap.sailing.gwt.regattaoverview.client.RegattaRaceStatesComponent.EntryHandler;
|
||||
import com.sap.sailing.gwt.settings.client.regattaoverview.RegattaOverviewBaseSettings;
|
||||
import com.sap.sailing.gwt.settings.client.regattaoverview.RegattaRaceStatesSettings;
|
||||
import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
@@ -37,8 +37,15 @@ import com.sap.sse.gwt.client.player.TimeListener;
|
||||
import com.sap.sse.gwt.client.player.Timer;
|
||||
import com.sap.sse.gwt.client.player.Timer.PlayModes;
|
||||
import com.sap.sse.gwt.client.player.Timer.PlayStates;
|
||||
import com.sap.sse.gwt.client.shared.components.LinkWithSettingsGenerator;
|
||||
import com.sap.sse.gwt.client.shared.components.SettingsDialog;
|
||||
import com.sap.sse.gwt.client.shared.perspective.ComponentContext;
|
||||
import com.sap.sse.gwt.client.shared.perspective.ComponentContextWithSettingsStorage;
|
||||
import com.sap.sse.gwt.client.shared.perspective.DefaultOnSettingsLoadedCallback;
|
||||
import com.sap.sse.gwt.client.shared.perspective.SettingsStorageManager;
|
||||
import com.sap.sse.gwt.client.useragent.UserAgentDetails;
|
||||
import com.sap.sse.security.ui.client.UserService;
|
||||
import com.sap.sse.security.ui.settings.UserSettingsStorageManager;
|
||||
|
||||
public class RegattaOverviewPanel extends SimplePanel {
|
||||
|
||||
@@ -52,7 +59,7 @@ public class RegattaOverviewPanel extends SimplePanel {
|
||||
protected final StringMessages stringMessages;
|
||||
protected final ErrorReporter errorReporter;
|
||||
|
||||
private final UUID eventId;
|
||||
private final RegattaOverviewBaseSettings regattaOverviewContextDefinition;
|
||||
private EventDTO eventDTO;
|
||||
private List<RaceGroupDTO> raceGroupDTOs;
|
||||
private List<EventAndRaceGroupAvailabilityListener> eventRaceGroupListeners;
|
||||
@@ -60,11 +67,11 @@ public class RegattaOverviewPanel extends SimplePanel {
|
||||
|
||||
private RegattaRaceStatesComponent regattaRaceStatesComponent;
|
||||
|
||||
private final TabPanel leaderboardsTabPanel;
|
||||
private TabPanel leaderboardsTabPanel;
|
||||
private final Anchor settingsButton;
|
||||
private final Anchor refreshNowButton;
|
||||
private final Anchor startStopUpdatingButton;
|
||||
private final CheckBox leaderboardCheckBox;
|
||||
private CheckBox leaderboardCheckBox;
|
||||
private final UserAgentDetails userAgent;
|
||||
private final FlowPanel repeatedInfoLabel = new FlowPanel();
|
||||
|
||||
@@ -76,18 +83,17 @@ public class RegattaOverviewPanel extends SimplePanel {
|
||||
}
|
||||
|
||||
public RegattaOverviewPanel(
|
||||
SailingServiceAsync sailingService,
|
||||
SailingServiceAsync sailingService,
|
||||
UserService userService,
|
||||
final ErrorReporter errorReporter,
|
||||
final StringMessages stringMessages,
|
||||
UUID eventId,
|
||||
RegattaRaceStatesSettings settings,
|
||||
UserAgentDetails userAgent,
|
||||
boolean ignoreLocalSettings) {
|
||||
RegattaOverviewBaseSettings regattaOverviewContextDefinition,
|
||||
UserAgentDetails userAgent) {
|
||||
|
||||
this.sailingService = sailingService;
|
||||
this.stringMessages = stringMessages;
|
||||
this.errorReporter = errorReporter;
|
||||
this.eventId = eventId;
|
||||
this.regattaOverviewContextDefinition = regattaOverviewContextDefinition;
|
||||
this.serverUpdateTimer = new Timer(PlayModes.Live, serverUpdateRateInMs);
|
||||
this.uiUpdateTimer = new Timer(PlayModes.Live, uiUpdateRateInMs);
|
||||
this.eventDTO = null;
|
||||
@@ -103,12 +109,6 @@ public class RegattaOverviewPanel extends SimplePanel {
|
||||
mainPanel.setWidth("100%");
|
||||
mainPanel.addStyleName(style.contentWrapper());
|
||||
|
||||
regattaRaceStatesComponent = new RegattaRaceStatesComponent(null, null, sailingService, errorReporter,
|
||||
stringMessages,
|
||||
eventId, settings, uiUpdateTimer, ignoreLocalSettings);
|
||||
this.eventRaceGroupListeners.add(regattaRaceStatesComponent);
|
||||
regattaRaceStatesComponent.setWidth("100%");
|
||||
|
||||
refreshNowButton = new Anchor(stringMessages.refreshNow());
|
||||
refreshNowButton.setStyleName(RES.mainCss().button());
|
||||
refreshNowButton.addStyleName(style.button());
|
||||
@@ -128,7 +128,7 @@ public class RegattaOverviewPanel extends SimplePanel {
|
||||
settingsButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
new SettingsDialog<RegattaRaceStatesSettings>(regattaRaceStatesComponent, stringMessages).show();
|
||||
new SettingsDialog<RegattaRaceStatesSettings>(regattaRaceStatesComponent, stringMessages, new LinkWithSettingsGenerator<>(regattaOverviewContextDefinition)).show();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -149,6 +149,20 @@ public class RegattaOverviewPanel extends SimplePanel {
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
final RegattaRaceStatesComponentLifecycle lifecycle = new RegattaRaceStatesComponentLifecycle();
|
||||
final SettingsStorageManager<RegattaRaceStatesSettings> settingsStorageManager = new UserSettingsStorageManager<>(
|
||||
userService, "RegattaOverview", UserSettingsStorageManager
|
||||
.buildContextDefinitionId(regattaOverviewContextDefinition.getEvent().toString()));
|
||||
final ComponentContext<RegattaRaceStatesComponentLifecycle, RegattaRaceStatesSettings> componentContext = ComponentContextWithSettingsStorage
|
||||
.createComponentContext(lifecycle, settingsStorageManager);
|
||||
|
||||
regattaRaceStatesComponent = new RegattaRaceStatesComponent(null, componentContext, sailingService, errorReporter,
|
||||
stringMessages,
|
||||
regattaOverviewContextDefinition.getEvent(), lifecycle.createDefaultSettings(), uiUpdateTimer);
|
||||
this.eventRaceGroupListeners.add(regattaRaceStatesComponent);
|
||||
regattaRaceStatesComponent.setWidth("100%");
|
||||
|
||||
this.serverUpdateTimer.addTimeListener(new TimeListener() {
|
||||
@Override
|
||||
public void timeChanged(Date newTime, Date oldTime) {
|
||||
@@ -167,7 +181,7 @@ public class RegattaOverviewPanel extends SimplePanel {
|
||||
this.uiUpdateTimer.play();
|
||||
|
||||
|
||||
|
||||
// TODO create a perspective and add this parameter to the perspectiveOwnSettings
|
||||
final boolean showLeaderboardButton = Window.Location.getParameter("enableLeaderboard") != null
|
||||
&& Window.Location.getParameter("enableLeaderboard").equalsIgnoreCase("true");
|
||||
if (showLeaderboardButton) {
|
||||
@@ -208,6 +222,12 @@ public class RegattaOverviewPanel extends SimplePanel {
|
||||
leaderboardsTabPanel = null;
|
||||
}
|
||||
|
||||
componentContext.initInitialSettings(new DefaultOnSettingsLoadedCallback<RegattaRaceStatesSettings>() {
|
||||
@Override
|
||||
public void onSuccess(RegattaRaceStatesSettings defaultSettings) {
|
||||
regattaRaceStatesComponent.updateSettings(defaultSettings);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private CheckBox addLeaderboardEnablerButton() {
|
||||
@@ -278,12 +298,12 @@ public class RegattaOverviewPanel extends SimplePanel {
|
||||
|
||||
|
||||
private void retrieveEvent() {
|
||||
sailingService.getEventById(eventId, false, new MarkedAsyncCallback<EventDTO>(
|
||||
sailingService.getEventById(regattaOverviewContextDefinition.getEvent(), false, new MarkedAsyncCallback<EventDTO>(
|
||||
new AsyncCallback<EventDTO>() {
|
||||
@Override
|
||||
public void onFailure(Throwable cause) {
|
||||
settingsButton.setEnabled(false);
|
||||
errorReporter.reportError("Error trying to load event with id " + eventId + " : "
|
||||
errorReporter.reportError("Error trying to load event with id " + regattaOverviewContextDefinition.getEvent() + " : "
|
||||
+ cause.getMessage());
|
||||
}
|
||||
|
||||
@@ -313,11 +333,11 @@ public class RegattaOverviewPanel extends SimplePanel {
|
||||
}
|
||||
|
||||
private void retrieveRegattaStructure() {
|
||||
sailingService.getRegattaStructureForEvent(eventId, new MarkedAsyncCallback<List<RaceGroupDTO>>(
|
||||
sailingService.getRegattaStructureForEvent(regattaOverviewContextDefinition.getEvent(), new MarkedAsyncCallback<List<RaceGroupDTO>>(
|
||||
new AsyncCallback<List<RaceGroupDTO>>() {
|
||||
@Override
|
||||
public void onFailure(Throwable cause) {
|
||||
errorReporter.reportError("Error trying to load regattas for event with id " + eventId + " : "
|
||||
errorReporter.reportError("Error trying to load regattas for event with id " + regattaOverviewContextDefinition.getEvent() + " : "
|
||||
+ cause.getMessage());
|
||||
}
|
||||
|
||||
|
||||
+3
-43
@@ -21,7 +21,6 @@ import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
|
||||
import com.google.gwt.i18n.client.NumberFormat;
|
||||
import com.google.gwt.safehtml.shared.SafeHtml;
|
||||
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
|
||||
import com.google.gwt.storage.client.Storage;
|
||||
import com.google.gwt.user.cellview.client.CellTable;
|
||||
import com.google.gwt.user.cellview.client.Column;
|
||||
import com.google.gwt.user.cellview.client.ColumnSortEvent;
|
||||
@@ -74,7 +73,6 @@ import com.sap.sse.gwt.client.shared.components.AbstractCompositeComponent;
|
||||
import com.sap.sse.gwt.client.shared.components.Component;
|
||||
import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent;
|
||||
import com.sap.sse.gwt.client.shared.perspective.ComponentContext;
|
||||
import com.sap.sse.gwt.settings.SettingsToJsonSerializerGWT;
|
||||
|
||||
/**
|
||||
* This component shows a table displaying the current state of races for a given event. Which races are shown depends
|
||||
@@ -104,10 +102,8 @@ public class RegattaRaceStatesComponent extends AbstractCompositeComponent<Regat
|
||||
private TextColumn<RegattaOverviewEntryDTO> fleetNameColumn;
|
||||
private final RegattaRaceStatesSettings settings;
|
||||
private final RaceStateFlagsInterpreter flagInterpreter;
|
||||
private final String localStorageRegattaOverviewEventKey;
|
||||
private final Timer timerToSynchronize;
|
||||
private static RegattaRaceStatesTableResources tableRes = GWT.create(RegattaRaceStatesTableResources.class);
|
||||
private final static String LOCAL_STORAGE_REGATTA_OVERVIEW_KEY = "sailingAnalytics.regattaOverview.settings.";
|
||||
private EntryHandler entryClickedHandler;
|
||||
private TextColumn<RegattaOverviewEntryDTO> courseAreaColumn;
|
||||
private Column<RegattaOverviewEntryDTO, Anchor> regattaNameColumn;
|
||||
@@ -128,7 +124,6 @@ public class RegattaRaceStatesComponent extends AbstractCompositeComponent<Regat
|
||||
private CellTable<RegattaOverviewEntryDTO> table;
|
||||
boolean hasAnyRaceGroupASeries = false;
|
||||
boolean hasAnyRaceGroupAFleet = false;
|
||||
private final boolean ignoreLocalSettings;
|
||||
|
||||
public void setEntryClickedHandler(EntryHandler handler) {
|
||||
this.entryClickedHandler = handler;
|
||||
@@ -143,7 +138,7 @@ public class RegattaRaceStatesComponent extends AbstractCompositeComponent<Regat
|
||||
final SailingServiceAsync sailingService,
|
||||
ErrorReporter errorReporter,
|
||||
final StringMessages stringMessages, final UUID eventId, RegattaRaceStatesSettings settings,
|
||||
Timer timerToSynchronize, boolean ignoreLocalSettings) {
|
||||
Timer timerToSynchronize) {
|
||||
super(parent, context);
|
||||
this.sailingService = sailingService;
|
||||
this.stringMessages = stringMessages;
|
||||
@@ -152,11 +147,9 @@ public class RegattaRaceStatesComponent extends AbstractCompositeComponent<Regat
|
||||
this.timerToSynchronize = timerToSynchronize;
|
||||
this.eventDTO = null;
|
||||
this.raceGroupDTOs = null;
|
||||
this.localStorageRegattaOverviewEventKey = LOCAL_STORAGE_REGATTA_OVERVIEW_KEY + eventId.toString();
|
||||
this.flagInterpreter = new RaceStateFlagsInterpreter(stringMessages);
|
||||
this.settings = new RegattaRaceStatesSettings();
|
||||
this.ignoreLocalSettings = ignoreLocalSettings;
|
||||
loadAndSetSettings(settings);
|
||||
updateSettings(settings);
|
||||
mainPanel = new VerticalPanel();
|
||||
mainPanel.getElement().getStyle().setWidth(100, Unit.PCT);
|
||||
regattaOverviewDataProvider = new ListDataProvider<RegattaOverviewEntryDTO>();
|
||||
@@ -167,16 +160,6 @@ public class RegattaRaceStatesComponent extends AbstractCompositeComponent<Regat
|
||||
getElement().getStyle().setWidth(100, Unit.PCT);
|
||||
}
|
||||
|
||||
private void loadAndSetSettings(RegattaRaceStatesSettings settings) {
|
||||
if(!ignoreLocalSettings) {
|
||||
RegattaRaceStatesSettings loadedSettings = loadRegattaRaceStatesSettings();
|
||||
if (loadedSettings != null) {
|
||||
settings = loadedSettings;
|
||||
}
|
||||
}
|
||||
updateSettings(settings);
|
||||
}
|
||||
|
||||
public void onUpdateServer() {
|
||||
loadAndUpdateEventLog();
|
||||
}
|
||||
@@ -743,7 +726,7 @@ public class RegattaRaceStatesComponent extends AbstractCompositeComponent<Regat
|
||||
|
||||
@Override
|
||||
public SettingsDialogComponent<RegattaRaceStatesSettings> getSettingsDialogComponent() {
|
||||
return new RegattaRaceStatesSettingsDialogComponent(settings, stringMessages, eventId,
|
||||
return new RegattaRaceStatesSettingsDialogComponent(settings, stringMessages,
|
||||
Collections.unmodifiableList(eventDTO.venue.getCourseAreas()),
|
||||
Collections.unmodifiableList(raceGroupDTOs));
|
||||
}
|
||||
@@ -757,7 +740,6 @@ public class RegattaRaceStatesComponent extends AbstractCompositeComponent<Regat
|
||||
settings.setShowOnlyRaceOfSameDay(newSettings.isShowOnlyRacesOfSameDay());
|
||||
settings.setShowOnlyCurrentlyRunningRaces(newSettings.isShowOnlyCurrentlyRunningRaces());
|
||||
refreshTableWithNewSettings();
|
||||
storeRegattaRaceStatesSettings(settings);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -837,28 +819,6 @@ public class RegattaRaceStatesComponent extends AbstractCompositeComponent<Regat
|
||||
refreshTableWithNewSettings();
|
||||
}
|
||||
|
||||
private void storeRegattaRaceStatesSettings(RegattaRaceStatesSettings settings) {
|
||||
Storage localStorage = Storage.getLocalStorageIfSupported();
|
||||
if (localStorage != null && eventId != null) {
|
||||
// delete old value
|
||||
localStorage.removeItem(localStorageRegattaOverviewEventKey);
|
||||
// store settings
|
||||
localStorage.setItem(localStorageRegattaOverviewEventKey,
|
||||
new SettingsToJsonSerializerGWT().serializeToString(settings));
|
||||
}
|
||||
}
|
||||
|
||||
private RegattaRaceStatesSettings loadRegattaRaceStatesSettings() {
|
||||
RegattaRaceStatesSettings loadedSettings = null;
|
||||
Storage localStorage = Storage.getLocalStorageIfSupported();
|
||||
if (localStorage != null) {
|
||||
String jsonAsLocalStore = localStorage.getItem(localStorageRegattaOverviewEventKey);
|
||||
loadedSettings = new SettingsToJsonSerializerGWT().deserialize(new RegattaRaceStatesSettings(
|
||||
eventDTO == null ? null : eventDTO.venue.getCourseAreas(), raceGroupDTOs), jsonAsLocalStore);
|
||||
}
|
||||
return loadedSettings;
|
||||
}
|
||||
|
||||
private DialogBox createCourseViewDialogBox(RaceInfoDTO raceInfoDTO) {
|
||||
final DialogBox dialogBox = new DialogBox();
|
||||
dialogBox.setText(stringMessages.courseLayout());
|
||||
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
package com.sap.sailing.gwt.regattaoverview.client;
|
||||
|
||||
import com.sap.sailing.gwt.settings.client.regattaoverview.RegattaRaceStatesSettings;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sse.gwt.client.shared.components.ComponentLifecycle;
|
||||
|
||||
public class RegattaRaceStatesComponentLifecycle implements ComponentLifecycle<RegattaRaceStatesSettings, RegattaRaceStatesSettingsDialogComponent> {
|
||||
|
||||
@Override
|
||||
public RegattaRaceStatesSettingsDialogComponent getSettingsDialogComponent(RegattaRaceStatesSettings settings) {
|
||||
// TODO implement if needed
|
||||
// return new RegattaRaceStatesSettingsDialogComponent(settings, StringMessages.INSTANCE, contextSettings.getEvent(),
|
||||
// settings.getVisibleCourseAreas(),
|
||||
// settings.getVisibleRegattas();
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RegattaRaceStatesSettings createDefaultSettings() {
|
||||
return new RegattaRaceStatesSettings();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getLocalizedShortName() {
|
||||
return StringMessages.INSTANCE.racesOverview();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getComponentId() {
|
||||
return "rrs";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasSettings() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RegattaRaceStatesSettings extractGlobalSettings(RegattaRaceStatesSettings settings) {
|
||||
return settings.createInstanceWithSettings(null, null, settings.isShowOnlyRacesOfSameDay(),
|
||||
settings.isShowOnlyCurrentlyRunningRaces());
|
||||
}
|
||||
|
||||
@Override
|
||||
public RegattaRaceStatesSettings extractContextSettings(RegattaRaceStatesSettings settings) {
|
||||
final RegattaRaceStatesSettings defaultSettings = new RegattaRaceStatesSettings();
|
||||
return settings.createInstanceWithSettings(settings.getVisibleCourseAreas(), settings.getVisibleRegattas(),
|
||||
defaultSettings.isShowOnlyRacesOfSameDay(), defaultSettings.isShowOnlyCurrentlyRunningRaces());
|
||||
}
|
||||
}
|
||||
+2
-17
@@ -9,7 +9,6 @@ import java.util.UUID;
|
||||
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.user.client.ui.Anchor;
|
||||
import com.google.gwt.user.client.ui.Button;
|
||||
import com.google.gwt.user.client.ui.CheckBox;
|
||||
import com.google.gwt.user.client.ui.FlowPanel;
|
||||
@@ -30,7 +29,6 @@ public class RegattaRaceStatesSettingsDialogComponent implements SettingsDialogC
|
||||
|
||||
private final StringMessages stringMessages;
|
||||
private final RegattaRaceStatesSettings initialSettings;
|
||||
private final UUID eventId;
|
||||
private final List<CourseAreaDTO> courseAreas;
|
||||
private final List<RaceGroupDTO> raceGroups;
|
||||
|
||||
@@ -38,22 +36,19 @@ public class RegattaRaceStatesSettingsDialogComponent implements SettingsDialogC
|
||||
private CheckBox showOnlyCurrentlyRunningRacesCheckBox;
|
||||
private final Map<UUID, CheckBox> courseAreaCheckBoxMap;
|
||||
private final Map<String, CheckBox> regattaCheckBoxMap;
|
||||
private final Anchor resultingLink;
|
||||
private Button courseAreaDeselectButton;
|
||||
private Button regattaDeselectButton;
|
||||
|
||||
private final static String SETTINGS_DIALOG_COMPONENT = "SettingsDialogComponent";
|
||||
|
||||
public RegattaRaceStatesSettingsDialogComponent(RegattaRaceStatesSettings settings, StringMessages stringMessages,
|
||||
UUID eventId, List<CourseAreaDTO> courseAreas, List<RaceGroupDTO> raceGroups) {
|
||||
List<CourseAreaDTO> courseAreas, List<RaceGroupDTO> raceGroups) {
|
||||
this.stringMessages = stringMessages;
|
||||
this.initialSettings = settings;
|
||||
this.eventId = eventId;
|
||||
this.courseAreas = courseAreas;
|
||||
this.raceGroups = raceGroups;
|
||||
this.courseAreaCheckBoxMap = new HashMap<UUID, CheckBox>();
|
||||
this.regattaCheckBoxMap = new HashMap<String, CheckBox>();
|
||||
this.resultingLink = new Anchor(stringMessages.asLink());
|
||||
}
|
||||
|
||||
private FlowPanel fillCourseAreaWidget(DataEntryDialog<?> dialog) {
|
||||
@@ -214,7 +209,6 @@ public class RegattaRaceStatesSettingsDialogComponent implements SettingsDialogC
|
||||
verticalPanel.add(fillCourseAreaWidget(dialog));
|
||||
verticalPanel.add(fillRegattaNamesWidget(dialog));
|
||||
verticalPanel.add(getAdditionalSettingsWidget(dialog));
|
||||
verticalPanel.add(resultingLink);
|
||||
|
||||
return verticalPanel;
|
||||
}
|
||||
@@ -250,11 +244,7 @@ public class RegattaRaceStatesSettingsDialogComponent implements SettingsDialogC
|
||||
return new Validator<RegattaRaceStatesSettings>() {
|
||||
@Override
|
||||
public String getErrorMessage(RegattaRaceStatesSettings settings) {
|
||||
String errorMessage = null;
|
||||
if (errorMessage == null) {
|
||||
updateLinkUrl(eventId, settings);
|
||||
}
|
||||
return errorMessage;
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -263,9 +253,4 @@ public class RegattaRaceStatesSettingsDialogComponent implements SettingsDialogC
|
||||
public FocusWidget getFocusWidget() {
|
||||
return null;
|
||||
}
|
||||
|
||||
private void updateLinkUrl(UUID eventId, RegattaRaceStatesSettings settings) {
|
||||
resultingLink.setHref(RegattaOverviewEntryPoint.getUrl(eventId, settings));
|
||||
}
|
||||
|
||||
}
|
||||
+3
-1
@@ -2,6 +2,7 @@ package com.sap.sailing.gwt.settings.client;
|
||||
|
||||
import com.sap.sailing.gwt.settings.client.regattaoverview.RegattaOverviewBaseSettings;
|
||||
import com.sap.sailing.gwt.settings.client.regattaoverview.RegattaRaceStatesSettings;
|
||||
import com.sap.sse.gwt.client.shared.components.LinkWithSettingsGenerator;
|
||||
import com.sap.sse.gwt.settings.AbstractEntryPointWithSettingsLinkFactory;
|
||||
|
||||
public class EntryPointWithSettingsLinkFactory extends AbstractEntryPointWithSettingsLinkFactory {
|
||||
@@ -12,7 +13,8 @@ public class EntryPointWithSettingsLinkFactory extends AbstractEntryPointWithSet
|
||||
|
||||
public static String createRegattaOverviewLink(RegattaOverviewBaseSettings regattaOverviewSettings,
|
||||
RegattaRaceStatesSettings regattaRaceStatesSettings) {
|
||||
return createEntryPointLink("/gwt/RegattaOverview.html", regattaOverviewSettings, regattaRaceStatesSettings);
|
||||
return new LinkWithSettingsGenerator<>("/gwt/RegattaOverview.html", regattaOverviewSettings)
|
||||
.createUrl(regattaRaceStatesSettings);
|
||||
}
|
||||
|
||||
}
|
||||
+1
-13
@@ -3,13 +3,11 @@ package com.sap.sailing.gwt.settings.client.regattaoverview;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.sap.sse.common.settings.generic.AbstractGenericSerializableSettings;
|
||||
import com.sap.sse.common.settings.generic.BooleanSetting;
|
||||
import com.sap.sse.common.settings.generic.UUIDSetting;
|
||||
|
||||
public final class RegattaOverviewBaseSettings extends AbstractGenericSerializableSettings {
|
||||
private static final long serialVersionUID = -8541790130000694098L;
|
||||
private transient UUIDSetting event;
|
||||
private transient BooleanSetting ignoreLocalSettings;
|
||||
|
||||
public RegattaOverviewBaseSettings() {
|
||||
}
|
||||
@@ -19,25 +17,15 @@ public final class RegattaOverviewBaseSettings extends AbstractGenericSerializab
|
||||
}
|
||||
|
||||
public RegattaOverviewBaseSettings(UUID event) {
|
||||
this(event, true);
|
||||
this.event.setValue(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addChildSettings() {
|
||||
event = new UUIDSetting("event", this);
|
||||
ignoreLocalSettings = new BooleanSetting("ignoreLocalSettings", this, false);
|
||||
}
|
||||
|
||||
public RegattaOverviewBaseSettings(UUID event, boolean ignoreLocalSettings) {
|
||||
this.event.setValue(event);
|
||||
this.ignoreLocalSettings.setValue(ignoreLocalSettings);
|
||||
}
|
||||
|
||||
public UUID getEvent() {
|
||||
return event.getValue();
|
||||
}
|
||||
|
||||
public boolean isIgnoreLocalSettings() {
|
||||
return ignoreLocalSettings.getValue();
|
||||
}
|
||||
}
|
||||
+8
@@ -107,4 +107,12 @@ public final class RegattaRaceStatesSettings extends AbstractGenericSerializable
|
||||
visibleRegattas.setDefaultValues(regattaIds);
|
||||
}
|
||||
|
||||
public RegattaRaceStatesSettings createInstanceWithSettings(Iterable<UUID> visibleCourseAreas,
|
||||
Iterable<String> visibleRegattas, boolean showOnlyRacesOfSameDay, boolean showOnlyCurrentlyRunningRaces) {
|
||||
RegattaRaceStatesSettings newSettings = new RegattaRaceStatesSettings(null, visibleCourseAreas, null,
|
||||
visibleRegattas, showOnlyRacesOfSameDay, showOnlyCurrentlyRunningRaces);
|
||||
newSettings.visibleCourseAreas.setDefaultValues(this.visibleCourseAreas.getDefaultValues());
|
||||
newSettings.visibleRegattas.setDefaultValues(this.visibleRegattas.getDefaultValues());
|
||||
return newSettings;
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -139,7 +139,7 @@ public class EventDetailsComposite extends Composite {
|
||||
baseURL.setHref(event.getBaseURL());
|
||||
sailorsInfoWebsiteURLList.setValues(new ArrayList<String>(event.getSailorsInfoWebsiteURLs().values()));
|
||||
String regattaOverviewLink = EntryPointWithSettingsLinkFactory
|
||||
.createRegattaOverviewLink(new RegattaOverviewBaseSettings(event.id, false));
|
||||
.createRegattaOverviewLink(new RegattaOverviewBaseSettings(event.id));
|
||||
eventOverviewURL.setText(regattaOverviewLink);
|
||||
eventOverviewURL.setHref(UriUtils.fromString(regattaOverviewLink));
|
||||
|
||||
|
||||
+2
-2
@@ -120,8 +120,8 @@ public class LeaderboardEntryPoint extends AbstractSailingEntryPoint {
|
||||
// make a single live request as the default but don't continue to play by default
|
||||
|
||||
final UserSettingsStorageManager<PerspectiveCompositeSettings<LeaderboardPerspectiveOwnSettings>> settingsManager = new UserSettingsStorageManager<>(
|
||||
getUserService(), UserSettingsStorageManager.buildContextDefinitionId("LeaderboardEntryPoint"),
|
||||
leaderboardName);
|
||||
getUserService(), "LeaderboardEntryPoint",
|
||||
UserSettingsStorageManager.buildContextDefinitionId(leaderboardName));
|
||||
if (leaderboardType.isMetaLeaderboard()) {
|
||||
// overall
|
||||
|
||||
|
||||
+4
@@ -13,6 +13,10 @@ public class LinkWithSettingsGenerator<S extends Settings> {
|
||||
|
||||
private final String path;
|
||||
private final GenericSerializableSettings contextDefinition;
|
||||
|
||||
public LinkWithSettingsGenerator(GenericSerializableSettings contextDefinition) {
|
||||
this(null, contextDefinition);
|
||||
}
|
||||
|
||||
public LinkWithSettingsGenerator(String path, GenericSerializableSettings contextDefinition) {
|
||||
this.path = path;
|
||||
|
||||
+10
@@ -185,4 +185,14 @@ public class ComponentContextWithSettingsStorage<L extends ComponentLifecycle<S,
|
||||
}
|
||||
return current;
|
||||
}
|
||||
|
||||
public static <L extends ComponentLifecycle<S, ?>, S extends Settings> ComponentContext<L, S> createComponentContext(L rootLifecycle,
|
||||
SettingsStorageManager<S> settingsStorageManager) {
|
||||
final String ignoreLocalSettingsString = Window.Location.getParameter("ignoreLocalSettings");
|
||||
final boolean ignoreLocalSettings = Boolean.TRUE.toString().equals(ignoreLocalSettingsString);
|
||||
if (ignoreLocalSettings) {
|
||||
return new SimpleComponentContext<>(rootLifecycle);
|
||||
}
|
||||
return new ComponentContextWithSettingsStorage<>(rootLifecycle, settingsStorageManager);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user