mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-14 22:43:57 +00:00
bug4763 Integrated AccessControlledButtonPanel into EventListComposite
This commit is contained in:
1 parent
160482b840
commit
368ffc75c4
1 file changed
+30
-64
+30
-64
@@ -1,5 +1,6 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import static com.sap.sailing.domain.common.security.SecuredDomainType.EVENT;
|
||||
import static com.sap.sse.security.shared.HasPermissions.DefaultActions.CHANGE_OWNERSHIP;
|
||||
import static com.sap.sse.security.shared.HasPermissions.DefaultActions.DELETE;
|
||||
import static com.sap.sse.security.shared.HasPermissions.DefaultActions.UPDATE;
|
||||
@@ -20,8 +21,6 @@ import com.google.gwt.cell.client.AbstractCell;
|
||||
import com.google.gwt.cell.client.SafeHtmlCell;
|
||||
import com.google.gwt.cell.client.ValueUpdater;
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.safehtml.client.SafeHtmlTemplates;
|
||||
import com.google.gwt.safehtml.shared.SafeHtml;
|
||||
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
|
||||
@@ -32,17 +31,15 @@ import com.google.gwt.user.cellview.client.CellTable;
|
||||
import com.google.gwt.user.cellview.client.Column;
|
||||
import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
|
||||
import com.google.gwt.user.cellview.client.TextColumn;
|
||||
import com.google.gwt.user.client.Command;
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.Button;
|
||||
import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.SimplePanel;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.view.client.ListDataProvider;
|
||||
import com.google.gwt.view.client.SelectionChangeEvent;
|
||||
import com.sap.sailing.domain.common.security.SecuredDomainType;
|
||||
import com.sap.sailing.gwt.ui.adminconsole.LeaderboardGroupDialog.LeaderboardGroupDescriptor;
|
||||
import com.sap.sailing.gwt.ui.client.EntryPointLinkFactory;
|
||||
import com.sap.sailing.gwt.ui.client.EventsRefresher;
|
||||
@@ -71,9 +68,9 @@ import com.sap.sse.gwt.client.celltable.SelectionCheckboxColumn;
|
||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
|
||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
|
||||
import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel;
|
||||
import com.sap.sse.security.shared.HasPermissions;
|
||||
import com.sap.sse.security.ui.client.UserService;
|
||||
import com.sap.sse.security.ui.client.component.AccessControlledActionsColumn;
|
||||
import com.sap.sse.security.ui.client.component.AccessControlledButtonPanel;
|
||||
import com.sap.sse.security.ui.client.component.EditOwnershipDialog;
|
||||
import com.sap.sse.security.ui.client.component.EditOwnershipDialog.DialogConfig;
|
||||
import com.sap.sse.security.ui.client.component.SecuredObjectOwnerColumn;
|
||||
@@ -89,18 +86,13 @@ public class EventListComposite extends Composite implements EventsRefresher, Le
|
||||
private final UserService userService;
|
||||
private final ErrorReporter errorReporter;
|
||||
private final StringMessages stringMessages;
|
||||
|
||||
private CellTable<EventDTO> eventTable;
|
||||
private final CellTable<EventDTO> eventTable;
|
||||
private final RefreshableMultiSelectionModel<EventDTO> refreshableEventSelectionModel;
|
||||
private ListDataProvider<EventDTO> eventListDataProvider;
|
||||
private List<EventDTO> allEvents;
|
||||
private LabeledAbstractFilterablePanel<EventDTO> filterTextbox;
|
||||
private Button removeEventsButton;
|
||||
private final ListDataProvider<EventDTO> eventListDataProvider;
|
||||
private final List<EventDTO> allEvents;
|
||||
private final LabeledAbstractFilterablePanel<EventDTO> filterTextbox;
|
||||
private final Label noEventsLabel;
|
||||
|
||||
private final SimplePanel mainPanel;
|
||||
private final VerticalPanel panel;
|
||||
|
||||
private Iterable<LeaderboardGroupDTO> availableLeaderboardGroups;
|
||||
|
||||
public static class AnchorCell extends AbstractCell<SafeHtml> {
|
||||
@@ -132,63 +124,38 @@ public class EventListComposite extends Composite implements EventsRefresher, Le
|
||||
this.regattaRefresher = regattaRefresher;
|
||||
this.eventsRefresher = eventsRefresher;
|
||||
this.handleTabSelectable = handleTabSelectable;
|
||||
availableLeaderboardGroups = Collections.emptyList();
|
||||
allEvents = new ArrayList<EventDTO>();
|
||||
this.availableLeaderboardGroups = Collections.emptyList();
|
||||
this.allEvents = new ArrayList<EventDTO>();
|
||||
|
||||
mainPanel = new SimplePanel();
|
||||
panel = new VerticalPanel();
|
||||
mainPanel.setWidget(panel);
|
||||
final VerticalPanel panel = new VerticalPanel();
|
||||
final AccessControlledButtonPanel buttonPanel = new AccessControlledButtonPanel(userService, EVENT);
|
||||
panel.add(buttonPanel);
|
||||
|
||||
HorizontalPanel eventControlsPanel = new HorizontalPanel();
|
||||
eventControlsPanel.setSpacing(5);
|
||||
panel.add(eventControlsPanel);
|
||||
final Button refresh = buttonPanel.addUnsecuredAction(stringMessages.refresh(), this::fillEvents);
|
||||
refresh.ensureDebugId("RefreshEventsButton");
|
||||
|
||||
Button refreshButton = new Button(stringMessages.refresh());
|
||||
refreshButton.ensureDebugId("RefreshEventsButton");
|
||||
refreshButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
fillEvents();
|
||||
}
|
||||
});
|
||||
eventControlsPanel.add(refreshButton);
|
||||
final Button create = buttonPanel.addCreateAction(stringMessages.actionAddEvent(), this::openCreateEventDialog);
|
||||
create.ensureDebugId("CreateEventButton");
|
||||
|
||||
Button createEventBtn = new Button(stringMessages.actionAddEvent());
|
||||
createEventBtn.ensureDebugId("CreateEventButton");
|
||||
createEventBtn.addClickHandler(new ClickHandler() {
|
||||
final Button remove = buttonPanel.addRemoveAction(stringMessages.remove(), new Command() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
openCreateEventDialog();
|
||||
}
|
||||
});
|
||||
eventControlsPanel.add(createEventBtn);
|
||||
if (!userService.hasCurrentUserPermissionToCreateObjectOfType(SecuredDomainType.EVENT)) {
|
||||
createEventBtn.setVisible(false);
|
||||
}
|
||||
|
||||
removeEventsButton = new Button(stringMessages.remove());
|
||||
removeEventsButton.ensureDebugId("RemoveEventsButton");
|
||||
removeEventsButton.setEnabled(false);
|
||||
removeEventsButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
if(askUserForConfirmation()){
|
||||
public void execute() {
|
||||
if (askUserForConfirmation()) {
|
||||
removeEvents(refreshableEventSelectionModel.getSelectedSet());
|
||||
}
|
||||
}
|
||||
|
||||
private boolean askUserForConfirmation() {
|
||||
if(refreshableEventSelectionModel.itemIsSelectedButNotVisible(eventTable.getVisibleItems())){
|
||||
final String eventNames = refreshableEventSelectionModel.getSelectedSet().stream().map(e -> e.getName()).collect(Collectors.joining("\n"));
|
||||
if (refreshableEventSelectionModel.itemIsSelectedButNotVisible(eventTable.getVisibleItems())) {
|
||||
final String eventNames = refreshableEventSelectionModel.getSelectedSet().stream()
|
||||
.map(EventDTO::getName).collect(Collectors.joining("\n"));
|
||||
return Window.confirm(stringMessages.doYouReallyWantToRemoveNonVisibleEvents(eventNames));
|
||||
}
|
||||
return Window.confirm(stringMessages.doYouReallyWantToRemoveEvents());
|
||||
}
|
||||
});
|
||||
eventControlsPanel.add(removeEventsButton);
|
||||
if (!userService.hasCurrentUserPermissionToDeleteAnyObjectOfType(SecuredDomainType.EVENT)) {
|
||||
removeEventsButton.setVisible(false);
|
||||
}
|
||||
remove.setEnabled(false);
|
||||
remove.ensureDebugId("RemoveEventsButton");
|
||||
|
||||
eventListDataProvider = new ListDataProvider<EventDTO>();
|
||||
filterTextbox = new LabeledAbstractFilterablePanel<EventDTO>(new Label(stringMessages.filterEventsByName()),
|
||||
@@ -222,10 +189,10 @@ public class EventListComposite extends Composite implements EventsRefresher, Le
|
||||
this.refreshableEventSelectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
|
||||
@Override
|
||||
public void onSelectionChange(SelectionChangeEvent event) {
|
||||
final boolean somethingSelected = !refreshableEventSelectionModel.getSelectedSet().isEmpty();
|
||||
removeEventsButton.setEnabled(somethingSelected);
|
||||
remove.setEnabled(!refreshableEventSelectionModel.getSelectedSet().isEmpty());
|
||||
final int numberOfItemsSelected = refreshableEventSelectionModel.getSelectedSet().size();
|
||||
removeEventsButton.setText(numberOfItemsSelected <= 1 ? stringMessages.remove() : stringMessages.removeNumber(numberOfItemsSelected));
|
||||
remove.setText(numberOfItemsSelected <= 1 ? stringMessages.remove()
|
||||
: stringMessages.removeNumber(numberOfItemsSelected));
|
||||
}
|
||||
});
|
||||
panel.add(filterTextbox);
|
||||
@@ -235,7 +202,7 @@ public class EventListComposite extends Composite implements EventsRefresher, Le
|
||||
noEventsLabel.setWordWrap(false);
|
||||
panel.add(noEventsLabel);
|
||||
fillEvents();
|
||||
initWidget(mainPanel);
|
||||
initWidget(panel);
|
||||
}
|
||||
|
||||
private CellTable<EventDTO> createEventTable(UserDTO user) {
|
||||
@@ -362,17 +329,16 @@ public class EventListComposite extends Composite implements EventsRefresher, Le
|
||||
final SecuredObjectOwnerColumn<EventDTO> groupColumn = SecuredObjectOwnerColumn.getGroupOwnerColumn();
|
||||
final SecuredObjectOwnerColumn<EventDTO> userColumn = SecuredObjectOwnerColumn.getUserOwnerColumn();
|
||||
|
||||
final HasPermissions type = SecuredDomainType.EVENT;
|
||||
final Function<EventDTO, String> idFactory = event -> event.id.toString();
|
||||
final AccessControlledActionsColumn<EventDTO, EventConfigImagesBarCell> actionsColumn = new AccessControlledActionsColumn<>(
|
||||
new EventConfigImagesBarCell(stringMessages), userService, type, idFactory);
|
||||
new EventConfigImagesBarCell(stringMessages), userService, EVENT, idFactory);
|
||||
actionsColumn.addAction(EventConfigImagesBarCell.ACTION_UPDATE, UPDATE, this::openEditEventDialog);
|
||||
actionsColumn.addAction(EventConfigImagesBarCell.ACTION_DELETE, DELETE, event -> {
|
||||
if (Window.confirm(stringMessages.doYouReallyWantToRemoveEvent(event.getName()))) {
|
||||
removeEvent(event);
|
||||
}
|
||||
});
|
||||
final DialogConfig<EventDTO> config = EditOwnershipDialog.create(userService.getUserManagementService(), type,
|
||||
final DialogConfig<EventDTO> config = EditOwnershipDialog.create(userService.getUserManagementService(), EVENT,
|
||||
idFactory, event -> fillEvents(), stringMessages);
|
||||
actionsColumn.addAction(EventConfigImagesBarCell.ACTION_CHANGE_OWNERSHIP, CHANGE_OWNERSHIP, config::openDialog);
|
||||
|
||||
|
||||
Reference in new issue
Block a user