diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardGroupConfigPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardGroupConfigPanel.java index d56e660cfa3..fad9c27a9a8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardGroupConfigPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardGroupConfigPanel.java @@ -656,44 +656,41 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements @Override public void fillLeaderboards(Iterable leaderboards) { availableLeaderboards.clear(); + leaderboardsProvider.getList().clear(); if (leaderboards != null) { Util.addAll(leaderboards, availableLeaderboards); } - leaderboardsFilterablePanel.updateAll(availableLeaderboards); + final LeaderboardGroupDTO selectedGroup = getSelectedGroup(); + if(selectedGroup != null) { + leaderboardsProvider.getList().addAll(availableLeaderboards); + leaderboardsProvider.getList().removeAll(selectedGroup.leaderboards); + leaderboardsFilterablePanel.updateAll(leaderboardsProvider.getList()); + refreshableLeaderboardsSelectionModel.clear(); + final Set selectedLeaderboards = refreshableLeaderboardsSelectionModel.getSelectedSet(); + for (StrippedLeaderboardDTO leaderboard : selectedLeaderboards) { + refreshableLeaderboardsSelectionModel.setSelected(leaderboard, true); + } + } } /** - * If no leaderboard group is selected or more than one is selected, this method is a no-op because the - * leaderboard list displayed is defined to the be list of all leaderboards available, excluding those - * leaderboards that are already assigned to the selected leaderboard group. In other words, - * the leaderboard list is only well-defined in case a single leaderboard group is selected. + * If no leaderboard group is selected or more than one is selected, this method is a no-op because the leaderboard + * list displayed is defined to the be list of all leaderboards available, excluding those leaderboards that are + * already assigned to the selected leaderboard group. In other words, the leaderboard list is only + * well-defined in case a single leaderboard group is selected. */ private void refreshLeaderboardsList() { - final LeaderboardGroupDTO selectedGroup = getSelectedGroup(); - final Set selectedLeaderboards = refreshableLeaderboardsSelectionModel.getSelectedSet(); - if (isSingleGroupSelected && selectedGroup != null) { + if (isSingleGroupSelected && getSelectedGroup() != null) { sailingService.getLeaderboards(new MarkedAsyncCallback>( new AsyncCallback>() { @Override public void onFailure(Throwable t) { errorReporter.reportError("Error trying to obtain list of leaderboards: " + t.getMessage()); } - + @Override public void onSuccess(List leaderboards) { - availableLeaderboards.clear(); - if (leaderboards != null) { - availableLeaderboards.addAll(leaderboards); - } - leaderboardsProvider.getList().clear(); - leaderboardsProvider.getList().addAll(availableLeaderboards); - leaderboardsProvider.getList().removeAll(selectedGroup.leaderboards); - leaderboardsFilterablePanel.getTextBox().setText(""); - leaderboardsFilterablePanel.updateAll(availableLeaderboards); - refreshableLeaderboardsSelectionModel.clear(); - for (StrippedLeaderboardDTO leaderboard : selectedLeaderboards) { - refreshableLeaderboardsSelectionModel.setSelected(leaderboard, true); - } + fillLeaderboards(leaderboards); } })); } @@ -903,7 +900,7 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements } updateGroup(selectedGroup); //Refilters the leaderboards list (hides the moved leaderboards if they don't fit to the filter) and resorts the list - leaderboardsFilterablePanel.updateAll(availableLeaderboards); + leaderboardsFilterablePanel.updateAll(leaderboardsProvider.getList()); } }