Bug 5092: added filter checkbox to Competitor tables

This commit is contained in:
Steffen Jacobs committed 2019-07-30 18:22:09 +02:00
1 parent 1523c9511f
commit dc5902cd00
7 files changed
+24 -11

No files matched your search

@@ -28,6 +28,8 @@ import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.celltable.EntityIdentityComparator;
import com.sap.sse.gwt.client.celltable.RefreshableSelectionModel;
import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel;
import com.sap.sse.security.shared.HasPermissions.DefaultActions;
import com.sap.sse.security.ui.client.UserService;
/**
* A compact filterable competitor table. The data model is managed by the {@link #getFilterField() filter field}. In
@@ -44,7 +46,7 @@ public class CompactCompetitorTableWrapper<S extends RefreshableSelectionModel<C
private final Map<CompetitorDTO, BoatDTO> boatsForCompetitors;
public CompactCompetitorTableWrapper(SailingServiceAsync sailingService, StringMessages stringMessages, ErrorReporter errorReporter,
boolean multiSelection, boolean enablePager) {
boolean multiSelection, boolean enablePager, UserService userService) {
super(sailingService, stringMessages, errorReporter, multiSelection, enablePager,
new EntityIdentityComparator<CompetitorDTO>() {
@Override
@@ -148,6 +150,8 @@ public class CompactCompetitorTableWrapper<S extends RefreshableSelectionModel<C
return table;
}
};
filterField.setCheckboxEnabledFilter(comp -> userService.hasPermission(comp, DefaultActions.UPDATE));
registerSelectionModelOnNewDataProvider(filterField.getAllListDataProvider());
mainPanel.insert(filterField, 0);
table.addColumnSortHandler(competitorColumnListHandler);
@@ -321,6 +321,7 @@ public class CompetitorTableWrapper<S extends RefreshableSelectionModel<Competit
return table;
}
};
filterField.setCheckboxEnabledFilter(comp -> userService.hasPermission(comp, DefaultActions.UPDATE));
registerSelectionModelOnNewDataProvider(filterField.getAllListDataProvider());
// CompetitorTableEditFeatures
@@ -22,12 +22,13 @@ import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.common.Util;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.celltable.ImagesBarColumn;
import com.sap.sse.gwt.client.Notification;
import com.sap.sse.gwt.client.Notification.NotificationType;
import com.sap.sse.gwt.client.celltable.ImagesBarColumn;
import com.sap.sse.gwt.client.celltable.RefreshableSelectionModel;
import com.sap.sse.gwt.client.celltable.RefreshableSingleSelectionModel;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
import com.sap.sse.security.ui.client.UserService;
/**
* Allows an administrator to map a list of given competitors to boats for a race.
@@ -60,11 +61,13 @@ public class CompetitorToBoatMappingsDialog extends DataEntryDialog<Map<Competit
}
public CompetitorToBoatMappingsDialog(final SailingServiceAsync sailingService, final StringMessages stringMessages,
final ErrorReporter errorReporter, String leaderboardName, Map<CompetitorDTO, BoatDTO> competitorsAndBoats, DialogCallback<Map<CompetitorDTO, BoatDTO>> callback) {
final ErrorReporter errorReporter, String leaderboardName, Map<CompetitorDTO, BoatDTO> competitorsAndBoats,
DialogCallback<Map<CompetitorDTO, BoatDTO>> callback, UserService userService) {
super(stringMessages.actionEditCompetitorToBoatAssignments(), null, stringMessages.ok(), stringMessages.cancel(), new CompetitorToBoatMappingValidator(), callback);
this.stringMessages = stringMessages;
this.competitorToBoatMappings = new HashMap<>(competitorsAndBoats);
this.competitorTable = new CompactCompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true);
this.competitorTable = new CompactCompetitorTableWrapper<>(sailingService, stringMessages, errorReporter,
/* multiSelection */ false, /* enablePager */ true, userService);
this.boatTable = new CompactBoatTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true);
ImagesBarColumn<CompetitorDTO, CompactCompetitorConfigImagesBarCell> competitorActionColumn = new ImagesBarColumn<>(new CompactCompetitorConfigImagesBarCell(stringMessages));
competitorActionColumn.setFieldUpdater(new FieldUpdater<CompetitorDTO, String>() {
@@ -16,6 +16,7 @@ import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
import com.sap.sse.gwt.client.celltable.RefreshableSelectionModel;
import com.sap.sse.gwt.client.celltable.RefreshableSingleSelectionModel;
import com.sap.sse.security.ui.client.UserService;
/**
* Allows an administrator to view the boats assigned to the competitors of a race.
@@ -36,7 +37,8 @@ public class CompetitorToBoatMappingsViewPanel extends SimplePanel {
private final RefreshableSelectionModel<CompetitorDTO> refreshableCompetitorSelectionModel;
public CompetitorToBoatMappingsViewPanel(final SailingServiceAsync sailingService, final StringMessages stringMessages,
final ErrorReporter errorReporter, final String leaderboardName, final String raceColumnName, final String fleetName) {
final ErrorReporter errorReporter, final String leaderboardName, final String raceColumnName,
final String fleetName, UserService userService) {
super();
this.sailingService = sailingService;
this.stringMessages = stringMessages;
@@ -44,7 +46,8 @@ public class CompetitorToBoatMappingsViewPanel extends SimplePanel {
this.raceColumnName = raceColumnName;
this.fleetName = fleetName;
this.errorReporter = errorReporter;
this.competitorTable = new CompactCompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true);
this.competitorTable = new CompactCompetitorTableWrapper<>(sailingService, stringMessages, errorReporter,
/* multiSelection */ false, /* enablePager */ true, userService);
this.boatTable = new CompactBoatTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true);
refreshableCompetitorSelectionModel = competitorTable.getSelectionModel();
refreshableCompetitorSelectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
@@ -652,7 +652,8 @@ public class LeaderboardConfigPanel extends AbstractLeaderboardConfigPanel
final String raceName = LeaderboardNameConstants.DEFAULT_FLEET_NAME.equals(fleetName) ? raceColumnName
: raceColumnName + ", " + fleetName;
ShowCompetitorToBoatMappingsDialog dialog = new ShowCompetitorToBoatMappingsDialog(sailingService,
stringMessages, errorReporter, selectedLeaderboardName, raceColumnName, fleetName, raceName);
stringMessages, errorReporter, selectedLeaderboardName, raceColumnName, fleetName, raceName,
userService);
dialog.center();
}
@@ -9,11 +9,12 @@ import com.google.gwt.user.client.ui.VerticalPanel;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.security.ui.client.UserService;
public class ShowCompetitorToBoatMappingsDialog extends DialogBox {
public ShowCompetitorToBoatMappingsDialog(final SailingServiceAsync sailingService, final StringMessages stringMessages,
final ErrorReporter errorReporter, String leaderboardName, final String raceColumnName, final String fleetName,
String raceName) {
String raceName, UserService userService) {
super();
setText(stringMessages.actionShowCompetitorToBoatAssignments());
setAnimationEnabled(true);
@@ -26,7 +27,7 @@ public class ShowCompetitorToBoatMappingsDialog extends DialogBox {
});
VerticalPanel vPanel = new VerticalPanel();
CompetitorToBoatMappingsViewPanel competitorPanel = new CompetitorToBoatMappingsViewPanel(sailingService,
stringMessages, errorReporter, leaderboardName, raceColumnName, fleetName);
stringMessages, errorReporter, leaderboardName, raceColumnName, fleetName, userService);
vPanel.add(new Label(stringMessages.race() + ": " + raceName));
vPanel.add(competitorPanel);
vPanel.add(okButton);
@@ -451,7 +451,7 @@ public class SmartphoneTrackingEventManagementPanel
@Override
public void cancel() {
}
}).show();
}, userService).show();
}
@Override
@@ -935,7 +935,7 @@ public class SmartphoneTrackingEventManagementPanel
final String raceName = LeaderboardNameConstants.DEFAULT_FLEET_NAME.equals(fleetName) ? raceColumnName : raceColumnName + ", " + fleetName;
ShowCompetitorToBoatMappingsDialog dialog = new ShowCompetitorToBoatMappingsDialog(sailingService,
stringMessages, errorReporter, selectedLeaderboardName, raceColumnName, fleetName,
raceName);
raceName, userService);
dialog.center();
}