]> git.argeo.org Git - lgpl/argeo-commons.git/blob - security/plugins/org.argeo.security.ui.admin/src/main/java/org/argeo/security/ui/admin/views/RolesView.java
Fix a trivial null pointer exception while working on user management for connect...
[lgpl/argeo-commons.git] / security / plugins / org.argeo.security.ui.admin / src / main / java / org / argeo / security / ui / admin / views / RolesView.java
1 /*
2 * Copyright (C) 2007-2012 Argeo GmbH
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 package org.argeo.security.ui.admin.views;
17
18 import org.argeo.ArgeoException;
19 import org.argeo.security.UserAdminService;
20 import org.argeo.security.ui.admin.SecurityAdminPlugin;
21 import org.argeo.security.ui.admin.commands.AddRole;
22 import org.eclipse.jface.viewers.IStructuredContentProvider;
23 import org.eclipse.jface.viewers.ITableLabelProvider;
24 import org.eclipse.jface.viewers.LabelProvider;
25 import org.eclipse.jface.viewers.TableViewer;
26 import org.eclipse.jface.viewers.Viewer;
27 import org.eclipse.swt.SWT;
28 import org.eclipse.swt.graphics.Image;
29 import org.eclipse.swt.layout.GridData;
30 import org.eclipse.swt.layout.GridLayout;
31 import org.eclipse.swt.widgets.Composite;
32 import org.eclipse.swt.widgets.Event;
33 import org.eclipse.swt.widgets.Listener;
34 import org.eclipse.swt.widgets.Table;
35 import org.eclipse.swt.widgets.Text;
36 import org.eclipse.ui.IWorkbench;
37 import org.eclipse.ui.handlers.IHandlerService;
38 import org.eclipse.ui.part.ViewPart;
39
40 /** List all roles. */
41 public class RolesView extends ViewPart {
42 public final static String ID = "org.argeo.security.ui.admin.adminRolesView";
43
44 private Text newRole;
45
46 private TableViewer viewer;
47 private UserAdminService userAdminService;
48
49 private String addNewRoleText = "<add new role here>";
50
51 @Override
52 public void createPartControl(Composite parent) {
53 parent.setLayout(new GridLayout(1, false));
54
55 // new role text field
56 newRole = new Text(parent, SWT.BORDER);
57 newRole.setText(addNewRoleText);
58 newRole.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
59 // default action is add role
60 newRole.addListener(SWT.DefaultSelection, new Listener() {
61 public void handleEvent(Event evt) {
62 IWorkbench iw = SecurityAdminPlugin.getDefault().getWorkbench();
63 IHandlerService handlerService = (IHandlerService) iw
64 .getService(IHandlerService.class);
65 try {
66 handlerService.executeCommand(AddRole.COMMAND_ID, evt);
67 } catch (Exception e) {
68 throw new ArgeoException("Cannot execute add role command",
69 e);
70 }
71 }
72 });
73 // select all on focus
74 newRole.addListener(SWT.FocusIn, new Listener() {
75 public void handleEvent(Event e) {
76 newRole.selectAll();
77 }
78 });
79
80 // roles table
81 Table table = new Table(parent, SWT.V_SCROLL | SWT.BORDER);
82 table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
83 table.setLinesVisible(false);
84 table.setHeaderVisible(false);
85 viewer = new TableViewer(table);
86 viewer.setContentProvider(new RolesContentProvider());
87 viewer.setLabelProvider(new UsersLabelProvider());
88 getViewSite().setSelectionProvider(viewer);
89 viewer.setInput(getViewSite());
90 }
91
92 @Override
93 public void setFocus() {
94 viewer.getTable().setFocus();
95 }
96
97 public void setUserAdminService(UserAdminService userAdminService) {
98 this.userAdminService = userAdminService;
99 }
100
101 public String getAddNewRoleText() {
102 return addNewRoleText;
103 }
104
105 private class RolesContentProvider implements IStructuredContentProvider {
106
107 public Object[] getElements(Object inputElement) {
108 return userAdminService.listEditableRoles().toArray();
109 }
110
111 public void dispose() {
112 }
113
114 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
115 }
116
117 }
118
119 private class UsersLabelProvider extends LabelProvider implements
120 ITableLabelProvider {
121 public String getColumnText(Object element, int columnIndex) {
122 return element.toString();
123 }
124
125 public Image getColumnImage(Object element, int columnIndex) {
126 return null;
127 }
128
129 }
130
131 public String getNewRole() {
132 return newRole.getText();
133 }
134
135 public void refresh() {
136 viewer.refresh();
137 newRole.setText(addNewRoleText);
138 }
139 }