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 dc7c89eecd2..d9b9681c817 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 @@ -286,8 +286,8 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta for (ExpandableSortableColumn expandableSortableColumn : columnsToExpandAgain) { expandableSortableColumn.toggleExpansion(); } - if (newSettings.getSortByColumn() != null) { - sort(newSettings.getSortByColumn(), true); + if (newSettings.getNameOfRaceToSort() != null) { + sort(getRaceColumnByRaceName(newSettings.getNameOfRaceToSort()), /* ascending */ true); } } @@ -973,11 +973,22 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta } contentPanel.add(getLeaderboardTable()); setWidget(contentPanel); - if (settings.getSortByColumn() != null) { - sort(settings.getSortByColumn(), settings.isSortAscending()); + if (settings.getNameOfRaceToSort() != null) { + RaceColumn column = getRaceColumnByRaceName(settings.getNameOfRaceToSort()); + sort(column, settings.isSortAscending()); } } + private RaceColumn getRaceColumnByRaceName(String raceName) { + for (int i=0; i column = getLeaderboardTable().getColumn(i); + if (column instanceof RaceColumn && ((RaceColumn) column).getRaceName().equals(raceName)) { + return (RaceColumn) column; + } + } + return null; + } + private SafeHtml getPlayPauseImgHtml(PlayStates playState) { if (playState == PlayStates.Playing) return AbstractImagePrototype.create(pauseIcon).getSafeHtml(); @@ -1573,7 +1584,7 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta playPause.setHTML(getPlayPauseImgHtml(playState)); playPause.setTitle(playState == PlayStates.Playing ? stringMessages.pauseAutomaticRefresh() : stringMessages.autoRefresh()); if (!settingsUpdatedExplicitly && playMode != oldPlayMode) { - updateSettings(LeaderboardSettingsFactory.getInstance().createNewSettingsForPlayMode(playMode)); + updateSettings(LeaderboardSettingsFactory.getInstance().createNewSettingsForPlayMode(playMode, /* columnToSort */ null)); } currentlyHandlingPlayStateChange = false; oldPlayMode = playMode; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardSettings.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardSettings.java index 584502d4df4..101f76b77c6 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardSettings.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardSettings.java @@ -3,7 +3,6 @@ package com.sap.sailing.gwt.ui.leaderboard; import java.util.List; import com.sap.sailing.domain.common.DetailType; -import com.sap.sailing.gwt.ui.shared.LeaderboardRowDTO; import com.sap.sailing.gwt.ui.shared.RaceInLeaderboardDTO; public class LeaderboardSettings { @@ -17,15 +16,15 @@ public class LeaderboardSettings { /** * An optional sort column; if null, the leaderboard sorting won't be touched when updating the settings. - * Otherwise, the leaderboard will be sorted by this column (ascending if {@link #sortAscending}, descending otherwise. + * Otherwise, the leaderboard will be sorted by the race column (ascending if {@link #sortAscending}, descending otherwise. */ - private final SortableColumn sortByColumn; + private final String nameOfRaceToSort; private final boolean sortAscending; public LeaderboardSettings(List meneuverDetailsToShow, List legDetailsToShow, List raceDetailsToShow, List raceColumnsToShow, boolean autoExpandFirstRace, Long delayBetweenAutoAdvancesInMilliseconds, Long delayInMilliseconds, - SortableColumn sortByColumn, boolean sortAscending) { + String nameOfRaceToSort, boolean sortAscending) { this.legDetailsToShow = legDetailsToShow; this.raceDetailsToShow = raceDetailsToShow; this.raceColumnsToShow = raceColumnsToShow; @@ -33,7 +32,7 @@ public class LeaderboardSettings { this.delayBetweenAutoAdvancesInMilliseconds = delayBetweenAutoAdvancesInMilliseconds; this.delayInMilliseconds = delayInMilliseconds; this.maneuverDetailsToShow = meneuverDetailsToShow; - this.sortByColumn = sortByColumn; + this.nameOfRaceToSort = nameOfRaceToSort; this.sortAscending = sortAscending; } @@ -76,8 +75,8 @@ public class LeaderboardSettings { return delayInMilliseconds; } - public SortableColumn getSortByColumn() { - return sortByColumn; + public String getNameOfRaceToSort() { + return nameOfRaceToSort; } public boolean isSortAscending() { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardSettingsFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardSettingsFactory.java index 65c3671a38c..0950ef02739 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardSettingsFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardSettingsFactory.java @@ -19,7 +19,10 @@ public class LeaderboardSettingsFactory { return instance; } - public LeaderboardSettings createNewSettingsForPlayMode(PlayModes playMode) { + /** + * @param nameOfRaceToSort if null, don't sort any race column + */ + public LeaderboardSettings createNewSettingsForPlayMode(PlayModes playMode, String nameOfRaceToSort) { LeaderboardSettings settings = null; switch (playMode) { case Live: @@ -37,7 +40,7 @@ public class LeaderboardSettingsFactory { settings = new LeaderboardSettings(maneuverDetails, legDetails, raceDetails, /* don't change raceColumns */ null, true, /* refresh interval */ null, /* delay to live */ null, - /* sort by column */ null, /* ascending */ true); + /* name of race to sort*/ nameOfRaceToSort, /* ascending */ true); break; case Replay: settings = createNewDefaultSettings(true); 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 8802a8c5d1c..ba804bfdd72 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 @@ -129,7 +129,7 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel componentsNavigationPanel.addStyleName("raceBoardNavigation"); // create the default leaderboard and select the right race - LeaderboardSettings leaderBoardSettings = LeaderboardSettingsFactory.getInstance().createNewSettingsForPlayMode(timer.getPlayMode()); + LeaderboardSettings leaderBoardSettings = LeaderboardSettingsFactory.getInstance().createNewSettingsForPlayMode(timer.getPlayMode(), /* columnToSort */ null); LeaderboardPanel leaderboardPanel = new LeaderboardPanel(sailingService, leaderBoardSettings, selectedRaceIdentifier, competitorSelectionModel, timer, leaderboardName, leaderboardGroupName, errorReporter, stringMessages, userAgentType); RaceMap raceMap = new RaceMap(sailingService, errorReporter, timer, competitorSelectionModel, stringMessages); @@ -200,10 +200,11 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel boolean showCompetitorCharts = true; // create the default leaderboard and select the right race if(showLeaderboard) { - LeaderboardSettings leaderBoardSettings = LeaderboardSettingsFactory.getInstance().createNewSettingsForPlayMode(timer.getPlayMode()); - LeaderboardPanel leaderboardPanel = new LeaderboardPanel(sailingService, leaderBoardSettings, selectedRaceIdentifier, competitorSelectionModel, - timer, leaderboardName, leaderboardGroupName, errorReporter, stringMessages, userAgentType); - + LeaderboardSettings leaderBoardSettings = LeaderboardSettingsFactory.getInstance() + .createNewSettingsForPlayMode(timer.getPlayMode(), /* nameOfRaceToSort */null); + LeaderboardPanel leaderboardPanel = new LeaderboardPanel(sailingService, leaderBoardSettings, + selectedRaceIdentifier, competitorSelectionModel, timer, leaderboardName, leaderboardGroupName, + errorReporter, stringMessages, userAgentType); CollapsableComponentViewer leaderboardViewer = new CollapsableComponentViewer( leaderboardPanel, "100%", "100%", stringMessages, ViewerPanelTypes.SCROLL_PANEL); componentViewers.add(leaderboardViewer);