created a shared tabview which ensures for the competitor chart tab and the regatta leaderboard tab that in any case a leaderboardPanel is created

This commit is contained in:
fmittag committed 2015-05-05 18:19:13 +02:00
1 parent 21a9fbd631
commit bc2eb6505c
3 files changed
+76 -55

No files matched your search

@@ -8,25 +8,31 @@ import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.Window; import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.AcceptsOneWidget; import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.HTMLPanel;
import com.sap.sailing.domain.common.DetailType; import com.sap.sailing.domain.common.DetailType;
import com.sap.sailing.domain.common.RaceIdentifier;
import com.sap.sailing.domain.common.dto.LeaderboardDTO;
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView;
import com.sap.sailing.gwt.home.client.place.event.oldcompetitorcharts.OldCompetitorCharts; import com.sap.sailing.gwt.home.client.place.event.oldcompetitorcharts.OldCompetitorCharts;
import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView; import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView;
import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaAnalyticsDataManager;
import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaTabView;
import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter; import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter;
import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaAnalyticsDataManager;
import com.sap.sailing.gwt.home.client.shared.placeholder.Placeholder; import com.sap.sailing.gwt.home.client.shared.placeholder.Placeholder;
/** /**
* Created by pgtaboada on 25.11.14. * Created by pgtaboada on 25.11.14.
*/ */
public class RegattaCompetitorAnalyticsTabView extends Composite implements public class RegattaCompetitorAnalyticsTabView extends SharedLeaderboardRegattaTabView<RegattaCompetitorAnalyticsPlace> {
RegattaTabView<RegattaCompetitorAnalyticsPlace> {
interface MyBinder extends UiBinder<HTMLPanel, RegattaCompetitorAnalyticsTabView> {
}
private static MyBinder ourUiBinder = GWT.create(MyBinder.class);
private Presenter currentPresenter;
public RegattaCompetitorAnalyticsTabView() { public RegattaCompetitorAnalyticsTabView() {
super();
} }
@UiField @UiField
@@ -44,17 +50,15 @@ public class RegattaCompetitorAnalyticsTabView extends Composite implements
@Override @Override
public void start(RegattaCompetitorAnalyticsPlace myPlace, AcceptsOneWidget contentArea) { public void start(RegattaCompetitorAnalyticsPlace myPlace, AcceptsOneWidget contentArea) {
contentArea.setWidget(new Placeholder()); contentArea.setWidget(new Placeholder());
String regattaId = myPlace.getRegattaId(); String regattaId = myPlace.getRegattaId();
if (regattaId != null && !regattaId.isEmpty()) { if (regattaId != null && !regattaId.isEmpty()) {
String leaderboardName = regattaId; String leaderboardName = regattaId;
RegattaAnalyticsDataManager regattaAnalyticsManager = currentPresenter.getCtx().getRegattaAnalyticsManager();
RegattaAnalyticsDataManager regattaAnalyticsManager = currentPresenter.getCtx() if(regattaAnalyticsManager.getLeaderboardPanel() == null) {
.getRegattaAnalyticsManager(); createSharedLeaderboardPanel(leaderboardName, regattaAnalyticsManager);
}
initWidget(ourUiBinder.createAndBindUi(this)); initWidget(ourUiBinder.createAndBindUi(this));
@@ -79,15 +83,8 @@ public class RegattaCompetitorAnalyticsTabView extends Composite implements
@Override @Override
public void stop() { public void stop() {
} }
interface MyBinder extends UiBinder<HTMLPanel, RegattaCompetitorAnalyticsTabView> {
}
private static MyBinder ourUiBinder = GWT.create(MyBinder.class);
private Presenter currentPresenter;
@Override @Override
public RegattaCompetitorAnalyticsPlace placeToFire() { public RegattaCompetitorAnalyticsPlace placeToFire() {
return new RegattaCompetitorAnalyticsPlace(currentPresenter.getCtx()); return new RegattaCompetitorAnalyticsPlace(currentPresenter.getCtx());
@@ -104,4 +101,12 @@ public class RegattaCompetitorAnalyticsTabView extends Composite implements
return width <= 720; return width <= 720;
} }
@Override
public void updatedLeaderboard(LeaderboardDTO leaderboard) {
}
@Override
public void currentRaceSelected(RaceIdentifier raceIdentifier, RaceColumnDTO raceColumn) {
}
} }
@@ -3,13 +3,10 @@ package com.sap.sailing.gwt.home.client.place.event.regatta.tabs;
import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.AcceptsOneWidget; import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Label;
import com.sap.sailing.domain.common.RaceIdentifier; import com.sap.sailing.domain.common.RaceIdentifier;
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.LeaderboardDTO;
import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO;
import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView;
@@ -17,30 +14,26 @@ import com.sap.sailing.gwt.home.client.place.event.oldleaderboard.OldLeaderboard
import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView; import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView;
import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter; import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter;
import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaAnalyticsDataManager; import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaAnalyticsDataManager;
import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaTabView;
import com.sap.sailing.gwt.home.client.place.event.utils.EventParamUtils;
import com.sap.sailing.gwt.home.client.shared.placeholder.Placeholder; import com.sap.sailing.gwt.home.client.shared.placeholder.Placeholder;
import com.sap.sailing.gwt.ui.client.LeaderboardUpdateListener;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardUrlSettings;
import com.sap.sailing.gwt.ui.shared.general.EventState; import com.sap.sailing.gwt.ui.shared.general.EventState;
import com.sap.sse.gwt.shared.GwtHttpRequestUtils;
/** /**
* Created by pgtaboada on 25.11.14. * Created by pgtaboada on 25.11.14.
*/ */
public class RegattaLeaderboardTabView extends Composite implements RegattaTabView<RegattaLeaderboardPlace>, public class RegattaLeaderboardTabView extends SharedLeaderboardRegattaTabView<RegattaLeaderboardPlace> {
LeaderboardUpdateListener { interface MyBinder extends UiBinder<HTMLPanel, RegattaLeaderboardTabView> {
}
private static MyBinder ourUiBinder = GWT.create(MyBinder.class);
private Presenter currentPresenter; private Presenter currentPresenter;
@UiField @UiField
protected OldLeaderboard leaderboard; protected OldLeaderboard leaderboard;
public RegattaLeaderboardTabView() { public RegattaLeaderboardTabView() {
super();
} }
@Override @Override
@@ -65,23 +58,12 @@ public class RegattaLeaderboardTabView extends Composite implements RegattaTabVi
if (regattaId != null && !regattaId.isEmpty()) { if (regattaId != null && !regattaId.isEmpty()) {
String leaderboardName = regattaId; String leaderboardName = regattaId;
RegattaAnalyticsDataManager regattaAnalyticsManager = currentPresenter.getCtx().getRegattaAnalyticsManager(); RegattaAnalyticsDataManager regattaAnalyticsManager = currentPresenter.getCtx().getRegattaAnalyticsManager();
boolean autoExpandLastRaceColumn = GwtHttpRequestUtils.getBooleanParameter( LeaderboardPanel leaderboardPanel = regattaAnalyticsManager.getLeaderboardPanel();
LeaderboardUrlSettings.PARAM_AUTO_EXPAND_LAST_RACE_COLUMN, false); if(leaderboardPanel == null) {
final LeaderboardSettings leaderboardSettings = EventParamUtils leaderboardPanel = createSharedLeaderboardPanel(leaderboardName, regattaAnalyticsManager);
.createLeaderboardSettingsFromURLParameters(Window.Location }
.getParameterMap());
final RegattaAndRaceIdentifier preselectedRace = EventParamUtils
.getPreselectedRace(Window.Location.getParameterMap());
LeaderboardPanel leaderboardPanel = regattaAnalyticsManager.createLeaderboardPanel( //
leaderboardSettings, //
preselectedRace, //
"leaderboardGroupName", // TODO: keep using magic string? ask frank!
leaderboardName, //
true,
autoExpandLastRaceColumn);
initWidget(ourUiBinder.createAndBindUi(this)); initWidget(ourUiBinder.createAndBindUi(this));
leaderboard.setLeaderboard(leaderboardPanel, currentPresenter.getAutoRefreshTimer()); leaderboard.setLeaderboard(leaderboardPanel, currentPresenter.getAutoRefreshTimer());
leaderboardPanel.addLeaderboardUpdateListener(this);
if (currentPresenter.getCtx().getEventDTO().getState() == EventState.RUNNING) { if (currentPresenter.getCtx().getEventDTO().getState() == EventState.RUNNING) {
// TODO: start autorefresh? // TODO: start autorefresh?
} }
@@ -105,22 +87,14 @@ public class RegattaLeaderboardTabView extends Composite implements RegattaTabVi
@Override @Override
public void currentRaceSelected(RaceIdentifier raceIdentifier, RaceColumnDTO raceColumn) { public void currentRaceSelected(RaceIdentifier raceIdentifier, RaceColumnDTO raceColumn) {
} }
@Override @Override
public void stop() { public void stop() {
} }
interface MyBinder extends UiBinder<HTMLPanel, RegattaLeaderboardTabView> {
}
private static MyBinder ourUiBinder = GWT.create(MyBinder.class);
@Override @Override
public RegattaLeaderboardPlace placeToFire() { public RegattaLeaderboardPlace placeToFire() {
return new RegattaLeaderboardPlace(currentPresenter.getCtx()); return new RegattaLeaderboardPlace(currentPresenter.getCtx());
} }
} }
@@ -0,0 +1,42 @@
package com.sap.sailing.gwt.home.client.place.event.regatta.tabs;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Composite;
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace;
import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaAnalyticsDataManager;
import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaTabView;
import com.sap.sailing.gwt.home.client.place.event.utils.EventParamUtils;
import com.sap.sailing.gwt.ui.client.LeaderboardUpdateListener;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardUrlSettings;
import com.sap.sse.gwt.shared.GwtHttpRequestUtils;
/**
* A regatta tab view which some shared functions between leaderboard tab and competitor
*/
public abstract class SharedLeaderboardRegattaTabView<T extends AbstractEventRegattaPlace> extends Composite implements RegattaTabView<T>,
LeaderboardUpdateListener {
public SharedLeaderboardRegattaTabView() {
}
public LeaderboardPanel createSharedLeaderboardPanel(String leaderboardName, RegattaAnalyticsDataManager regattaAnalyticsManager) {
boolean autoExpandLastRaceColumn = GwtHttpRequestUtils.getBooleanParameter(
LeaderboardUrlSettings.PARAM_AUTO_EXPAND_LAST_RACE_COLUMN, false);
final LeaderboardSettings leaderboardSettings = EventParamUtils
.createLeaderboardSettingsFromURLParameters(Window.Location.getParameterMap());
final RegattaAndRaceIdentifier preselectedRace = EventParamUtils.getPreselectedRace(Window.Location.getParameterMap());
LeaderboardPanel leaderboardPanel = regattaAnalyticsManager.createLeaderboardPanel( //
leaderboardSettings, //
preselectedRace, //
"leaderboardGroupName", // TODO: keep using magic string? ask frank!
leaderboardName, //
true,
autoExpandLastRaceColumn);
leaderboardPanel.addLeaderboardUpdateListener(this);
return leaderboardPanel;
}
}