]> git.argeo.org Git - lgpl/argeo-commons.git/blob - DeleteRole.java
9b1b44608edc1f7068c31db569f39a61fa375cfd
[lgpl/argeo-commons.git] / DeleteRole.java
1 package org.argeo.security.ui.admin.commands;
2
3 import java.util.ArrayList;
4 import java.util.Iterator;
5 import java.util.List;
6
7 import org.argeo.security.UserAdminService;
8 import org.argeo.security.ui.admin.views.RolesView;
9 import org.eclipse.core.commands.AbstractHandler;
10 import org.eclipse.core.commands.ExecutionEvent;
11 import org.eclipse.core.commands.ExecutionException;
12 import org.eclipse.jface.dialogs.MessageDialog;
13 import org.eclipse.jface.viewers.ISelection;
14 import org.eclipse.jface.viewers.IStructuredSelection;
15 import org.eclipse.ui.handlers.HandlerUtil;
16
17 /** Deletes the selected roles */
18 public class DeleteRole extends AbstractHandler {
19 private UserAdminService userAdminService;
20
21 @SuppressWarnings("unchecked")
22 public Object execute(ExecutionEvent event) throws ExecutionException {
23 ISelection selection = HandlerUtil.getCurrentSelection(event);
24 if (selection.isEmpty())
25 return null;
26
27 List<String> toDelete = new ArrayList<String>();
28 Iterator<String> it = ((IStructuredSelection) selection).iterator();
29 while (it.hasNext()) {
30 toDelete.add(it.next());
31 }
32
33 if (!MessageDialog
34 .openQuestion(
35 HandlerUtil.getActiveShell(event),
36 "Delete Role",
37 "Are you sure that you want to delete "
38 + toDelete
39 + "?\n"
40 + "This may lead to inconsistencies in the application."))
41 return null;
42
43 for (String role : toDelete) {
44 userAdminService.deleteRole(role);
45 }
46
47 RolesView view = (RolesView) HandlerUtil
48 .getActiveWorkbenchWindow(event).getActivePage()
49 .findView(RolesView.ID);
50 view.refresh();
51 return null;
52 }
53
54 public void setUserAdminService(UserAdminService userAdminService) {
55 this.userAdminService = userAdminService;
56 }
57 }