mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-08 21:30:57 +00:00
adjusted LeaderboardConfigPanel to understand a little bit about fleets; compilable again, but not tested at all
This commit is contained in:
1 parent
c552a7bab0
commit
1b5fc2d545
4 files changed
+163
-150
No files matched your search
+10
-5
@@ -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);
|
||||
|
||||
+127
-128
@@ -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() + "®attaName="
|
||||
+ 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();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
+25
-15
@@ -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
-2
@@ -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);
|
||||
|
||||
Reference in new issue
Block a user