mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-06 02:52:22 +00:00
Moved EditOwnershipDialog to sse.security / added reusable ImagesBarCell
for default actions
This commit is contained in:
1 parent
d900636c2e
commit
1cfe18b780
14 files changed
+108
-27
No files matched your search
+3
-4
@@ -371,8 +371,7 @@ public class EventListComposite extends Composite implements EventsRefresher, Le
|
||||
}
|
||||
});
|
||||
final DialogConfig<EventDTO> config = EditOwnershipDialog.create(userService.getUserManagementService(), type,
|
||||
idFactory, event -> updateEvent(event, event),
|
||||
event -> errorReporter.reportError(stringMessages.errorUpdatingOwnership(event.getName())));
|
||||
idFactory, event -> updateEvent(event, event), stringMessages);
|
||||
actionsColumn.addAction(CHANGE_OWNERSHIP.name(), CHANGE_OWNERSHIP, config::openDialog);
|
||||
|
||||
eventNameColumn.setSortable(true);
|
||||
@@ -397,8 +396,8 @@ public class EventListComposite extends Composite implements EventsRefresher, Le
|
||||
table.addColumn(leaderboardGroupsColumn, stringMessages.leaderboardGroups());
|
||||
table.addColumn(imagesColumn, stringMessages.images());
|
||||
table.addColumn(videosColumn, stringMessages.videos());
|
||||
table.addColumn(groupColumn, com.sap.sse.security.ui.client.i18n.StringMessages.INSTANCE.group());
|
||||
table.addColumn(userColumn, com.sap.sse.security.ui.client.i18n.StringMessages.INSTANCE.user());
|
||||
table.addColumn(groupColumn, stringMessages.group());
|
||||
table.addColumn(userColumn, stringMessages.user());
|
||||
table.addColumn(actionsColumn, stringMessages.actions());
|
||||
table.setSelectionModel(eventSelectionCheckboxColumn.getSelectionModel(), eventSelectionCheckboxColumn.getSelectionManager());
|
||||
|
||||
|
||||
+1
-2
@@ -378,8 +378,7 @@ TrackedRaceChangedListener, LeaderboardsDisplayer {
|
||||
leaderboardActionColumn.addAction(LeaderboardConfigImagesBarCell.ACTION_PRINT_PAIRINGLIST, this::openPairingListEntryPoint);
|
||||
|
||||
final DialogConfig<StrippedLeaderboardDTO> config = EditOwnershipDialog.create(userService.getUserManagementService(), type,
|
||||
idFactory, leaderboardDTO -> reloadLeaderboardForTable(leaderboardDTO.getName()),
|
||||
leaderboardDTO -> errorReporter.reportError(stringMessages.errorUpdatingOwnership(leaderboardDTO.getName())));
|
||||
idFactory, leaderboardDTO -> reloadLeaderboardForTable(leaderboardDTO.getName()), stringMessages);
|
||||
leaderboardActionColumn.addAction(CHANGE_OWNERSHIP.name(), CHANGE_OWNERSHIP, config::openDialog);
|
||||
|
||||
leaderboardTable.addColumn(selectionCheckboxColumn, selectionCheckboxColumn.getHeader());
|
||||
|
||||
+1
-1
@@ -624,7 +624,7 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
|
||||
group.isHasOverallLeaderboard(), group.getOverallLeaderboardDiscardThresholds(),
|
||||
group.getOverallLeaderboardScoringSchemeType());
|
||||
updateGroup(group.getName(), group, descriptor);
|
||||
}, group -> errorReporter.reportError(stringMessages.errorUpdatingOwnership(group.getName())));
|
||||
}, stringMessages);
|
||||
actionsColumn.addAction(CHANGE_OWNERSHIP.name(), CHANGE_OWNERSHIP, config::openDialog);
|
||||
|
||||
SelectionCheckboxColumn<LeaderboardGroupDTO> leaderboardTableSelectionColumn =
|
||||
|
||||
+1
-2
@@ -253,8 +253,7 @@ public class RegattaListComposite extends Composite implements RegattasDisplayer
|
||||
}
|
||||
});
|
||||
final DialogConfig<RegattaDTO> config = EditOwnershipDialog.create(userService.getUserManagementService(), type,
|
||||
idFactory, this::commitEditedRegatta,
|
||||
regatta -> errorReporter.reportError(stringMessages.errorUpdatingOwnership(regatta.getName())));
|
||||
idFactory, this::commitEditedRegatta, stringMessages);
|
||||
actionsColumn.addAction(CHANGE_OWNERSHIP.name(), CHANGE_OWNERSHIP, config::openDialog);
|
||||
|
||||
table.addColumn(regattaSelectionCheckboxColumn, regattaSelectionCheckboxColumn.getHeader());
|
||||
|
||||
+1
@@ -11,6 +11,7 @@ import com.sap.sse.gwt.client.DefaultRule_1_0n;
|
||||
|
||||
@DefaultLocale("en")
|
||||
public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
com.sap.sse.security.ui.client.i18n.StringMessages,
|
||||
com.sap.sse.gwt.adminconsole.StringMessages, CommonStringMessages {
|
||||
public static final StringMessages INSTANCE = GWT.create(StringMessages.class);
|
||||
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 788 B |
@@ -8,6 +8,9 @@ public interface IconResources extends ClientBundle {
|
||||
|
||||
public static final IconResources INSTANCE = GWT.create(IconResources.class);
|
||||
|
||||
@Source("images/change-ownership.png")
|
||||
ImageResource changeOwnershipIcon();
|
||||
|
||||
@Source("images/remove.png")
|
||||
ImageResource removeIcon();
|
||||
|
||||
|
||||
@@ -40,18 +40,26 @@ public abstract class ImagesBarCell extends AbstractSafeHtmlCell<String> {
|
||||
private final AbstractImagePrototype imagePrototype;
|
||||
private final String actionName;
|
||||
private final String tooltip;
|
||||
|
||||
public ImageSpec(String actionName, String tooltip, ImageResource imageResource) {
|
||||
this(actionName, tooltip, AbstractImagePrototype.create(imageResource));
|
||||
}
|
||||
|
||||
public ImageSpec(String actionName, String tooltip, AbstractImagePrototype imagePrototype) {
|
||||
super();
|
||||
this.imagePrototype = imagePrototype;
|
||||
this.actionName = actionName;
|
||||
this.tooltip = tooltip;
|
||||
}
|
||||
|
||||
public AbstractImagePrototype getImagePrototype() {
|
||||
return imagePrototype;
|
||||
}
|
||||
|
||||
public String getActionName() {
|
||||
return actionName;
|
||||
}
|
||||
|
||||
public String getTooltip() {
|
||||
return tooltip;
|
||||
}
|
||||
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
package com.sap.sse.security.ui.client.component;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import com.sap.sse.gwt.client.IconResources;
|
||||
import com.sap.sse.gwt.client.celltable.ImagesBarCell;
|
||||
import com.sap.sse.security.shared.HasPermissions.DefaultActions;
|
||||
import com.sap.sse.security.ui.client.i18n.StringMessages;
|
||||
|
||||
public class DefaultActionsImagesBarCell extends ImagesBarCell {
|
||||
|
||||
public static final String ACTION_DELETE = DefaultActions.DELETE.name();
|
||||
public static final String ACTION_UPDATE = DefaultActions.UPDATE.name();
|
||||
public static final String ACTION_CHANGE_OWNERSHIP = DefaultActions.CHANGE_OWNERSHIP.name();
|
||||
|
||||
private final StringMessages stringMessages;
|
||||
|
||||
public DefaultActionsImagesBarCell(final StringMessages stringMessages) {
|
||||
this.stringMessages = stringMessages;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Iterable<ImageSpec> getImageSpecs() {
|
||||
return Arrays.asList(getUpdateImageSpec(), getDeleteImageSpec(), getChangeOwnershipImageSpec());
|
||||
}
|
||||
|
||||
/**
|
||||
* @return {@link ImageSpec} for {@link DefaultActions#UPDATE update} action
|
||||
*/
|
||||
protected ImageSpec getUpdateImageSpec() {
|
||||
return new ImageSpec(ACTION_DELETE, stringMessages.actionEdit(), IconResources.INSTANCE.editIcon());
|
||||
}
|
||||
|
||||
/**
|
||||
* @return {@link ImageSpec} for {@link DefaultActions#DELETE delete} action
|
||||
*/
|
||||
protected ImageSpec getDeleteImageSpec() {
|
||||
return new ImageSpec(ACTION_DELETE, stringMessages.actionRemove(), IconResources.INSTANCE.removeIcon());
|
||||
}
|
||||
|
||||
/**
|
||||
* @return {@link ImageSpec} for {@link DefaultActions#CHANGE_OWNERSHIP change ownership} action
|
||||
*/
|
||||
protected ImageSpec getChangeOwnershipImageSpec() {
|
||||
return new ImageSpec(ACTION_CHANGE_OWNERSHIP, stringMessages.actionChangeOwnership(),
|
||||
IconResources.INSTANCE.changeOwnershipIcon());
|
||||
}
|
||||
|
||||
}
|
||||
+15
-11
@@ -1,5 +1,7 @@
|
||||
package com.sap.sse.security.ui.client.component;
|
||||
|
||||
import static com.sap.sse.gwt.client.Notification.NotificationType.ERROR;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
|
||||
@@ -9,13 +11,14 @@ import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.domain.common.security.SecuredDomainType;
|
||||
import com.sap.sse.common.Named;
|
||||
import com.sap.sse.gwt.client.Notification;
|
||||
import com.sap.sse.gwt.client.Notification.NotificationType;
|
||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
|
||||
import com.sap.sse.security.shared.HasPermissions;
|
||||
import com.sap.sse.security.shared.NamedSecuredObjectDTO;
|
||||
import com.sap.sse.security.shared.Ownership;
|
||||
import com.sap.sse.security.shared.QualifiedObjectIdentifier;
|
||||
import com.sap.sse.security.shared.SecuredObject;
|
||||
import com.sap.sse.security.shared.SecurityUser;
|
||||
import com.sap.sse.security.shared.UserGroup;
|
||||
import com.sap.sse.security.shared.impl.OwnershipImpl;
|
||||
@@ -164,7 +167,7 @@ public class EditOwnershipDialog extends DataEntryDialog<OwnershipDialogResult>
|
||||
|
||||
/**
|
||||
* Creates a new {@link DialogConfig dialog configuration} instance which be (re-)used to
|
||||
* {@link DialogConfig#openDialog(NamedSecuredObjectDTO) open} a {@link EditOwnershipDialog dialog}.
|
||||
* {@link DialogConfig#openDialog(Named) open} a {@link EditOwnershipDialog dialog}.
|
||||
*
|
||||
* @param userManagementService
|
||||
* {@link UserManagementServiceAsync} to use to the secured object's ownership
|
||||
@@ -177,33 +180,34 @@ public class EditOwnershipDialog extends DataEntryDialog<OwnershipDialogResult>
|
||||
* @param errorCallback
|
||||
* {@link Consumer callback} to execute when the dialog is confirmed and ownership update fails
|
||||
*/
|
||||
public static <T extends NamedSecuredObjectDTO> DialogConfig<T> create(
|
||||
public static <T extends Named & SecuredObject> DialogConfig<T> create(
|
||||
final UserManagementServiceAsync userManagementService, final HasPermissions type,
|
||||
final Function<T, String> typeRelativeIdFactory, final Consumer<T> updateCallback,
|
||||
final Consumer<T> errorCallback) {
|
||||
return new DialogConfig<>(userManagementService, type, typeRelativeIdFactory, updateCallback, errorCallback);
|
||||
final StringMessages stringMessages) {
|
||||
return new DialogConfig<>(userManagementService, type, typeRelativeIdFactory, updateCallback, stringMessages);
|
||||
}
|
||||
|
||||
public static class DialogConfig<T extends NamedSecuredObjectDTO> {
|
||||
public static class DialogConfig<T extends Named & SecuredObject> {
|
||||
|
||||
private final UserManagementServiceAsync userManagementService;
|
||||
private final Consumer<T> updateCallback, errorCallback;
|
||||
private final Consumer<T> updateCallback;
|
||||
private final Function<T, QualifiedObjectIdentifier> identifierFactory;
|
||||
private final StringMessages stringMessages;
|
||||
|
||||
private DialogConfig(final UserManagementServiceAsync userManagementService, final HasPermissions type,
|
||||
final Function<T, String> idFactory, final Consumer<T> updateCallback,
|
||||
final Consumer<T> errorCallback) {
|
||||
final StringMessages stringMessages) {
|
||||
this.userManagementService = userManagementService;
|
||||
this.identifierFactory = idFactory.andThen(type::getQualifiedObjectIdentifier);
|
||||
this.updateCallback = updateCallback;
|
||||
this.errorCallback = errorCallback;
|
||||
this.stringMessages = stringMessages;
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens a {@link EditOwnershipDialog dialog} to edit ownerships for the provided secured object instance.
|
||||
*
|
||||
* @param securedObject
|
||||
* {@link NamedSecuredObjectDTO secured object} instance to edit ownerships for
|
||||
* {@link Named} {@link SecuredObject} instance to edit ownerships for
|
||||
*/
|
||||
public void openDialog(final T securedObject) {
|
||||
new EditOwnershipDialog(userManagementService, securedObject.getOwnership(),
|
||||
@@ -245,7 +249,7 @@ public class EditOwnershipDialog extends DataEntryDialog<OwnershipDialogResult>
|
||||
|
||||
@Override
|
||||
public final void onFailure(Throwable caught) {
|
||||
errorCallback.accept(securedObject);
|
||||
Notification.notify(stringMessages.errorUpdatingOwnership(securedObject.getName()), ERROR);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
@@ -120,6 +120,8 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages {
|
||||
String actions();
|
||||
String actionEdit();
|
||||
String actionRemove();
|
||||
String actionChangeOwnership();
|
||||
String errorUpdatingOwnership(String name);
|
||||
String doYouReallyWantToRemoveRole(String name);
|
||||
String errorTryingToDeleteRole(String rolename, String message);
|
||||
String pleaseEnterARoleName();
|
||||
|
||||
+2
@@ -125,6 +125,8 @@ filterRoles=Filter roles
|
||||
actions=Actions
|
||||
actionEdit=Edit
|
||||
actionRemove=Remove
|
||||
actionChangeOwnership=Change ownership
|
||||
errorUpdatingOwnership=Error updating ownership of object {0}
|
||||
doYouReallyWantToRemoveRole=Do you really want to remove role(s) "{0}"?
|
||||
errorTryingToDeleteRole=Error trying to delete role "{0}": {1}
|
||||
pleaseEnterARoleName=Please enter a role name
|
||||
|
||||
+2
@@ -125,6 +125,8 @@ filterRoles=Rollen filtern
|
||||
actions=Aktionen
|
||||
actionEdit=Bearbeiten
|
||||
actionRemove=Löschen
|
||||
actionChangeOwnership=Besitzer wechseln
|
||||
errorUpdatingOwnership=Fehler beim Setzen des Eigners für Objekt {0}
|
||||
doYouReallyWantToRemoveRole=Rolle(n) "{0}" wirklich löschen?
|
||||
errorTryingToDeleteRole=Fehler beim Löschen der Rolle "{0}": {1}
|
||||
pleaseEnterARoleName=Bitte einen Rollennamen eingeben
|
||||
|
||||
+20
-7
@@ -1,11 +1,19 @@
|
||||
package com.sap.sse.security.ui.client.usermanagement;
|
||||
|
||||
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;
|
||||
import static com.sap.sse.security.ui.client.component.DefaultActionsImagesBarCell.ACTION_CHANGE_OWNERSHIP;
|
||||
import static com.sap.sse.security.ui.client.component.DefaultActionsImagesBarCell.ACTION_DELETE;
|
||||
import static com.sap.sse.security.ui.client.component.DefaultActionsImagesBarCell.ACTION_UPDATE;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Comparator;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.function.Function;
|
||||
|
||||
import com.google.gwt.cell.client.SafeHtmlCell;
|
||||
import com.google.gwt.core.client.Callback;
|
||||
@@ -32,7 +40,6 @@ import com.sap.sse.gwt.client.celltable.TableWrapper;
|
||||
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.shared.HasPermissions.DefaultActions;
|
||||
import com.sap.sse.security.shared.Role;
|
||||
import com.sap.sse.security.shared.UserGroup;
|
||||
import com.sap.sse.security.shared.WildcardPermission;
|
||||
@@ -40,7 +47,9 @@ import com.sap.sse.security.shared.impl.SecuredSecurityTypes;
|
||||
import com.sap.sse.security.ui.client.UserManagementServiceAsync;
|
||||
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.EditAndRemoveImagesBarCell;
|
||||
import com.sap.sse.security.ui.client.component.DefaultActionsImagesBarCell;
|
||||
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;
|
||||
import com.sap.sse.security.ui.client.i18n.StringMessages;
|
||||
import com.sap.sse.security.ui.shared.SuccessInfo;
|
||||
@@ -148,11 +157,12 @@ extends TableWrapper<UserDTO, S, StringMessages, TR> {
|
||||
}
|
||||
});
|
||||
|
||||
final AccessControlledActionsColumn<UserDTO, EditAndRemoveImagesBarCell> userActionColumn = new AccessControlledActionsColumn<>(
|
||||
new EditAndRemoveImagesBarCell(stringMessages), userService, SecuredSecurityTypes.USER, UserDTO::getName);
|
||||
userActionColumn.addAction(EditAndRemoveImagesBarCell.ACTION_EDIT, DefaultActions.UPDATE,
|
||||
user -> editUser(user, additionalPermissions));
|
||||
userActionColumn.addAction(EditAndRemoveImagesBarCell.ACTION_REMOVE, DefaultActions.DELETE, user -> {
|
||||
final HasPermissions type = SecuredSecurityTypes.USER;
|
||||
final Function<UserDTO, String> idFactory = UserDTO::getName;
|
||||
final AccessControlledActionsColumn<UserDTO, DefaultActionsImagesBarCell> userActionColumn = new AccessControlledActionsColumn<>(
|
||||
new DefaultActionsImagesBarCell(stringMessages), userService, type, idFactory);
|
||||
userActionColumn.addAction(ACTION_UPDATE, UPDATE, user -> editUser(user, additionalPermissions));
|
||||
userActionColumn.addAction(ACTION_DELETE, DELETE, user -> {
|
||||
if (Window.confirm(stringMessages.doYouReallyWantToRemoveUser(user.getName()))) {
|
||||
getUserManagementService().deleteUser(user.getName(), new AsyncCallback<SuccessInfo>() {
|
||||
@Override
|
||||
@@ -175,6 +185,9 @@ extends TableWrapper<UserDTO, S, StringMessages, TR> {
|
||||
});
|
||||
}
|
||||
});
|
||||
final DialogConfig<UserDTO> config = EditOwnershipDialog.create(userService.getUserManagementService(), type,
|
||||
idFactory, user -> Window.alert("TODO Updating user ownership ..."), stringMessages);
|
||||
userActionColumn.addAction(ACTION_CHANGE_OWNERSHIP, CHANGE_OWNERSHIP, config::openDialog);
|
||||
|
||||
filterField = new LabeledAbstractFilterablePanel<UserDTO>(new Label(stringMessages.filterUsers()),
|
||||
new ArrayList<UserDTO>(), dataProvider) {
|
||||
|
||||
Reference in new issue
Block a user