mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-21 03:30:12 +00:00
Merge remote-tracking branch 'origin/bug2685'
This commit is contained in:
commit
21343eb3bd
21 files changed
+95
-131
No files matched your search
+3
-6
@@ -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();
|
||||
|
||||
+1
-4
@@ -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);
|
||||
|
||||
+3
-40
@@ -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();
|
||||
}
|
||||
|
||||
+2
-3
@@ -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) {
|
||||
|
||||
+5
-5
@@ -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());
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
+2
-6
@@ -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) {
|
||||
|
||||
+1
-1
@@ -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() {
|
||||
|
||||
+2
-11
@@ -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) {
|
||||
|
||||
+5
-13
@@ -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());
|
||||
|
||||
+1
-4
@@ -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");
|
||||
}
|
||||
|
||||
+2
-3
@@ -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) {
|
||||
|
||||
+2
-5
@@ -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();
|
||||
|
||||
+2
-4
@@ -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<>();
|
||||
|
||||
+18
-5
@@ -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());
|
||||
}
|
||||
|
||||
+3
-6
@@ -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) {
|
||||
|
||||
+38
-7
@@ -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;
|
||||
}
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
+1
-3
@@ -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);
|
||||
|
||||
+2
-2
@@ -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
|
||||
|
||||
-1
@@ -11,7 +11,6 @@ public abstract class AbstractSailingEntryPoint extends AbstractSecureEntryPoint
|
||||
@Override
|
||||
protected void doOnModuleLoad() {
|
||||
super.doOnModuleLoad();
|
||||
|
||||
EntryPointHelper.registerASyncService((ServiceDefTarget) sailingService, RemoteServiceMappingConstants.sailingServiceRemotePath);
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user