]> git.argeo.org Git - lgpl/argeo-commons.git/blob - RolesView.java
50adb658ab7d26f617cffdf510b728ad6ab8a16b
[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 getViewSite().setSelectionProvider(viewer);
74 viewer.setInput(getViewSite());
75 }
76
77 @Override
78 public void setFocus() {
79 viewer.getTable().setFocus();
80 }
81
82 public void setUserAdminService(UserAdminService userAdminService) {
83 this.userAdminService = userAdminService;
84 }
85
86 public String getAddNewRoleText() {
87 return addNewRoleText;
88 }
89
90 private class RolesContentProvider implements IStructuredContentProvider {
91
92 public Object[] getElements(Object inputElement) {
93 return userAdminService.listEditableRoles().toArray();
94 }
95
96 public void dispose() {
97 }
98
99 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
100 }
101
102 }
103
104 private class UsersLabelProvider extends LabelProvider implements
105 ITableLabelProvider {
106 public String getColumnText(Object element, int columnIndex) {
107 return element.toString();
108 }
109
110 public Image getColumnImage(Object element, int columnIndex) {
111 return null;
112 }
113
114 }
115
116 public String getNewRole() {
117 return newRole.getText();
118 }
119
120 public void refresh() {
121 viewer.refresh();
122 newRole.setText(addNewRoleText);
123 }
124 }