diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaOverviewEntryPoint.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaOverviewEntryPoint.java index 08e1ff9a5da..430cf1d0d40 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaOverviewEntryPoint.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaOverviewEntryPoint.java @@ -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); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaOverviewPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaOverviewPanel.java index 5e9e5529048..de315699120 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaOverviewPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaOverviewPanel.java @@ -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 raceGroupDTOs; private List 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(regattaRaceStatesComponent, stringMessages).show(); + new SettingsDialog(regattaRaceStatesComponent, stringMessages, new LinkWithSettingsGenerator<>(regattaOverviewContextDefinition)).show(); } }); @@ -149,6 +149,20 @@ public class RegattaOverviewPanel extends SimplePanel { } }); + + final RegattaRaceStatesComponentLifecycle lifecycle = new RegattaRaceStatesComponentLifecycle(); + final SettingsStorageManager settingsStorageManager = new UserSettingsStorageManager<>( + userService, "RegattaOverview", UserSettingsStorageManager + .buildContextDefinitionId(regattaOverviewContextDefinition.getEvent().toString())); + final ComponentContext 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() { + @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( + sailingService.getEventById(regattaOverviewContextDefinition.getEvent(), false, new MarkedAsyncCallback( new AsyncCallback() { @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>( + sailingService.getRegattaStructureForEvent(regattaOverviewContextDefinition.getEvent(), new MarkedAsyncCallback>( new AsyncCallback>() { @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()); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaRaceStatesComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaRaceStatesComponent.java index 26811055e16..4c600dd3020 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaRaceStatesComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaRaceStatesComponent.java @@ -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 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 courseAreaColumn; private Column regattaNameColumn; @@ -128,7 +124,6 @@ public class RegattaRaceStatesComponent extends AbstractCompositeComponent 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(); @@ -167,16 +160,6 @@ public class RegattaRaceStatesComponent extends AbstractCompositeComponent 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 { + + @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()); + } +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaRaceStatesSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaRaceStatesSettingsDialogComponent.java index 98f085dc64a..421acd32742 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaRaceStatesSettingsDialogComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaRaceStatesSettingsDialogComponent.java @@ -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 courseAreas; private final List raceGroups; @@ -38,22 +36,19 @@ public class RegattaRaceStatesSettingsDialogComponent implements SettingsDialogC private CheckBox showOnlyCurrentlyRunningRacesCheckBox; private final Map courseAreaCheckBoxMap; private final Map 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 courseAreas, List raceGroups) { + List courseAreas, List raceGroups) { this.stringMessages = stringMessages; this.initialSettings = settings; - this.eventId = eventId; this.courseAreas = courseAreas; this.raceGroups = raceGroups; this.courseAreaCheckBoxMap = new HashMap(); this.regattaCheckBoxMap = new HashMap(); - 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() { @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)); - } - } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/EntryPointWithSettingsLinkFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/EntryPointWithSettingsLinkFactory.java index 9b0ad24458d..3b6304337c8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/EntryPointWithSettingsLinkFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/EntryPointWithSettingsLinkFactory.java @@ -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); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/regattaoverview/RegattaOverviewBaseSettings.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/regattaoverview/RegattaOverviewBaseSettings.java index ab4c985b218..48c6ab1273b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/regattaoverview/RegattaOverviewBaseSettings.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/regattaoverview/RegattaOverviewBaseSettings.java @@ -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(); - } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/regattaoverview/RegattaRaceStatesSettings.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/regattaoverview/RegattaRaceStatesSettings.java index 2a46f55cb01..3792b45cae6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/regattaoverview/RegattaRaceStatesSettings.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/settings/client/regattaoverview/RegattaRaceStatesSettings.java @@ -107,4 +107,12 @@ public final class RegattaRaceStatesSettings extends AbstractGenericSerializable visibleRegattas.setDefaultValues(regattaIds); } + public RegattaRaceStatesSettings createInstanceWithSettings(Iterable visibleCourseAreas, + Iterable 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; + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventDetailsComposite.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventDetailsComposite.java index 44994a011c6..d0d8d218030 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventDetailsComposite.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventDetailsComposite.java @@ -139,7 +139,7 @@ public class EventDetailsComposite extends Composite { baseURL.setHref(event.getBaseURL()); sailorsInfoWebsiteURLList.setValues(new ArrayList(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)); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardEntryPoint.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardEntryPoint.java index 4e268eff100..390712efe96 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardEntryPoint.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardEntryPoint.java @@ -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> settingsManager = new UserSettingsStorageManager<>( - getUserService(), UserSettingsStorageManager.buildContextDefinitionId("LeaderboardEntryPoint"), - leaderboardName); + getUserService(), "LeaderboardEntryPoint", + UserSettingsStorageManager.buildContextDefinitionId(leaderboardName)); if (leaderboardType.isMetaLeaderboard()) { // overall diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/LinkWithSettingsGenerator.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/LinkWithSettingsGenerator.java index 9a8fa6f2c32..1df99dda46b 100644 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/LinkWithSettingsGenerator.java +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/LinkWithSettingsGenerator.java @@ -13,6 +13,10 @@ public class LinkWithSettingsGenerator { private final String path; private final GenericSerializableSettings contextDefinition; + + public LinkWithSettingsGenerator(GenericSerializableSettings contextDefinition) { + this(null, contextDefinition); + } public LinkWithSettingsGenerator(String path, GenericSerializableSettings contextDefinition) { this.path = path; diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/perspective/ComponentContextWithSettingsStorage.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/perspective/ComponentContextWithSettingsStorage.java index 7d127071df8..c67a132004e 100644 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/perspective/ComponentContextWithSettingsStorage.java +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/perspective/ComponentContextWithSettingsStorage.java @@ -185,4 +185,14 @@ public class ComponentContextWithSettingsStorage, S extends Settings> ComponentContext createComponentContext(L rootLifecycle, + SettingsStorageManager 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); + } }