1 package org
.argeo
.security
.ui
.admin
.views
;
3 import java
.util
.ArrayList
;
5 import org
.argeo
.ArgeoException
;
6 import org
.argeo
.security
.ArgeoUser
;
7 import org
.argeo
.security
.UserAdminService
;
8 import org
.argeo
.security
.ui
.admin
.SecurityAdminPlugin
;
9 import org
.argeo
.security
.ui
.admin
.commands
.AddRole
;
10 import org
.argeo
.security
.ui
.admin
.commands
.OpenArgeoUserEditor
;
11 import org
.eclipse
.core
.commands
.Command
;
12 import org
.eclipse
.core
.commands
.IParameter
;
13 import org
.eclipse
.core
.commands
.Parameterization
;
14 import org
.eclipse
.core
.commands
.ParameterizedCommand
;
15 import org
.eclipse
.jface
.viewers
.DoubleClickEvent
;
16 import org
.eclipse
.jface
.viewers
.IDoubleClickListener
;
17 import org
.eclipse
.jface
.viewers
.IStructuredContentProvider
;
18 import org
.eclipse
.jface
.viewers
.IStructuredSelection
;
19 import org
.eclipse
.jface
.viewers
.ITableLabelProvider
;
20 import org
.eclipse
.jface
.viewers
.LabelProvider
;
21 import org
.eclipse
.jface
.viewers
.TableViewer
;
22 import org
.eclipse
.jface
.viewers
.Viewer
;
23 import org
.eclipse
.swt
.SWT
;
24 import org
.eclipse
.swt
.graphics
.Image
;
25 import org
.eclipse
.swt
.layout
.GridData
;
26 import org
.eclipse
.swt
.layout
.GridLayout
;
27 import org
.eclipse
.swt
.widgets
.Composite
;
28 import org
.eclipse
.swt
.widgets
.Event
;
29 import org
.eclipse
.swt
.widgets
.Listener
;
30 import org
.eclipse
.swt
.widgets
.Table
;
31 import org
.eclipse
.swt
.widgets
.Text
;
32 import org
.eclipse
.ui
.IWorkbench
;
33 import org
.eclipse
.ui
.IWorkbenchWindow
;
34 import org
.eclipse
.ui
.commands
.ICommandService
;
35 import org
.eclipse
.ui
.handlers
.IHandlerService
;
36 import org
.eclipse
.ui
.part
.ViewPart
;
38 /** List all roles. */
39 public class RolesView
extends ViewPart
{
40 public final static String ID
= "org.argeo.security.ui.admin.adminRolesView";
44 private TableViewer viewer
;
45 private UserAdminService userAdminService
;
47 private String addNewRoleText
= "<add new role here>";
50 public void createPartControl(Composite parent
) {
51 parent
.setLayout(new GridLayout(1, false));
53 // new role text field
54 newRole
= new Text(parent
, SWT
.BORDER
);
55 newRole
.setText(addNewRoleText
);
56 newRole
.setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, false));
57 // default action is add role
58 newRole
.addListener(SWT
.DefaultSelection
, new Listener() {
59 public void handleEvent(Event evt
) {
60 IWorkbench iw
= SecurityAdminPlugin
.getDefault().getWorkbench();
61 IHandlerService handlerService
= (IHandlerService
) iw
62 .getService(IHandlerService
.class);
64 handlerService
.executeCommand(AddRole
.COMMAND_ID
, evt
);
65 } catch (Exception e
) {
66 throw new ArgeoException("Cannot execute add role command",
71 // select all on focus
72 newRole
.addListener(SWT
.FocusIn
, new Listener() {
73 public void handleEvent(Event e
) {
79 Table table
= new Table(parent
, SWT
.V_SCROLL
| SWT
.BORDER
);
80 table
.setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, true));
81 table
.setLinesVisible(false);
82 table
.setHeaderVisible(false);
83 viewer
= new TableViewer(table
);
84 viewer
.setContentProvider(new RolesContentProvider());
85 viewer
.setLabelProvider(new UsersLabelProvider());
86 viewer
.setInput(getViewSite());
87 viewer
.addDoubleClickListener(new ViewDoubleClickListener());
91 public void setFocus() {
92 viewer
.getTable().setFocus();
95 public void setUserAdminService(UserAdminService userAdminService
) {
96 this.userAdminService
= userAdminService
;
99 public String
getAddNewRoleText() {
100 return addNewRoleText
;
103 private class RolesContentProvider
implements IStructuredContentProvider
{
105 public Object
[] getElements(Object inputElement
) {
106 return userAdminService
.listEditableRoles().toArray();
109 public void dispose() {
112 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {
117 private class UsersLabelProvider
extends LabelProvider
implements
118 ITableLabelProvider
{
119 public String
getColumnText(Object element
, int columnIndex
) {
120 return element
.toString();
123 public Image
getColumnImage(Object element
, int columnIndex
) {
129 class ViewDoubleClickListener
implements IDoubleClickListener
{
130 public void doubleClick(DoubleClickEvent evt
) {
131 Object obj
= ((IStructuredSelection
) evt
.getSelection())
134 if (obj
instanceof ArgeoUser
) {
135 ArgeoUser argeoUser
= (ArgeoUser
) obj
;
137 IWorkbench iw
= SecurityAdminPlugin
.getDefault().getWorkbench();
138 IHandlerService handlerService
= (IHandlerService
) iw
139 .getService(IHandlerService
.class);
141 String commandId
= OpenArgeoUserEditor
.COMMAND_ID
;
142 String paramName
= OpenArgeoUserEditor
.PARAM_USERNAME
;
144 // TODO: factorize this
145 // execute related command
146 IWorkbenchWindow window
= iw
.getActiveWorkbenchWindow();
147 ICommandService cmdService
= (ICommandService
) window
148 .getService(ICommandService
.class);
149 Command cmd
= cmdService
.getCommand(commandId
);
150 ArrayList
<Parameterization
> parameters
= new ArrayList
<Parameterization
>();
151 IParameter iparam
= cmd
.getParameter(paramName
);
152 Parameterization param
= new Parameterization(iparam
,
153 argeoUser
.getUsername());
154 parameters
.add(param
);
155 ParameterizedCommand pc
= new ParameterizedCommand(cmd
,
156 parameters
.toArray(new Parameterization
[parameters
158 handlerService
= (IHandlerService
) window
159 .getService(IHandlerService
.class);
160 handlerService
.executeCommand(pc
, null);
161 } catch (Exception e
) {
162 throw new ArgeoException("Cannot open editor", e
);
169 public String
getNewRole() {
170 return newRole
.getText();
173 public void refresh() {
175 newRole
.setText(addNewRoleText
);