From 99b712eccb3e1db857baab0fdc33fef9fdb83f2b Mon Sep 17 00:00:00 2001 From: Lukas Furmanek Date: Thu, 26 Nov 2015 16:35:27 +0100 Subject: [PATCH] revised AbstractTrackedRacesListComposite.java --- .../AbstractLeaderboardConfigPanel.java | 12 +- .../AbstractTrackedRacesListComposite.java | 112 ++++++++++-------- .../adminconsole/CompetitorTableWrapper.java | 2 +- .../ControlPointTableWrapper.java | 2 +- .../DeviceIdentifierTableWrapper.java | 2 +- .../DeviceMappingTableWrapper.java | 2 +- .../gwt/ui/adminconsole/MarkTableWrapper.java | 2 +- .../gwt/ui/adminconsole/RaceTableWrapper.java | 7 +- .../gwt/ui/adminconsole/TableWrapper.java | 12 +- ...ileImportDeviceIdentifierTableWrapper.java | 2 +- .../TrackedRacesListComposite.java | 2 +- .../ui/adminconsole/WaypointTableWrapper.java | 2 +- 12 files changed, 91 insertions(+), 68 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLeaderboardConfigPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLeaderboardConfigPanel.java index 7e0352c989d..4ad8007dbc1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLeaderboardConfigPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLeaderboardConfigPanel.java @@ -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 leaderboardTable; protected final RaceTableWrapper> raceColumnTable; - protected final SetSelectionModel raceColumnTableSelectionModel; + protected final RefreshableSelectionModel raceColumnTableSelectionModel; protected RaceColumnDTOAndFleetDTOWithNameBasedEquality selectedRaceInLeaderboard; @@ -85,7 +88,8 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel implement protected final RefreshableMultiSelectionModel refreshableLeaderboardSelectionModel; - protected final RaceSelectionProvider raceSelectionProvider; + //protected final RaceSelectionProvider raceSelectionProvider; + protected final RefreshableSingleSelectionModel 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(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractTrackedRacesListComposite.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractTrackedRacesListComposite.java index fe16fdeda07..1acaf12b83c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractTrackedRacesListComposite.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractTrackedRacesListComposite.java @@ -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, - 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 selectionModel; + protected RefreshableSelectionModel refreshableSelectionModel; private SelectionCheckboxColumn 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(tableResources.cellTableStyle().cellTableCheckboxSelected(), - tableResources.cellTableStyle().cellTableCheckboxDeselected(), tableResources.cellTableStyle().cellTableCheckboxColumnCell(), null /*entityIdentityComparator to create a RefreshableSelectionModel*/) { - @Override - protected ListDataProvider getListDataProvider() { - return raceList; - } + if (multiSelection) { + this.selectionCheckboxColumn = new SelectionCheckboxColumn( + tableResources.cellTableStyle().cellTableCheckboxSelected(), + tableResources.cellTableStyle().cellTableCheckboxDeselected(), + tableResources.cellTableStyle().cellTableCheckboxColumnCell(), + new EntityIdentityComparator() { - @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 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(); + raceTable.setSelectionModel(refreshableSelectionModel); + } raceList = new ListDataProvider(); settings = new TrackedRacesSettings(); @@ -139,13 +155,7 @@ public abstract class AbstractTrackedRacesListComposite extends SimplePanel impl raceTable.ensureDebugId("TrackedRacesCellTable"); ListHandler columnSortHandler = setupTableColumns(stringMessages); raceTable.setWidth("300px"); - if (multiSelection) { - selectionModel = this.selectionCheckboxColumn.getSelectionModel(); - raceTable.setSelectionModel(selectionModel, this.selectionCheckboxColumn.getSelectionManager()); - } else { - selectionModel = new SingleSelectionModel(); - 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 selectedRaces = getSelectedRaces(); + Set selectedRaces = refreshableSelectionModel.getSelectedSet(); makeControlsReactToSelectionChange(selectedRaces); - if (dontFireNextSelectionChangeEvent) { + /*if (dontFireNextSelectionChangeEvent) { dontFireNextSelectionChangeEvent = false; } else { + List selectedRaceIdentifiers = new ArrayList(); for (RaceDTO selectedRace : selectedRaces) { selectedRaceIdentifiers.add(selectedRace.getRaceIdentifier()); } AbstractTrackedRacesListComposite.this.raceSelectionProvider.setSelection(selectedRaceIdentifiers, AbstractTrackedRacesListComposite.this); - } + + }*/ } }); filterablePanelRaces = new LabeledAbstractFilterablePanel(lblFilterRaces, allRaces, raceTable, raceList) { @@ -196,7 +208,7 @@ public abstract class AbstractTrackedRacesListComposite extends SimplePanel impl addControlButtons(trackedRacesButtonPanel); } - abstract protected void makeControlsReactToSelectionChange(List selectedRaces); + abstract protected void makeControlsReactToSelectionChange(Set selectedRaces); abstract protected void makeControlsReactToFillRegattas(Iterable regattas); @@ -381,14 +393,14 @@ public abstract class AbstractTrackedRacesListComposite extends SimplePanel impl return columnSortHandler; } - + /* @Override public void onRaceSelectionChange(List 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 raceIdentifiersToUpdate = new ArrayList(); - 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 getSelectedRaces() { List result = new ArrayList(); 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 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 newAllRaces = new ArrayList(); List newAllRegattas = new ArrayList(); - List newAllRaceIdentifiers = new ArrayList(); + //List newAllRaceIdentifiers = new ArrayList(); 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 getSelectionModel() { + return refreshableSelectionModel; + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorTableWrapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorTableWrapper.java index 9b74a2a56cb..b27f1894845 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorTableWrapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorTableWrapper.java @@ -31,7 +31,7 @@ public class CompetitorTableWrapper> 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 competitorColumnListHandler = getColumnSortHandler(); // competitors table diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ControlPointTableWrapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ControlPointTableWrapper.java index 3671f8d60f4..d08c9492800 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ControlPointTableWrapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ControlPointTableWrapper.java @@ -12,7 +12,7 @@ import com.sap.sse.gwt.client.ErrorReporter; public class ControlPointTableWrapper> extends TableWrapper { 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 nameColumn = new TextColumn() { @Override public String getValue(ControlPointDTO d) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/DeviceIdentifierTableWrapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/DeviceIdentifierTableWrapper.java index 7024f8a3d6a..a47a1923e11 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/DeviceIdentifierTableWrapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/DeviceIdentifierTableWrapper.java @@ -11,7 +11,7 @@ public class DeviceIdentifierTableWrapper extends TableWrapper typeColumn = new TextColumn() { @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/DeviceMappingTableWrapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/DeviceMappingTableWrapper.java index 339a10e99a1..66d654661f3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/DeviceMappingTableWrapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/DeviceMappingTableWrapper.java @@ -30,7 +30,7 @@ public class DeviceMappingTableWrapper extends TableWrapper() { @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MarkTableWrapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MarkTableWrapper.java index b57c4937573..6dff4737162 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MarkTableWrapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MarkTableWrapper.java @@ -19,7 +19,7 @@ import com.sap.sse.gwt.client.ErrorReporter; public class MarkTableWrapper> extends TableWrapper { 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 markNameColumn = new TextColumn() { @Override public String getValue(MarkDTO markDTO) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceTableWrapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceTableWrapper.java index 5d1eb5fdeb5..b72c2a296b4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceTableWrapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceTableWrapper.java @@ -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> extends TableWrapper { @@ -27,7 +28,7 @@ extends TableWrapper { 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 raceNameColumn = new Column(new AnchorCell()) { @Override @@ -74,4 +75,8 @@ extends TableWrapper { public void setSelectedLeaderboardName(String name) { this.selectedLeaderboardName = name; } + + public RefreshableSelectionModel getRefreshableSelectionModel() { + return (RefreshableSelectionModel) super.getSelectionModel(); + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TableWrapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TableWrapper.java index 09c7bb16d4b..cb1024fe7eb 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TableWrapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TableWrapper.java @@ -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 > to > public abstract class TableWrapper> implements IsWidget { protected final CellTable table; private final S selectionModel; @@ -28,6 +30,7 @@ public abstract class TableWrapper> implements Is protected VerticalPanel mainPanel; protected final SailingServiceAsync sailingService; protected final ErrorReporter errorReporter; + private final EntityIdentityComparator entityIdentityComparator; private final AdminConsoleTableResources tableRes = GWT.create(AdminConsoleTableResources.class); private final ListHandler columnSortHandler; @@ -38,7 +41,8 @@ public abstract class TableWrapper> implements Is } public TableWrapper(SailingServiceAsync sailingService, StringMessages stringMessages, ErrorReporter errorReporter, - boolean multiSelection, boolean enablePager) { + boolean multiSelection, boolean enablePager, EntityIdentityComparator entityIdentityComparator) { + this.entityIdentityComparator = entityIdentityComparator; this.sailingService = sailingService; this.errorReporter = errorReporter; table = new CellTable(10000, tableRes); @@ -49,7 +53,7 @@ public abstract class TableWrapper> implements Is SelectionCheckboxColumn selectionCheckboxColumn = new SelectionCheckboxColumn( tableRes.cellTableStyle().cellTableCheckboxSelected(), tableRes.cellTableStyle().cellTableCheckboxDeselected(), - tableRes.cellTableStyle().cellTableCheckboxColumnCell(), null /*entityIdentityComparator to create a RefreshableSelectionModel*/) { + tableRes.cellTableStyle().cellTableCheckboxColumnCell(), this.entityIdentityComparator) { @Override protected ListDataProvider getListDataProvider() { return dataProvider; @@ -63,7 +67,7 @@ public abstract class TableWrapper> implements Is table.addColumn(selectionCheckboxColumn, selectionCheckboxColumn.getHeader()); } else { @SuppressWarnings("unchecked") - S typedSelectionModel = (S) new SingleSelectionModel(); + S typedSelectionModel = (S) new RefreshableSingleSelectionModel(entityIdentityComparator); selectionModel = typedSelectionModel; table.setSelectionModel(selectionModel); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TrackFileImportDeviceIdentifierTableWrapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TrackFileImportDeviceIdentifierTableWrapper.java index 9e6d3b47f9f..f99e62eb864 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TrackFileImportDeviceIdentifierTableWrapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TrackFileImportDeviceIdentifierTableWrapper.java @@ -13,7 +13,7 @@ SingleSelectionModel> { 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 uuidColumn = new TextColumn() { @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TrackedRacesListComposite.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TrackedRacesListComposite.java index 1296571fbae..4ffd80ab52d 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TrackedRacesListComposite.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TrackedRacesListComposite.java @@ -155,7 +155,7 @@ public class TrackedRacesListComposite extends AbstractTrackedRacesListComposite } @Override - protected void makeControlsReactToSelectionChange(List selectedRaces) { + protected void makeControlsReactToSelectionChange(Set selectedRaces) { if(actionButtonsEnabled) { if (selectedRaces.isEmpty()) { btnRemoveRace.setEnabled(false); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/WaypointTableWrapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/WaypointTableWrapper.java index b987b2512a9..0eb918c74e0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/WaypointTableWrapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/WaypointTableWrapper.java @@ -13,7 +13,7 @@ import com.sap.sse.gwt.client.ErrorReporter; public class WaypointTableWrapper> extends TableWrapper { 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 nameColumn = new TextColumn() { @Override