adjusted LeaderboardConfigPanel to understand a little bit about fleets; compilable again, but not tested at all

This commit is contained in:
Axel Uhl committed 2012-05-16 14:30:48 +02:00
1 parent c552a7bab0
commit 1b5fc2d545
4 files changed
+163 -150

No files matched your search

@@ -84,11 +84,13 @@ public class FlexibleLeaderboardImpl extends AbstractLeaderboardImpl implements
public void moveRaceColumnUp(String name) {
RaceColumn race = null;
for (RaceColumn r : races) {
if (r.getName().equals(name))
if (r.getName().equals(name)) {
race = r;
}
}
if (race == null)
if (race == null) {
return;
}
int index = 0;
index = races.lastIndexOf(race);
index--;
@@ -102,15 +104,18 @@ public class FlexibleLeaderboardImpl extends AbstractLeaderboardImpl implements
public void moveRaceColumnDown(String name) {
RaceColumn race = null;
for (RaceColumn r : races) {
if (r.getName().equals(name))
if (r.getName().equals(name)) {
race = r;
}
}
if (race == null)
if (race == null) {
return;
}
int index = 0;
index = races.lastIndexOf(race);
if (index == -1)
if (index == -1) {
return;
}
index++;
if (index < races.size()) {
races.remove(race);
@@ -4,7 +4,9 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import com.google.gwt.cell.client.AbstractCell;
import com.google.gwt.cell.client.CheckboxCell;
@@ -45,16 +47,16 @@ import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
import com.sap.sailing.domain.common.RegattaNameAndRaceName;
import com.sap.sailing.domain.common.impl.Util.Pair;
import com.sap.sailing.gwt.ui.client.ErrorReporter;
import com.sap.sailing.gwt.ui.client.RegattaDisplayer;
import com.sap.sailing.gwt.ui.client.RaceSelectionChangeListener;
import com.sap.sailing.gwt.ui.client.RaceSelectionModel;
import com.sap.sailing.gwt.ui.client.RaceSelectionProvider;
import com.sap.sailing.gwt.ui.client.RegattaDisplayer;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.client.URLFactory;
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
import com.sap.sailing.gwt.ui.shared.LeaderboardDTO;
import com.sap.sailing.gwt.ui.shared.RaceColumnDTO;
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplayer, RaceSelectionChangeListener,
TrackedRaceChangedListener {
@@ -67,17 +69,17 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
private final ListDataProvider<LeaderboardDTO> leaderboardList;
private final ListDataProvider<RaceColumnDTO> raceColumnList;
private final ListDataProvider<Pair<RaceColumnDTO, String>> raceColumnAndFleetNameList;
private final ErrorReporter errorReporter;
private final CellTable<LeaderboardDTO> leaderboardTable;
private final CellTable<RaceColumnDTO> raceColumnTable;
private final CellTable<Pair<RaceColumnDTO, String>> raceColumnTable;
private LeaderboardDTO selectedLeaderboard;
private RaceColumnDTO selectedRaceInLeaderboard;
private Pair<RaceColumnDTO, String> selectedRaceInLeaderboard;
private final Button addColumnButton;
@@ -90,7 +92,7 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
private TextBox filterLeaderboardTextbox;
final SingleSelectionModel<RaceColumnDTO> raceColumnTableSelectionModel;
final SingleSelectionModel<Pair<RaceColumnDTO, String>> raceColumnTableSelectionModel;
private List<LeaderboardDTO> availableLeaderboardList;
@@ -118,7 +120,7 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
this.stringMessages = theStringConstants;
this.sailingService = sailingService;
leaderboardList = new ListDataProvider<LeaderboardDTO>();
raceColumnList = new ListDataProvider<RaceColumnDTO>();
raceColumnAndFleetNameList = new ListDataProvider<Pair<RaceColumnDTO, String>>();
this.errorReporter = errorReporter;
this.availableLeaderboardList = new ArrayList<LeaderboardDTO>();
VerticalPanel mainPanel = new VerticalPanel();
@@ -302,60 +304,60 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
// ------------ races of the selected leaderboard ----------------
AnchorCell raceAnchorCell = new AnchorCell();
Column<RaceColumnDTO, SafeHtml> raceLinkColumn = new Column<RaceColumnDTO, SafeHtml>(raceAnchorCell) {
Column<Pair<RaceColumnDTO, String>, SafeHtml> raceLinkColumn = new Column<Pair<RaceColumnDTO, String>, SafeHtml>(raceAnchorCell) {
@Override
public SafeHtml getValue(RaceColumnDTO raceInLeaderboardDTO) {
if(raceInLeaderboardDTO.getRaceIdentifier(fleetName) != null) {
RegattaNameAndRaceName raceIdentifier = (RegattaNameAndRaceName) raceInLeaderboardDTO.getRaceIdentifier(fleetName);
public SafeHtml getValue(Pair<RaceColumnDTO, String> raceInLeaderboardDTOAndFleetName) {
if (raceInLeaderboardDTOAndFleetName.getA().getRaceIdentifier(raceInLeaderboardDTOAndFleetName.getB()) != null) {
RegattaNameAndRaceName raceIdentifier = (RegattaNameAndRaceName) raceInLeaderboardDTOAndFleetName
.getA().getRaceIdentifier(raceInLeaderboardDTOAndFleetName.getB());
String debugParam = Window.Location.getParameter("gwt.codesvr");
String link = URLFactory.INSTANCE.encode("/gwt/RaceBoard.html?leaderboardName="
+ selectedLeaderboard.name + "&raceName=" + raceIdentifier.getRaceName() + "&regattaName="
+ raceIdentifier.getRegattaName()
+ (debugParam != null && !debugParam.isEmpty() ? "&gwt.codesvr=" + debugParam : ""));
return ANCHORTEMPLATE.cell(link, raceInLeaderboardDTO.getRaceColumnName());
return ANCHORTEMPLATE.cell(link, raceInLeaderboardDTOAndFleetName.getA().getRaceColumnName());
} else {
return SafeHtmlUtils.fromString(raceInLeaderboardDTO.getRaceColumnName());
return SafeHtmlUtils.fromString(raceInLeaderboardDTOAndFleetName.getA().getRaceColumnName());
}
}
};
Column<RaceColumnDTO, Boolean> isMedalRaceCheckboxColumn = new Column<RaceColumnDTO, Boolean>(
Column<Pair<RaceColumnDTO, String>, Boolean> isMedalRaceCheckboxColumn = new Column<Pair<RaceColumnDTO, String>, Boolean>(
new CheckboxCell()) {
@Override
public Boolean getValue(RaceColumnDTO race) {
return race.isMedalRace();
public Boolean getValue(Pair<RaceColumnDTO, String> race) {
return race.getA().isMedalRace();
}
};
isMedalRaceCheckboxColumn.setFieldUpdater(new FieldUpdater<RaceColumnDTO, Boolean>() {
isMedalRaceCheckboxColumn.setFieldUpdater(new FieldUpdater<Pair<RaceColumnDTO, String>, Boolean>() {
@Override
public void update(int index, RaceColumnDTO object, Boolean value) {
setIsMedalRace(selectedLeaderboard.name, object, value);
public void update(int index, Pair<RaceColumnDTO, String> object, Boolean value) {
setIsMedalRace(selectedLeaderboard.name, object.getA(), value);
}
});
isMedalRaceCheckboxColumn.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
TextColumn<RaceColumnDTO> isLinkedRaceColumn = new TextColumn<RaceColumnDTO>() {
TextColumn<Pair<RaceColumnDTO, String>> isLinkedRaceColumn = new TextColumn<Pair<RaceColumnDTO, String>>() {
@Override
public String getValue(RaceColumnDTO race) {
boolean isTrackedRace = race.isTrackedRace(fleetName);
public String getValue(Pair<RaceColumnDTO, String> raceColumnAndFleetName) {
boolean isTrackedRace = raceColumnAndFleetName.getA().isTrackedRace(raceColumnAndFleetName.getB());
return isTrackedRace ? stringMessages.yes() : stringMessages.no();
}
};
ImagesBarColumn<RaceColumnDTO, LeaderboardRaceConfigImagesBarCell> raceActionColumn = new ImagesBarColumn<RaceColumnDTO, LeaderboardRaceConfigImagesBarCell>(
new LeaderboardRaceConfigImagesBarCell(stringMessages));
raceActionColumn.setFieldUpdater(new FieldUpdater<RaceColumnDTO, String>() {
ImagesBarColumn<Pair<RaceColumnDTO, String>, LeaderboardRaceConfigImagesBarCell> raceActionColumn =
new ImagesBarColumn<Pair<RaceColumnDTO, String>, LeaderboardRaceConfigImagesBarCell>(
new LeaderboardRaceConfigImagesBarCell(stringMessages));
raceActionColumn.setFieldUpdater(new FieldUpdater<Pair<RaceColumnDTO, String>, String>() {
@Override
public void update(int index, RaceColumnDTO object, String value) {
public void update(int index, Pair<RaceColumnDTO, String> object, String value) {
if ("ACTION_REMOVE".equals(value)) {
if (Window.confirm(stringMessages.reallyRemoveRace(object.getRaceColumnName()))) {
removeRaceColumn(object);
if (Window.confirm(stringMessages.reallyRemoveRace(object.getA().getRaceColumnName()))) {
removeRaceColumn(object.getA());
}
} else if ("ACTION_EDIT".equals(value)) {
editRaceColumnOfLeaderboard(object);
} else if ("ACTION_UNLINK".equals(value)) {
unlinkRaceColumnFromTrackedRace(object.getRaceColumnName());
unlinkRaceColumnFromTrackedRace(object.getA().getRaceColumnName(), object.getB());
}
}
});
@@ -363,14 +365,14 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
Label lblRaceNamesIn = new Label(stringMessages.races());
vPanel.add(lblRaceNamesIn);
raceColumnTable = new CellTable<RaceColumnDTO>(/* pageSize */200, tableRes);
raceColumnTable = new CellTable<Pair<RaceColumnDTO, String>>(/* pageSize */200, tableRes);
raceColumnTable.addColumn(raceLinkColumn, stringMessages.name());
raceColumnTable.addColumn(isMedalRaceCheckboxColumn, stringMessages.medalRace());
raceColumnTable.addColumn(isLinkedRaceColumn, stringMessages.islinked());
raceColumnTable.addColumn(raceActionColumn, stringMessages.actions());
raceColumnList.addDataDisplay(raceColumnTable);
raceColumnAndFleetNameList.addDataDisplay(raceColumnTable);
raceColumnTable.setWidth("500px");
raceColumnTableSelectionModel = new SingleSelectionModel<RaceColumnDTO>();
raceColumnTableSelectionModel = new SingleSelectionModel<Pair<RaceColumnDTO, String>>();
raceColumnTable.setSelectionModel(raceColumnTableSelectionModel);
@@ -455,40 +457,46 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
}
}
private void unlinkRaceColumnFromTrackedRace(final String raceColumn) {
private void unlinkRaceColumnFromTrackedRace(final String raceColumnName, final String fleetName) {
final String selectedLeaderboardName = getSelectedLeaderboardName();
sailingService.disconnectLeaderboardColumnFromTrackedRace(selectedLeaderboardName, raceColumn,
sailingService.disconnectLeaderboardColumnFromTrackedRace(selectedLeaderboardName, raceColumnName, fleetName,
new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable t) {
errorReporter.reportError("Error trying to unlink tracked race from column " + raceColumn
errorReporter.reportError("Error trying to unlink tracked race from column " + raceColumnName
+ " from leaderboard " + selectedLeaderboardName + ": " + t.getMessage());
}
@Override
public void onSuccess(Void arg0) {
trackedRacesListComposite.clearSelection();
getSelectedRaceInLeaderboard().setRaceIdentifier(fleetName, null);
raceColumnList.refresh();
getSelectedRaceColumnAndFleetName().getA().setRaceIdentifier(fleetName, null);
raceColumnAndFleetNameList.refresh();
}
});
}
private void removeRaceColumn(final RaceColumnDTO raceColumn) {
final String raceColumnString = raceColumn.getRaceColumnName();
private void removeRaceColumn(final RaceColumnDTO raceColumnDTO) {
final String raceColumnString = raceColumnDTO.getRaceColumnName();
sailingService.removeLeaderboardColumn(getSelectedLeaderboardName(), raceColumnString,
new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable t) {
errorReporter.reportError("Error trying to remove leaderboard race column " + raceColumn
errorReporter.reportError("Error trying to remove leaderboard race column " + raceColumnDTO
+ " in leaderboard " + getSelectedLeaderboardName() + ": " + t.getMessage());
}
@Override
public void onSuccess(Void arg0) {
raceColumnList.getList().remove(raceColumn);
if (raceColumnTableSelectionModel.isSelected(raceColumn)) {
raceColumnTableSelectionModel.setSelected(raceColumn, false);
Iterator<Pair<RaceColumnDTO, String>> rowIter = raceColumnAndFleetNameList.getList().iterator();
while (rowIter.hasNext()) {
Pair<RaceColumnDTO, String> next = rowIter.next();
if (raceColumnTableSelectionModel.isSelected(next)) {
raceColumnTableSelectionModel.setSelected(next, false);
}
if (next.getA() == raceColumnDTO) {
rowIter.remove();
}
}
// selectedLeaderboard.raceNamesAndMedalRaceAndTracked.remove(raceColumn);
selectedLeaderboard.removeRace(raceColumnString);
@@ -497,9 +505,12 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
});
}
/**
* The selected row is potentially only one of several fleet-based rows of the same RaceColumn. In this case,
* move all fleet-based rows of the same RaceColumn down.
*/
private void moveSelectedRaceColumnDown() {
final String selectedRaceColumnName = raceColumnTableSelectionModel.getSelectedObject().getRaceColumnName();
final String selectedRaceColumnName = raceColumnTableSelectionModel.getSelectedObject().getA().getRaceColumnName();
sailingService.moveLeaderboardColumnDown(getSelectedLeaderboardName(), selectedRaceColumnName,
new AsyncCallback<Void>() {
@Override
@@ -511,34 +522,17 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
@Override
public void onSuccess(Void result) {
int rowIndex = getRowIndexOfSelectedRaceColumn();
if (rowIndex < raceColumnList.getList().size() - 1) {
Collections.swap(raceColumnList.getList(), rowIndex, rowIndex + 1);
selectedLeaderboard.moveRaceDown(selectedRaceColumnName);
}
leaderboardSelectionChanged();
}
});
}
private int getRowIndexOfSelectedRaceColumn() {
final RaceColumnDTO selectedRaceColumnName = raceColumnTableSelectionModel.getSelectedObject();
int rowIndex = -1;
if (selectedRaceColumnName != null) {
int listSize = raceColumnList.getList().size();
for (int i = 0; i < listSize; i++) {
if (selectedRaceColumnName.equals(raceColumnList.getList().get(i))) {
rowIndex = i;
break;
}
}
}
return rowIndex;
}
/**
* The selected row is potentially only one of several fleet-based rows of the same RaceColumn. In this case,
* move all fleet-based rows of the same RaceColumn down.
*/
private void moveSelectedRaceColumnUp() {
final String selectedRaceColumnName = raceColumnTableSelectionModel.getSelectedObject().getRaceColumnName();
final String selectedRaceColumnName = raceColumnTableSelectionModel.getSelectedObject().getA().getRaceColumnName();
sailingService.moveLeaderboardColumnUp(getSelectedLeaderboardName(), selectedRaceColumnName,
new AsyncCallback<Void>() {
@Override
@@ -550,21 +544,18 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
@Override
public void onSuccess(Void result) {
int rowIndex = getRowIndexOfSelectedRaceColumn();
if (rowIndex > 0) {
Collections.swap(raceColumnList.getList(), rowIndex, rowIndex - 1);
selectedLeaderboard.moveRaceUp(selectedRaceColumnName);
}
leaderboardSelectionChanged();
}
});
}
private void leaderboardRaceColumnSelectionChanged() {
selectedRaceInLeaderboard = getSelectedRaceInLeaderboard();
selectedRaceInLeaderboard = getSelectedRaceColumnAndFleetName();
if (selectedRaceInLeaderboard != null) {
columnMoveUpButton.setEnabled(true);
columnMoveDownButton.setEnabled(true);
reloadRaceInLeaderboardRow(selectedRaceInLeaderboard.getRaceColumnName(), selectedRaceInLeaderboard);
reloadRaceInLeaderboardRow(selectedRaceInLeaderboard.getA().getRaceColumnName(), /* fleet name */ selectedRaceInLeaderboard.getB(),
selectedRaceInLeaderboard);
selectTrackedRaceInRaceList();
} else {
columnMoveUpButton.setEnabled(false);
@@ -575,9 +566,11 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
private void selectTrackedRaceInRaceList() {
final String selectedLeaderboardName = getSelectedLeaderboardName();
final String selectedRaceColumnName = getSelectedRaceInLeaderboard().getRaceColumnName();
final Pair<RaceColumnDTO, String> selectedRaceColumnAndFleetNameInLeaderboard = getSelectedRaceColumnAndFleetName();
final String selectedRaceColumnName = selectedRaceColumnAndFleetNameInLeaderboard.getA().getRaceColumnName();
final String selectedFleetName = selectedRaceColumnAndFleetNameInLeaderboard.getB();
sailingService.getEventAndRaceNameOfTrackedRaceConnectedToLeaderboardColumn(selectedLeaderboardName,
selectedRaceColumnName, new AsyncCallback<Pair<String, String>>() {
selectedRaceColumnName, new AsyncCallback<Map<String, RegattaAndRaceIdentifier>>() {
@Override
public void onFailure(Throwable t) {
errorReporter.reportError("Error trying to determine tracked race linked to race column "
@@ -586,9 +579,10 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
}
@Override
public void onSuccess(Pair<String, String> regattaAndRaceName) {
if (regattaAndRaceName != null) {
selectRaceInList(regattaAndRaceName.getA(), regattaAndRaceName.getB());
public void onSuccess(Map<String, RegattaAndRaceIdentifier> regattaAndRaceNamesPerFleet) {
if (regattaAndRaceNamesPerFleet != null) {
selectRaceInList(regattaAndRaceNamesPerFleet.get(selectedFleetName).getRegattaName(),
regattaAndRaceNamesPerFleet.get(selectedFleetName).getRaceName());
} else {
trackedRacesListComposite.clearSelection();
}
@@ -601,26 +595,26 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
trackedRacesListComposite.selectRaceByIdentifier(raceIdentifier);
}
private RaceColumnDTO getSelectedRaceInLeaderboard() {
RaceColumnDTO raceInLeaderboard = raceColumnTableSelectionModel.getSelectedObject();
return raceInLeaderboard;
private Pair<RaceColumnDTO, String> getSelectedRaceColumnAndFleetName() {
Pair<RaceColumnDTO, String> raceInLeaderboardAndFleetName = raceColumnTableSelectionModel.getSelectedObject();
return raceInLeaderboardAndFleetName;
}
private void editRaceColumnOfLeaderboard(final RaceColumnDTO raceInLeaderboard) {
final String oldRaceName = raceInLeaderboard.getRaceColumnName();
List<RaceColumnDTO> existingRacesWithoutThisRace = new ArrayList<RaceColumnDTO>();
existingRacesWithoutThisRace.addAll(raceColumnList.getList());
existingRacesWithoutThisRace.remove(raceInLeaderboard);
private void editRaceColumnOfLeaderboard(final Pair<RaceColumnDTO, String> object) {
final String oldRaceName = object.getA().getRaceColumnName();
List<Pair<RaceColumnDTO, String>> existingRacesWithoutThisRace = new ArrayList<Pair<RaceColumnDTO, String>>();
existingRacesWithoutThisRace.addAll(raceColumnAndFleetNameList.getList());
existingRacesWithoutThisRace.remove(object);
final RaceInLeaderboardDialog raceDialog = new RaceInLeaderboardDialog(existingRacesWithoutThisRace,
raceInLeaderboard, stringMessages, new AsyncCallback<RaceColumnDTO>() {
object.getA(), stringMessages, new AsyncCallback<Pair<RaceColumnDTO, String>>() {
@Override
public void onFailure(Throwable caught) {
}
@Override
public void onSuccess(final RaceColumnDTO result) {
public void onSuccess(final Pair<RaceColumnDTO, String> result) {
sailingService.renameLeaderboardColumn(getSelectedLeaderboardName(), oldRaceName,
result.getRaceColumnName(), new AsyncCallback<Void>() {
result.getA().getRaceColumnName(), new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
@@ -629,7 +623,7 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
@Override
public void onSuccess(Void v) {
sailingService.updateIsMedalRace(getSelectedLeaderboardName(),
result.getRaceColumnName(), result.isMedalRace(),
result.getA().getRaceColumnName(), result.getA().isMedalRace(),
new AsyncCallback<Void>() {
@Override
@@ -638,8 +632,8 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
@Override
public void onSuccess(Void v) {
raceInLeaderboard.setMedalRace(result.isMedalRace());
reloadRaceInLeaderboardRow(oldRaceName, result);
object.getA().setMedalRace(result.getA().isMedalRace());
reloadRaceInLeaderboardRow(oldRaceName, /* fleet name */ result.getB(), result);
}
});
}
@@ -650,19 +644,19 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
raceDialog.show();
}
private void reloadRaceInLeaderboardRow(String oldRaceName, RaceColumnDTO raceInLeaderboard) {
private void reloadRaceInLeaderboardRow(String oldRaceName, String oldFleetName, Pair<RaceColumnDTO, String> newRaceColumnAndFleetName) {
int index = -1;
for (int i = 0; i < raceColumnList.getList().size(); i++) {
RaceColumnDTO race = raceColumnList.getList().get(i);
if (race.getRaceColumnName().equals(oldRaceName)) {
for (int i = 0; i < raceColumnAndFleetNameList.getList().size(); i++) {
Pair<RaceColumnDTO, String> raceColumnAndFleetName = raceColumnAndFleetNameList.getList().get(i);
if (raceColumnAndFleetName.getA().getRaceColumnName().equals(oldRaceName) && raceColumnAndFleetName.getB().equals(oldFleetName)) {
index = i;
break;
}
}
if (index != -1) {
raceColumnList.getList().set(index, raceInLeaderboard);
raceColumnAndFleetNameList.getList().set(index, newRaceColumnAndFleetName);
}
raceColumnList.refresh();
raceColumnAndFleetNameList.refresh();
}
private void setIsMedalRace(String leaderboardName, final RaceColumnDTO raceInLeaderboard,
@@ -684,22 +678,22 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
private void addRaceColumnToLeaderboard() {
final RaceColumnDTO raceInLeaderboard = new RaceColumnDTO();
final String leaderboardName = getSelectedLeaderboardName();
final RaceInLeaderboardDialog raceDialog = new RaceInLeaderboardDialog(raceColumnList.getList(),
raceInLeaderboard, stringMessages, new AsyncCallback<RaceColumnDTO>() {
final RaceInLeaderboardDialog raceDialog = new RaceInLeaderboardDialog(raceColumnAndFleetNameList.getList(),
raceInLeaderboard, stringMessages, new AsyncCallback<Pair<RaceColumnDTO, String>>() {
@Override
public void onFailure(Throwable caught) {
}
@Override
public void onSuccess(final RaceColumnDTO result) {
sailingService.addColumnToLeaderboard(result.getRaceColumnName(), leaderboardName,
result.isMedalRace(), new AsyncCallback<Void>() {
public void onSuccess(final Pair<RaceColumnDTO, String> result) {
sailingService.addColumnToLeaderboard(result.getA().getRaceColumnName(), leaderboardName,
result.getA().isMedalRace(), new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Error trying to add column "
+ result.getRaceColumnName() + " to leaderboard " + leaderboardName
+ result.getA().getRaceColumnName() + " to leaderboard " + leaderboardName
+ ": " + caught.getMessage());
}
@@ -707,12 +701,12 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
@Override
public void onSuccess(Void v) {
// columnNamesInSelectedLeaderboardListBox.addItem(columnNameAndMedalRace.getA());
raceColumnList.getList().add(result);
raceColumnAndFleetNameList.getList().add(result);
// selectedLeaderboard.raceNamesAndMedalRaceAndTracked.put(columnNameAndMedalRace.getA(),
// new Pair<Boolean, Boolean>(/* medal race */ columnNameAndMedalRace.getB(),
// /* tracked */ false));
selectedLeaderboard.addRace(result.getRaceColumnName(), fleetName,
result.isMedalRace(), null, null);
selectedLeaderboard.addRace(result.getA().getRaceColumnName(), /* fleet name */ result.getB(),
result.getA().isMedalRace(), /* tracked race identifier */ null, /* StrippedRaceDTO */ null);
selectedLeaderboard.invalidateCompetitorOrdering();
}
});
@@ -738,12 +732,16 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
}
});
if (selectedLeaderboard != null) {
raceColumnList.getList().clear();
raceColumnList.getList().addAll(selectedLeaderboard.getRaceList());
selectedLeaderBoardPanel.setVisible(true);
trackedRacesCaptionPanel.setVisible(true);
selectedLeaderBoardPanel.setCaptionText("Details of leaderboard '" + selectedLeaderboard.name + "'");
addColumnButton.setEnabled(true);
raceColumnAndFleetNameList.getList().clear();
for (RaceColumnDTO raceColumn : selectedLeaderboard.getRaceList()) {
for (String fleetName : raceColumn.getFleetNames()) {
raceColumnAndFleetNameList.getList().add(new Pair<RaceColumnDTO, String>(raceColumn, fleetName));
}
}
selectedLeaderBoardPanel.setVisible(true);
trackedRacesCaptionPanel.setVisible(true);
selectedLeaderBoardPanel.setCaptionText("Details of leaderboard '" + selectedLeaderboard.name + "'");
addColumnButton.setEnabled(true);
} else {
selectedLeaderBoardPanel.setVisible(false);
trackedRacesCaptionPanel.setVisible(false);
@@ -760,12 +758,12 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
@Override
public void changeTrackingRace(RegattaNameAndRaceName regattaNameAndRaceName, boolean isTracked) {
for (RaceColumnDTO race : raceColumnList.getList()) {
if (race.getRaceColumnName().equals(regattaNameAndRaceName.getRaceName())) {
race.setRaceIdentifier(fleetName, regattaNameAndRaceName);
for (Pair<RaceColumnDTO, String> raceColumnAndFleetName : raceColumnAndFleetNameList.getList()) {
if (raceColumnAndFleetName.getA().getRaceColumnName().equals(regattaNameAndRaceName.getRaceName())) {
raceColumnAndFleetName.getA().setRaceIdentifier(raceColumnAndFleetName.getB(), regattaNameAndRaceName);
}
}
raceColumnList.refresh();
raceColumnAndFleetNameList.refresh();
}
private void addNewLeaderboard() {
@@ -850,20 +848,21 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
@Override
public void onRaceSelectionChange(List<RegattaAndRaceIdentifier> selectedRaces) {
// if no leaderboard column is selected, ignore the race selection change
RaceColumnDTO selectedRaceInLeaderboard = getSelectedRaceInLeaderboard();
if (selectedRaceInLeaderboard != null) {
Pair<RaceColumnDTO, String> selectedRaceColumnAndFleetName = getSelectedRaceColumnAndFleetName();
if (selectedRaceColumnAndFleetName != null) {
if (selectedRaces.isEmpty()) {
unlinkRaceColumnFromTrackedRace(selectedRaceInLeaderboard.getRaceColumnName());
unlinkRaceColumnFromTrackedRace(selectedRaceColumnAndFleetName.getA().getRaceColumnName(), selectedRaceColumnAndFleetName.getB());
} else {
linkTrackedRaceToSelectedRaceColumn(selectedRaceInLeaderboard, selectedRaces.iterator().next());
linkTrackedRaceToSelectedRaceColumn(selectedRaceColumnAndFleetName.getA(), selectedRaceColumnAndFleetName.getB(),
selectedRaces.iterator().next());
}
}
}
private void linkTrackedRaceToSelectedRaceColumn(final RaceColumnDTO selectedRaceInLeaderboard,
final RegattaAndRaceIdentifier selectedRace) {
final String fleetName, final RegattaAndRaceIdentifier selectedRace) {
sailingService.connectTrackedRaceToLeaderboardColumn(getSelectedLeaderboardName(), selectedRaceInLeaderboard
.getRaceColumnName(), selectedRace,
.getRaceColumnName(), fleetName, selectedRace,
new AsyncCallback<Boolean>() {
@Override
public void onFailure(Throwable t) {
@@ -878,7 +877,7 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
if (success) {
// TODO consider enabling the Unlink button
selectedRaceInLeaderboard.setRaceIdentifier(fleetName, selectedRace);
raceColumnList.refresh();
raceColumnAndFleetNameList.refresh();
}
}
});
@@ -7,38 +7,47 @@ import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.domain.common.impl.Util.Pair;
import com.sap.sailing.gwt.ui.client.DataEntryDialog;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.RaceColumnDTO;
public class RaceInLeaderboardDialog extends DataEntryDialog<RaceColumnDTO> {
/**
* Fills a {@link RaceColumnDTO} object by setting its {@link RaceColumnDTO#setMedalRace(boolean) medal race} property and its name.
* As {@link RaceColumnDTO#getFleetNames()} fleet, a single default fleet is added.
*
* @author Axel Uhl (D043530)
*
*/
public class RaceInLeaderboardDialog extends DataEntryDialog<Pair<RaceColumnDTO, String>> {
private final static String DEFAULT_FLEET_NAME = "Default";
private final TextBox raceNameBox;
private final CheckBox isMedalRace;
private RaceColumnDTO raceInLeaderboard;
private static class RaceDialogValidator implements Validator<RaceColumnDTO> {
private static class RaceDialogValidator implements Validator<Pair<RaceColumnDTO, String>> {
private StringMessages stringConstants;
private Collection<RaceColumnDTO> existingRaces;
private Collection<Pair<RaceColumnDTO, String>> existingRaces;
public RaceDialogValidator(StringMessages stringConstants, Collection<RaceColumnDTO> existingRaces) {
public RaceDialogValidator(StringMessages stringConstants, Collection<Pair<RaceColumnDTO, String>> existingRaceColumnsAndFleetNames) {
this.stringConstants = stringConstants;
this.existingRaces = existingRaces;
this.existingRaces = existingRaceColumnsAndFleetNames;
}
@Override
public String getErrorMessage(RaceColumnDTO valueToValidate) {
public String getErrorMessage(Pair<RaceColumnDTO, String> valueToValidate) {
String errorMessage;
String racename = valueToValidate.getRaceColumnName();
Boolean isMedalRace = valueToValidate.isMedalRace();
String racename = valueToValidate.getA().getRaceColumnName();
Boolean isMedalRace = valueToValidate.getA().isMedalRace();
boolean isNameNotEmpty = racename != null & racename != "";
boolean medalRaceNotNull = isMedalRace != null;
boolean unique = true;
for (RaceColumnDTO dao : existingRaces) {
if (dao.getRaceColumnName().equals(valueToValidate.getRaceColumnName())) {
for (Pair<RaceColumnDTO, String> raceColumnAndFleetName : existingRaces) {
if (raceColumnAndFleetName.getA().getRaceColumnName().equals(valueToValidate.getA().getRaceColumnName())) {
unique = false;
}
}
@@ -57,9 +66,9 @@ public class RaceInLeaderboardDialog extends DataEntryDialog<RaceColumnDTO> {
}
public RaceInLeaderboardDialog(Collection<RaceColumnDTO> existingRaces,
public RaceInLeaderboardDialog(Collection<Pair<RaceColumnDTO, String>> existingRaces,
RaceColumnDTO raceInLeaderboard, StringMessages stringConstants,
AsyncCallback<RaceColumnDTO> callback) {
AsyncCallback<Pair<RaceColumnDTO, String>> callback) {
super(stringConstants.name(), null, stringConstants.ok(), stringConstants.cancel(),
new RaceDialogValidator(stringConstants, existingRaces), callback);
this.raceInLeaderboard = raceInLeaderboard;
@@ -69,10 +78,11 @@ public class RaceInLeaderboardDialog extends DataEntryDialog<RaceColumnDTO> {
}
@Override
protected RaceColumnDTO getResult() {
protected Pair<RaceColumnDTO, String> getResult() {
raceInLeaderboard.setRaceColumnName(raceNameBox.getValue());
raceInLeaderboard.setMedalRace(isMedalRace.getValue());
return raceInLeaderboard;
raceInLeaderboard.addFleetName(DEFAULT_FLEET_NAME);
return new Pair<RaceColumnDTO, String>(raceInLeaderboard, raceInLeaderboard.getFleetNames().iterator().next());
}
@Override
@@ -1,6 +1,5 @@
package com.sap.sailing.gwt.ui.client;
import com.sap.sailing.gwt.ui.shared.panels.ClosableWelcomeWidget;
import com.sap.sailing.gwt.ui.shared.panels.SimpleWelcomeWidget;
import com.sap.sailing.gwt.ui.shared.panels.WelcomeWidget;
@@ -14,7 +13,7 @@ public interface HasWelcomeWidget {
/**
* Sets the welcome widget of the component.
* @param welcome The new welcome widget
* @see {@link WelcomeWidget}, {@link SimpleWelcomeWidget}, {@link ClosableWelcomeWidget}, ...
* @see {@link WelcomeWidget}, {@link SimpleWelcomeWidget}
*/
void setWelcomeWidget(WelcomeWidget welcome);
void setWelcomeWidgetVisible(boolean isVisible);