mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-21 03:30:12 +00:00
revised AbstractTrackedRacesListComposite.java
This commit is contained in:
1 parent
4c4734647d
commit
99b712eccb
12 files changed
+91
-68
No files matched your search
+8
-4
@@ -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();
|
||||
|
||||
+61
-51
@@ -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;
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -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
|
||||
|
||||
+1
-1
@@ -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) {
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
+1
-1
@@ -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) {
|
||||
|
||||
+6
-1
@@ -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();
|
||||
}
|
||||
}
|
||||
+8
-4
@@ -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);
|
||||
}
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
+1
-1
@@ -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);
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
Reference in new issue
Block a user