1 package org
.argeo
.cms
.e4
.users
.handlers
;
5 import javax
.inject
.Inject
;
6 import javax
.inject
.Named
;
8 import org
.argeo
.cms
.auth
.UserAdminUtils
;
9 import org
.argeo
.cms
.e4
.users
.GroupsView
;
10 import org
.argeo
.cms
.e4
.users
.UserAdminWrapper
;
11 import org
.eclipse
.e4
.core
.di
.annotations
.CanExecute
;
12 import org
.eclipse
.e4
.core
.di
.annotations
.Execute
;
13 import org
.eclipse
.e4
.ui
.model
.application
.ui
.basic
.MPart
;
14 import org
.eclipse
.e4
.ui
.services
.IServiceConstants
;
15 import org
.eclipse
.e4
.ui
.workbench
.modeling
.ESelectionService
;
16 import org
.eclipse
.jface
.dialogs
.MessageDialog
;
17 import org
.eclipse
.swt
.widgets
.Display
;
18 import org
.osgi
.service
.useradmin
.Group
;
19 import org
.osgi
.service
.useradmin
.UserAdmin
;
20 import org
.osgi
.service
.useradmin
.UserAdminEvent
;
22 /** Delete the selected groups */
23 public class DeleteGroups
{
24 // public final static String ID = WorkbenchUiPlugin.PLUGIN_ID +
27 /* DEPENDENCY INJECTION */
29 private UserAdminWrapper userAdminWrapper
;
32 ESelectionService selectionService
;
34 @SuppressWarnings("unchecked")
36 public void execute(@Named(IServiceConstants
.ACTIVE_PART
) MPart part
, ESelectionService selectionService
) {
37 // ISelection selection = null;// HandlerUtil.getCurrentSelection(event);
38 // if (selection.isEmpty())
41 // List<Group> groups = new ArrayList<Group>();
42 // Iterator<Group> it = ((IStructuredSelection) selection).iterator();
44 List
<Group
> selection
= (List
<Group
>) selectionService
.getSelection();
45 if (selection
== null)
48 StringBuilder builder
= new StringBuilder();
49 for (Group group
: selection
) {
50 Group currGroup
= group
;
51 String groupName
= UserAdminUtils
.getUserLocalId(currGroup
.getName());
53 builder
.append(groupName
).append("; ");
54 // groups.add(currGroup);
57 if (!MessageDialog
.openQuestion(Display
.getCurrent().getActiveShell(), "Delete Groups", "Are you sure that you "
58 + "want to delete these groups?\n" + builder
.substring(0, builder
.length() - 2)))
61 userAdminWrapper
.beginTransactionIfNeeded();
62 UserAdmin userAdmin
= userAdminWrapper
.getUserAdmin();
63 // IWorkbenchPage iwp =
64 // HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
65 for (Group group
: selection
) {
66 String groupName
= group
.getName();
67 // TODO find a way to close the editor cleanly if opened. Cannot be
68 // done through the UserAdminListeners, it causes a
69 // java.util.ConcurrentModificationException because disposing the
70 // editor unregisters and disposes the listener
71 // IEditorPart part = iwp.findEditor(new UserEditorInput(groupName));
73 // iwp.closeEditor(part, false);
74 userAdmin
.removeRole(groupName
);
76 userAdminWrapper
.commitOrNotifyTransactionStateChange();
79 for (Group group
: selection
) {
80 userAdminWrapper
.notifyListeners(new UserAdminEvent(null, UserAdminEvent
.ROLE_REMOVED
, group
));
87 public boolean canExecute(@Named(IServiceConstants
.ACTIVE_PART
) MPart part
, ESelectionService selectionService
) {
88 return part
.getObject() instanceof GroupsView
&& selectionService
.getSelection() != null;
91 /* DEPENDENCY INJECTION */
92 // public void setUserAdminWrapper(UserAdminWrapper userAdminWrapper) {
93 // this.userAdminWrapper = userAdminWrapper;