Merge remote-tracking branch 'origin/bug2685'

This commit is contained in:
Axel Uhl committed 2015-03-23 20:40:41 +01:00
commit 21343eb3bd
21 files changed
+95 -131

No files matched your search

@@ -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<RaceColumnDTOAndFleetDTOWithNameBasedEquality> raceColumnTableSelectionModel) {
StringMessages theStringConstants, boolean multiSelection) {
this.stringMessages = theStringConstants;
this.sailingService = sailingService;
leaderboardList = new ListDataProvider<StrippedLeaderboardDTO>();
@@ -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<SetSelectionModel<RaceColumnDTOAndFleetDTOWithNameBasedEquality>>(
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();
@@ -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<MultiSelectionModel<CompetitorDTO>> multiSelectionType = (Class<MultiSelectionModel<CompetitorDTO>>) 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);
@@ -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<S extends SelectionModel<CompetitorDTO>> extends TableWrapper<CompetitorDTO, S> {
private static final AdminConsoleTableResources tableResources = GWT.create(AdminConsoleTableResources.class);
private static final AdminConsoleTableStyle tableSTyle = tableResources.cellTableStyle();
private final LabeledAbstractFilterablePanel<CompetitorDTO> filterField;
private final S selectionModel;
public CompetitorTableWrapper(SailingServiceAsync sailingService, StringMessages stringMessages,ErrorReporter errorReporter,
Class<S> selectionModelType, boolean enablePager) {
super(sailingService, stringMessages, errorReporter, /* selectionModel will be set later below */ null, enablePager);
ListHandler<CompetitorDTO> competitorColumnListHandler = new ListHandler<CompetitorDTO>(dataProvider.getList());
boolean multiSelection, boolean enablePager) {
super(sailingService, stringMessages, errorReporter, multiSelection, enablePager);
ListHandler<CompetitorDTO> competitorColumnListHandler = getColumnSortHandler();
// competitors table
TextColumn<CompetitorDTO> competitorNameColumn = new TextColumn<CompetitorDTO>() {
@@ -170,28 +159,7 @@ public class CompetitorTableWrapper<S extends SelectionModel<CompetitorDTO>> ext
return string;
}
};
mainPanel.insert(filterField, 0);
if (selectionModelType.getName().contains("Multi")) {
// add a selection checkbox column
SelectionCheckboxColumn<CompetitorDTO> selectionCheckboxColumn = new SelectionCheckboxColumn<CompetitorDTO>(
tableSTyle.cellTableCheckboxSelected(), tableSTyle.cellTableCheckboxDeselected(), tableSTyle.cellTableCheckboxColumnCell()) {
@Override
protected ListDataProvider<CompetitorDTO> 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<CompetitorDTO>();
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<S extends SelectionModel<CompetitorDTO>> ext
table.addColumn(competitorIdColumn, stringMessages.id());
}
@Override
public S getSelectionModel() {
return selectionModel;
}
public Iterable<CompetitorDTO> getAllCompetitors() {
return filterField.getAll();
}
@@ -10,10 +10,9 @@ import com.sap.sailing.gwt.ui.shared.MarkDTO;
import com.sap.sse.gwt.client.ErrorReporter;
public class ControlPointTableWrapper<S extends SelectionModel<ControlPointDTO>> extends TableWrapper<ControlPointDTO, S> {
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<ControlPointDTO> nameColumn = new TextColumn<ControlPointDTO>() {
@Override
public String getValue(ControlPointDTO d) {
@@ -34,7 +34,7 @@ import com.sap.sse.gwt.client.dialog.DataEntryDialog;
public abstract class CourseManagementWidget implements IsWidget {
protected final MarkTableWrapper<MultiSelectionModel<MarkDTO>> marks;
protected final ControlPointTableWrapper<MultiSelectionModel<ControlPointDTO>> multiMarkControlPoints;
protected final ControlPointTableWrapper<SingleSelectionModel<ControlPointDTO>> multiMarkControlPoints;
protected final WaypointTableWrapper<SingleSelectionModel<WaypointDTO>> 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<SingleSelectionModel<WaypointDTO>>(
new SingleSelectionModel<WaypointDTO>(), sailingService, stringMessages, errorReporter);
multiMarkControlPoints = new ControlPointTableWrapper<MultiSelectionModel<ControlPointDTO>>(
new MultiSelectionModel<ControlPointDTO>(), sailingService, stringMessages, errorReporter);
/* multiSelection */ false, sailingService, stringMessages, errorReporter);
multiMarkControlPoints = new ControlPointTableWrapper<SingleSelectionModel<ControlPointDTO>>(
/* multiSelection */ false, sailingService, stringMessages, errorReporter);
marks = new MarkTableWrapper<MultiSelectionModel<MarkDTO>>(
new MultiSelectionModel<MarkDTO>(), sailingService, stringMessages, errorReporter);
/* multiSelection */ true, sailingService, stringMessages, errorReporter);
CaptionPanel waypointsPanel = new CaptionPanel(stringMessages.waypoints());
CaptionPanel controlPointsPanel = new CaptionPanel(stringMessages.twoMarkControlPoint());
@@ -11,7 +11,7 @@ public class DeviceIdentifierTableWrapper extends TableWrapper<DeviceIdentifierD
public DeviceIdentifierTableWrapper(SailingServiceAsync sailingService, StringMessages stringMessages,
ErrorReporter errorReporter) {
super(sailingService, stringMessages, errorReporter, new MultiSelectionModel<DeviceIdentifierDTO>(), false);
super(sailingService, stringMessages, errorReporter, /* multiSelection */ true, /* enablePager */ false);
TextColumn<DeviceIdentifierDTO> typeColumn = new TextColumn<DeviceIdentifierDTO>() {
@Override
@@ -30,8 +30,7 @@ public class DeviceMappingTableWrapper extends TableWrapper<DeviceMappingDTO, Si
public DeviceMappingTableWrapper(SailingServiceAsync sailingService, final StringMessages stringMessages,
ErrorReporter errorReporter) {
super(sailingService, stringMessages, errorReporter, new SingleSelectionModel<DeviceMappingDTO>(), true);
super(sailingService, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true);
showPingMappingsCb = new CheckBox(stringMessages.showPingMarkMappings());
showPingMappingsCb.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
@Override
@@ -40,12 +39,9 @@ public class DeviceMappingTableWrapper extends TableWrapper<DeviceMappingDTO, Si
}
});
mainPanel.insert(showPingMappingsCb, 0);
table.setWidth("1000px", true);
table.addStyleName("wrap-cols");
ListHandler<DeviceMappingDTO> listHandler = new ListHandler<DeviceMappingDTO>(dataProvider.getList());
ListHandler<DeviceMappingDTO> listHandler = getColumnSortHandler();
TextColumn<DeviceMappingDTO> itemTypeCol = new TextColumn<DeviceMappingDTO>() {
@Override
public String getValue(DeviceMappingDTO mapping) {
@@ -46,7 +46,7 @@ public class GateCreationDialog extends DataEntryDialog<GateDTO> {
name = createTextBox("");
marksWrapper = new MarkTableWrapper<MultiSelectionModel<MarkDTO>>(
new MultiSelectionModel<MarkDTO>(), sailingService, stringMessages, errorReporter);
/* multiSelection */ true, sailingService, stringMessages, errorReporter);
marksWrapper.getDataProvider().getList().addAll(marks);
marksWrapper.getSelectionModel().addSelectionChangeHandler(new Handler() {
@@ -48,9 +48,7 @@ public class ImportFixesAndAddMappingsDialog extends DataEntryDialog<Collection<
return null;
}
}, true, callback);
this.stringMessages = stringMessages;
deviceIdTable = new TrackFileImportDeviceIdentifierTableWrapper(sailingService, stringMessages, errorReporter);
importWidget = new TrackFileImportWidget(deviceIdTable, stringMessages, sailingService, errorReporter);
deviceIdTable.getSelectionModel().addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
@@ -59,13 +57,9 @@ public class ImportFixesAndAddMappingsDialog extends DataEntryDialog<Collection<
deviceSelectionChanged(deviceIdTable.getSelectionModel().getSelectedObject());
}
});
final Class<?> selectionModelType = SingleSelectionModel.class;
@SuppressWarnings("unchecked")
final Class<SingleSelectionModel<CompetitorDTO>> singleSelectionType = (Class<SingleSelectionModel<CompetitorDTO>>) selectionModelType;
competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, singleSelectionType, true);
competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ false, true);
markTable = new MarkTableWrapper<SingleSelectionModel<MarkDTO>>(
new SingleSelectionModel<MarkDTO>(), sailingService, stringMessages, errorReporter);
/* multiSelection */ false, sailingService, stringMessages, errorReporter);
competitorTable.getSelectionModel().addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
@Override
@@ -73,14 +67,12 @@ public class ImportFixesAndAddMappingsDialog extends DataEntryDialog<Collection<
mappedToSelectionChanged(competitorTable.getSelectionModel().getSelectedObject());
}
});
markTable.getSelectionModel().addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
@Override
public void onSelectionChange(SelectionChangeEvent event) {
mappedToSelectionChanged(markTable.getSelectionModel().getSelectedObject());
}
});
sailingService.getCompetitorRegistrations(leaderboardName, raceColumnName, fleetName, new AsyncCallback<Collection<CompetitorDTO>>() {
@Override
public void onSuccess(Collection<CompetitorDTO> result) {
@@ -92,7 +84,6 @@ public class ImportFixesAndAddMappingsDialog extends DataEntryDialog<Collection<
errorReporter.reportError("Could not load competitors: " + caught.getMessage());
}
});
sailingService.getMarksInRaceLog(leaderboardName, raceColumnName, fleetName, new AsyncCallback<Collection<MarkDTO>>() {
@Override
public void onSuccess(Collection<MarkDTO> result) {
@@ -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<SingleSelectionModel<CompetitorDTO>> singleSelectionType = (Class<SingleSelectionModel<CompetitorDTO>>) selectionModelType;
competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, singleSelectionType, true);
final SingleSelectionModel<MarkDTO> markSelectionModel = new SingleSelectionModel<MarkDTO>();
markTable = new MarkTableWrapper<SingleSelectionModel<MarkDTO>>(markSelectionModel, sailingService,
competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true);
markTable = new MarkTableWrapper<SingleSelectionModel<MarkDTO>>(/* multiSelection */ false, sailingService,
stringMessages, errorReporter);
final SingleSelectionModel<MarkDTO> 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());
@@ -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<SafeHtml> {
@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("<a href=\"{0}\">{1}</a>")
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<RaceColumnDTOAndFleetDTOWithNameBasedEquality>());
/* multi-selection */ false);
this.showRaceDetails = showRaceDetails;
leaderboardTable.ensureDebugId("LeaderboardsCellTable");
}
@@ -19,10 +19,9 @@ import com.sap.sse.common.impl.RGBColor;
import com.sap.sse.gwt.client.ErrorReporter;
public class MarkTableWrapper<S extends SelectionModel<MarkDTO>> extends TableWrapper<MarkDTO, S> {
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<MarkDTO> markNameColumn = new TextColumn<MarkDTO>() {
@Override
public String getValue(MarkDTO markDTO) {
@@ -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<MultiSelectionModel<CompetitorDTO>> multiSelectionType = (Class<MultiSelectionModel<CompetitorDTO>>) 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();
@@ -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<RaceColumnDTOAndFleetDTOWithNameBasedEquality>());
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<StrippedLeaderboardDTO>());
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<Set<RaceColumnDTOAndFleetDTOWithNameBasedEquality>>() {
leaderboardName, new DialogCallback<Set<RaceColumnDTOAndFleetDTOWithNameBasedEquality>>() {
@Override
public void ok(Set<RaceColumnDTOAndFleetDTOWithNameBasedEquality> editedObject) {
Set<Util.Triple<String, String, String>> toRaceLogs = new java.util.HashSet<>();
@@ -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<RaceColumnDTOAndFleetDTOWithNameBasedEquality, S> {
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<RaceColumnDTOAndFleetDTOWithNameBasedEquality, SafeHtml> raceNameColumn =
new Column<RaceColumnDTOAndFleetDTOWithNameBasedEquality, SafeHtml>(new AnchorCell()) {
@Override
@@ -46,14 +47,26 @@ extends TableWrapper<RaceColumnDTOAndFleetDTOWithNameBasedEquality, S> {
}
}
};
raceNameColumn.setSortable(true);
getColumnSortHandler().setComparator(raceNameColumn, new Comparator<RaceColumnDTOAndFleetDTOWithNameBasedEquality>() {
@Override
public int compare(RaceColumnDTOAndFleetDTOWithNameBasedEquality o1, RaceColumnDTOAndFleetDTOWithNameBasedEquality o2) {
return new NaturalComparator().compare(o1.getA().getName(), o2.getA().getName());
}
});
TextColumn<RaceColumnDTOAndFleetDTOWithNameBasedEquality> fleetNameColumn = new TextColumn<RaceColumnDTOAndFleetDTOWithNameBasedEquality>() {
@Override
public String getValue(RaceColumnDTOAndFleetDTOWithNameBasedEquality object) {
return object.getB().getName();
}
};
fleetNameColumn.setSortable(true);
getColumnSortHandler().setComparator(fleetNameColumn, new Comparator<RaceColumnDTOAndFleetDTOWithNameBasedEquality>() {
@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());
}
@@ -19,7 +19,7 @@ public class SelectRacesDialog extends DataEntryDialog<Set<RaceColumnDTOAndFleet
public SelectRacesDialog(SailingServiceAsync sailingService, ErrorReporter errorReporter, final StringMessages stringMessages,
Collection<RaceColumnDTOAndFleetDTOWithNameBasedEquality> races,
DialogCallback<Set<RaceColumnDTOAndFleetDTOWithNameBasedEquality>> dialogCallback) {
String leaderboardName, DialogCallback<Set<RaceColumnDTOAndFleetDTOWithNameBasedEquality>> dialogCallback) {
super(stringMessages.selectRaces(), stringMessages.selectRaces(), stringMessages.ok(), stringMessages.cancel(),
new Validator<Set<RaceColumnDTOAndFleetDTOWithNameBasedEquality>>() {
@Override
@@ -29,14 +29,11 @@ public class SelectRacesDialog extends DataEntryDialog<Set<RaceColumnDTOAndFleet
}
return null;
}
}, true, dialogCallback);
racesTable = new RaceTableWrapper<MultiSelectionModel<RaceColumnDTOAndFleetDTOWithNameBasedEquality>>(
sailingService, stringMessages, errorReporter, new MultiSelectionModel<RaceColumnDTOAndFleetDTOWithNameBasedEquality>());
sailingService, stringMessages, errorReporter, /* multiSelection */ true);
racesTable.setSelectedLeaderboardName(leaderboardName);
racesTable.getDataProvider().getList().addAll(races);
racesTable.getSelectionModel().addSelectionChangeHandler(new Handler() {
@Override
public void onSelectionChange(SelectionChangeEvent event) {
@@ -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<T, S extends SelectionModel<T>> implements IsWidget {
protected final CellTable<T> table;
@@ -26,6 +31,7 @@ public abstract class TableWrapper<T, S extends SelectionModel<T>> implements Is
protected final ErrorReporter errorReporter;
private final AdminConsoleTableResources tableRes = GWT.create(AdminConsoleTableResources.class);
private final ListHandler<T> columnSortHandler;
@Override
public Widget asWidget() {
@@ -33,17 +39,38 @@ public abstract class TableWrapper<T, S extends SelectionModel<T>> 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<T>();
mainPanel = new VerticalPanel();
table = new CellTable<T>(10000, tableRes);
this.dataProvider = new ListDataProvider<T>();
this.columnSortHandler = new ListHandler<T>(dataProvider.getList());
table.addColumnSortHandler(this.columnSortHandler);
if (multiSelection) {
SelectionCheckboxColumn<T> selectionCheckboxColumn = new SelectionCheckboxColumn<T>(
tableRes.cellTableStyle().cellTableCheckboxSelected(),
tableRes.cellTableStyle().cellTableCheckboxDeselected(),
tableRes.cellTableStyle().cellTableCheckboxColumnCell()) {
@Override
protected ListDataProvider<T> 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<T>();
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<T, S extends SelectionModel<T>> implements Is
}
}
public ListHandler<T> getColumnSortHandler() {
return columnSortHandler;
}
public CellTable<T> getTable() {
return table;
}
@@ -13,7 +13,7 @@ SingleSelectionModel<TrackFileImportDeviceIdentifierDTO>> {
public TrackFileImportDeviceIdentifierTableWrapper(SailingServiceAsync sailingService, StringMessages stringMessages,
ErrorReporter errorReporter) {
super(sailingService, stringMessages, errorReporter, new SingleSelectionModel<TrackFileImportDeviceIdentifierDTO>(), true);
super(sailingService, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true);
TextColumn<TrackFileImportDeviceIdentifierDTO> uuidColumn = new TextColumn<TrackFileImportDeviceIdentifierDTO>() {
@Override
@@ -38,11 +38,9 @@ public class WaypointCreationDialog extends DataEntryDialog<WaypointDTO> {
}
}, /* animationEnabled */ false, callback);
this.stringMessages = stringMessages;
controlPointsWrapper = new ControlPointTableWrapper<SingleSelectionModel<ControlPointDTO>>(
new SingleSelectionModel<ControlPointDTO>(), sailingService, stringMessages, errorReporter);
/* multiSelection */ false, sailingService, stringMessages, errorReporter);
controlPointsWrapper.getDataProvider().getList().addAll(controlPoints);
passingInstructions = createListBox(false);
@@ -11,9 +11,9 @@ import com.sap.sailing.gwt.ui.shared.WaypointDTO;
import com.sap.sse.gwt.client.ErrorReporter;
public class WaypointTableWrapper<S extends SelectionModel<WaypointDTO>> extends TableWrapper<WaypointDTO, S> {
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<WaypointDTO> nameColumn = new TextColumn<WaypointDTO>() {
@Override
@@ -11,7 +11,6 @@ public abstract class AbstractSailingEntryPoint extends AbstractSecureEntryPoint
@Override
protected void doOnModuleLoad() {
super.doOnModuleLoad();
EntryPointHelper.registerASyncService((ServiceDefTarget) sailingService, RemoteServiceMappingConstants.sailingServiceRemotePath);
}