From 78b728b17dcbaf4a089d0f3edf43cd7b39352b08 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 23 Mar 2015 11:30:37 +0100 Subject: [PATCH 1/6] fixing the setting of the leaderboard name for the course copying race list popup --- .../gwt/ui/adminconsole/LeaderboardConfigPanel.java | 2 -- .../adminconsole/RaceLogTrackingEventManagementPanel.java | 3 +-- .../sap/sailing/gwt/ui/adminconsole/SelectRacesDialog.java | 7 ++----- .../sailing/gwt/ui/client/AbstractSailingEntryPoint.java | 1 - 4 files changed, 3 insertions(+), 10 deletions(-) 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..3af5e7f43a3 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 @@ -76,7 +76,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,7 +86,6 @@ 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, 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..c114eb3b2d6 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 @@ -141,7 +141,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 +238,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/SelectRacesDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SelectRacesDialog.java index 4b6821f8966..646f0af5a1d 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()); - + 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/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); } From 38a8e97d4fa20e1446b1fa3d3ea17d606df252f7 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 23 Mar 2015 11:59:43 +0100 Subject: [PATCH 2/6] added checkboxes consistently for multi-selection tables; should address both, bug2682 and bug2685 --- .../AbstractLeaderboardConfigPanel.java | 9 ++-- .../gwt/ui/adminconsole/CompetitorPanel.java | 5 +-- .../adminconsole/CompetitorTableWrapper.java | 41 +------------------ .../ControlPointTableWrapper.java | 5 +-- .../adminconsole/CourseManagementWidget.java | 6 +-- .../DeviceIdentifierTableWrapper.java | 2 +- .../DeviceMappingTableWrapper.java | 2 +- .../ui/adminconsole/GateCreationDialog.java | 2 +- .../ImportFixesAndAddMappingsDialog.java | 13 +----- .../ItemToMapToDeviceSelectionPanel.java | 18 +++----- .../adminconsole/LeaderboardConfigPanel.java | 3 +- .../gwt/ui/adminconsole/MarkTableWrapper.java | 5 +-- ...TrackingCompetitorRegistrationsDialog.java | 7 +--- .../RaceLogTrackingEventManagementPanel.java | 3 +- .../gwt/ui/adminconsole/RaceTableWrapper.java | 5 +-- .../ui/adminconsole/SelectRacesDialog.java | 2 +- .../gwt/ui/adminconsole/TableWrapper.java | 30 +++++++++++--- ...ileImportDeviceIdentifierTableWrapper.java | 2 +- .../adminconsole/WaypointCreationDialog.java | 4 +- .../ui/adminconsole/WaypointTableWrapper.java | 4 +- 20 files changed, 59 insertions(+), 109 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 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..e9dd77dc910 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,33 +15,23 @@ 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); - + boolean multiSelection, boolean enablePager) { + super(sailingService, stringMessages, errorReporter, multiSelection, enablePager); ListHandler competitorColumnListHandler = new ListHandler(dataProvider.getList()); // competitors table @@ -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..13f9200f9c6 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 @@ -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); + /* multiSelection */ false, sailingService, stringMessages, errorReporter); multiMarkControlPoints = new ControlPointTableWrapper>( - new MultiSelectionModel(), sailingService, stringMessages, errorReporter); + /* multiSelection */ true, 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..8768b9019c9 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(), true); + super(sailingService, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true); showPingMappingsCb = new CheckBox(stringMessages.showPingMarkMappings()); showPingMappingsCb.addValueChangeHandler(new ValueChangeHandler() { 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 3af5e7f43a3..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; @@ -91,7 +90,7 @@ TrackedRaceChangedListener, LeaderboardsDisplayer { 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 c114eb3b2d6..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()); 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..a51397326e7 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 @@ -24,9 +24,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 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 646f0af5a1d..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 @@ -31,7 +31,7 @@ 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() { 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..d1f56bf7bbc 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 @@ -10,8 +10,10 @@ 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; /** @@ -33,17 +35,35 @@ 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; + table = new CellTable(10000, tableRes); + if (multiSelection) { + SelectionCheckboxColumn selectionCheckboxColumn = new SelectionCheckboxColumn( + tableRes.cellTableStyle().cellTableCheckboxSelected(), + tableRes.cellTableStyle().cellTableCheckboxDeselected(), + tableRes.cellTableStyle().cellTableCheckboxColumnCell()) { + @Override + protected ListDataProvider getListDataProvider() { + return dataProvider; + } + }; + @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); + } this.dataProvider = new ListDataProvider(); mainPanel = new VerticalPanel(); - table = new CellTable(10000, tableRes); dataProvider.addDataDisplay(table); - table.setSelectionModel(selectionModel); mainPanel.add(table); - if (enablePager) { table.setPageSize(8); SimplePager pager = new SimplePager(); 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 From 91630cbfbdf5d57ee51ac5a80b3f03818eb33794 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 23 Mar 2015 14:28:27 +0100 Subject: [PATCH 3/6] use only a single selection model for the multi-mark control points table --- .../sap/sailing/gwt/ui/adminconsole/CourseManagementWidget.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 13f9200f9c6..48c9d2f841e 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 @@ -71,7 +71,7 @@ public abstract class CourseManagementWidget implements IsWidget { waypoints = new WaypointTableWrapper>( /* multiSelection */ false, sailingService, stringMessages, errorReporter); multiMarkControlPoints = new ControlPointTableWrapper>( - /* multiSelection */ true, sailingService, stringMessages, errorReporter); + /* multiSelection */ false, sailingService, stringMessages, errorReporter); marks = new MarkTableWrapper>( /* multiSelection */ true, sailingService, stringMessages, errorReporter); From 6436be635a3711b5404425ad9772badd875432b7 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 23 Mar 2015 14:33:52 +0100 Subject: [PATCH 4/6] fixed selection model type for multi-marks control points table --- .../sailing/gwt/ui/adminconsole/CourseManagementWidget.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 48c9d2f841e..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; @@ -70,7 +70,7 @@ public abstract class CourseManagementWidget implements IsWidget { waypoints = new WaypointTableWrapper>( /* multiSelection */ false, sailingService, stringMessages, errorReporter); - multiMarkControlPoints = new ControlPointTableWrapper>( + multiMarkControlPoints = new ControlPointTableWrapper>( /* multiSelection */ false, sailingService, stringMessages, errorReporter); marks = new MarkTableWrapper>( /* multiSelection */ true, sailingService, stringMessages, errorReporter); From e9328229d9fdbbb1469c13e90ad470216e436d59 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 23 Mar 2015 15:25:51 +0100 Subject: [PATCH 5/6] also fixed sorting of selection checkbox column consistently for all users --- .../ui/adminconsole/CompetitorTableWrapper.java | 2 +- .../adminconsole/DeviceMappingTableWrapper.java | 6 +----- .../sailing/gwt/ui/adminconsole/TableWrapper.java | 15 +++++++++++++-- 3 files changed, 15 insertions(+), 8 deletions(-) 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 e9dd77dc910..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 @@ -32,7 +32,7 @@ public class CompetitorTableWrapper> ext public CompetitorTableWrapper(SailingServiceAsync sailingService, StringMessages stringMessages,ErrorReporter errorReporter, boolean multiSelection, boolean enablePager) { super(sailingService, stringMessages, errorReporter, multiSelection, enablePager); - ListHandler competitorColumnListHandler = new ListHandler(dataProvider.getList()); + ListHandler competitorColumnListHandler = getColumnSortHandler(); // competitors table TextColumn competitorNameColumn = new TextColumn() { 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 8768b9019c9..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 @@ -31,7 +31,6 @@ public class DeviceMappingTableWrapper extends TableWrapper() { @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/TableWrapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TableWrapper.java index d1f56bf7bbc..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,6 +4,7 @@ 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; @@ -17,7 +18,9 @@ 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; @@ -28,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() { @@ -39,6 +43,9 @@ public abstract class TableWrapper> implements Is this.sailingService = sailingService; this.errorReporter = errorReporter; 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(), @@ -49,6 +56,7 @@ public abstract class TableWrapper> implements Is return dataProvider; } }; + columnSortHandler.setComparator(selectionCheckboxColumn, selectionCheckboxColumn.getComparator()); @SuppressWarnings("unchecked") S typedSelectionModel = (S) selectionCheckboxColumn.getSelectionModel(); selectionModel = typedSelectionModel; @@ -60,7 +68,6 @@ public abstract class TableWrapper> implements Is selectionModel = typedSelectionModel; table.setSelectionModel(selectionModel); } - this.dataProvider = new ListDataProvider(); mainPanel = new VerticalPanel(); dataProvider.addDataDisplay(table); mainPanel.add(table); @@ -72,6 +79,10 @@ public abstract class TableWrapper> implements Is } } + public ListHandler getColumnSortHandler() { + return columnSortHandler; + } + public CellTable getTable() { return table; } From f88a3f474fa94ecf6e9da6c3c368dbd4438da530 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 23 Mar 2015 15:30:28 +0100 Subject: [PATCH 6/6] added some more table sortability --- .../gwt/ui/adminconsole/RaceTableWrapper.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) 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 a51397326e7..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; @@ -45,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()); }