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
;
14 /** Add a new role. */
15 public class AddRole
extends AbstractHandler
{
16 public final static String COMMAND_ID
= "org.argeo.security.ui.admin.addRole";
17 private UserAdminService userAdminService
;
18 private String rolePrefix
= "ROLE_";
20 public Object
execute(ExecutionEvent event
) throws ExecutionException
{
21 RolesView rolesView
= (RolesView
) HandlerUtil
22 .getActiveWorkbenchWindow(event
).getActivePage()
23 .findView(RolesView
.ID
);
24 String role
= rolesView
.getNewRole();
25 if (role
.trim().equals(""))
27 if (role
.equals(rolesView
.getAddNewRoleText()))
29 role
= role
.trim().toUpperCase();
30 if (!role
.startsWith(rolePrefix
))
31 role
= rolePrefix
+ role
;
32 if (userAdminService
.listEditableRoles().contains(role
))
33 throw new ArgeoException("Role " + role
+ " already exists");
34 userAdminService
.newRole(role
);
38 IEditorReference
[] refs
= HandlerUtil
.getActiveWorkbenchWindow(event
)
40 .findEditors(null, ArgeoUserEditor
.ID
, IWorkbenchPage
.MATCH_ID
);
41 for (IEditorReference ref
: refs
) {
42 ArgeoUserEditor userEditor
= (ArgeoUserEditor
) ref
.getEditor(false);
43 if (userEditor
!= null) {
50 public void setUserAdminService(UserAdminService userAdminService
) {
51 this.userAdminService
= userAdminService
;