1 package org
.argeo
.security
.ui
.admin
.commands
;
3 import org
.argeo
.ArgeoException
;
4 import org
.argeo
.security
.UserAdminService
;
5 import org
.argeo
.security
.ui
.admin
.editors
.ArgeoUserEditor
;
6 import org
.argeo
.security
.ui
.admin
.views
.RolesView
;
7 import org
.eclipse
.core
.commands
.AbstractHandler
;
8 import org
.eclipse
.core
.commands
.ExecutionEvent
;
9 import org
.eclipse
.core
.commands
.ExecutionException
;
10 import org
.eclipse
.ui
.IEditorReference
;
11 import org
.eclipse
.ui
.IWorkbenchPage
;
12 import org
.eclipse
.ui
.handlers
.HandlerUtil
;
13 import org
.eclipse
.ui
.internal
.EditorReference
;
15 /** Add a new role. */
16 public class AddRole
extends AbstractHandler
{
17 public final static String COMMAND_ID
= "org.argeo.security.ui.admin.addRole";
18 private UserAdminService userAdminService
;
19 private String rolePrefix
= "ROLE_";
21 public Object
execute(ExecutionEvent event
) throws ExecutionException
{
22 RolesView rolesView
= (RolesView
) HandlerUtil
23 .getActiveWorkbenchWindow(event
).getActivePage()
24 .findView(RolesView
.ID
);
25 String role
= rolesView
.getNewRole();
26 if (role
.trim().equals(""))
28 if (role
.equals(rolesView
.getAddNewRoleText()))
30 role
= role
.trim().toUpperCase();
31 if (!role
.startsWith(rolePrefix
))
32 role
= rolePrefix
+ role
;
33 if (userAdminService
.listEditableRoles().contains(role
))
34 throw new ArgeoException("Role " + role
+ " already exists");
35 userAdminService
.newRole(role
);
39 IEditorReference
[] refs
= HandlerUtil
.getActiveWorkbenchWindow(event
)
41 .findEditors(null, ArgeoUserEditor
.ID
, IWorkbenchPage
.MATCH_ID
);
42 for (IEditorReference ref
: refs
) {
43 ArgeoUserEditor userEditor
= (ArgeoUserEditor
) ref
.getEditor(false);
44 if (userEditor
!= null) {
51 public void setUserAdminService(UserAdminService userAdminService
) {
52 this.userAdminService
= userAdminService
;