]> git.argeo.org Git - lgpl/argeo-commons.git/blob - RolesView.java
491647a8ddbcbdd5d5bc7a74cd6b16c2ed0d121f
[lgpl/argeo-commons.git] / RolesView.java
1 package org.argeo.security.ui.admin.views;
2
3 import org.argeo.ArgeoException;
4 import org.argeo.security.UserAdminService;
5 import org.argeo.security.ui.admin.SecurityAdminPlugin;
6 import org.argeo.security.ui.admin.commands.AddRole;
7 import org.eclipse.jface.viewers.IStructuredContentProvider;
8 import org.eclipse.jface.viewers.ITableLabelProvider;
9 import org.eclipse.jface.viewers.LabelProvider;
10 import org.eclipse.jface.viewers.TableViewer;
11 import org.eclipse.jface.viewers.Viewer;
12 import org.eclipse.swt.SWT;
13 import org.eclipse.swt.graphics.Image;
14 import org.eclipse.swt.layout.GridData;
15 import org.eclipse.swt.layout.GridLayout;
16 import org.eclipse.swt.widgets.Composite;
17 import org.eclipse.swt.widgets.Event;
18 import org.eclipse.swt.widgets.Listener;
19 import org.eclipse.swt.widgets.Table;
20 import org.eclipse.swt.widgets.Text;
21 import org.eclipse.ui.IWorkbench;
22 import org.eclipse.ui.handlers.IHandlerService;
23 import org.eclipse.ui.part.ViewPart;
24
25 /** List all roles. */
26 public class RolesView extends ViewPart {
27 public final static String ID = "org.argeo.security.ui.admin.adminRolesView";
28
29 private Text newRole;
30
31 private TableViewer viewer;
32 private UserAdminService userAdminService;
33
34 private String addNewRoleText = "<add new role here>";
35
36 @Override
37 public void createPartControl(Composite parent) {
38 parent.setLayout(new GridLayout(1, false));
39
40 // new role text field
41 newRole = new Text(parent, SWT.BORDER);
42 newRole.setText(addNewRoleText);
43 newRole.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
44 // default action is add role
45 newRole.addListener(SWT.DefaultSelection, new Listener() {
46 public void handleEvent(Event evt) {
47 IWorkbench iw = SecurityAdminPlugin.getDefault().getWorkbench();
48 IHandlerService handlerService = (IHandlerService) iw
49 .getService(IHandlerService.class);
50 try {
51 handlerService.executeCommand(AddRole.COMMAND_ID, evt);
52 } catch (Exception e) {
53 throw new ArgeoException("Cannot execute add role command",
54 e);
55 }
56 }
57 });
58 // select all on focus
59 newRole.addListener(SWT.FocusIn, new Listener() {
60 public void handleEvent(Event e) {
61 newRole.selectAll();
62 }
63 });
64
65 // roles table
66 Table table = new Table(parent, SWT.V_SCROLL | SWT.BORDER);
67 table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
68 table.setLinesVisible(false);
69 table.setHeaderVisible(false);
70 viewer = new TableViewer(table);
71 viewer.setContentProvider(new RolesContentProvider());
72 viewer.setLabelProvider(new UsersLabelProvider());
73 viewer.setInput(getViewSite());
74 }
75
76 @Override
77 public void setFocus() {
78 viewer.getTable().setFocus();
79 }
80
81 public void setUserAdminService(UserAdminService userAdminService) {
82 this.userAdminService = userAdminService;
83 }
84
85 public String getAddNewRoleText() {
86 return addNewRoleText;
87 }
88
89 private class RolesContentProvider implements IStructuredContentProvider {
90
91 public Object[] getElements(Object inputElement) {
92 return userAdminService.listEditableRoles().toArray();
93 }
94
95 public void dispose() {
96 }
97
98 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
99 }
100
101 }
102
103 private class UsersLabelProvider extends LabelProvider implements
104 ITableLabelProvider {
105 public String getColumnText(Object element, int columnIndex) {
106 return element.toString();
107 }
108
109 public Image getColumnImage(Object element, int columnIndex) {
110 return null;
111 }
112
113 }
114
115 public String getNewRole() {
116 return newRole.getText();
117 }
118
119 public void refresh() {
120 viewer.refresh();
121 newRole.setText(addNewRoleText);
122 }
123 }