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 cc6e29035c0..73cc22e496e 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 @@ -122,7 +122,7 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel implement public AbstractLeaderboardConfigPanel(final SailingServiceAsync sailingService, RegattaRefresher regattaRefresher, LeaderboardsRefresher leaderboardsRefresher, final ErrorReporter errorReporter, - StringMessages theStringConstants, SetSelectionModel raceColumnTableSelectionModel) { + StringMessages theStringConstants, boolean multiSelection) { this.stringMessages = theStringConstants; this.sailingService = sailingService; leaderboardList = new ListDataProvider(); @@ -227,16 +227,13 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel implement } }); vPanel.add(reloadAllRaceLogs); - - Label lblRaceNamesIn = new Label(stringMessages.races()); vPanel.add(lblRaceNamesIn); - raceColumnTable = new RaceTableWrapper>( - sailingService, stringMessages, errorReporter, raceColumnTableSelectionModel); + sailingService, stringMessages, errorReporter, multiSelection); raceColumnTable.getTable().setWidth("100%"); addColumnsToRacesTable(raceColumnTable.getTable()); - this.raceColumnTableSelectionModel = raceColumnTableSelectionModel; + this.raceColumnTableSelectionModel = raceColumnTable.getSelectionModel(); 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/CompetitorPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorPanel.java index 51ad785a15d..496fa5fb7e9 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,10 +61,7 @@ public class CompetitorPanel extends SimplePanel { this.stringMessages = stringMessages; this.errorReporter = errorReporter; this.leaderboardName = leaderboardName; - final Class selectionModelType = MultiSelectionModel.class; - @SuppressWarnings("unchecked") - final Class> multiSelectionType = (Class>) selectionModelType; - this.competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, multiSelectionType, false); + this.competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ true, /* enablePager */ 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 3cf9d4423cb..2c4f907eeb1 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,7 +6,6 @@ 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; @@ -16,34 +15,24 @@ 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, - Class selectionModelType, boolean enablePager) { - super(sailingService, stringMessages, errorReporter, /* selectionModel will be set later below */ null, enablePager); - - ListHandler competitorColumnListHandler = new ListHandler(dataProvider.getList()); + boolean multiSelection, boolean enablePager) { + super(sailingService, stringMessages, errorReporter, multiSelection, enablePager); + ListHandler competitorColumnListHandler = getColumnSortHandler(); // competitors table TextColumn competitorNameColumn = new TextColumn() { @@ -170,28 +159,7 @@ public class CompetitorTableWrapper> ext return string; } }; - 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()); @@ -202,11 +170,6 @@ 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/ControlPointTableWrapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ControlPointTableWrapper.java index 08ffbb2000a..3671f8d60f4 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 @@ -10,10 +10,9 @@ import com.sap.sailing.gwt.ui.shared.MarkDTO; import com.sap.sse.gwt.client.ErrorReporter; public class ControlPointTableWrapper> extends TableWrapper { - public ControlPointTableWrapper(S selectionModel, SailingServiceAsync sailingService, final StringMessages stringMessages, + public ControlPointTableWrapper(boolean multiSelection, SailingServiceAsync sailingService, final StringMessages stringMessages, ErrorReporter errorReporter) { - super(sailingService, stringMessages, errorReporter, selectionModel, true); - + super(sailingService, stringMessages, errorReporter, multiSelection, /* enablePager */ true); 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/CourseManagementWidget.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CourseManagementWidget.java index a34d0a393a8..d0fbe2008fd 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CourseManagementWidget.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CourseManagementWidget.java @@ -34,7 +34,7 @@ import com.sap.sse.gwt.client.dialog.DataEntryDialog; public abstract class CourseManagementWidget implements IsWidget { protected final MarkTableWrapper> marks; - protected final ControlPointTableWrapper> multiMarkControlPoints; + protected final ControlPointTableWrapper> multiMarkControlPoints; protected final WaypointTableWrapper> waypoints; protected final Grid mainPanel; @@ -69,11 +69,11 @@ public abstract class CourseManagementWidget implements IsWidget { mainPanel.getRowFormatter().setVerticalAlign(0, HasVerticalAlignment.ALIGN_TOP); waypoints = new WaypointTableWrapper>( - new SingleSelectionModel(), sailingService, stringMessages, errorReporter); - multiMarkControlPoints = new ControlPointTableWrapper>( - new MultiSelectionModel(), sailingService, stringMessages, errorReporter); + /* multiSelection */ false, sailingService, stringMessages, errorReporter); + multiMarkControlPoints = new ControlPointTableWrapper>( + /* multiSelection */ false, sailingService, stringMessages, errorReporter); marks = new MarkTableWrapper>( - new MultiSelectionModel(), sailingService, stringMessages, errorReporter); + /* multiSelection */ true, sailingService, stringMessages, errorReporter); CaptionPanel waypointsPanel = new CaptionPanel(stringMessages.waypoints()); CaptionPanel controlPointsPanel = new CaptionPanel(stringMessages.twoMarkControlPoint()); 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 a995b16b18a..7024f8a3d6a 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(), false); + super(sailingService, stringMessages, errorReporter, /* multiSelection */ true, /* enablePager */ false); TextColumn 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 6d2b3e4ab00..339a10e99a1 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,8 +30,7 @@ public class DeviceMappingTableWrapper extends TableWrapper(), true); - + super(sailingService, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true); showPingMappingsCb = new CheckBox(stringMessages.showPingMarkMappings()); showPingMappingsCb.addValueChangeHandler(new ValueChangeHandler() { @Override @@ -40,12 +39,9 @@ public class DeviceMappingTableWrapper extends TableWrapper listHandler = new ListHandler(dataProvider.getList()); - + ListHandler listHandler = getColumnSortHandler(); TextColumn itemTypeCol = new TextColumn() { @Override public String getValue(DeviceMappingDTO mapping) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/GateCreationDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/GateCreationDialog.java index 897a6200ba8..71ff1f6a73a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/GateCreationDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/GateCreationDialog.java @@ -46,7 +46,7 @@ public class GateCreationDialog extends DataEntryDialog { name = createTextBox(""); marksWrapper = new MarkTableWrapper>( - new MultiSelectionModel(), sailingService, stringMessages, errorReporter); + /* multiSelection */ true, sailingService, stringMessages, errorReporter); marksWrapper.getDataProvider().getList().addAll(marks); marksWrapper.getSelectionModel().addSelectionChangeHandler(new Handler() { 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 03db328db33..4c330dc99c1 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 @@ -48,9 +48,7 @@ public class ImportFixesAndAddMappingsDialog extends DataEntryDialog selectionModelType = SingleSelectionModel.class; - @SuppressWarnings("unchecked") - final Class> singleSelectionType = (Class>) selectionModelType; - competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, singleSelectionType, true); + competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ false, true); markTable = new MarkTableWrapper>( - new SingleSelectionModel(), sailingService, stringMessages, errorReporter); + /* multiSelection */ false, sailingService, stringMessages, errorReporter); competitorTable.getSelectionModel().addSelectionChangeHandler(new SelectionChangeEvent.Handler() { @Override @@ -73,14 +67,12 @@ public class ImportFixesAndAddMappingsDialog extends DataEntryDialog>() { @Override public void onSuccess(Collection result) { @@ -92,7 +84,6 @@ public class ImportFixesAndAddMappingsDialog extends DataEntryDialog>() { @Override public void onSuccess(Collection result) { 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 61dd9736f6c..0e06d0382e2 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 @@ -31,18 +31,12 @@ public class ItemToMapToDeviceSelectionPanel implements IsWidget { public ItemToMapToDeviceSelectionPanel(SailingServiceAsync sailingService, StringMessages stringMessages, ErrorReporter errorReporter, final SelectionChangedHandler handler, MappableToDevice selected) { - 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(); - markTable = new MarkTableWrapper>(markSelectionModel, sailingService, + competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true); + markTable = new MarkTableWrapper>(/* multiSelection */ false, sailingService, stringMessages, errorReporter); - + final SingleSelectionModel markSelectionModel = markTable.getSelectionModel(); competitorTable.getSelectionModel().addSelectionChangeHandler(new SelectionChangeEvent.Handler() { @Override public void onSelectionChange(SelectionChangeEvent event) { @@ -55,8 +49,7 @@ public class ItemToMapToDeviceSelectionPanel implements IsWidget { } } }); - - markTable.getSelectionModel().addSelectionChangeHandler(new SelectionChangeEvent.Handler() { + markSelectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() { @Override public void onSelectionChange(SelectionChangeEvent event) { if (markSelectionModel.getSelectedSet().size() == 1) { @@ -67,8 +60,7 @@ public class ItemToMapToDeviceSelectionPanel implements IsWidget { } } }); - - //build UI + // build UI this.mainPanel = new VerticalPanel(); CaptionPanel marksPanel = new CaptionPanel(stringMessages.mark()); CaptionPanel competitorsPanel = new CaptionPanel(stringMessages.competitor()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigPanel.java index cb172e84c32..14941b5d424 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigPanel.java @@ -30,7 +30,6 @@ import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.HasHorizontalAlignment; import com.google.gwt.user.client.ui.Panel; -import com.google.gwt.view.client.SingleSelectionModel; import com.sap.sailing.domain.common.RegattaIdentifier; import com.sap.sailing.domain.common.RegattaName; import com.sap.sailing.domain.common.dto.AbstractLeaderboardDTO; @@ -76,7 +75,6 @@ TrackedRaceChangedListener, LeaderboardsDisplayer { private Button columnMoveDownButton; public static class AnchorCell extends AbstractCell { - @Override public void render(com.google.gwt.cell.client.Cell.Context context, SafeHtml safeHtml, SafeHtmlBuilder sb) { sb.append(safeHtml); @@ -87,13 +85,12 @@ TrackedRaceChangedListener, LeaderboardsDisplayer { @SafeHtmlTemplates.Template("{1}") SafeHtml cell(String url, String displayName); } - public LeaderboardConfigPanel(final SailingServiceAsync sailingService, RegattaRefresher regattaRefresher, final ErrorReporter errorReporter, StringMessages theStringConstants, final boolean showRaceDetails, LeaderboardsRefresher leaderboardsRefresher) { super(sailingService, regattaRefresher, leaderboardsRefresher, errorReporter, theStringConstants, - new SingleSelectionModel()); + /* multi-selection */ false); this.showRaceDetails = showRaceDetails; leaderboardTable.ensureDebugId("LeaderboardsCellTable"); } 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 3b3f9cf5dee..a935ebc268a 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,10 +19,9 @@ import com.sap.sse.common.impl.RGBColor; import com.sap.sse.gwt.client.ErrorReporter; public class MarkTableWrapper> extends TableWrapper { - public MarkTableWrapper(S selectionModel, SailingServiceAsync sailingService, StringMessages stringMessages, + public MarkTableWrapper(boolean multiSelection, SailingServiceAsync sailingService, StringMessages stringMessages, ErrorReporter errorReporter) { - super(sailingService, stringMessages, errorReporter, selectionModel, true); - + super(sailingService, stringMessages, errorReporter, multiSelection, true); 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/RaceLogTrackingCompetitorRegistrationsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCompetitorRegistrationsDialog.java index 7249edae979..b123ca46dab 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,11 +88,8 @@ public class RaceLogTrackingCompetitorRegistrationsDialog extends AbstractSaveDi mainPanel.add(panel); CaptionPanel allCompetitorsPanel = new CaptionPanel(stringMessages.competitorPool()); CaptionPanel registeredCompetitorsPanel = new CaptionPanel(stringMessages.registeredCompetitors()); - 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); + allCompetitorsTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ true, /* enablePager */ true); + registeredCompetitorsTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ true, /* enablePager */ 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/RaceLogTrackingEventManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java index f941fad0243..548e7678246 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java @@ -18,7 +18,6 @@ import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.CaptionPanel; import com.google.gwt.user.client.ui.Panel; import com.google.gwt.user.client.ui.VerticalPanel; -import com.google.gwt.view.client.MultiSelectionModel; import com.google.gwt.view.client.SelectionChangeEvent; import com.google.gwt.view.client.SelectionChangeEvent.Handler; import com.sap.sailing.domain.common.dto.CompetitorDTO; @@ -50,7 +49,7 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf RegattaRefresher regattaRefresher, LeaderboardsRefresher leaderboardsRefresher, ErrorReporter errorReporter, StringMessages stringMessages) { super(sailingService, regattaRefresher, leaderboardsRefresher, errorReporter, - stringMessages, new MultiSelectionModel()); + stringMessages, /* multiSelection */ true); // add upload panel CaptionPanel importPanel = new CaptionPanel(stringMessages.importFixes()); @@ -141,7 +140,6 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf leaderboardTable.addColumn(leaderboardDisplayNameColumn, stringMessages.displayName()); leaderboardTable.addColumn(leaderboardActionColumn, stringMessages.actions()); leaderboardTable.addColumnSortHandler(leaderboardColumnListHandler); - leaderboardTable.setSelectionModel(new MultiSelectionModel()); leaderboardTable.setSelectionModel(selectionCheckboxColumn.getSelectionModel(), selectionCheckboxColumn.getSelectionManager()); } @@ -239,7 +237,7 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf new ArrayList<>(raceColumnTable.getDataProvider().getList()); races.remove(object); new SelectRacesDialog(sailingService, errorReporter, stringMessages, races, - new DialogCallback>() { + leaderboardName, new DialogCallback>() { @Override public void ok(Set editedObject) { Set> toRaceLogs = new java.util.HashSet<>(); 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 fbd5d7ca817..3224e80c7c8 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 @@ -1,5 +1,6 @@ package com.sap.sailing.gwt.ui.adminconsole; +import java.util.Comparator; import java.util.HashMap; import java.util.Map; @@ -10,6 +11,7 @@ import com.google.gwt.user.cellview.client.Column; import com.google.gwt.user.cellview.client.TextColumn; import com.google.gwt.view.client.SelectionModel; import com.sap.sailing.domain.common.RegattaNameAndRaceName; +import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.gwt.ui.adminconsole.AbstractLeaderboardConfigPanel.RaceColumnDTOAndFleetDTOWithNameBasedEquality; import com.sap.sailing.gwt.ui.adminconsole.LeaderboardConfigPanel.AnchorCell; import com.sap.sailing.gwt.ui.adminconsole.LeaderboardConfigPanel.AnchorTemplates; @@ -24,9 +26,8 @@ extends TableWrapper { private String selectedLeaderboardName; public RaceTableWrapper(SailingServiceAsync sailingService, StringMessages stringMessages, - ErrorReporter errorReporter, S selectionModel) { - super(sailingService, stringMessages, errorReporter, selectionModel, false); - + ErrorReporter errorReporter, boolean multiSelection) { + super(sailingService, stringMessages, errorReporter, multiSelection, /* enablePager */ false); Column raceNameColumn = new Column(new AnchorCell()) { @Override @@ -46,14 +47,26 @@ extends TableWrapper { } } }; - + raceNameColumn.setSortable(true); + getColumnSortHandler().setComparator(raceNameColumn, new Comparator() { + @Override + public int compare(RaceColumnDTOAndFleetDTOWithNameBasedEquality o1, RaceColumnDTOAndFleetDTOWithNameBasedEquality o2) { + return new NaturalComparator().compare(o1.getA().getName(), o2.getA().getName()); + } + }); TextColumn fleetNameColumn = new TextColumn() { @Override public String getValue(RaceColumnDTOAndFleetDTOWithNameBasedEquality object) { return object.getB().getName(); } }; - + fleetNameColumn.setSortable(true); + getColumnSortHandler().setComparator(fleetNameColumn, new Comparator() { + @Override + public int compare(RaceColumnDTOAndFleetDTOWithNameBasedEquality o1, RaceColumnDTOAndFleetDTOWithNameBasedEquality o2) { + return new NaturalComparator().compare(o1.getB().getName(), o2.getB().getName()); + } + }); table.addColumn(raceNameColumn, stringMessages.race()); table.addColumn(fleetNameColumn, stringMessages.fleet()); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SelectRacesDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SelectRacesDialog.java index 4b6821f8966..71189f16a8b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SelectRacesDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SelectRacesDialog.java @@ -19,7 +19,7 @@ public class SelectRacesDialog extends DataEntryDialog races, - DialogCallback> dialogCallback) { + String leaderboardName, DialogCallback> dialogCallback) { super(stringMessages.selectRaces(), stringMessages.selectRaces(), stringMessages.ok(), stringMessages.cancel(), new Validator>() { @Override @@ -29,14 +29,11 @@ public class SelectRacesDialog extends DataEntryDialog>( - sailingService, stringMessages, errorReporter, new MultiSelectionModel()); - + sailingService, stringMessages, errorReporter, /* multiSelection */ true); + racesTable.setSelectedLeaderboardName(leaderboardName); racesTable.getDataProvider().getList().addAll(races); - racesTable.getSelectionModel().addSelectionChangeHandler(new Handler() { @Override public void onSelectionChange(SelectionChangeEvent event) { 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 9cac31faafd..fe76cdfad71 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 @@ -4,18 +4,23 @@ import java.util.Collection; import com.google.gwt.core.client.GWT; import com.google.gwt.user.cellview.client.CellTable; +import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler; import com.google.gwt.user.cellview.client.SimplePager; import com.google.gwt.user.client.ui.IsWidget; 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.gwt.client.ErrorReporter; /** - * Implementing classes still have to add the table to the main panel. + * 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}. */ public abstract class TableWrapper> implements IsWidget { protected final CellTable table; @@ -26,6 +31,7 @@ public abstract class TableWrapper> implements Is protected final ErrorReporter errorReporter; private final AdminConsoleTableResources tableRes = GWT.create(AdminConsoleTableResources.class); + private final ListHandler columnSortHandler; @Override public Widget asWidget() { @@ -33,17 +39,38 @@ public abstract class TableWrapper> implements Is } public TableWrapper(SailingServiceAsync sailingService, StringMessages stringMessages, ErrorReporter errorReporter, - S selectionModel, boolean enablePager) { + boolean multiSelection, boolean enablePager) { this.sailingService = sailingService; this.errorReporter = errorReporter; - this.selectionModel = selectionModel; - this.dataProvider = new ListDataProvider(); - mainPanel = new VerticalPanel(); table = new CellTable(10000, tableRes); + this.dataProvider = new ListDataProvider(); + this.columnSortHandler = new ListHandler(dataProvider.getList()); + table.addColumnSortHandler(this.columnSortHandler); + if (multiSelection) { + SelectionCheckboxColumn selectionCheckboxColumn = new SelectionCheckboxColumn( + tableRes.cellTableStyle().cellTableCheckboxSelected(), + tableRes.cellTableStyle().cellTableCheckboxDeselected(), + tableRes.cellTableStyle().cellTableCheckboxColumnCell()) { + @Override + protected ListDataProvider getListDataProvider() { + return dataProvider; + } + }; + columnSortHandler.setComparator(selectionCheckboxColumn, selectionCheckboxColumn.getComparator()); + @SuppressWarnings("unchecked") + S typedSelectionModel = (S) selectionCheckboxColumn.getSelectionModel(); + selectionModel = typedSelectionModel; + table.setSelectionModel(selectionModel, selectionCheckboxColumn.getSelectionManager()); + table.addColumn(selectionCheckboxColumn, selectionCheckboxColumn.getHeader()); + } else { + @SuppressWarnings("unchecked") + S typedSelectionModel = (S) new SingleSelectionModel(); + selectionModel = typedSelectionModel; + table.setSelectionModel(selectionModel); + } + mainPanel = new VerticalPanel(); dataProvider.addDataDisplay(table); - table.setSelectionModel(selectionModel); mainPanel.add(table); - if (enablePager) { table.setPageSize(8); SimplePager pager = new SimplePager(); @@ -52,6 +79,10 @@ public abstract class TableWrapper> implements Is } } + public ListHandler getColumnSortHandler() { + return columnSortHandler; + } + public CellTable getTable() { return table; } 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 6ded359fcd2..9e6d3b47f9f 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, new SingleSelectionModel(), true); + super(sailingService, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true); TextColumn uuidColumn = new TextColumn() { @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/WaypointCreationDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/WaypointCreationDialog.java index 5a719ddcecb..42b98c2bc79 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/WaypointCreationDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/WaypointCreationDialog.java @@ -38,11 +38,9 @@ public class WaypointCreationDialog extends DataEntryDialog { } }, /* animationEnabled */ false, callback); - this.stringMessages = stringMessages; - controlPointsWrapper = new ControlPointTableWrapper>( - new SingleSelectionModel(), sailingService, stringMessages, errorReporter); + /* multiSelection */ false, sailingService, stringMessages, errorReporter); controlPointsWrapper.getDataProvider().getList().addAll(controlPoints); passingInstructions = createListBox(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 6e21681171f..b987b2512a9 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 @@ -11,9 +11,9 @@ import com.sap.sailing.gwt.ui.shared.WaypointDTO; import com.sap.sse.gwt.client.ErrorReporter; public class WaypointTableWrapper> extends TableWrapper { - public WaypointTableWrapper(S selectionModel, SailingServiceAsync sailingService, final StringMessages stringMessages, + public WaypointTableWrapper(boolean multiSelection, SailingServiceAsync sailingService, final StringMessages stringMessages, ErrorReporter errorReporter) { - super(sailingService, stringMessages, errorReporter, selectionModel, true); + super(sailingService, stringMessages, errorReporter, multiSelection, true); TextColumn nameColumn = new TextColumn() { @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/AbstractSailingEntryPoint.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/AbstractSailingEntryPoint.java index 98f6265b293..d17e1ec95c1 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/AbstractSailingEntryPoint.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/AbstractSailingEntryPoint.java @@ -11,7 +11,6 @@ public abstract class AbstractSailingEntryPoint extends AbstractSecureEntryPoint @Override protected void doOnModuleLoad() { super.doOnModuleLoad(); - EntryPointHelper.registerASyncService((ServiceDefTarget) sailingService, RemoteServiceMappingConstants.sailingServiceRemotePath); }