X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.e4%2Fsrc%2Forg%2Fargeo%2Fcms%2Fe4%2Fusers%2Fhandlers%2FDeleteGroups.java;h=7da3a54d57033aab5d10d6da6945d47f3f279cdc;hb=b7c2f2cc2f6f74762031567e9e636ff277ebc7c7;hp=95a411635a8a5edcafad5dc7f7795c72e3b3ce76;hpb=d6390257a328199a2a4a677b33e79b6535175169;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.e4/src/org/argeo/cms/e4/users/handlers/DeleteGroups.java b/org.argeo.cms.e4/src/org/argeo/cms/e4/users/handlers/DeleteGroups.java index 95a411635..7da3a54d5 100644 --- a/org.argeo.cms.e4/src/org/argeo/cms/e4/users/handlers/DeleteGroups.java +++ b/org.argeo.cms.e4/src/org/argeo/cms/e4/users/handlers/DeleteGroups.java @@ -15,19 +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.auth.UserAdminUtils; +import org.argeo.cms.e4.users.GroupsView; import org.argeo.cms.e4.users.UserAdminWrapper; -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.Group; import org.osgi.service.useradmin.UserAdmin; @@ -35,63 +36,75 @@ import org.osgi.service.useradmin.UserAdminEvent; /** Delete the selected groups */ public class DeleteGroups { -// public final static String ID = WorkbenchUiPlugin.PLUGIN_ID + ".deleteGroups"; + // public final static String ID = WorkbenchUiPlugin.PLUGIN_ID + + // ".deleteGroups"; /* DEPENDENCY INJECTION */ @Inject private UserAdminWrapper userAdminWrapper; - + @Inject ESelectionService selectionService; @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 groups = new ArrayList(); + // Iterator it = ((IStructuredSelection) selection).iterator(); + + List selection = (List) selectionService.getSelection(); + if (selection == null) + return; - List groups = new ArrayList(); - Iterator it = ((IStructuredSelection) selection).iterator(); StringBuilder builder = new StringBuilder(); - while (it.hasNext()) { - Group currGroup = it.next(); + for (Group group : selection) { + Group currGroup = group; String groupName = UserAdminUtils.getUserLocalId(currGroup.getName()); // TODO add checks builder.append(groupName).append("; "); - groups.add(currGroup); + // groups.add(currGroup); } if (!MessageDialog.openQuestion(Display.getCurrent().getActiveShell(), "Delete Groups", "Are you sure that you " + "want to delete these groups?\n" + builder.substring(0, builder.length() - 2))) - return null; + return; userAdminWrapper.beginTransactionIfNeeded(); UserAdmin userAdmin = userAdminWrapper.getUserAdmin(); -// IWorkbenchPage iwp = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage(); - for (Group group : groups) { + // IWorkbenchPage iwp = + // HandlerUtil.getActiveWorkbenchWindow(event).getActivePage(); + for (Group group : selection) { String groupName = group.getName(); // TODO find a way to close the editor cleanly if opened. Cannot be // done through the UserAdminListeners, it causes a // java.util.ConcurrentModificationException because disposing the // editor unregisters and disposes the listener -// IEditorPart part = iwp.findEditor(new UserEditorInput(groupName)); -// if (part != null) -// iwp.closeEditor(part, false); + // IEditorPart part = iwp.findEditor(new UserEditorInput(groupName)); + // if (part != null) + // iwp.closeEditor(part, false); userAdmin.removeRole(groupName); } userAdminWrapper.commitOrNotifyTransactionStateChange(); // Update the view - for (Group group : groups) { + for (Group group : selection) { userAdminWrapper.notifyListeners(new UserAdminEvent(null, UserAdminEvent.ROLE_REMOVED, group)); } - return null; + // 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 GroupsView && selectionService.getSelection() != null; } + + /* DEPENDENCY INJECTION */ + // public void setUserAdminWrapper(UserAdminWrapper userAdminWrapper) { + // this.userAdminWrapper = userAdminWrapper; + // } }