From 5ca88cc1e336432fab2a070ec4bc78af959764a2 Mon Sep 17 00:00:00 2001 From: Kai Boernert Date: Mon, 20 Feb 2017 16:08:54 +0100 Subject: [PATCH] Autoplay settings working --- .../gwt/ui/test/LeaderboardPanelMock.java | 4 +- .../autoplay/client/app/PlaceNavigator.java | 4 +- .../client/app/PlaceNavigatorImpl.java | 5 +- .../place/player/AutoPlayController.java | 68 +++++++---------- .../place/player/AutoPlayerConfiguration.java | 37 --------- .../place/player/AutoPlayerContext.java | 36 +++++++++ .../client/place/player/PlayerActivity.java | 75 +++++++------------ .../client/place/player/PlayerPlace.java | 40 +++------- .../place/start/AutoplayContextSettings.java | 11 --- .../start/AutoplayPerspectiveLifecycle.java | 8 ++ .../client/place/start/DesktopStartView.java | 31 ++------ .../LeaderboardWithHeaderPerspective.java | 10 +-- .../event/regatta/EventRegattaActivity.java | 8 +- .../regatta/RegattaAnalyticsDataManager.java | 9 +-- .../EventSeriesAnalyticsDataManager.java | 11 ++- .../places/fakeseries/SeriesActivity.java | 10 +-- .../client/RegattaOverviewEntryPoint.java | 3 +- .../client/RegattaOverviewPanel.java | 8 +- .../ui/leaderboard/LeaderboardEntryPoint.java | 7 +- .../gwt/ui/leaderboard/LeaderboardPanel.java | 11 ++- .../gwt/ui/leaderboard/LeaderboardViewer.java | 11 ++- .../ui/leaderboard/MetaLeaderboardViewer.java | 11 ++- .../ui/leaderboard/MultiLeaderboardPanel.java | 5 +- .../MultiLeaderboardProxyPanel.java | 9 +-- .../leaderboard/OverallLeaderboardPanel.java | 5 +- .../EditableLeaderboardPanel.java | 2 +- .../gwt/ui/raceboard/RaceBoardPanel.java | 2 +- .../components/AbstractSettingsDialog.java | 6 +- .../settings/SettingsToStringSerializer.java | 29 +++++++ 29 files changed, 207 insertions(+), 269 deletions(-) delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/player/AutoPlayerConfiguration.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/player/AutoPlayerContext.java delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/start/AutoplayContextSettings.java diff --git a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/LeaderboardPanelMock.java b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/LeaderboardPanelMock.java index 0864717665c..15f6ca8619c 100644 --- a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/LeaderboardPanelMock.java +++ b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/LeaderboardPanelMock.java @@ -12,7 +12,6 @@ import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings; import com.sap.sailing.gwt.ui.leaderboard.SortedCellTable; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.async.AsyncActionsExecutor; -import com.sap.sse.gwt.client.useragent.UserAgentDetails; public class LeaderboardPanelMock extends LeaderboardPanel { @@ -21,7 +20,8 @@ public class LeaderboardPanelMock extends LeaderboardPanel { StringMessages stringMessages) { super(null, null, sailingService, new AsyncActionsExecutor(), new LeaderboardSettings(), new CompetitorSelectionModel( - /* hasMultiSelection */true), leaderboardName, errorReporter, stringMessages, new UserAgentDetails("gecko1_8"), /* showRaceDetails */ true); + /* hasMultiSelection */true), + leaderboardName, errorReporter, stringMessages, /* showRaceDetails */ true); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/app/PlaceNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/app/PlaceNavigator.java index 79bf473dd31..37f96d70646 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/app/PlaceNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/app/PlaceNavigator.java @@ -1,9 +1,7 @@ package com.sap.sailing.gwt.autoplay.client.app; -import com.sap.sailing.gwt.autoplay.client.place.player.AutoPlayerConfiguration; - public interface PlaceNavigator { void goToStart(); - void goToPlayer(AutoPlayerConfiguration playerConfig, String settingsString); + void goToPlayer(String contextAndSettings); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/app/PlaceNavigatorImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/app/PlaceNavigatorImpl.java index 9823f33bdfe..21e2a7f239a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/app/PlaceNavigatorImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/app/PlaceNavigatorImpl.java @@ -1,7 +1,6 @@ package com.sap.sailing.gwt.autoplay.client.app; import com.google.gwt.place.shared.PlaceController; -import com.sap.sailing.gwt.autoplay.client.place.player.AutoPlayerConfiguration; import com.sap.sailing.gwt.autoplay.client.place.player.PlayerPlace; import com.sap.sailing.gwt.autoplay.client.place.start.StartPlace; @@ -19,8 +18,8 @@ public class PlaceNavigatorImpl implements PlaceNavigator { } @Override - public void goToPlayer(AutoPlayerConfiguration playerConfig, String settingsplace) { - PlayerPlace playerPlace = new PlayerPlace(playerConfig, settingsplace); + public void goToPlayer(String contextAndSettings) { + PlayerPlace playerPlace = new PlayerPlace(contextAndSettings); placeController.goTo(playerPlace); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/player/AutoPlayController.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/player/AutoPlayController.java index ede61cecc4c..fd7c58655e1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/player/AutoPlayController.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/player/AutoPlayController.java @@ -10,9 +10,9 @@ import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.dto.FleetDTO; import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; -import com.sap.sailing.gwt.autoplay.client.shared.leaderboard.LeaderboardWithHeaderComponentContext; +import com.sap.sailing.gwt.autoplay.client.place.start.AutoplayPerspectiveLifecycle; +import com.sap.sailing.gwt.autoplay.client.place.start.AutoplayPerspectiveOwnSettings; import com.sap.sailing.gwt.autoplay.client.shared.leaderboard.LeaderboardWithHeaderPerspective; -import com.sap.sailing.gwt.autoplay.client.shared.leaderboard.LeaderboardWithHeaderPerspectiveLifecycle; import com.sap.sailing.gwt.autoplay.client.shared.leaderboard.LeaderboardWithHeaderPerspectiveSettings; import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel; import com.sap.sailing.gwt.ui.client.LeaderboardUpdateListener; @@ -22,9 +22,7 @@ import com.sap.sailing.gwt.ui.client.RaceTimesInfoProviderListener; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.leaderboard.LeaderboardEntryPoint; -import com.sap.sailing.gwt.ui.raceboard.RaceBoardComponentContext; import com.sap.sailing.gwt.ui.raceboard.RaceBoardPanel; -import com.sap.sailing.gwt.ui.raceboard.RaceBoardPerspectiveLifecycle; import com.sap.sailing.gwt.ui.raceboard.RaceBoardPerspectiveSettings; import com.sap.sailing.gwt.ui.shared.RaceTimesInfoDTO; import com.sap.sailing.gwt.ui.shared.RaceboardDataDTO; @@ -63,22 +61,15 @@ public class AutoPlayController implements RaceTimesInfoProviderListener, Leader // raceboard perspective related attributes private RegattaAndRaceIdentifier currentLiveRace; - private LeaderboardWithHeaderPerspectiveLifecycle leaderboardLifecycle; - private PerspectiveCompositeSettings leaderboardSettings; - private RaceBoardPerspectiveLifecycle raceboardLifecycle; - private PerspectiveCompositeSettings raceboardSettings; - private final PlayerView playerView; - private final AutoPlayerConfiguration autoPlayerConfiguration; - - private final LeaderboardWithHeaderComponentContext leaderboardWithHeaderContext; - private final RaceBoardComponentContext raceBoardContext; - - public AutoPlayController(LeaderboardWithHeaderComponentContext leaderboardWithHeaderContext, RaceBoardComponentContext raceBoardContext, SailingServiceAsync sailingService, MediaServiceAsync mediaService, - UserService userService, ErrorReporter errorReporter, AutoPlayerConfiguration autoPlayerConfiguration, - UserAgentDetails userAgent, long delayToLiveInMillis, boolean showRaceDetails, PlayerView playerView) { - this.leaderboardWithHeaderContext = leaderboardWithHeaderContext; - this.raceBoardContext = raceBoardContext; + private final AutoPlayerContext autoPlayerConfiguration; + private PerspectiveCompositeSettings settings; + private AutoplayPerspectiveLifecycle autoplayLiveCycle; + + public AutoPlayController(SailingServiceAsync sailingService, MediaServiceAsync mediaService, + UserService userService, ErrorReporter errorReporter, AutoPlayerContext autoPlayerConfiguration, + PerspectiveCompositeSettings settings, + UserAgentDetails userAgent, PlayerView playerView, AutoplayPerspectiveLifecycle autoplayLiveCycle) { this.sailingService = sailingService; this.mediaService = mediaService; this.userService = userService; @@ -86,15 +77,18 @@ public class AutoPlayController implements RaceTimesInfoProviderListener, Leader this.autoPlayerConfiguration = autoPlayerConfiguration; this.userAgent = userAgent; this.playerView = playerView; + this.settings = settings; + this.autoplayLiveCycle = autoplayLiveCycle; asyncActionsExecutor = new AsyncActionsExecutor(); currentLeaderboard = null; leaderboardTimer = new Timer(PlayModes.Live, /* delayBetweenAutoAdvancesInMilliseconds */ LeaderboardEntryPoint.DEFAULT_REFRESH_INTERVAL_MILLIS); - leaderboardTimer.setLivePlayDelayInMillis(delayToLiveInMillis); + leaderboardTimer + .setLivePlayDelayInMillis(settings.getPerspectiveOwnSettings().getTimeToSwitchBeforeRaceStart()); leaderboardTimer.setRefreshInterval(REFRESH_INTERVAL_IN_MILLIS_LEADERBOARD); leaderboardTimer.play(); raceboardTimer = new Timer(PlayModes.Live, /* delayBetweenAutoAdvancesInMilliseconds */1000l); - raceboardTimer.setLivePlayDelayInMillis(delayToLiveInMillis); + raceboardTimer.setLivePlayDelayInMillis(settings.getPerspectiveOwnSettings().getTimeToSwitchBeforeRaceStart()); raceboardTimer.setRefreshInterval(REFRESH_INTERVAL_IN_MILLIS_RACEBOARD); raceboardTimer.play(); @@ -105,21 +99,18 @@ public class AutoPlayController implements RaceTimesInfoProviderListener, Leader private void showLeaderboard() { if (activeTvView != AutoPlayModes.Leaderboard) { - if (leaderboardLifecycle == null) { - leaderboardLifecycle = leaderboardWithHeaderContext.getRootLifecycle(); - } - if (leaderboardSettings == null) { - leaderboardSettings = leaderboardWithHeaderContext.getDefaultSettings(); - } - playerView.clearContent(); - boolean withFullscreenButton = autoPlayerConfiguration.isFullscreenMode() && isInitialScreen; + boolean withFullscreenButton = settings.getPerspectiveOwnSettings().isFullscreen() && isInitialScreen; + + PerspectiveCompositeSettings leaderboardSettings = settings + .findSettingsByComponentId(autoplayLiveCycle.getLeaderboardLifecycle().getComponentId()); + LeaderboardWithHeaderPerspective leaderboardPerspective = new LeaderboardWithHeaderPerspective(null, - leaderboardWithHeaderContext, leaderboardLifecycle, leaderboardSettings, + null, autoplayLiveCycle.getLeaderboardLifecycle(), leaderboardSettings, sailingService, userService, asyncActionsExecutor, new CompetitorSelectionModel(/* hasMultiSelection */ true), leaderboardTimer, autoPlayerConfiguration.getLeaderboardName(), errorReporter, StringMessages.INSTANCE, - userAgent, withFullscreenButton); + withFullscreenButton); playerView.setContent(leaderboardPerspective); currentLiveRace = null; @@ -138,15 +129,13 @@ public class AutoPlayController implements RaceTimesInfoProviderListener, Leader @Override public void onSuccess(RaceboardDataDTO result) { - if (raceboardLifecycle == null) { - raceboardLifecycle = raceBoardContext.getRootLifecycle(); - } - if (raceboardSettings == null) { - raceboardSettings = raceBoardContext.getDefaultSettings(); - } playerView.clearContent(); - RaceBoardPanel raceboardPerspective = new RaceBoardPanel(null, raceBoardContext, raceboardLifecycle, + PerspectiveCompositeSettings raceboardSettings = settings + .findSettingsByComponentId(autoplayLiveCycle.getRaceboardLifecycle().getComponentId()); + + RaceBoardPanel raceboardPerspective = new RaceBoardPanel(null, null, + autoplayLiveCycle.getRaceboardLifecycle(), raceboardSettings, sailingService, mediaService, userService, asyncActionsExecutor, result.getCompetitorAndTheirBoats(), raceboardTimer, currentLiveRace, autoPlayerConfiguration.getLeaderboardName(), @@ -217,7 +206,8 @@ public class AutoPlayController implements RaceTimesInfoProviderListener, Leader RaceTimesInfoDTO raceTimes = raceTimesInfos.get(raceIdentifier); if (raceTimes != null && raceTimes.startOfTracking != null && raceTimes.getStartOfRace() != null && raceTimes.endOfRace == null) { long startTimeInMs = raceTimes.getStartOfRace().getTime(); - long timeToSwitchBeforeRaceStartInMs = autoPlayerConfiguration.getTimeToSwitchBeforeRaceStartInSeconds() * 1000; + long timeToSwitchBeforeRaceStartInMs = settings.getPerspectiveOwnSettings() + .getTimeToSwitchBeforeRaceStart() * 1000; long delayToLiveInMs = raceTimes.delayToLiveInMs; // the switch to the live race should happen at a defined timepoint before the race start (default is 3 min) if (serverTimePointAsMillis - delayToLiveInMs > startTimeInMs - timeToSwitchBeforeRaceStartInMs) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/player/AutoPlayerConfiguration.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/player/AutoPlayerConfiguration.java deleted file mode 100644 index 2a73dce843f..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/player/AutoPlayerConfiguration.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.sap.sailing.gwt.autoplay.client.place.player; - - -public class AutoPlayerConfiguration { - public final static String PARAM_EVENTID = "eventId"; - public final static String PARAM_FULLSCREEN = "fullscreen"; - public final static String PARAM_LEADEROARD_NAME = "leaderboardName"; - public final static String PARAM_TIME_TO_SWITCH_BEFORE_RACE_START = "timeToSwitchBeforeRaceStart"; - - private String eventUidAsString; - private String leaderboardName; - private boolean fullscreenMode; - private long timeToSwitchBeforeRaceStartInSeconds; - - public AutoPlayerConfiguration(String eventUidAsString, String leaderboardName, boolean fullscreenMode, long timeToSwitchBeforeRaceStartInSeconds) { - this.eventUidAsString = eventUidAsString; - this.leaderboardName = leaderboardName; - this.fullscreenMode = fullscreenMode; - this.timeToSwitchBeforeRaceStartInSeconds = timeToSwitchBeforeRaceStartInSeconds; - } - - public String getEventUidAsString() { - return eventUidAsString; - } - - public String getLeaderboardName() { - return leaderboardName; - } - - public boolean isFullscreenMode() { - return fullscreenMode; - } - - public long getTimeToSwitchBeforeRaceStartInSeconds() { - return timeToSwitchBeforeRaceStartInSeconds; - } -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/player/AutoPlayerContext.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/player/AutoPlayerContext.java new file mode 100644 index 00000000000..90a51deb4ae --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/player/AutoPlayerContext.java @@ -0,0 +1,36 @@ +package com.sap.sailing.gwt.autoplay.client.place.player; + +import java.util.UUID; + +import com.sap.sse.common.settings.generic.AbstractGenericSerializableSettings; +import com.sap.sse.common.settings.generic.StringSetting; +import com.sap.sse.common.settings.generic.UUIDSetting; + +public class AutoPlayerContext extends AbstractGenericSerializableSettings { + private static final long serialVersionUID = 2880854263616658272L; + + private transient UUIDSetting eventUUID; + private transient StringSetting leaderboardName; + + public AutoPlayerContext(UUID eventUUID, String leaderboardName) { + this.eventUUID.setValue(eventUUID); + this.leaderboardName.setValue(leaderboardName); + } + + public AutoPlayerContext() { + } + + @Override + protected void addChildSettings() { + eventUUID = new UUIDSetting("eventId", this); + leaderboardName = new StringSetting("name", this); + } + + public UUID getEventUidAsString() { + return eventUUID.getValue(); + } + + public String getLeaderboardName() { + return leaderboardName.getValue(); + } +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/player/PlayerActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/player/PlayerActivity.java index bd45ce906e0..d6805e9918c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/player/PlayerActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/player/PlayerActivity.java @@ -7,29 +7,20 @@ import com.google.gwt.event.shared.EventBus; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.AcceptsOneWidget; -import com.sap.sailing.gwt.autoplay.client.shared.leaderboard.LeaderboardWithHeaderComponentContext; -import com.sap.sailing.gwt.autoplay.client.shared.leaderboard.LeaderboardWithHeaderPerspectiveLifecycle; -import com.sap.sailing.gwt.autoplay.client.shared.leaderboard.LeaderboardWithHeaderPerspectiveSettings; -import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sailing.gwt.ui.raceboard.RaceBoardComponentContext; -import com.sap.sailing.gwt.ui.raceboard.RaceBoardPerspectiveLifecycle; -import com.sap.sailing.gwt.ui.raceboard.RaceBoardPerspectiveSettings; +import com.sap.sailing.gwt.autoplay.client.place.start.AutoplayPerspectiveLifecycle; +import com.sap.sailing.gwt.autoplay.client.place.start.AutoplayPerspectiveOwnSettings; import com.sap.sailing.gwt.ui.shared.EventDTO; import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO; import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO; import com.sap.sse.gwt.client.mvp.ErrorView; -import com.sap.sse.gwt.client.shared.perspective.DefaultOnSettingsLoadedCallback; import com.sap.sse.gwt.client.shared.perspective.PerspectiveCompositeSettings; import com.sap.sse.gwt.client.useragent.UserAgentDetails; -import com.sap.sse.gwt.shared.GwtHttpRequestUtils; +import com.sap.sse.gwt.settings.SettingsToStringSerializer; public class PlayerActivity extends AbstractActivity { private final PlayerClientFactory clientFactory; private final PlayerPlace playerPlace; - private AutoPlayController autoPlayController; - - private static final String PARAM_SHOW_RACE_DETAILS = "showRaceDetails"; - private static final String PARAM_DELAY_TO_LIVE_MILLIS = "delayToLiveMillis"; + private AutoPlayController autoPlayController; public PlayerActivity(PlayerPlace playerPlace, PlayerClientFactory clientFactory) { this.playerPlace = playerPlace; @@ -37,7 +28,7 @@ public class PlayerActivity extends AbstractActivity { this.autoPlayController = null; } - private StrippedLeaderboardDTO getSelectedLeaderboard(EventDTO event,String leaderBoardName) { + private StrippedLeaderboardDTO getSelectedLeaderboard(EventDTO event, String leaderBoardName) { for (LeaderboardGroupDTO leaderboardGroup : event.getLeaderboardGroups()) { for (StrippedLeaderboardDTO leaderboard : leaderboardGroup.getLeaderboards()) { if (leaderboard.name.equals(leaderBoardName)) { @@ -47,50 +38,36 @@ public class PlayerActivity extends AbstractActivity { } return null; } - + @Override public void start(final AcceptsOneWidget panel, EventBus eventBus) { - final boolean showRaceDetails = GwtHttpRequestUtils.getBooleanParameter(PARAM_SHOW_RACE_DETAILS, false); - final long delayToLiveMillis = Window.Location.getParameter(PARAM_DELAY_TO_LIVE_MILLIS) != null ? Long - .valueOf(Window.Location.getParameter(PARAM_DELAY_TO_LIVE_MILLIS)) : 5000l; // default 5s - - final UUID eventUUID = UUID.fromString(playerPlace.getConfiguration().getEventUidAsString()); - + + // get the event + SettingsToStringSerializer stringSerializer = new SettingsToStringSerializer(); + AutoPlayerContext context = new AutoPlayerContext(); + stringSerializer.fromString(playerPlace.getContext(), context); + final UUID eventUUID = context.getEventUidAsString(); + AsyncCallback getEventByIdAsyncCallback = new AsyncCallback() { @Override public void onSuccess(final EventDTO event) { + StrippedLeaderboardDTO leaderBoardDTO = getSelectedLeaderboard(event, context.getLeaderboardName()); + AutoplayPerspectiveLifecycle autoplayLiveCycle = new AutoplayPerspectiveLifecycle(leaderBoardDTO); + PerspectiveCompositeSettings autoplaySettings = stringSerializer + .fromString(playerPlace.getContext(), autoplayLiveCycle.createDefaultSettings()); - //This place fixes a specific null pointer bug3950, once the settings are redone, this should be removed, and instead be done via playerplace (see comment there) - StrippedLeaderboardDTO leaderBoardDTO = getSelectedLeaderboard(event,playerPlace.getConfiguration().getLeaderboardName()); - LeaderboardWithHeaderPerspectiveLifecycle leaderboardPerspectiveLifecycle = new LeaderboardWithHeaderPerspectiveLifecycle(leaderBoardDTO, StringMessages.INSTANCE); - RaceBoardPerspectiveLifecycle raceboardPerspectiveLifecycle = new RaceBoardPerspectiveLifecycle(leaderBoardDTO, StringMessages.INSTANCE); - - final RaceBoardComponentContext raceBoardContext = new RaceBoardComponentContext(clientFactory.getUserService(), "AutoPlay.RaceBoard", raceboardPerspectiveLifecycle, null, null, playerPlace.getConfiguration().getLeaderboardName(), null, eventUUID); - final LeaderboardWithHeaderComponentContext leaderboardWithHeaderContext = new LeaderboardWithHeaderComponentContext(clientFactory.getUserService(), "AutoPlay.Leaderboard", leaderboardPerspectiveLifecycle); - - raceBoardContext.initInitialSettings(); - clientFactory.getUserService().updateUser(true); - + UserAgentDetails userAgent = new UserAgentDetails(Window.Navigator.getUserAgent()); PlayerView view = clientFactory.createPlayerView(); panel.setWidget(view.asWidget()); - - autoPlayController = new AutoPlayController(leaderboardWithHeaderContext, raceBoardContext, clientFactory.getSailingService(), clientFactory - .getMediaService(), clientFactory.getUserService(), clientFactory.getErrorReporter(), - playerPlace.getConfiguration(), userAgent, delayToLiveMillis, showRaceDetails, view); - raceBoardContext.initInitialSettings(new DefaultOnSettingsLoadedCallback>() { - @Override - public void onSuccess(PerspectiveCompositeSettings defaultSettings) { - leaderboardWithHeaderContext.initInitialSettings(new DefaultOnSettingsLoadedCallback>() { - @Override - public void onSuccess( - PerspectiveCompositeSettings defaultSettings) { - autoPlayController.updatePlayMode(AutoPlayModes.Leaderboard); - } - }); - } - }); + + autoPlayController = new AutoPlayController(clientFactory.getSailingService(), + clientFactory.getMediaService(), clientFactory.getUserService(), + clientFactory.getErrorReporter(), context, autoplaySettings, userAgent, view, + autoplayLiveCycle); + + autoPlayController.updatePlayMode(AutoPlayModes.Leaderboard); } @Override @@ -98,7 +75,7 @@ public class PlayerActivity extends AbstractActivity { createErrorView("Error while loading the event with service getEventById()", caught, panel); } }; - clientFactory.getSailingService().getEventById(eventUUID, true, getEventByIdAsyncCallback); + clientFactory.getSailingService().getEventById(eventUUID, true, getEventByIdAsyncCallback); } private void createErrorView(String errorMessage, Throwable errorReason, AcceptsOneWidget panel) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/player/PlayerPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/player/PlayerPlace.java index 7e5bc707bce..d24299ff7c7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/player/PlayerPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/player/PlayerPlace.java @@ -1,46 +1,30 @@ package com.sap.sailing.gwt.autoplay.client.place.player; +import com.google.gwt.place.shared.Place; import com.google.gwt.place.shared.PlaceTokenizer; -import com.sap.sailing.gwt.common.client.AbstractBasePlace; +import com.sap.sse.gwt.settings.SettingsToStringSerializer; -public class PlayerPlace extends AbstractBasePlace { - private final AutoPlayerConfiguration playerConfiguration; +public class PlayerPlace extends Place { + private final String contextAndSettings; - public PlayerPlace(String url) { - super(url); - - String eventUuidAsString = getParameter(AutoPlayerConfiguration.PARAM_EVENTID); - String leaderboardName= getParameter(AutoPlayerConfiguration.PARAM_LEADEROARD_NAME); - Boolean fullscreen = Boolean.valueOf(getParameter(AutoPlayerConfiguration.PARAM_FULLSCREEN)); - Integer timeToSwitchBeforeRaceStartInSeconds = Integer.valueOf(getParameter(AutoPlayerConfiguration.PARAM_TIME_TO_SWITCH_BEFORE_RACE_START)); - - this.playerConfiguration = new AutoPlayerConfiguration(eventUuidAsString, leaderboardName, fullscreen, timeToSwitchBeforeRaceStartInSeconds); - - //these are currently regenerated in the PlayerActivity, based on the historydata. Once the settings are properly stored, this should be replaced. + public PlayerPlace(String contextAndSettings) { + this.contextAndSettings = contextAndSettings; } - public PlayerPlace(AutoPlayerConfiguration playerConfiguration, String settingsplace) { - super(AutoPlayerConfiguration.PARAM_EVENTID, playerConfiguration.getEventUidAsString(), - AutoPlayerConfiguration.PARAM_FULLSCREEN, String.valueOf(playerConfiguration.isFullscreenMode()), - AutoPlayerConfiguration.PARAM_LEADEROARD_NAME, playerConfiguration.getLeaderboardName(), - AutoPlayerConfiguration.PARAM_TIME_TO_SWITCH_BEFORE_RACE_START, String.valueOf(playerConfiguration.getTimeToSwitchBeforeRaceStartInSeconds())); - - this.playerConfiguration = playerConfiguration; - } - - public AutoPlayerConfiguration getConfiguration() { - return this.playerConfiguration; + public String getContext() { + return contextAndSettings; } public static class Tokenizer implements PlaceTokenizer { + SettingsToStringSerializer stringSerializer = new SettingsToStringSerializer(); @Override public String getToken(PlayerPlace place) { - return place.getParametersAsToken(); + return place.getContext(); } @Override - public PlayerPlace getPlace(String url) { - return new PlayerPlace(url); + public PlayerPlace getPlace(String settingsAndContext) { + return new PlayerPlace(settingsAndContext); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/start/AutoplayContextSettings.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/start/AutoplayContextSettings.java deleted file mode 100644 index 49259d106e3..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/start/AutoplayContextSettings.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.sap.sailing.gwt.autoplay.client.place.start; - -import com.sap.sse.common.settings.generic.AbstractGenericSerializableSettings; - -public class AutoplayContextSettings extends AbstractGenericSerializableSettings { - private static final long serialVersionUID = 6699950643747065960L; - - @Override - protected void addChildSettings() { - } -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/start/AutoplayPerspectiveLifecycle.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/start/AutoplayPerspectiveLifecycle.java index 70741c599c4..7931f1f5efe 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/start/AutoplayPerspectiveLifecycle.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/place/start/AutoplayPerspectiveLifecycle.java @@ -30,6 +30,14 @@ public class AutoplayPerspectiveLifecycle extends AbstractPerspectiveLifecycle> linkWithSettingsGenerator = new LinkWithSettingsGenerator<>( - EntryPointLinkFactory.AUTOPLAY_PATH, autoplayContextSettings); - DialogCallback> callback = new DialogCallback>() { @Override public void ok(PerspectiveCompositeSettings editedObject) { - String settingsString = new SettingsToStringSerializer().fromSettings(editedObject); - // TODO testingcode remove once done - GWT.log(settingsString); - PerspectiveCompositeSettings restored = new SettingsToStringSerializer() - .fromString(settingsString, autoplayLifecycle.createDefaultSettings()); - GWT.log(editedObject.equals(restored) + " Equals " + restored); - autoplayPerspectiveSettings = restored; + autoplayPerspectiveSettings = editedObject; } @Override @@ -194,10 +182,9 @@ public class DesktopStartView extends Composite implements StartView { if (autoplayPerspectiveSettings == null) { autoplayPerspectiveSettings = autoplayLifecycle.createDefaultSettings(); } - SettingsDialogForLinkSharing> dialog = new SettingsDialogForLinkSharing>( - linkWithSettingsGenerator, autoplayLifecycle, autoplayPerspectiveSettings, - StringMessages.INSTANCE, true, callback); - dialog.show(); + + new SettingsDialogForLinkSharing>(null, + autoplayLifecycle, autoplayPerspectiveSettings, StringMessages.INSTANCE, true, callback).show(); } @@ -215,11 +202,9 @@ public class DesktopStartView extends Composite implements StartView { if (selectedEvent != null && selectedLeaderboardName != null) { // TODO generate place settings url, and directly start other place - String settingsString = new SettingsToStringSerializer().fromSettings(autoplayPerspectiveSettings); - navigator.goToPlayer(new AutoPlayerConfiguration(selectedEvent.id.toString(), selectedLeaderboardName, - autoplayPerspectiveSettings.getPerspectiveOwnSettings().isFullscreen(), - autoplayPerspectiveSettings.getPerspectiveOwnSettings().getTimeToSwitchBeforeRaceStart()), - settingsString); + String contextAndSettings = new SettingsToStringSerializer().fromSettings( + new AutoPlayerContext(selectedEvent.id, selectedLeaderboardName), autoplayPerspectiveSettings); + navigator.goToPlayer(contextAndSettings); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/shared/leaderboard/LeaderboardWithHeaderPerspective.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/shared/leaderboard/LeaderboardWithHeaderPerspective.java index fc668854a6a..11f8806ff2f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/shared/leaderboard/LeaderboardWithHeaderPerspective.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/autoplay/client/shared/leaderboard/LeaderboardWithHeaderPerspective.java @@ -30,7 +30,6 @@ 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.AbstractPerspectiveComposite; import com.sap.sse.gwt.client.shared.perspective.PerspectiveCompositeSettings; -import com.sap.sse.gwt.client.useragent.UserAgentDetails; import com.sap.sse.security.ui.client.UserService; /** @@ -53,7 +52,7 @@ public class LeaderboardWithHeaderPerspective extends AbstractPerspectiveComposi SailingServiceAsync sailingService, UserService userService, AsyncActionsExecutor asyncActionsExecutor, CompetitorSelectionProvider competitorSelectionProvider, Timer timer, String leaderboardName, final ErrorReporter errorReporter, final StringMessages stringMessages, - UserAgentDetails userAgent, boolean startInFullScreenMode) { + boolean startInFullScreenMode) { super(parent, context, lifecycle, settings); this.stringMessages = stringMessages; Window.addResizeHandler(new ResizeHandler() { @@ -69,7 +68,7 @@ public class LeaderboardWithHeaderPerspective extends AbstractPerspectiveComposi settings.findSettingsByComponentId(sapHeaderLifecycle.getComponentId()), stringMessages, startInFullScreenMode); leaderboardPanel = createLeaderboardPanel(lifecycle, settings, sailingService, asyncActionsExecutor, - competitorSelectionProvider, timer, leaderboardName, errorReporter, stringMessages, userAgent); + competitorSelectionProvider, timer, leaderboardName, errorReporter, stringMessages); leaderboardPanel.getContentWidget().getElement().getStyle().setFontWeight(FontWeight.BOLD); addChildComponent(sapHeader); addChildComponent(leaderboardPanel); @@ -195,8 +194,7 @@ public class LeaderboardWithHeaderPerspective extends AbstractPerspectiveComposi PerspectiveCompositeSettings settings, SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, CompetitorSelectionProvider competitorSelectionProvider, Timer timer, - String leaderboardName, final ErrorReporter errorReporter, final StringMessages stringMessages, - final UserAgentDetails userAgent) { + String leaderboardName, final ErrorReporter errorReporter, final StringMessages stringMessages) { LeaderboardPanelLifecycle leaderboardPanelLifecycle = getPerspectiveLifecycle().getLeaderboardPanelLifecycle(); LeaderboardSettings leaderboardSettings = settings .findSettingsByComponentId(leaderboardPanelLifecycle.getComponentId()); @@ -206,7 +204,7 @@ public class LeaderboardWithHeaderPerspective extends AbstractPerspectiveComposi leaderboardSettings, /*isEmbedded*/true, /* preSelectedRace */null, competitorSelectionProvider, timer, /* leaderboardGroupName */"", leaderboardName, errorReporter, stringMessages, - userAgent, /*showRaceDetails */false, /* competitorSearchTextBox */ null, /* showRegattaRank */ + /* showRaceDetails */false, /* competitorSearchTextBox */ null, /* showRegattaRank */ /* showSelectionCheckbox */false, /* raceTimesInfoProvider */null, false, /* autoExpandLastRaceColumn */ /* adjustTimerDelay */ true, /* autoApplyTopNFilter */ false, /* showCompetitorFilterStatus */ false, /* enableSyncScroller */ false); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/EventRegattaActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/EventRegattaActivity.java index 15a45b1f0d6..b1db98a1056 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/EventRegattaActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/EventRegattaActivity.java @@ -4,7 +4,6 @@ import java.util.ArrayList; import java.util.List; import com.google.gwt.event.shared.EventBus; -import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.AcceptsOneWidget; import com.sap.sailing.gwt.home.communication.event.EventReferenceWithStateDTO; import com.sap.sailing.gwt.home.communication.event.EventState; @@ -25,12 +24,11 @@ import com.sap.sailing.gwt.home.shared.app.NavigationPathDisplay.NavigationItem; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.places.event.EventContext; import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sailing.gwt.ui.leaderboard.LeaderboardEntryPoint; +import com.sap.sailing.gwt.ui.leaderboard.LeaderboardEntryPoint; import com.sap.sse.gwt.client.async.AsyncActionsExecutor; 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.useragent.UserAgentDetails; /** * Base Activity for all desktop single-regatta-event/series-event pages as well as the pages for one regatta of a @@ -41,7 +39,6 @@ import com.sap.sse.gwt.client.useragent.UserAgentDetails; */ public class EventRegattaActivity extends AbstractEventActivity implements EventRegattaView.Presenter { private EventRegattaView currentView = new TabletAndDesktopRegattaEventView(); - private final UserAgentDetails userAgent = new UserAgentDetails(Window.Navigator.getUserAgent()); private final AsyncActionsExecutor asyncActionsExecutor = new AsyncActionsExecutor(); private final long delayBetweenAutoAdvancesInMilliseconds = LeaderboardEntryPoint.DEFAULT_REFRESH_INTERVAL_MILLIS; @@ -53,8 +50,7 @@ public class EventRegattaActivity extends AbstractEventActivity currentView = new TabletAndDesktopSeriesView(); - private final UserAgentDetails userAgent = new UserAgentDetails(Window.Navigator.getUserAgent()); private final AsyncActionsExecutor asyncActionsExecutor = new AsyncActionsExecutor(); private final long delayBetweenAutoAdvancesInMilliseconds = LeaderboardEntryPoint.DEFAULT_REFRESH_INTERVAL_MILLIS; private final EventSeriesViewDTO series; @@ -63,8 +60,7 @@ public class SeriesActivity extends AbstractActivity implements SeriesView.Prese clientFactory.getSailingService(), // asyncActionsExecutor, // new Timer(PlayModes.Live, PlayStates.Paused, delayBetweenAutoAdvancesInMilliseconds), // - clientFactory.getErrorReporter(), // - userAgent)); + clientFactory.getErrorReporter())); } 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 430cf1d0d40..7d9082a62fb 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 @@ -88,7 +88,8 @@ public class RegattaOverviewEntryPoint extends AbstractSailingEntryPoint { } private void createAndAddRegattaPanel(RegattaOverviewBaseSettings regattaOverviewContextDefinition) { - regattaPanel = new RegattaOverviewPanel(sailingService, getUserService(), this, getStringMessages(), regattaOverviewContextDefinition, userAgent); + regattaPanel = new RegattaOverviewPanel(sailingService, getUserService(), this, getStringMessages(), + regattaOverviewContextDefinition); regattaPanel.addHandler(new EventDTOLoadedEvent.Handler() { @Override 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 de315699120..ff5017d5fbc 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 @@ -43,7 +43,6 @@ 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; @@ -72,7 +71,6 @@ public class RegattaOverviewPanel extends SimplePanel { private final Anchor refreshNowButton; private final Anchor startStopUpdatingButton; private CheckBox leaderboardCheckBox; - private final UserAgentDetails userAgent; private final FlowPanel repeatedInfoLabel = new FlowPanel(); private final RegattaOverviewResources.LocalCss style = RegattaOverviewResources.INSTANCE.css(); @@ -87,8 +85,7 @@ public class RegattaOverviewPanel extends SimplePanel { UserService userService, final ErrorReporter errorReporter, final StringMessages stringMessages, - RegattaOverviewBaseSettings regattaOverviewContextDefinition, - UserAgentDetails userAgent) { + RegattaOverviewBaseSettings regattaOverviewContextDefinition) { this.sailingService = sailingService; this.stringMessages = stringMessages; @@ -97,7 +94,6 @@ public class RegattaOverviewPanel extends SimplePanel { this.serverUpdateTimer = new Timer(PlayModes.Live, serverUpdateRateInMs); this.uiUpdateTimer = new Timer(PlayModes.Live, uiUpdateRateInMs); this.eventDTO = null; - this.userAgent = userAgent; this.raceGroupDTOs = new ArrayList(); this.eventRaceGroupListeners = new ArrayList(); @@ -271,7 +267,7 @@ public class RegattaOverviewPanel extends SimplePanel { /*preSelectedRace*/null, competitorSelectionProvider, null, leaderboard.name, - errorReporter, stringMessages, userAgent, /*showRaceDetails*/false); + errorReporter, stringMessages, /* showRaceDetails */false); leaderboardsTabPanel.add(leaderboardPanel, (leaderboard.getDisplayName() == null ? leaderboard.name : leaderboard.getDisplayName()) + " " + stringMessages.leaderboard()); 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 390712efe96..63f24774331 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 @@ -34,8 +34,8 @@ 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.SettingsDialogForLinkSharing; -import com.sap.sse.gwt.client.shared.perspective.ComponentContextWithSettingsStorage; 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.OnSettingsLoadedCallback; import com.sap.sse.gwt.client.shared.perspective.PerspectiveCompositeSettings; import com.sap.sse.gwt.settings.SettingsToUrlSerializer; @@ -139,7 +139,8 @@ public class LeaderboardEntryPoint extends AbstractSailingEntryPoint { final MetaLeaderboardViewer leaderboardViewer = new MetaLeaderboardViewer(null, context, rootComponentLifeCycle, defaultSettings, sailingService, new AsyncActionsExecutor(), timer, null, preselectedRace, leaderboardGroupName, leaderboardName, - LeaderboardEntryPoint.this, getStringMessages(), userAgent, getActualChartDetailType(defaultSettings)); + LeaderboardEntryPoint.this, getStringMessages(), + getActualChartDetailType(defaultSettings)); createUi(leaderboardViewer, defaultSettings, timer, leaderboardContextSettings); } @@ -166,7 +167,7 @@ public class LeaderboardEntryPoint extends AbstractSailingEntryPoint { final LeaderboardViewer leaderboardViewer = new LeaderboardViewer(null, context, rootComponentLifeCycle, defaultSettings, sailingService, new AsyncActionsExecutor(), timer, preselectedRace, leaderboardGroupName, leaderboardName, - LeaderboardEntryPoint.this, getStringMessages(), userAgent, getActualChartDetailType(defaultSettings)); + LeaderboardEntryPoint.this, getStringMessages(), getActualChartDetailType(defaultSettings)); createUi(leaderboardViewer, defaultSettings, timer, leaderboardContextSettings); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java index cca829ab46b..39823367b7e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java @@ -124,7 +124,6 @@ import com.sap.sse.gwt.client.shared.components.IsEmbeddableComponent; import com.sap.sse.gwt.client.shared.components.SettingsDialog; import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; import com.sap.sse.gwt.client.shared.perspective.ComponentContext; -import com.sap.sse.gwt.client.useragent.UserAgentDetails; /** * A leaderboard essentially consists of a table widget that in its columns displays the entries. @@ -366,10 +365,10 @@ public class LeaderboardPanel extends AbstractCompositeComponent parent, ComponentContext context, SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, LeaderboardSettings settings, CompetitorSelectionProvider competitorSelectionProvider, String leaderboardName, - ErrorReporter errorReporter, final StringMessages stringMessages, final UserAgentDetails userAgent, + ErrorReporter errorReporter, final StringMessages stringMessages, boolean showRaceDetails) { this(parent, context, sailingService, asyncActionsExecutor, settings, false, /* preSelectedRace */null, - competitorSelectionProvider, null, leaderboardName, errorReporter, stringMessages, userAgent, + competitorSelectionProvider, null, leaderboardName, errorReporter, stringMessages, showRaceDetails); } @@ -377,14 +376,14 @@ public class LeaderboardPanel extends AbstractCompositeComponent parent, @@ -51,14 +50,14 @@ public class LeaderboardViewer extends AbstractLeaderboardViewer parent, @@ -51,7 +50,7 @@ public class MetaLeaderboardViewer extends AbstractLeaderboardViewer parent, ComponentContext context, @@ -18,13 +17,13 @@ public class OverallLeaderboardPanel extends LeaderboardPanel { boolean isEmbedded, RegattaAndRaceIdentifier preSelectedRace, CompetitorSelectionProvider competitorSelectionProvider, Timer timer, String leaderboardGroupName, String leaderboardName, ErrorReporter errorReporter, StringMessages stringMessages, - UserAgentDetails userAgent, boolean showRaceDetails, CompetitorFilterPanel competitorSearchTextBox, + boolean showRaceDetails, CompetitorFilterPanel competitorSearchTextBox, boolean showSelectionCheckbox, RaceTimesInfoProvider optionalRaceTimesInfoProvider, boolean autoExpandLastRaceColumn, boolean adjustTimerDelay, boolean autoApplyTopNFilter, boolean showCompetitorFilterStatus, boolean enableSyncScroller) { super(parent, context, sailingService, asyncActionsExecutor, settings, isEmbedded, preSelectedRace, competitorSelectionProvider, timer, leaderboardGroupName, leaderboardName, errorReporter, - stringMessages, userAgent, showRaceDetails, competitorSearchTextBox, showSelectionCheckbox, + stringMessages, showRaceDetails, competitorSearchTextBox, showSelectionCheckbox, optionalRaceTimesInfoProvider, autoExpandLastRaceColumn, adjustTimerDelay, autoApplyTopNFilter, showCompetitorFilterStatus, enableSyncScroller); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboardedit/EditableLeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboardedit/EditableLeaderboardPanel.java index 4bede257e9d..25806688976 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboardedit/EditableLeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboardedit/EditableLeaderboardPanel.java @@ -585,7 +585,7 @@ public class EditableLeaderboardPanel extends LeaderboardPanel { final StringMessages stringMessages, UserAgentDetails userAgent) { super(null, null, sailingService, asyncActionsExecutor, new LeaderboardSettings(), new CompetitorSelectionModel(/* hasMultiSelection */true), - leaderboardName, errorReporter, stringMessages, userAgent, /* showRaceDetails */ true); + leaderboardName, errorReporter, stringMessages, /* showRaceDetails */ true); suppressedCompetitorsShown = new ListDataProvider(new ArrayList()); suppressedCompetitorsTable = createSuppressedCompetitorsTable(); ImageResource importIcon = resources.importIcon(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java index fc39190ae27..6e19f9014f4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java @@ -488,7 +488,7 @@ public class RaceBoardPanel extends AbstractPerspectiveComposite exte @Override protected void onChange(SettingsType result) { - String link = linkWithSettingsGenerator.createUrl(result); - shareAnchor.setHref(link); + if (linkWithSettingsGenerator != null) { + String link = linkWithSettingsGenerator.createUrl(result); + shareAnchor.setHref(link); + } } @Override diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/settings/SettingsToStringSerializer.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/settings/SettingsToStringSerializer.java index 86f7fcf550b..69559c6d1e9 100644 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/settings/SettingsToStringSerializer.java +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/settings/SettingsToStringSerializer.java @@ -23,6 +23,20 @@ public class SettingsToStringSerializer { return writeParameterMapToString(serializedValues); } + public String fromSettings(GenericSerializableSettings context, GenericSerializableSettings settings) { + Map> serializedContext = settingsToStringMapSerializer.serialize(context); + Map> serializedValues = settingsToStringMapSerializer.serialize(settings); + serializedValues.putAll(serializedContext); + return writeParameterMapToString(serializedValues); + } + + public String fromSettings(GenericSerializableSettings context, SettingsMap settings) { + Map> serializedContext = settingsToStringMapSerializer.serialize(context); + Map> serializedValues = settingsToStringMapSerializer.serialize(settings); + serializedValues.putAll(serializedContext); + return writeParameterMapToString(serializedValues); + } + private String writeParameterMapToString(Map> serializedValues) { String settingsString = ""; for (Entry> val : serializedValues.entrySet()) { @@ -38,6 +52,21 @@ public class SettingsToStringSerializer { return settingsString; } + public final void fromString( + String serializedSettings, C contextSettings, + T settings) { + Map> values = deserializeStringToMap(serializedSettings); + settingsToStringMapSerializer.deserialize(settings, values); + settingsToStringMapSerializer.deserialize(contextSettings, values); + } + + public final void fromString( + String serializedSettings, C contextSettings, T settings) { + Map> values = deserializeStringToMap(serializedSettings); + settingsToStringMapSerializer.deserializeSettingsMap(settings, values); + settingsToStringMapSerializer.deserialize(contextSettings, values); + } + public final T fromString(String serializedSettings, T settings) { Map> values = deserializeStringToMap(serializedSettings); return settingsToStringMapSerializer.deserialize(settings, values);