revised AbstractTrackedRacesListComposite.java

This commit is contained in:
Lukas Furmanek committed 2015-11-26 16:35:27 +01:00
1 parent 4c4734647d
commit 99b712eccb
12 files changed
+91 -68

No files matched your search

@@ -30,6 +30,7 @@ import com.sap.sailing.domain.common.RegattaNameAndRaceName;
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.RaceColumnInLeaderboardDialog.RaceColumnDescriptor;
import com.sap.sailing.gwt.ui.client.LeaderboardsDisplayer;
import com.sap.sailing.gwt.ui.client.LeaderboardsRefresher;
@@ -51,6 +52,8 @@ import com.sap.sse.common.Util;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
import com.sap.sse.gwt.client.celltable.RefreshableMultiSelectionModel;
import com.sap.sse.gwt.client.celltable.RefreshableSelectionModel;
import com.sap.sse.gwt.client.celltable.RefreshableSingleSelectionModel;
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel;
@@ -71,7 +74,7 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel implement
protected final CellTable<StrippedLeaderboardDTO> leaderboardTable;
protected final RaceTableWrapper<SetSelectionModel<RaceColumnDTOAndFleetDTOWithNameBasedEquality>> raceColumnTable;
protected final SetSelectionModel<RaceColumnDTOAndFleetDTOWithNameBasedEquality> raceColumnTableSelectionModel;
protected final RefreshableSelectionModel<RaceColumnDTOAndFleetDTOWithNameBasedEquality> raceColumnTableSelectionModel;
protected RaceColumnDTOAndFleetDTOWithNameBasedEquality selectedRaceInLeaderboard;
@@ -85,7 +88,8 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel implement
protected final RefreshableMultiSelectionModel<StrippedLeaderboardDTO> refreshableLeaderboardSelectionModel;
protected final RaceSelectionProvider raceSelectionProvider;
//protected final RaceSelectionProvider raceSelectionProvider;
protected final RefreshableSingleSelectionModel<RaceDTO> raceSingelSelectionModel;
private final LeaderboardsRefresher leaderboardsRefresher;
@@ -210,7 +214,7 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel implement
trackedRacesCaptionPanel.setContentWidget(trackedRacesPanel);
trackedRacesCaptionPanel.setStyleName("bold");
raceSelectionProvider = new RaceSelectionModel();
//raceSelectionProvider = new RaceSelectionModel();
trackedRacesListComposite = new TrackedRacesListComposite(sailingService, errorReporter, regattaRefresher,
raceSelectionProvider, stringMessages, /* multiselection */false, isActionButtonsEnabled());
trackedRacesListComposite.ensureDebugId("TrackedRacesListComposite");
@@ -239,7 +243,7 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel implement
sailingService, stringMessages, errorReporter, multiSelection);
raceColumnTable.getTable().setWidth("100%");
addColumnsToRacesTable(raceColumnTable.getTable());
this.raceColumnTableSelectionModel = raceColumnTable.getSelectionModel();
this.raceColumnTableSelectionModel = raceColumnTable.getRefreshableSelectionModel();
raceColumnTableSelectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
public void onSelectionChange(SelectionChangeEvent event) {
leaderboardRaceColumnSelectionChanged();
@@ -1,9 +1,9 @@
package com.sap.sailing.gwt.ui.adminconsole;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import com.google.gwt.cell.client.AbstractCell;
import com.google.gwt.core.client.GWT;
@@ -27,13 +27,10 @@ import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.view.client.ListDataProvider;
import com.google.gwt.view.client.SelectionChangeEvent;
import com.google.gwt.view.client.SelectionChangeEvent.Handler;
import com.google.gwt.view.client.SelectionModel;
import com.google.gwt.view.client.SingleSelectionModel;
import com.sap.sailing.domain.common.RaceIdentifier;
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
import com.sap.sailing.domain.common.TrackedRaceStatusEnum;
import com.sap.sailing.domain.common.dto.RaceDTO;
import com.sap.sailing.gwt.ui.client.RaceSelectionChangeListener;
import com.sap.sailing.gwt.ui.client.RaceSelectionProvider;
import com.sap.sailing.gwt.ui.client.RegattaRefresher;
import com.sap.sailing.gwt.ui.client.RegattasDisplayer;
@@ -46,20 +43,23 @@ import com.sap.sse.common.Util;
import com.sap.sse.common.util.NaturalComparator;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
import com.sap.sse.gwt.client.celltable.EntityIdentityComparator;
import com.sap.sse.gwt.client.celltable.RefreshableSelectionModel;
import com.sap.sse.gwt.client.celltable.RefreshableSingleSelectionModel;
import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel;
import com.sap.sse.gwt.client.shared.components.Component;
import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent;
public abstract class AbstractTrackedRacesListComposite extends SimplePanel implements Component<TrackedRacesSettings>,
RegattasDisplayer, RaceSelectionChangeListener {
RegattasDisplayer/*, RaceSelectionChangeListener*/ {
protected final long DEFAULT_LIVE_DELAY_IN_MILLISECONDS = 5000;
private final boolean multiSelection;
private boolean dontFireNextSelectionChangeEvent;
//private boolean dontFireNextSelectionChangeEvent;
private SelectionModel<RaceDTO> selectionModel;
protected RefreshableSelectionModel<RaceDTO> refreshableSelectionModel;
private SelectionCheckboxColumn<RaceDTO> selectionCheckboxColumn;
@@ -74,7 +74,7 @@ public abstract class AbstractTrackedRacesListComposite extends SimplePanel impl
protected final SailingServiceAsync sailingService;
protected final ErrorReporter errorReporter;
protected final RegattaRefresher regattaRefresher;
private final RaceSelectionProvider raceSelectionProvider;
//private final RaceSelectionProvider raceSelectionProvider;
protected final StringMessages stringMessages;
private Button btnRefresh;
@@ -97,24 +97,40 @@ public abstract class AbstractTrackedRacesListComposite extends SimplePanel impl
this.errorReporter = errorReporter;
this.regattaRefresher = regattaRefresher;
this.multiSelection = hasMultiSelection;
this.raceSelectionProvider = raceSelectionProvider;
// this.raceSelectionProvider = raceSelectionProvider;
this.stringMessages = stringMessages;
}
protected void createUI() {
AdminConsoleTableResources tableResources = GWT.create(AdminConsoleTableResources.class);
this.selectionCheckboxColumn = new SelectionCheckboxColumn<RaceDTO>(tableResources.cellTableStyle().cellTableCheckboxSelected(),
tableResources.cellTableStyle().cellTableCheckboxDeselected(), tableResources.cellTableStyle().cellTableCheckboxColumnCell(), null /*entityIdentityComparator to create a RefreshableSelectionModel*/) {
@Override
protected ListDataProvider<RaceDTO> getListDataProvider() {
return raceList;
}
if (multiSelection) {
this.selectionCheckboxColumn = new SelectionCheckboxColumn<RaceDTO>(
tableResources.cellTableStyle().cellTableCheckboxSelected(),
tableResources.cellTableStyle().cellTableCheckboxDeselected(),
tableResources.cellTableStyle().cellTableCheckboxColumnCell(),
new EntityIdentityComparator<RaceDTO>() {
@Override
public Boolean getValue(RaceDTO row) {
return raceTable.getSelectionModel().isSelected(row);
}
};
@Override
public boolean representSameEntity(RaceDTO dto1, RaceDTO dto2) {
return dto1.getRaceIdentifier().equals(dto2.getRaceIdentifier());
}
}) {
@Override
protected ListDataProvider<RaceDTO> getListDataProvider() {
return raceList;
}
@Override
public Boolean getValue(RaceDTO row) {
return raceTable.getSelectionModel().isSelected(row);
}
};
refreshableSelectionModel = selectionCheckboxColumn.getSelectionModel();
raceTable.setSelectionModel(refreshableSelectionModel, this.selectionCheckboxColumn.getSelectionManager());
} else {
refreshableSelectionModel = new RefreshableSingleSelectionModel<RaceDTO>();
raceTable.setSelectionModel(refreshableSelectionModel);
}
raceList = new ListDataProvider<RaceDTO>();
settings = new TrackedRacesSettings();
@@ -139,13 +155,7 @@ public abstract class AbstractTrackedRacesListComposite extends SimplePanel impl
raceTable.ensureDebugId("TrackedRacesCellTable");
ListHandler<RaceDTO> columnSortHandler = setupTableColumns(stringMessages);
raceTable.setWidth("300px");
if (multiSelection) {
selectionModel = this.selectionCheckboxColumn.getSelectionModel();
raceTable.setSelectionModel(selectionModel, this.selectionCheckboxColumn.getSelectionManager());
} else {
selectionModel = new SingleSelectionModel<RaceDTO>();
raceTable.setSelectionModel(selectionModel);
}
raceTable.setVisible(false);
panel.add(raceTable);
raceList.addDataDisplay(raceTable);
@@ -153,18 +163,20 @@ public abstract class AbstractTrackedRacesListComposite extends SimplePanel impl
raceTable.getSelectionModel().addSelectionChangeHandler(new Handler() {
@Override
public void onSelectionChange(SelectionChangeEvent event) {
List<RaceDTO> selectedRaces = getSelectedRaces();
Set<RaceDTO> selectedRaces = refreshableSelectionModel.getSelectedSet();
makeControlsReactToSelectionChange(selectedRaces);
if (dontFireNextSelectionChangeEvent) {
/*if (dontFireNextSelectionChangeEvent) {
dontFireNextSelectionChangeEvent = false;
} else {
List<RegattaAndRaceIdentifier> selectedRaceIdentifiers = new ArrayList<RegattaAndRaceIdentifier>();
for (RaceDTO selectedRace : selectedRaces) {
selectedRaceIdentifiers.add(selectedRace.getRaceIdentifier());
}
AbstractTrackedRacesListComposite.this.raceSelectionProvider.setSelection(selectedRaceIdentifiers,
AbstractTrackedRacesListComposite.this);
}
}*/
}
});
filterablePanelRaces = new LabeledAbstractFilterablePanel<RaceDTO>(lblFilterRaces, allRaces, raceTable, raceList) {
@@ -196,7 +208,7 @@ public abstract class AbstractTrackedRacesListComposite extends SimplePanel impl
addControlButtons(trackedRacesButtonPanel);
}
abstract protected void makeControlsReactToSelectionChange(List<RaceDTO> selectedRaces);
abstract protected void makeControlsReactToSelectionChange(Set<RaceDTO> selectedRaces);
abstract protected void makeControlsReactToFillRegattas(Iterable<RegattaDTO> regattas);
@@ -381,14 +393,14 @@ public abstract class AbstractTrackedRacesListComposite extends SimplePanel impl
return columnSortHandler;
}
/*
@Override
public void onRaceSelectionChange(List<RegattaAndRaceIdentifier> selectedRaces) {
for (RaceDTO raceFromAllRaces : raceList.getList()) {
selectionModel.setSelected(raceFromAllRaces, selectedRaces.contains(raceFromAllRaces.getRaceIdentifier()));
}
}
*/
@Override
public boolean hasSettings() {
return true;
@@ -405,7 +417,7 @@ public abstract class AbstractTrackedRacesListComposite extends SimplePanel impl
// set the new delay to all selected races
List<RegattaAndRaceIdentifier> raceIdentifiersToUpdate = new ArrayList<RegattaAndRaceIdentifier>();
for (RaceDTO raceDTO : getSelectedRaces()) {
for (RaceDTO raceDTO : refreshableSelectionModel.getSelectedSet()) {
raceIdentifiersToUpdate.add(raceDTO.getRaceIdentifier());
}
@@ -439,8 +451,8 @@ public abstract class AbstractTrackedRacesListComposite extends SimplePanel impl
return this;
}
public void addRaceSelectionChangeListener(RaceSelectionChangeListener listener) {
this.raceSelectionProvider.addRaceSelectionChangeListener(listener);
public void addRaceSelectionChangeHandler(Handler handler) {
refreshableSelectionModel.addSelectionChangeHandler(handler);
}
public RaceDTO getRaceByIdentifier(RaceIdentifier raceIdentifier) {
@@ -455,7 +467,7 @@ public abstract class AbstractTrackedRacesListComposite extends SimplePanel impl
}
return result;
}
/*
List<RaceDTO> getSelectedRaces() {
List<RaceDTO> result = new ArrayList<RaceDTO>();
if (raceList != null) {
@@ -467,15 +479,15 @@ public abstract class AbstractTrackedRacesListComposite extends SimplePanel impl
}
return result;
}
*/
public void selectRaceByIdentifier(RegattaAndRaceIdentifier raceIdentifier) {
if (raceList != null) {
for (RaceDTO race : raceList.getList()) {
String regattaName = race.getRegattaName();
if (regattaName.equals(raceIdentifier.getRegattaName())
&& race.getName().equals(raceIdentifier.getRaceName())) {
dontFireNextSelectionChangeEvent = true;
selectionModel.setSelected(race, true);
//dontFireNextSelectionChangeEvent = true;
refreshableSelectionModel.setSelected(race, true);
break;
}
}
@@ -483,13 +495,7 @@ public abstract class AbstractTrackedRacesListComposite extends SimplePanel impl
}
public void clearSelection() {
List<RegattaAndRaceIdentifier> emptySelection = Collections.emptyList();
raceSelectionProvider.setSelection(emptySelection, /* listenersNotToNotify */this);
if (raceList != null) {
for (RaceDTO race : raceList.getList()) {
selectionModel.setSelected(race, false);
}
}
refreshableSelectionModel.clear();
}
@Override
@@ -504,22 +510,23 @@ public abstract class AbstractTrackedRacesListComposite extends SimplePanel impl
}
List<RaceDTO> newAllRaces = new ArrayList<RaceDTO>();
List<RegattaDTO> newAllRegattas = new ArrayList<RegattaDTO>();
List<RegattaAndRaceIdentifier> newAllRaceIdentifiers = new ArrayList<RegattaAndRaceIdentifier>();
//List<RegattaAndRaceIdentifier> newAllRaceIdentifiers = new ArrayList<RegattaAndRaceIdentifier>();
for (RegattaDTO regatta : regattas) {
newAllRegattas.add(regatta);
for (RaceDTO race : regatta.races) {
if (race != null) {
if (raceIsToBeAddedToList(race)) {
newAllRaces.add(race);
newAllRaceIdentifiers.add(race.getRaceIdentifier());
//newAllRaceIdentifiers.add(race.getRaceIdentifier());
}
}
}
}
allRaces = newAllRaces;
filterablePanelRaces.updateAll(allRaces);
raceSelectionProvider.setAllRaces(newAllRaceIdentifiers); // have this object be notified; triggers
//raceSelectionProvider.setAllRaces(newAllRaceIdentifiers); // have this object be notified; triggers
// onRaceSelectionChange
refreshableSelectionModel.refreshSelectionModel(allRaces);
}
/**
@@ -532,5 +539,8 @@ public abstract class AbstractTrackedRacesListComposite extends SimplePanel impl
protected boolean raceIsToBeAddedToList(RaceDTO race) {
return true;
}
public RefreshableSelectionModel<RaceDTO> getSelectionModel() {
return refreshableSelectionModel;
}
}
@@ -31,7 +31,7 @@ public class CompetitorTableWrapper<S extends SelectionModel<CompetitorDTO>> ext
public CompetitorTableWrapper(SailingServiceAsync sailingService, StringMessages stringMessages,ErrorReporter errorReporter,
boolean multiSelection, boolean enablePager) {
super(sailingService, stringMessages, errorReporter, multiSelection, enablePager);
super(sailingService, stringMessages, errorReporter, multiSelection, enablePager, null /*EntityIdentityComparator for RefreshableSelectionModel*/);
ListHandler<CompetitorDTO> competitorColumnListHandler = getColumnSortHandler();
// competitors table
@@ -12,7 +12,7 @@ import com.sap.sse.gwt.client.ErrorReporter;
public class ControlPointTableWrapper<S extends SelectionModel<ControlPointDTO>> extends TableWrapper<ControlPointDTO, S> {
public ControlPointTableWrapper(boolean multiSelection, SailingServiceAsync sailingService, final StringMessages stringMessages,
ErrorReporter errorReporter) {
super(sailingService, stringMessages, errorReporter, multiSelection, /* enablePager */ true);
super(sailingService, stringMessages, errorReporter, multiSelection, /* enablePager */ true, null /*EntityIdentityComparator for RefreshableSelectionModel*/);
TextColumn<ControlPointDTO> nameColumn = new TextColumn<ControlPointDTO>() {
@Override
public String getValue(ControlPointDTO d) {
@@ -11,7 +11,7 @@ public class DeviceIdentifierTableWrapper extends TableWrapper<DeviceIdentifierD
public DeviceIdentifierTableWrapper(SailingServiceAsync sailingService, StringMessages stringMessages,
ErrorReporter errorReporter) {
super(sailingService, stringMessages, errorReporter, /* multiSelection */ true, /* enablePager */ false);
super(sailingService, stringMessages, errorReporter, /* multiSelection */ true, /* enablePager */ false, null /*EntityIdentityComparator for RefreshableSelectionModel*/);
TextColumn<DeviceIdentifierDTO> typeColumn = new TextColumn<DeviceIdentifierDTO>() {
@Override
@@ -30,7 +30,7 @@ public class DeviceMappingTableWrapper extends TableWrapper<DeviceMappingDTO, Si
public DeviceMappingTableWrapper(SailingServiceAsync sailingService, final StringMessages stringMessages,
ErrorReporter errorReporter) {
super(sailingService, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true);
super(sailingService, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true, null /*EntityIdentityComparator for RefreshableSelectionModel*/);
showPingMappingsCb = new CheckBox(stringMessages.showPingMarkMappings());
showPingMappingsCb.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
@Override
@@ -19,7 +19,7 @@ import com.sap.sse.gwt.client.ErrorReporter;
public class MarkTableWrapper<S extends SelectionModel<MarkDTO>> extends TableWrapper<MarkDTO, S> {
public MarkTableWrapper(boolean multiSelection, SailingServiceAsync sailingService, StringMessages stringMessages,
ErrorReporter errorReporter) {
super(sailingService, stringMessages, errorReporter, multiSelection, true);
super(sailingService, stringMessages, errorReporter, multiSelection, true, null /*EntityIdentityComparator for RefreshableSelectionModel*/);
TextColumn<MarkDTO> markNameColumn = new TextColumn<MarkDTO>() {
@Override
public String getValue(MarkDTO markDTO) {
@@ -19,6 +19,7 @@ import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.common.util.NaturalComparator;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.celltable.RefreshableSelectionModel;
public class RaceTableWrapper<S extends SelectionModel<RaceColumnDTOAndFleetDTOWithNameBasedEquality>>
extends TableWrapper<RaceColumnDTOAndFleetDTOWithNameBasedEquality, S> {
@@ -27,7 +28,7 @@ extends TableWrapper<RaceColumnDTOAndFleetDTOWithNameBasedEquality, S> {
public RaceTableWrapper(SailingServiceAsync sailingService, StringMessages stringMessages,
ErrorReporter errorReporter, boolean multiSelection) {
super(sailingService, stringMessages, errorReporter, multiSelection, /* enablePager */ false);
super(sailingService, stringMessages, errorReporter, multiSelection, /* enablePager */ false, null /*EntityIdentityComparator for RefreshableSelectionModel*/);
Column<RaceColumnDTOAndFleetDTOWithNameBasedEquality, SafeHtml> raceNameColumn =
new Column<RaceColumnDTOAndFleetDTOWithNameBasedEquality, SafeHtml>(new AnchorCell()) {
@Override
@@ -74,4 +75,8 @@ extends TableWrapper<RaceColumnDTOAndFleetDTOWithNameBasedEquality, S> {
public void setSelectedLeaderboardName(String name) {
this.selectedLeaderboardName = name;
}
public RefreshableSelectionModel<RaceColumnDTOAndFleetDTOWithNameBasedEquality> getRefreshableSelectionModel() {
return (RefreshableSelectionModel<RaceColumnDTOAndFleetDTOWithNameBasedEquality>) super.getSelectionModel();
}
}
@@ -9,18 +9,20 @@ import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.view.client.ListDataProvider;
import com.google.gwt.view.client.SelectionModel;
import com.google.gwt.view.client.SingleSelectionModel;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.client.shared.controls.SelectionCheckboxColumn;
import com.sap.sse.common.Util;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.celltable.EntityIdentityComparator;
import com.sap.sse.gwt.client.celltable.RefreshableSingleSelectionModel;
/**
* Implementing classes still have to add the table to the main panel. The table created and wrapped by this object
* offers already a {@link ListHandler} for sorting. Subclasses can obtain the table's default column sort handler
* created by this class's constructor by calling {@link #getColumnSortHandler}.
*/
//TODO change <T, S extends SelectionModel<T>> to <T, S extents RefreshableSelectionModel<T>>
public abstract class TableWrapper<T, S extends SelectionModel<T>> implements IsWidget {
protected final CellTable<T> table;
private final S selectionModel;
@@ -28,6 +30,7 @@ public abstract class TableWrapper<T, S extends SelectionModel<T>> implements Is
protected VerticalPanel mainPanel;
protected final SailingServiceAsync sailingService;
protected final ErrorReporter errorReporter;
private final EntityIdentityComparator<T> entityIdentityComparator;
private final AdminConsoleTableResources tableRes = GWT.create(AdminConsoleTableResources.class);
private final ListHandler<T> columnSortHandler;
@@ -38,7 +41,8 @@ public abstract class TableWrapper<T, S extends SelectionModel<T>> implements Is
}
public TableWrapper(SailingServiceAsync sailingService, StringMessages stringMessages, ErrorReporter errorReporter,
boolean multiSelection, boolean enablePager) {
boolean multiSelection, boolean enablePager, EntityIdentityComparator<T> entityIdentityComparator) {
this.entityIdentityComparator = entityIdentityComparator;
this.sailingService = sailingService;
this.errorReporter = errorReporter;
table = new CellTable<T>(10000, tableRes);
@@ -49,7 +53,7 @@ public abstract class TableWrapper<T, S extends SelectionModel<T>> implements Is
SelectionCheckboxColumn<T> selectionCheckboxColumn = new SelectionCheckboxColumn<T>(
tableRes.cellTableStyle().cellTableCheckboxSelected(),
tableRes.cellTableStyle().cellTableCheckboxDeselected(),
tableRes.cellTableStyle().cellTableCheckboxColumnCell(), null /*entityIdentityComparator to create a RefreshableSelectionModel*/) {
tableRes.cellTableStyle().cellTableCheckboxColumnCell(), this.entityIdentityComparator) {
@Override
protected ListDataProvider<T> getListDataProvider() {
return dataProvider;
@@ -63,7 +67,7 @@ public abstract class TableWrapper<T, S extends SelectionModel<T>> implements Is
table.addColumn(selectionCheckboxColumn, selectionCheckboxColumn.getHeader());
} else {
@SuppressWarnings("unchecked")
S typedSelectionModel = (S) new SingleSelectionModel<T>();
S typedSelectionModel = (S) new RefreshableSingleSelectionModel<T>(entityIdentityComparator);
selectionModel = typedSelectionModel;
table.setSelectionModel(selectionModel);
}
@@ -13,7 +13,7 @@ SingleSelectionModel<TrackFileImportDeviceIdentifierDTO>> {
public TrackFileImportDeviceIdentifierTableWrapper(SailingServiceAsync sailingService, StringMessages stringMessages,
ErrorReporter errorReporter) {
super(sailingService, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true);
super(sailingService, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true, null /*EntityIdentityComparator for RefreshableSelectionModel*/);
TextColumn<TrackFileImportDeviceIdentifierDTO> uuidColumn = new TextColumn<TrackFileImportDeviceIdentifierDTO>() {
@Override
@@ -155,7 +155,7 @@ public class TrackedRacesListComposite extends AbstractTrackedRacesListComposite
}
@Override
protected void makeControlsReactToSelectionChange(List<RaceDTO> selectedRaces) {
protected void makeControlsReactToSelectionChange(Set<RaceDTO> selectedRaces) {
if(actionButtonsEnabled) {
if (selectedRaces.isEmpty()) {
btnRemoveRace.setEnabled(false);
@@ -13,7 +13,7 @@ import com.sap.sse.gwt.client.ErrorReporter;
public class WaypointTableWrapper<S extends SelectionModel<WaypointDTO>> extends TableWrapper<WaypointDTO, S> {
public WaypointTableWrapper(boolean multiSelection, SailingServiceAsync sailingService, final StringMessages stringMessages,
ErrorReporter errorReporter) {
super(sailingService, stringMessages, errorReporter, multiSelection, true);
super(sailingService, stringMessages, errorReporter, multiSelection, true, null /*EntityIdentityComparator for RefreshableSelectionModel*/);
TextColumn<WaypointDTO> nameColumn = new TextColumn<WaypointDTO>() {
@Override