Adjusted RegattaOverview to use Lifecycle/ComponentContext for handling

of settings
This commit is contained in:
Steffen Schaefer committed 2017-02-20 08:28:44 +01:00
1 parent e39fc2cee8
commit 29fa3bc38f
12 files changed
+130 -108

No files matched your search

@@ -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);
@@ -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());
}
@@ -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());
@@ -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());
}
}
@@ -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));
}
}
@@ -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);
}
}
@@ -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();
}
}
@@ -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;
}
}
@@ -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));
@@ -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
@@ -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;
@@ -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);
}
}