diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorPanel.java index 54f8369f8ad..51ad785a15d 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorPanel.java @@ -61,8 +61,10 @@ public class CompetitorPanel extends SimplePanel { this.stringMessages = stringMessages; this.errorReporter = errorReporter; this.leaderboardName = leaderboardName; - this.competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, - new MultiSelectionModel(), false); + final Class selectionModelType = MultiSelectionModel.class; + @SuppressWarnings("unchecked") + final Class> multiSelectionType = (Class>) selectionModelType; + this.competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, multiSelectionType, false); this.competitorSelectionModel = competitorTable.getSelectionModel(); VerticalPanel mainPanel = new VerticalPanel(); this.setWidget(mainPanel); 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 2f1acd06de2..29ad144265e 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 @@ -6,6 +6,7 @@ import java.util.List; import com.google.gwt.cell.client.SafeHtmlCell; import com.google.gwt.core.client.Callback; +import com.google.gwt.core.client.GWT; import com.google.gwt.resources.client.ImageResource; import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; @@ -15,23 +16,32 @@ import com.google.gwt.user.cellview.client.TextColumn; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.ImageResourceRenderer; import com.google.gwt.user.client.ui.Label; +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.domain.common.dto.CompetitorDTO; import com.sap.sailing.domain.common.impl.NaturalComparator; +import com.sap.sailing.gwt.ui.adminconsole.AdminConsoleTableResources.AdminConsoleTableStyle; import com.sap.sailing.gwt.ui.adminconsole.ColorColumn.ColorRetriever; import com.sap.sailing.gwt.ui.client.FlagImageResolver; 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.Color; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel; public class CompetitorTableWrapper> extends TableWrapper { + private static final AdminConsoleTableResources tableResources = GWT.create(AdminConsoleTableResources.class); + private static final AdminConsoleTableStyle tableSTyle = tableResources.cellTableStyle(); + private final LabeledAbstractFilterablePanel filterField; + + private final S selectionModel; public CompetitorTableWrapper(SailingServiceAsync sailingService, StringMessages stringMessages,ErrorReporter errorReporter, - S selectionModel, boolean enablePager) { - super(sailingService, stringMessages, errorReporter, selectionModel, enablePager); + Class selectionModelType, boolean enablePager) { + super(sailingService, stringMessages, errorReporter, /* selectionModel will be set later below */ null, enablePager); ListHandler competitorColumnListHandler = new ListHandler(dataProvider.getList()); @@ -131,6 +141,26 @@ public class CompetitorTableWrapper> ext }; mainPanel.insert(filterField, 0); + if (selectionModelType.getName().contains("Multi")) { + // add a selection checkbox column + SelectionCheckboxColumn selectionCheckboxColumn = new SelectionCheckboxColumn( + tableSTyle.cellTableCheckboxSelected(), tableSTyle.cellTableCheckboxDeselected(), tableSTyle.cellTableCheckboxColumnCell()) { + @Override + protected ListDataProvider getListDataProvider() { + return dataProvider; + } + }; + @SuppressWarnings("unchecked") + S mySelectionModel = (S) selectionCheckboxColumn.getSelectionModel(); + selectionModel = mySelectionModel; + table.setSelectionModel(selectionModel, selectionCheckboxColumn.getSelectionManager()); + table.addColumn(selectionCheckboxColumn, selectionCheckboxColumn.getHeader()); + } else { + @SuppressWarnings("unchecked") + S mySelectionModel = (S) new SingleSelectionModel(); + selectionModel = mySelectionModel; + table.setSelectionModel(selectionModel); + } table.addColumnSortHandler(competitorColumnListHandler); table.addColumn(sailIdColumn, stringMessages.sailNumber()); table.addColumn(competitorNameColumn, stringMessages.name()); @@ -139,6 +169,11 @@ public class CompetitorTableWrapper> ext table.addColumn(competitorIdColumn, stringMessages.id()); } + @Override + public S getSelectionModel() { + return selectionModel; + } + public Iterable getAllCompetitors() { return filterField.getAll(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImportFixesAndAddMappingsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImportFixesAndAddMappingsDialog.java index b86541d42a9..03db328db33 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImportFixesAndAddMappingsDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImportFixesAndAddMappingsDialog.java @@ -60,8 +60,10 @@ public class ImportFixesAndAddMappingsDialog extends DataEntryDialog(sailingService, stringMessages, errorReporter, - new SingleSelectionModel(), true); + final Class selectionModelType = SingleSelectionModel.class; + @SuppressWarnings("unchecked") + final Class> singleSelectionType = (Class>) selectionModelType; + competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, singleSelectionType, true); markTable = new MarkTableWrapper>( new SingleSelectionModel(), sailingService, stringMessages, errorReporter); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ItemToMapToDeviceSelectionPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ItemToMapToDeviceSelectionPanel.java index 2941c6b4758..61dd9736f6c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ItemToMapToDeviceSelectionPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ItemToMapToDeviceSelectionPanel.java @@ -35,9 +35,11 @@ public class ItemToMapToDeviceSelectionPanel implements IsWidget { this.selected = selected; this.errorReporter = errorReporter; + final Class selectionModelType = SingleSelectionModel.class; + @SuppressWarnings("unchecked") + final Class> singleSelectionType = (Class>) selectionModelType; + competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, singleSelectionType, true); final SingleSelectionModel markSelectionModel = new SingleSelectionModel(); - competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, - new SingleSelectionModel(), true); markTable = new MarkTableWrapper>(markSelectionModel, sailingService, stringMessages, errorReporter); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCompetitorRegistrationsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCompetitorRegistrationsDialog.java index 80ddf34d978..7249edae979 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCompetitorRegistrationsDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCompetitorRegistrationsDialog.java @@ -88,10 +88,11 @@ public class RaceLogTrackingCompetitorRegistrationsDialog extends AbstractSaveDi mainPanel.add(panel); CaptionPanel allCompetitorsPanel = new CaptionPanel(stringMessages.competitorPool()); CaptionPanel registeredCompetitorsPanel = new CaptionPanel(stringMessages.registeredCompetitors()); - allCompetitorsTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, - new MultiSelectionModel(), true); - registeredCompetitorsTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, - new MultiSelectionModel(), true); + final Class selectionModelType = MultiSelectionModel.class; + @SuppressWarnings("unchecked") + final Class> multiSelectionType = (Class>) selectionModelType; + allCompetitorsTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, multiSelectionType, true); + registeredCompetitorsTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, multiSelectionType, true); allCompetitorsPanel.add(allCompetitorsTable); registeredCompetitorsPanel.add(registeredCompetitorsTable); VerticalPanel movePanel = new VerticalPanel(); 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 9be6496a3a4..9cac31faafd 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 @@ -19,7 +19,7 @@ import com.sap.sse.gwt.client.ErrorReporter; */ public abstract class TableWrapper> implements IsWidget { protected final CellTable table; - protected final S selectionModel; + private final S selectionModel; protected final ListDataProvider dataProvider; protected VerticalPanel mainPanel; protected final SailingServiceAsync sailingService;