Show message when selection of a trackedrace is changed that is already linked to a leaderboard.

This commit is contained in:
Leon Radeck committed 2017-06-01 12:18:51 +02:00
1 parent 32dfb22474
commit 126b53235f
3 files changed
+71 -5

No files matched your search

@@ -33,6 +33,7 @@ import com.sap.sailing.domain.common.dto.FleetDTO;
import com.sap.sailing.domain.common.dto.NamedDTO;
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
import com.sap.sailing.domain.common.dto.RaceDTO;
import com.sap.sailing.gwt.ui.adminconsole.AbstractLeaderboardConfigPanel.RaceColumnDTOAndFleetDTOWithNameBasedEquality;
import com.sap.sailing.gwt.ui.adminconsole.RaceColumnInLeaderboardDialog.RaceColumnDescriptor;
import com.sap.sailing.gwt.ui.client.LeaderboardsDisplayer;
import com.sap.sailing.gwt.ui.client.LeaderboardsRefresher;
@@ -235,20 +236,48 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel implement
// if no leaderboard column is selected, ignore the race selection change
RaceColumnDTOAndFleetDTOWithNameBasedEquality selectedRaceColumnAndFleetName = getSelectedRaceColumnWithFleet();
if (selectedRaceColumnAndFleetName != null) {
RaceDTO oldRace = selectedRaceColumnAndFleetName.getA().getRace(selectedRaceColumnAndFleetName.getB());
if (selectedRaces.isEmpty()) {
if (selectedRaceColumnAndFleetName.getA()
.getRaceIdentifier(selectedRaceColumnAndFleetName.getB()) != null) {
if (isRaceColumnAlreadyLinkedToAnotherTrackedRace(selectedRaceColumnAndFleetName)) {
unlinkRaceColumnFromTrackedRace(selectedRaceColumnAndFleetName.getA().getRaceColumnName(),
selectedRaceColumnAndFleetName.getB());
}
} else {
linkTrackedRaceToSelectedRaceColumn(selectedRaceColumnAndFleetName.getA(),
selectedRaceColumnAndFleetName.getB(),
selectedRaces.iterator().next().getRaceIdentifier());
if(isRaceColumnAlreadyLinkedToAnotherTrackedRace(selectedRaceColumnAndFleetName)){
if(Window.confirm("Do you really want to change the link?")){
linkTrackedRaceToSelectedRaceColumn(selectedRaceColumnAndFleetName.getA(),
selectedRaceColumnAndFleetName.getB(),
selectedRaces.iterator().next().getRaceIdentifier());
}
else{
trackedRacesListComposite.removeTrackedRaceChangeListener(AbstractLeaderboardConfigPanel.this);
refreshableTrackedRaceSelectionModel.setSelected(selectedRaceColumnAndFleetName.getA().getRace(selectedRaceColumnAndFleetName.getB()),true);
trackedRacesListComposite.addTrackedRaceChangeListener(AbstractLeaderboardConfigPanel.this);
}
}
else{
linkTrackedRaceToSelectedRaceColumn(selectedRaceColumnAndFleetName.getA(),
selectedRaceColumnAndFleetName.getB(),
selectedRaces.iterator().next().getRaceIdentifier());
}
}
}
}
private boolean isRaceColumnAlreadyLinkedToAnotherTrackedRace(
RaceColumnDTOAndFleetDTOWithNameBasedEquality selectedRaceColumnAndFleetName) {
if(selectedRaceColumnAndFleetName.getA()
.getRaceIdentifier(selectedRaceColumnAndFleetName.getB()) != null)
{
return true;
}
return false;
}
};
trackedRaceListHandlerRegistration = refreshableTrackedRaceSelectionModel.addSelectionChangeHandler(trackedRaceListHandler);
Button reloadAllRaceLogs = new Button(stringMessages.reloadAllRaceLogs());
@@ -29,6 +29,7 @@ import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.view.client.CellPreviewEvent;
import com.google.gwt.view.client.ListDataProvider;
import com.google.gwt.view.client.SelectionChangeEvent;
import com.google.gwt.view.client.SelectionChangeEvent.Handler;
@@ -58,6 +59,10 @@ import com.sap.sse.gwt.client.shared.components.Component;
import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent;
import com.sap.sse.gwt.client.shared.perspective.ComponentContext;
/**
* @author D069485
*
*/
public abstract class AbstractTrackedRacesListComposite extends AbstractCompositeComponent<TrackedRacesSettings> implements
RegattasDisplayer {
@@ -76,6 +81,8 @@ public abstract class AbstractTrackedRacesListComposite extends AbstractComposit
private Iterable<RaceDTO> allRaces;
private Label noTrackedRacesLabel;
private RaceDTO oldSelectedRace;
protected final SailingServiceAsync sailingService;
protected final ErrorReporter errorReporter;
@@ -127,6 +134,7 @@ public abstract class AbstractTrackedRacesListComposite extends AbstractComposit
}
protected void createUI() {
AdminConsoleTableResources tableResources = GWT.create(AdminConsoleTableResources.class);
raceList = new ListDataProvider<>();
settings = new TrackedRacesSettings();
@@ -241,6 +249,16 @@ public abstract class AbstractTrackedRacesListComposite extends AbstractComposit
}
});
trackedRacesButtonPanel.add(btnRefresh);
raceTable.addCellPreviewHandler(new CellPreviewEvent.Handler<RaceDTO>(){
@Override
public void onCellPreview(CellPreviewEvent<RaceDTO> event){
if ("click".equals(event.getNativeEvent().getType())) {
oldSelectedRace = getSelectionModel().getSelectedSet().iterator().next();
}
}
});
addControlButtons(trackedRacesButtonPanel);
}
@@ -482,6 +500,7 @@ public abstract class AbstractTrackedRacesListComposite extends AbstractComposit
public void addRaceSelectionChangeHandler(Handler handler) {
refreshableSelectionModel.addSelectionChangeHandler(handler);
}
public RaceDTO getRaceByIdentifier(RaceIdentifier raceIdentifier) {
RaceDTO result = null;
@@ -588,4 +607,14 @@ public abstract class AbstractTrackedRacesListComposite extends AbstractComposit
return refreshableSelectionModel;
}
public RaceDTO getOldSelectedRace() {
return oldSelectedRace;
}
public void setOldSelectedRace(RaceDTO oldSelectedRace) {
this.oldSelectedRace = oldSelectedRace;
}
}
@@ -31,6 +31,7 @@ import com.sap.sse.gwt.client.shared.perspective.ComponentContext;
*/
public class TrackedRacesListComposite extends AbstractTrackedRacesListComposite {
final Set<TrackedRaceChangedListener> raceIsTrackedRaceChangeListener;
private Button btnUntrack;
private Button btnRemoveRace;
private Button btnSetDelayToLive;
@@ -45,6 +46,7 @@ public class TrackedRacesListComposite extends AbstractTrackedRacesListComposite
super(parent, context, sailingService, errorReporter, regattaRefresher, stringMessages, hasMultiSelection);
this.raceIsTrackedRaceChangeListener = new HashSet<TrackedRaceChangedListener>();
this.actionButtonsEnabled = actionButtonsEnabled;
createUI();
}
@@ -59,6 +61,12 @@ public class TrackedRacesListComposite extends AbstractTrackedRacesListComposite
public void addTrackedRaceChangeListener(TrackedRaceChangedListener listener) {
this.raceIsTrackedRaceChangeListener.add(listener);
}
public void removeTrackedRaceChangeListener(TrackedRaceChangedListener listener){
this.raceIsTrackedRaceChangeListener.remove(listener);
}
void stopTrackingRaces(final Iterable<RaceDTO> races) {
final List<RegattaAndRaceIdentifier> racesToStopTracking = new ArrayList<RegattaAndRaceIdentifier>();