Leaderboard inheritance for lifecycles introduced, to ensure only relevant settingtabs are shown

This commit is contained in:
Kai Boernert committed 2017-02-13 17:48:28 +01:00
1 parent 8234b1f196
commit 9da53463c9
15 files changed
+94 -44

No files matched your search

@@ -1775,4 +1775,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
String eventRegattaHeaderLegendAudioNo();
String set();
String gribWindImport_Title();
String leaderboardPage();
}
@@ -1748,4 +1748,5 @@ eventRegattaHeaderLegendGpsNo=No tracking data
eventRegattaHeaderLegendWindNo=No wind data
eventRegattaHeaderLegendVideoNo=No video streams
eventRegattaHeaderLegendAudioNo=No audio streams
sharedSettingsLink=Link with settings
sharedSettingsLink=Link with settings
leaderboardPage=LeaderboardPage
@@ -1733,4 +1733,5 @@ eventRegattaHeaderLegendGpsNo=Keine Trackinginformationen
eventRegattaHeaderLegendWindNo=Keine Winddaten
eventRegattaHeaderLegendVideoNo=Keine Videostreams
eventRegattaHeaderLegendAudioNo=Keine Audiostreams
sharedSettingsLink=Link mit Settings
sharedSettingsLink=Link mit Settings
leaderboardPage=Ranglisten-Seite
@@ -7,14 +7,9 @@ import com.sap.sse.gwt.client.shared.perspective.AbstractPerspectiveLifecycle;
public abstract class AbstractLeaderboardPerspectiveLifecycle extends AbstractPerspectiveLifecycle<LeaderboardPerspectiveOwnSettings> {
public AbstractLeaderboardPerspectiveLifecycle(StringMessages stringMessages) {
this(stringMessages, null);
}
public AbstractLeaderboardPerspectiveLifecycle(StringMessages stringMessages, AbstractLeaderboardDTO leaderboard) {
protected AbstractLeaderboardPerspectiveLifecycle(StringMessages stringMessages,
AbstractLeaderboardDTO leaderboard) {
addLifeCycle(new LeaderboardPanelLifecycle(leaderboard, stringMessages));
addLifeCycle(new MultiLeaderboardPanelLifecycle(null, stringMessages));
addLifeCycle(new OverallLeaderboardPanelLifecycle(null, stringMessages));
}
@Override
@@ -35,9 +30,22 @@ public abstract class AbstractLeaderboardPerspectiveLifecycle extends AbstractPe
return null;
}
@Override
protected LeaderboardPerspectiveOwnSettings extractOwnGlobalSettings(LeaderboardPerspectiveOwnSettings settings) {
return new LeaderboardPerspectiveOwnSettings(settings.isShowRaceDetails(), settings.isHideToolbar(),
settings.isAutoExpandLastRaceColumn(), settings.isShowCharts(), settings.isShowOverallLeaderboard(),
settings.isShowSeriesLeaderboards());
}
@Override
protected LeaderboardPerspectiveOwnSettings extractOwnContextSettings(LeaderboardPerspectiveOwnSettings settings) {
LeaderboardPerspectiveOwnSettings defaultSet = createPerspectiveOwnDefaultSettings();
return defaultSet;
}
@Override
public String getLocalizedShortName() {
return null;
return StringMessages.INSTANCE.leaderboardPage();
}
@Override
@@ -21,6 +21,7 @@ import com.sap.sse.gwt.client.shared.components.Component;
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.AbstractPerspectiveComposite;
import com.sap.sse.gwt.client.shared.perspective.ComponentContext;
import com.sap.sse.gwt.client.shared.perspective.PerspectiveCompositeSettings;
/**
@@ -42,7 +43,8 @@ public abstract class AbstractLeaderboardViewer<PL extends AbstractLeaderboardPe
protected final boolean hideToolbar;
public AbstractLeaderboardViewer(Component<?> parent, AbstractLeaderboardComponentContext<PL> componentContext,
public AbstractLeaderboardViewer(Component<?> parent,
ComponentContext<PL, PerspectiveCompositeSettings<LeaderboardPerspectiveOwnSettings>> componentContext,
PL lifecycle,
PerspectiveCompositeSettings<LeaderboardPerspectiveOwnSettings> settings,
CompetitorSelectionModel competitorSelectionProvider, AsyncActionsExecutor asyncActionsExecutor,
@@ -4,7 +4,7 @@ import com.sap.sse.gwt.client.shared.perspective.PerspectiveCompositeSettings;
import com.sap.sse.gwt.client.shared.perspective.SettingsStorageManager;
public class LeaderboardComponentContext
extends AbstractLeaderboardComponentContext<LeaderboardPerspectiveLifecycle> {
extends AbstractLeaderboardComponentContext<AbstractLeaderboardPerspectiveLifecycle> {
public LeaderboardComponentContext(LeaderboardPerspectiveLifecycle rootLifecycle,
SettingsStorageManager<PerspectiveCompositeSettings<LeaderboardPerspectiveOwnSettings>> settingsStorageManager) {
@@ -34,6 +34,7 @@ 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.AbstractComponentContextWithSettingsStorage;
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;
@@ -52,7 +53,6 @@ public class LeaderboardEntryPoint extends AbstractSailingEntryPoint {
private LeaderboardType leaderboardType;
private EventDTO event;
private LeaderboardComponentContext context;
private UserSettingsStorageManager<PerspectiveCompositeSettings<LeaderboardPerspectiveOwnSettings>> settingsManager;
@Override
@@ -126,8 +126,7 @@ public class LeaderboardEntryPoint extends AbstractSailingEntryPoint {
}
private void createUI(LeaderboardContextSettings leaderboardContextSettings, EventDTO event) {
LeaderboardPerspectiveLifecycle rootComponentLifeCycle = new LeaderboardPerspectiveLifecycle(
StringMessages.INSTANCE);
DockLayoutPanel mainPanel = new DockLayoutPanel(Unit.PX);
RootLayoutPanel.get().add(mainPanel);
@@ -145,7 +144,6 @@ public class LeaderboardEntryPoint extends AbstractSailingEntryPoint {
settingsManager = new UserSettingsStorageManager<>(getUserService(),
UserSettingsStorageManager.buildContextDefinitionId("LeaderboardEntryPoint"), leaderboardName);
context = new LeaderboardComponentContext(rootComponentLifeCycle, settingsManager);
ScrollPanel contentScrollPanel = new ScrollPanel();
long delayBetweenAutoAdvancesInMilliseconds = DEFAULT_REFRESH_INTERVAL_MILLIS;
@@ -171,7 +169,13 @@ public class LeaderboardEntryPoint extends AbstractSailingEntryPoint {
// make a single live request as the default but don't continue to play by default
if (leaderboardType.isMetaLeaderboard()) {
// overall
MetaLeaderboardPerspectiveLifecycle rootComponentLifeCycle = new MetaLeaderboardPerspectiveLifecycle(
StringMessages.INSTANCE);
AbstractComponentContextWithSettingsStorage<MetaLeaderboardPerspectiveLifecycle, PerspectiveCompositeSettings<LeaderboardPerspectiveOwnSettings>> context = new AbstractComponentContextWithSettingsStorage<>(
rootComponentLifeCycle,
settingsManager);
context.initInitialSettings(
new OnSettingsLoadedCallback<PerspectiveCompositeSettings<LeaderboardPerspectiveOwnSettings>>() {
@Override
@@ -192,6 +196,12 @@ public class LeaderboardEntryPoint extends AbstractSailingEntryPoint {
}
});
} else {
LeaderboardPerspectiveLifecycle rootComponentLifeCycle = new LeaderboardPerspectiveLifecycle(
StringMessages.INSTANCE);
AbstractComponentContextWithSettingsStorage<LeaderboardPerspectiveLifecycle, PerspectiveCompositeSettings<LeaderboardPerspectiveOwnSettings>> context = new AbstractComponentContextWithSettingsStorage<>(
rootComponentLifeCycle,
settingsManager);
context.initInitialSettings(
new OnSettingsLoadedCallback<PerspectiveCompositeSettings<LeaderboardPerspectiveOwnSettings>>() {
@Override
@@ -347,8 +357,12 @@ public class LeaderboardEntryPoint extends AbstractSailingEntryPoint {
* @see LeaderboardEntryPoint#getUrl(String, LeaderboardSettings, boolean)
*/
public static void openUrlConfigurationDialog(final AbstractLeaderboardDTO leaderboard) {
final LeaderboardPerspectiveLifecycle lifeCycle = new LeaderboardPerspectiveLifecycle(
StringMessages.INSTANCE, leaderboard);
final AbstractLeaderboardPerspectiveLifecycle lifeCycle;
if (leaderboard.type.isMetaLeaderboard()) {
lifeCycle = new MetaLeaderboardPerspectiveLifecycle(StringMessages.INSTANCE, leaderboard);
} else {
lifeCycle = new LeaderboardPerspectiveLifecycle(StringMessages.INSTANCE, leaderboard);
}
final LeaderboardContextSettings leaderboardContextSettings = new LeaderboardContextSettings(leaderboard.name,
leaderboard.getDisplayName());
final LinkWithSettingsGenerator<PerspectiveCompositeSettings<LeaderboardPerspectiveOwnSettings>> linkWithSettingsGenerator = new LinkWithSettingsGenerator<>(
@@ -4,27 +4,13 @@ import com.sap.sailing.domain.common.dto.AbstractLeaderboardDTO;
import com.sap.sailing.gwt.ui.client.StringMessages;
public class LeaderboardPerspectiveLifecycle extends AbstractLeaderboardPerspectiveLifecycle {
public static final String ID = "LeaderboardPerspectiveLifecycle";
public LeaderboardPerspectiveLifecycle(StringMessages stringMessages) {
super(stringMessages);
this(stringMessages, null);
}
public LeaderboardPerspectiveLifecycle(StringMessages stringMessages, AbstractLeaderboardDTO leaderboard) {
super(stringMessages, leaderboard);
}
@Override
protected LeaderboardPerspectiveOwnSettings extractOwnGlobalSettings(LeaderboardPerspectiveOwnSettings settings) {
return new LeaderboardPerspectiveOwnSettings(settings.isShowRaceDetails(), settings.isHideToolbar(),
settings.isAutoExpandLastRaceColumn(), settings.isShowCharts(), settings.isShowOverallLeaderboard(),
settings.isShowSeriesLeaderboards());
}
@Override
protected LeaderboardPerspectiveOwnSettings extractOwnContextSettings(LeaderboardPerspectiveOwnSettings settings) {
LeaderboardPerspectiveOwnSettings defaultSet = createPerspectiveOwnDefaultSettings();
return defaultSet;
addLifeCycle(new OverallLeaderboardPanelLifecycle(null, stringMessages));
}
@Override
@@ -16,6 +16,7 @@ import com.sap.sse.gwt.client.async.AsyncActionsExecutor;
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
import com.sap.sse.gwt.client.player.Timer;
import com.sap.sse.gwt.client.shared.components.Component;
import com.sap.sse.gwt.client.shared.perspective.ComponentContext;
import com.sap.sse.gwt.client.shared.perspective.PerspectiveCompositeSettings;
import com.sap.sse.gwt.client.useragent.UserAgentDetails;
@@ -28,7 +29,8 @@ public class LeaderboardViewer extends AbstractLeaderboardViewer<LeaderboardPers
private final MultiCompetitorLeaderboardChart multiCompetitorChart;
private LeaderboardPanel overallLeaderboardPanel;
public LeaderboardViewer(Component<?> parent, LeaderboardComponentContext componentContext,
public LeaderboardViewer(Component<?> parent,
ComponentContext<LeaderboardPerspectiveLifecycle, PerspectiveCompositeSettings<LeaderboardPerspectiveOwnSettings>> componentContext,
LeaderboardPerspectiveLifecycle lifecycle,
PerspectiveCompositeSettings<LeaderboardPerspectiveOwnSettings> settings,
final SailingServiceAsync sailingService, final AsyncActionsExecutor asyncActionsExecutor,
@@ -41,7 +43,8 @@ public class LeaderboardViewer extends AbstractLeaderboardViewer<LeaderboardPers
stringMessages, userAgent, chartDetailType);
}
private LeaderboardViewer(Component<?> parent, LeaderboardComponentContext componentContext,
private LeaderboardViewer(Component<?> parent,
ComponentContext<LeaderboardPerspectiveLifecycle, PerspectiveCompositeSettings<LeaderboardPerspectiveOwnSettings>> componentContext,
LeaderboardPerspectiveLifecycle lifecycle,
PerspectiveCompositeSettings<LeaderboardPerspectiveOwnSettings> settings,
CompetitorSelectionModel competitorSelectionModel,
@@ -0,0 +1,20 @@
package com.sap.sailing.gwt.ui.leaderboard;
import com.sap.sailing.domain.common.dto.AbstractLeaderboardDTO;
import com.sap.sailing.gwt.ui.client.StringMessages;
public class MetaLeaderboardPerspectiveLifecycle extends AbstractLeaderboardPerspectiveLifecycle {
public MetaLeaderboardPerspectiveLifecycle(StringMessages stringMessages) {
this(stringMessages, null);
}
public MetaLeaderboardPerspectiveLifecycle(StringMessages stringMessages, AbstractLeaderboardDTO leaderboard) {
super(stringMessages, leaderboard);
addLifeCycle(new MultiLeaderboardPanelLifecycle(null, stringMessages));
}
@Override
public boolean hasSettings() {
return true;
}
}
@@ -13,6 +13,7 @@ import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.async.AsyncActionsExecutor;
import com.sap.sse.gwt.client.player.Timer;
import com.sap.sse.gwt.client.shared.components.Component;
import com.sap.sse.gwt.client.shared.perspective.ComponentContext;
import com.sap.sse.gwt.client.shared.perspective.PerspectiveCompositeSettings;
import com.sap.sse.gwt.client.useragent.UserAgentDetails;
@@ -23,13 +24,14 @@ import com.sap.sse.gwt.client.useragent.UserAgentDetails;
* @author Frank Mittag (c163874)
* @author Axel Uhl (d043530)
*/
public class MetaLeaderboardViewer extends AbstractLeaderboardViewer<LeaderboardPerspectiveLifecycle> {
public class MetaLeaderboardViewer extends AbstractLeaderboardViewer<MetaLeaderboardPerspectiveLifecycle> {
private final MultiLeaderboardProxyPanel multiLeaderboardPanel;
private final MultiCompetitorLeaderboardChart multiCompetitorChart;
public MetaLeaderboardViewer(Component<?> parent, LeaderboardComponentContext componentContext,
LeaderboardPerspectiveLifecycle lifecycle,
public MetaLeaderboardViewer(Component<?> parent,
ComponentContext<MetaLeaderboardPerspectiveLifecycle, PerspectiveCompositeSettings<LeaderboardPerspectiveOwnSettings>> componentContext,
MetaLeaderboardPerspectiveLifecycle lifecycle,
PerspectiveCompositeSettings<LeaderboardPerspectiveOwnSettings> settings,
SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor,
Timer timer, String preselectedLeaderboardName, RegattaAndRaceIdentifier preselectedRace,
@@ -41,8 +43,9 @@ public class MetaLeaderboardViewer extends AbstractLeaderboardViewer<Leaderboard
errorReporter, stringMessages, userAgent, chartDetailType);
}
private MetaLeaderboardViewer(Component<?> parent, LeaderboardComponentContext componentContext,
LeaderboardPerspectiveLifecycle lifecycle,
private MetaLeaderboardViewer(Component<?> parent,
ComponentContext<MetaLeaderboardPerspectiveLifecycle, PerspectiveCompositeSettings<LeaderboardPerspectiveOwnSettings>> componentContext,
MetaLeaderboardPerspectiveLifecycle lifecycle,
PerspectiveCompositeSettings<LeaderboardPerspectiveOwnSettings> settings,
CompetitorSelectionModel competitorSelectionModel, SailingServiceAsync sailingService,
AsyncActionsExecutor asyncActionsExecutor, Timer timer,
@@ -100,7 +103,7 @@ public class MetaLeaderboardViewer extends AbstractLeaderboardViewer<Leaderboard
@Override
public String getId() {
return LeaderboardPerspectiveLifecycle.ID;
return null;
}
}
@@ -19,4 +19,9 @@ public class MultiLeaderboardPanelLifecycle extends LeaderboardPanelLifecycle {
public LeaderboardSettings extractContextSettings(LeaderboardSettings leaderboardSettings) {
return createDefaultSettings();
}
@Override
public String getLocalizedShortName() {
return StringMessages.INSTANCE.regattaLeaderboards();
}
}
@@ -16,4 +16,9 @@ public class OverallLeaderboardPanelLifecycle extends LeaderboardPanelLifecycle
return ID;
}
@Override
public String getLocalizedShortName() {
return StringMessages.INSTANCE.overallLeaderboard();
}
}
@@ -40,7 +40,7 @@ import com.sap.sse.gwt.client.shared.components.ComponentLifecycle;
* The {@link Settings} type of the settings of the root component/perspective containing all the settings
* for itself and its subcomponents
*/
public abstract class AbstractComponentContextWithSettingsStorage<L extends ComponentLifecycle<S, ?>, S extends Settings>
public class AbstractComponentContextWithSettingsStorage<L extends ComponentLifecycle<S, ?>, S extends Settings>
extends SimpleComponentContext<L, S> {
/**
@@ -25,7 +25,7 @@ public abstract class AbstractPerspectiveLifecycle<PS extends Settings> implemen
componentLifecycles = new ArrayList<>();
}
protected void addLifeCycle(ComponentLifecycle<?, ?> cycle) {
protected final void addLifeCycle(ComponentLifecycle<?, ?> cycle) {
for (ComponentLifecycle<?, ?> old : componentLifecycles) {
if (old.getComponentId().equals(cycle.getComponentId())) {
throw new IllegalStateException("LifeCycle with duplicate ID " + cycle.getComponentId());