added breadcrumb navigation to the LeaderboardPanel

This commit is contained in:
fmittag committed 2012-02-03 18:31:55 +01:00
1 parent 6c1faa5a0b
commit 333fcab82c
10 files changed
+59 -58

No files matched your search

@@ -69,6 +69,13 @@ table td, table th {
visibility: hidden; visibility: hidden;
} }
.breadcrumbPanel-ActiveBreadcrumb, .breadcrumbPanel-InactiveBreadcrumb, .breadcrumbPanel-NextArrow {
font-size: 20px;
text-transform: uppercase;
color: #a1a1a1;
font-weight: 500;
}
.sapLogo { .sapLogo {
float: left; float: left;
margin: 13px 0 0 12px; margin: 13px 0 0 12px;
-11
View File
@@ -240,17 +240,6 @@ input.magnifier {
margin-left: 10px; margin-left: 10px;
} }
.raceBoardPanelHeader {
}
.raceBoardPanelHeader-name {
font-size: 20px;
text-transform: uppercase;
color: #a1a1a1;
font-weight: 500;
}
.raceBoardNavigation { .raceBoardNavigation {
float: right; float: right;
margin: 26px 0 0 0; margin: 26px 0 0 0;
@@ -54,7 +54,7 @@ public class AdminConsole extends AbstractEntryPoint implements EventRefresher {
tabPanel.add(raceMapPanel, stringMessages.map(), /* asHTML */ false); tabPanel.add(raceMapPanel, stringMessages.map(), /* asHTML */ false);
LeaderboardPanel defaultLeaderboardPanel = new LeaderboardPanel(sailingService, null, LeaderboardPanel defaultLeaderboardPanel = new LeaderboardPanel(sailingService, null,
new CompetitorSelectionModel(/* hasMultiSelection */true), new CompetitorSelectionModel(/* hasMultiSelection */true),
DefaultLeaderboardName.DEFAULT_LEADERBOARD_NAME, this, stringMessages); DefaultLeaderboardName.DEFAULT_LEADERBOARD_NAME, null, this, stringMessages);
defaultLeaderboardPanel.setSize("90%", "90%"); defaultLeaderboardPanel.setSize("90%", "90%");
tabPanel.add(defaultLeaderboardPanel, stringMessages.defaultLeaderboard(), /* asHTML */ false); tabPanel.add(defaultLeaderboardPanel, stringMessages.defaultLeaderboard(), /* asHTML */ false);
LeaderboardGroupConfigPanel leaderboardGroupConfigPanel = new LeaderboardGroupConfigPanel(sailingService, this, this, stringMessages); LeaderboardGroupConfigPanel leaderboardGroupConfigPanel = new LeaderboardGroupConfigPanel(sailingService, this, this, stringMessages);
@@ -1,17 +1,23 @@
package com.sap.sailing.gwt.ui.leaderboard; package com.sap.sailing.gwt.ui.leaderboard;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.google.gwt.user.client.Window; import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.RootPanel;
import com.sap.sailing.domain.common.impl.Util.Pair;
import com.sap.sailing.gwt.ui.client.AbstractEntryPoint; import com.sap.sailing.gwt.ui.client.AbstractEntryPoint;
import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel; import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel;
import com.sap.sailing.gwt.ui.client.LogoAndTitlePanel; import com.sap.sailing.gwt.ui.client.LogoAndTitlePanel;
import com.sap.sailing.gwt.ui.shared.panels.BreadcrumbPanel;
public class LeaderboardPage extends AbstractEntryPoint { public class LeaderboardPage extends AbstractEntryPoint {
private String leaderboardName;
private String leaderboardGroupName;
@Override @Override
public void onModuleLoad() { public void onModuleLoad() {
@@ -19,15 +25,10 @@ public class LeaderboardPage extends AbstractEntryPoint {
sailingService.getLeaderboardNames(new AsyncCallback<List<String>>() { sailingService.getLeaderboardNames(new AsyncCallback<List<String>>() {
@Override @Override
public void onSuccess(List<String> leaderboardNames) { public void onSuccess(List<String> leaderboardNames) {
String leaderboardName = Window.Location.getParameter("name"); leaderboardName = Window.Location.getParameter("name");
leaderboardGroupName = Window.Location.getParameter("group");
if (leaderboardNames.contains(leaderboardName)) { if (leaderboardNames.contains(leaderboardName)) {
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(stringMessages); createLeaderboardPanel();
logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
LeaderboardPanel leaderboardPanel = new LeaderboardPanel(sailingService, null,
new CompetitorSelectionModel(/* hasMultiSelection */ true), leaderboardName,
LeaderboardPage.this, stringMessages);
RootPanel.get().add(logoAndTitlePanel);
RootPanel.get().add(leaderboardPanel);
} else { } else {
RootPanel.get().add(new Label(stringMessages.noSuchLeaderboard())); RootPanel.get().add(new Label(stringMessages.noSuchLeaderboard()));
} }
@@ -39,4 +40,30 @@ public class LeaderboardPage extends AbstractEntryPoint {
} }
}); });
} }
private void createLeaderboardPanel()
{
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(stringMessages);
logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
// create the breadcrumb navigation
ArrayList<Pair<String, String>> breadcrumbLinksData = new ArrayList<Pair<String, String>>();
String debugParam = Window.Location.getParameter("gwt.codesvr");
if(leaderboardGroupName != null) {
String link = "/gwt/Spectator.html?leaderboardGroupName=" + leaderboardGroupName;
if(debugParam != null && !debugParam.isEmpty())
link += "&gwt.codesvr=" + debugParam;
breadcrumbLinksData.add(new Pair<String, String>(link, leaderboardGroupName));
}
BreadcrumbPanel breadcrumbPanel = new BreadcrumbPanel(breadcrumbLinksData, leaderboardName.toUpperCase());
LeaderboardPanel leaderboardPanel = new LeaderboardPanel(sailingService, null,
new CompetitorSelectionModel(/* hasMultiSelection */ true), leaderboardName, leaderboardGroupName,
LeaderboardPage.this, stringMessages);
RootPanel.get().add(logoAndTitlePanel);
RootPanel.get().add(breadcrumbPanel);
RootPanel.get().add(leaderboardPanel);
}
} }
@@ -28,7 +28,6 @@ import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
import com.google.gwt.user.cellview.client.ColumnSortList.ColumnSortInfo; import com.google.gwt.user.cellview.client.ColumnSortList.ColumnSortInfo;
import com.google.gwt.user.cellview.client.Header; import com.google.gwt.user.cellview.client.Header;
import com.google.gwt.user.cellview.client.TextHeader; import com.google.gwt.user.cellview.client.TextHeader;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.AbstractImagePrototype; import com.google.gwt.user.client.ui.AbstractImagePrototype;
import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Anchor;
@@ -46,7 +45,6 @@ import com.google.gwt.view.client.SelectionChangeEvent;
import com.google.gwt.view.client.SelectionChangeEvent.Handler; import com.google.gwt.view.client.SelectionChangeEvent.Handler;
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.RaceIdentifier;
import com.sap.sailing.domain.common.impl.Util.Pair;
import com.sap.sailing.gwt.ui.client.Collator; import com.sap.sailing.gwt.ui.client.Collator;
import com.sap.sailing.gwt.ui.client.CompetitorSelectionChangeListener; import com.sap.sailing.gwt.ui.client.CompetitorSelectionChangeListener;
import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider; import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider;
@@ -68,7 +66,6 @@ import com.sap.sailing.gwt.ui.shared.components.Component;
import com.sap.sailing.gwt.ui.shared.components.IsEmbeddableComponent; import com.sap.sailing.gwt.ui.shared.components.IsEmbeddableComponent;
import com.sap.sailing.gwt.ui.shared.components.SettingsDialog; import com.sap.sailing.gwt.ui.shared.components.SettingsDialog;
import com.sap.sailing.gwt.ui.shared.components.SettingsDialogComponent; import com.sap.sailing.gwt.ui.shared.components.SettingsDialogComponent;
import com.sap.sailing.gwt.ui.shared.panels.BreadcrumbPanel;
/** /**
* A leaderboard essentially consists of a table widget that in its columns displays the entries. * A leaderboard essentially consists of a table widget that in its columns displays the entries.
@@ -783,21 +780,21 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
} }
public LeaderboardPanel(SailingServiceAsync sailingService, public LeaderboardPanel(SailingServiceAsync sailingService,
CompetitorSelectionProvider competitorSelectionProvider, String leaderboardName, CompetitorSelectionProvider competitorSelectionProvider, String leaderboardName, String leaderboardGroupName,
ErrorReporter errorReporter, final StringMessages stringConstants) { ErrorReporter errorReporter, final StringMessages stringConstants) {
this(sailingService, /* preSelectedRace */ null, competitorSelectionProvider, leaderboardName, errorReporter, stringConstants); this(sailingService, /* preSelectedRace */ null, competitorSelectionProvider, leaderboardName, leaderboardGroupName, errorReporter, stringConstants);
} }
public LeaderboardPanel(SailingServiceAsync sailingService, RaceIdentifier preSelectedRace, public LeaderboardPanel(SailingServiceAsync sailingService, RaceIdentifier preSelectedRace,
CompetitorSelectionProvider competitorSelectionProvider, String leaderboardName, CompetitorSelectionProvider competitorSelectionProvider, String leaderboardName, String leaderboardGroupName,
ErrorReporter errorReporter, final StringMessages stringConstants) { ErrorReporter errorReporter, final StringMessages stringConstants) {
this(sailingService, preSelectedRace, competitorSelectionProvider, new Timer(PlayModes.Replay, /* delayBetweenAutoAdvancesInMilliseconds */3000l), this(sailingService, preSelectedRace, competitorSelectionProvider, new Timer(PlayModes.Replay, /* delayBetweenAutoAdvancesInMilliseconds */3000l),
leaderboardName, errorReporter, stringConstants); leaderboardName, leaderboardGroupName, errorReporter, stringConstants);
timer.setDelay(getDelayInMilliseconds()); // set time/delay before adding as listener timer.setDelay(getDelayInMilliseconds()); // set time/delay before adding as listener
} }
public LeaderboardPanel(SailingServiceAsync sailingService, RaceIdentifier preSelectedRace, public LeaderboardPanel(SailingServiceAsync sailingService, RaceIdentifier preSelectedRace,
CompetitorSelectionProvider competitorSelectionProvider, Timer timer, String leaderboardName, CompetitorSelectionProvider competitorSelectionProvider, Timer timer, String leaderboardName, String leaderboardGroupName,
ErrorReporter errorReporter, final StringMessages stringConstants) { ErrorReporter errorReporter, final StringMessages stringConstants) {
this.sailingService = sailingService; this.sailingService = sailingService;
this.preSelectedRace = preSelectedRace; this.preSelectedRace = preSelectedRace;
@@ -850,20 +847,6 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
listHandler = new ListHandler<LeaderboardRowDTO>(getData().getList()); listHandler = new ListHandler<LeaderboardRowDTO>(getData().getList());
getLeaderboardTable().addColumnSortHandler(listHandler); getLeaderboardTable().addColumnSortHandler(listHandler);
loadCompleteLeaderboard(getLeaderboardDisplayDate()); loadCompleteLeaderboard(getLeaderboardDisplayDate());
// create the breadcrumb navigation
// ArrayList<Pair<String, String>> breadcrumbLinksData = new ArrayList<Pair<String, String>>();
// String debugParam = Window.Location.getParameter("gwt.codesvr");
//
// if(leaderboardGroup != null) {
// String link = "/gwt/Spectator.html?leaderboardGroupName=" + leaderboardGroup.name;
// if(debugParam != null && !debugParam.isEmpty())
// link += "&gwt.codesvr=" + debugParam;
// breadcrumbLinksData.add(new Pair<String, String>(link, leaderboardGroup.name));
// }
// breadcrumbPanel = new BreadcrumbPanel(breadcrumbLinksData, selectedRaceIdentifier.getRaceName());
// mainPanel.add(breadcrumbPanel);
contentPanel = new VerticalPanel(); contentPanel = new VerticalPanel();
headerPanel = new DockPanel(); headerPanel = new DockPanel();
@@ -248,9 +248,10 @@ public class EditableLeaderboardPanel extends LeaderboardPanel {
} }
} }
public EditableLeaderboardPanel(SailingServiceAsync sailingService, String leaderboardName, public EditableLeaderboardPanel(SailingServiceAsync sailingService, String leaderboardName, String leaderboardGroupName,
ErrorReporter errorReporter, StringMessages stringConstants) { ErrorReporter errorReporter, StringMessages stringConstants) {
super(sailingService, null, new CompetitorSelectionModel(/* hasMultiSelection */ true), leaderboardName, errorReporter, stringConstants); super(sailingService, null, new CompetitorSelectionModel(/* hasMultiSelection */ true), leaderboardName, leaderboardGroupName,
errorReporter, stringConstants);
} }
/** /**
@@ -20,13 +20,8 @@ public class LeaderboardEditPage extends AbstractEntryPoint {
if (leaderboardNames.contains(leaderboardName)) { if (leaderboardNames.contains(leaderboardName)) {
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(stringMessages); LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(stringMessages);
logoAndTitlePanel.addStyleName("LogoAndTitlePanel"); logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
EditableLeaderboardPanel leaderboardPanel = new EditableLeaderboardPanel(sailingService, leaderboardName, EditableLeaderboardPanel leaderboardPanel = new EditableLeaderboardPanel(sailingService, leaderboardName, null,
LeaderboardEditPage.this, stringMessages); LeaderboardEditPage.this, stringMessages);
String padding = Window.Location.getParameter("padding");
if (padding != null && Boolean.valueOf(padding)) {
leaderboardPanel.addStyleName("leftPaddedPanel");
}
RootPanel.get().add(logoAndTitlePanel); RootPanel.get().add(logoAndTitlePanel);
RootPanel.get().add(leaderboardPanel); RootPanel.get().add(leaderboardPanel);
} else { } else {
@@ -138,7 +138,7 @@ public class RaceBoardEntryPoint extends AbstractEntryPoint {
RaceSelectionModel raceSelectionModel = new RaceSelectionModel(); RaceSelectionModel raceSelectionModel = new RaceSelectionModel();
List<RaceIdentifier> singletonList = Collections.singletonList(selectedRace.getRaceIdentifier()); List<RaceIdentifier> singletonList = Collections.singletonList(selectedRace.getRaceIdentifier());
raceSelectionModel.setSelection(singletonList); raceSelectionModel.setSelection(singletonList);
raceBoardPanel = new RaceBoardPanel(sailingService, raceSelectionModel, leaderboardName, leaderboardGroup, raceBoardPanel = new RaceBoardPanel(sailingService, raceSelectionModel, leaderboardName, leaderboardGroup.name,
RaceBoardEntryPoint.this, stringMessages); RaceBoardEntryPoint.this, stringMessages);
raceBoardPanel.fillEvents(events); raceBoardPanel.fillEvents(events);
@@ -35,7 +35,6 @@ import com.sap.sailing.gwt.ui.client.Timer.PlayModes;
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.LeaderboardSettings;
import com.sap.sailing.gwt.ui.shared.EventDTO; import com.sap.sailing.gwt.ui.shared.EventDTO;
import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO;
import com.sap.sailing.gwt.ui.shared.LegTimepointDTO; import com.sap.sailing.gwt.ui.shared.LegTimepointDTO;
import com.sap.sailing.gwt.ui.shared.RaceDTO; import com.sap.sailing.gwt.ui.shared.RaceDTO;
import com.sap.sailing.gwt.ui.shared.RegattaDTO; import com.sap.sailing.gwt.ui.shared.RegattaDTO;
@@ -69,7 +68,7 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel
private final RaceSelectionProvider raceSelectionProvider; private final RaceSelectionProvider raceSelectionProvider;
public RaceBoardPanel(SailingServiceAsync sailingService, RaceSelectionProvider raceSelectionProvider, String leaderboardName, public RaceBoardPanel(SailingServiceAsync sailingService, RaceSelectionProvider raceSelectionProvider, String leaderboardName,
LeaderboardGroupDTO leaderboardGroup, ErrorReporter errorReporter, final StringMessages stringMessages) { String leaderboardGroupName, ErrorReporter errorReporter, final StringMessages stringMessages) {
this.sailingService = sailingService; this.sailingService = sailingService;
this.raceSelectionProvider = raceSelectionProvider; this.raceSelectionProvider = raceSelectionProvider;
raceSelectionProvider.addRaceSelectionChangeListener(this); raceSelectionProvider.addRaceSelectionChangeListener(this);
@@ -89,11 +88,11 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel
ArrayList<Pair<String, String>> breadcrumbLinksData = new ArrayList<Pair<String, String>>(); ArrayList<Pair<String, String>> breadcrumbLinksData = new ArrayList<Pair<String, String>>();
String debugParam = Window.Location.getParameter("gwt.codesvr"); String debugParam = Window.Location.getParameter("gwt.codesvr");
if(leaderboardGroup != null) { if(leaderboardGroupName != null) {
String link = "/gwt/Spectator.html?leaderboardGroupName=" + leaderboardGroup.name; String link = "/gwt/Spectator.html?leaderboardGroupName=" + leaderboardGroupName;
if(debugParam != null && !debugParam.isEmpty()) if(debugParam != null && !debugParam.isEmpty())
link += "&gwt.codesvr=" + debugParam; link += "&gwt.codesvr=" + debugParam;
breadcrumbLinksData.add(new Pair<String, String>(link, leaderboardGroup.name)); breadcrumbLinksData.add(new Pair<String, String>(link, leaderboardGroupName));
} }
breadcrumbPanel = new BreadcrumbPanel(breadcrumbLinksData, selectedRaceIdentifier.getRaceName()); breadcrumbPanel = new BreadcrumbPanel(breadcrumbLinksData, selectedRaceIdentifier.getRaceName());
mainPanel.add(breadcrumbPanel); mainPanel.add(breadcrumbPanel);
@@ -103,7 +102,7 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel
// create the default leaderboard and select the right race // create the default leaderboard and select the right race
LeaderboardPanel leaderboardPanel = new LeaderboardPanel(sailingService, selectedRaceIdentifier, competitorSelectionModel, LeaderboardPanel leaderboardPanel = new LeaderboardPanel(sailingService, selectedRaceIdentifier, competitorSelectionModel,
timer, leaderboardName, errorReporter, stringMessages); timer, leaderboardName, leaderboardGroupName, errorReporter, stringMessages);
CollapsableComponentViewer<LeaderboardSettings> leaderboardViewer = new CollapsableComponentViewer<LeaderboardSettings>( CollapsableComponentViewer<LeaderboardSettings> leaderboardViewer = new CollapsableComponentViewer<LeaderboardSettings>(
leaderboardPanel, "100%", "100%", stringMessages); leaderboardPanel, "100%", "100%", stringMessages);
@@ -480,7 +480,7 @@ public class OverviewEventPanel extends AbstractEventPanel {
currentLeaderboard = boardToDisplay; currentLeaderboard = boardToDisplay;
CompetitorSelectionModel competitorSelectionModel = new CompetitorSelectionModel(true); CompetitorSelectionModel competitorSelectionModel = new CompetitorSelectionModel(true);
displayedLeaderboardPanel = new LeaderboardPanel(sailingService, competitorSelectionModel, displayedLeaderboardPanel = new LeaderboardPanel(sailingService, competitorSelectionModel,
currentLeaderboard.name, errorReporter, stringConstants); currentLeaderboard.name, null, errorReporter, stringConstants);
leaderboardPanel.add(displayedLeaderboardPanel); leaderboardPanel.add(displayedLeaderboardPanel);
} }
} }