X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.e4%2Fsrc%2Forg%2Fargeo%2Fcms%2Fe4%2Fusers%2Fhandlers%2FDeleteUsers.java;h=b70312bc8abc590dbe8d770bd1267cc79bfe1ea3;hb=2f4abd50f4056f1df9d9355145f6192b61a233e8;hp=4a9417c9ef99f7bc4750aa35f7dc67dfa335f54b;hpb=b833678621d89b7db2f7921fbbe4daeb7be9ff12;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.e4/src/org/argeo/cms/e4/users/handlers/DeleteUsers.java b/org.argeo.cms.e4/src/org/argeo/cms/e4/users/handlers/DeleteUsers.java index 4a9417c9e..b70312bc8 100644 --- a/org.argeo.cms.e4/src/org/argeo/cms/e4/users/handlers/DeleteUsers.java +++ b/org.argeo.cms.e4/src/org/argeo/cms/e4/users/handlers/DeleteUsers.java @@ -15,18 +15,20 @@ */ package org.argeo.cms.e4.users.handlers; -import java.util.ArrayList; -import java.util.Iterator; import java.util.List; import javax.inject.Inject; +import javax.inject.Named; import org.argeo.cms.e4.users.UserAdminWrapper; +import org.argeo.cms.e4.users.UsersView; import org.argeo.cms.util.UserAdminUtils; +import org.eclipse.e4.core.di.annotations.CanExecute; import org.eclipse.e4.core.di.annotations.Execute; +import org.eclipse.e4.ui.model.application.ui.basic.MPart; +import org.eclipse.e4.ui.services.IServiceConstants; +import org.eclipse.e4.ui.workbench.modeling.ESelectionService; import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.widgets.Display; import org.osgi.service.useradmin.User; import org.osgi.service.useradmin.UserAdmin; @@ -42,37 +44,41 @@ public class DeleteUsers { @SuppressWarnings("unchecked") @Execute - public Object execute() { - ISelection selection = null;// HandlerUtil.getCurrentSelection(event); - if (selection.isEmpty()) - return null; + public void execute(@Named(IServiceConstants.ACTIVE_PART) MPart part, ESelectionService selectionService) { + // ISelection selection = null;// HandlerUtil.getCurrentSelection(event); + // if (selection.isEmpty()) + // return null; + List selection = (List) selectionService.getSelection(); + if (selection == null) + return; - Iterator it = ((IStructuredSelection) selection).iterator(); - List users = new ArrayList(); +// Iterator it = ((IStructuredSelection) selection).iterator(); +// List users = new ArrayList(); StringBuilder builder = new StringBuilder(); - while (it.hasNext()) { - User currUser = it.next(); + for(User user:selection) { + User currUser = user; +// User currUser = it.next(); String userName = UserAdminUtils.getUserLocalId(currUser.getName()); if (UserAdminUtils.isCurrentUser(currUser)) { MessageDialog.openError(Display.getCurrent().getActiveShell(), "Deletion forbidden", "You cannot delete your own user this way."); - return null; + return; } builder.append(userName).append("; "); - users.add(currUser); +// users.add(currUser); } if (!MessageDialog.openQuestion(Display.getCurrent().getActiveShell(), "Delete Users", "Are you sure that you want to delete these users?\n" + builder.substring(0, builder.length() - 2))) - return null; + return; userAdminWrapper.beginTransactionIfNeeded(); UserAdmin userAdmin = userAdminWrapper.getUserAdmin(); // IWorkbenchPage iwp = // HandlerUtil.getActiveWorkbenchWindow(event).getActivePage(); - for (User user : users) { + for (User user : selection) { String userName = user.getName(); // TODO find a way to close the editor cleanly if opened. Cannot be // done through the UserAdminListeners, it causes a @@ -85,14 +91,13 @@ public class DeleteUsers { } userAdminWrapper.commitOrNotifyTransactionStateChange(); - for (User user : users) { + for (User user : selection) { userAdminWrapper.notifyListeners(new UserAdminEvent(null, UserAdminEvent.ROLE_REMOVED, user)); } - return null; } - /* DEPENDENCY INJECTION */ - public void setUserAdminWrapper(UserAdminWrapper userAdminWrapper) { - this.userAdminWrapper = userAdminWrapper; + @CanExecute + public boolean canExecute(@Named(IServiceConstants.ACTIVE_PART) MPart part, ESelectionService selectionService) { + return part.getObject() instanceof UsersView && selectionService.getSelection() != null; } }