mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-25 05:23:51 +00:00
Leaderboard inheritance for lifecycles introduced, to ensure only relevant settingtabs are shown
This commit is contained in:
1 parent
8234b1f196
commit
9da53463c9
15 files changed
+94
-44
No files matched your search
+2
@@ -1775,4 +1775,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String eventRegattaHeaderLegendAudioNo();
|
||||
String set();
|
||||
String gribWindImport_Title();
|
||||
|
||||
String leaderboardPage();
|
||||
}
|
||||
+2
-1
@@ -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
|
||||
+2
-1
@@ -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
|
||||
+16
-8
@@ -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
|
||||
|
||||
+3
-1
@@ -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,
|
||||
|
||||
+1
-1
@@ -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) {
|
||||
|
||||
+20
-6
@@ -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<>(
|
||||
|
||||
+2
-16
@@ -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
|
||||
|
||||
+5
-2
@@ -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,
|
||||
|
||||
+20
@@ -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;
|
||||
}
|
||||
}
|
||||
+9
-6
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
+5
@@ -19,4 +19,9 @@ public class MultiLeaderboardPanelLifecycle extends LeaderboardPanelLifecycle {
|
||||
public LeaderboardSettings extractContextSettings(LeaderboardSettings leaderboardSettings) {
|
||||
return createDefaultSettings();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getLocalizedShortName() {
|
||||
return StringMessages.INSTANCE.regattaLeaderboards();
|
||||
}
|
||||
}
|
||||
+5
@@ -16,4 +16,9 @@ public class OverallLeaderboardPanelLifecycle extends LeaderboardPanelLifecycle
|
||||
return ID;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getLocalizedShortName() {
|
||||
return StringMessages.INSTANCE.overallLeaderboard();
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -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> {
|
||||
|
||||
/**
|
||||
|
||||
+1
-1
@@ -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());
|
||||
|
||||
Reference in new issue
Block a user