]> git.argeo.org Git - lgpl/argeo-commons.git/blob - eclipse/org.argeo.cms.e4/src/org/argeo/cms/e4/users/handlers/DeleteGroups.java
Mini desktop graalvm packaging.
[lgpl/argeo-commons.git] / eclipse / org.argeo.cms.e4 / src / org / argeo / cms / e4 / users / handlers / DeleteGroups.java
1 package org.argeo.cms.e4.users.handlers;
2
3 import java.util.List;
4
5 import javax.inject.Inject;
6 import javax.inject.Named;
7
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;
21
22 /** Delete the selected groups */
23 public class DeleteGroups {
24 // public final static String ID = WorkbenchUiPlugin.PLUGIN_ID +
25 // ".deleteGroups";
26
27 /* DEPENDENCY INJECTION */
28 @Inject
29 private UserAdminWrapper userAdminWrapper;
30
31 @Inject
32 ESelectionService selectionService;
33
34 @SuppressWarnings("unchecked")
35 @Execute
36 public void execute(@Named(IServiceConstants.ACTIVE_PART) MPart part, ESelectionService selectionService) {
37 // ISelection selection = null;// HandlerUtil.getCurrentSelection(event);
38 // if (selection.isEmpty())
39 // return null;
40 //
41 // List<Group> groups = new ArrayList<Group>();
42 // Iterator<Group> it = ((IStructuredSelection) selection).iterator();
43
44 List<Group> selection = (List<Group>) selectionService.getSelection();
45 if (selection == null)
46 return;
47
48 StringBuilder builder = new StringBuilder();
49 for (Group group : selection) {
50 Group currGroup = group;
51 String groupName = UserAdminUtils.getUserLocalId(currGroup.getName());
52 // TODO add checks
53 builder.append(groupName).append("; ");
54 // groups.add(currGroup);
55 }
56
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)))
59 return;
60
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));
72 // if (part != null)
73 // iwp.closeEditor(part, false);
74 userAdmin.removeRole(groupName);
75 }
76 userAdminWrapper.commitOrNotifyTransactionStateChange();
77
78 // Update the view
79 for (Group group : selection) {
80 userAdminWrapper.notifyListeners(new UserAdminEvent(null, UserAdminEvent.ROLE_REMOVED, group));
81 }
82
83 // return null;
84 }
85
86 @CanExecute
87 public boolean canExecute(@Named(IServiceConstants.ACTIVE_PART) MPart part, ESelectionService selectionService) {
88 return part.getObject() instanceof GroupsView && selectionService.getSelection() != null;
89 }
90
91 /* DEPENDENCY INJECTION */
92 // public void setUserAdminWrapper(UserAdminWrapper userAdminWrapper) {
93 // this.userAdminWrapper = userAdminWrapper;
94 // }
95 }