2 * Copyright (C) 2007-2012 Argeo GmbH
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
16 package org
.argeo
.security
.ui
.admin
.views
;
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
;
40 /** List all roles. */
41 public class RolesView
extends ViewPart
{
42 public final static String ID
= SecurityAdminPlugin
.PLUGIN_ID
47 private TableViewer viewer
;
48 private UserAdminService userAdminService
;
50 private String addNewRoleText
= "<add new role here>";
53 public void createPartControl(Composite parent
) {
54 parent
.setLayout(new GridLayout(1, false));
56 // new role text field
57 newRole
= new Text(parent
, SWT
.BORDER
);
58 newRole
.setText(addNewRoleText
);
59 newRole
.setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, false));
60 // default action is add role
61 newRole
.addListener(SWT
.DefaultSelection
, new Listener() {
62 private static final long serialVersionUID
= -2367261849260929505L;
64 public void handleEvent(Event evt
) {
65 IWorkbench iw
= SecurityAdminPlugin
.getDefault().getWorkbench();
66 IHandlerService handlerService
= (IHandlerService
) iw
67 .getService(IHandlerService
.class);
69 handlerService
.executeCommand(AddRole
.COMMAND_ID
, evt
);
70 } catch (Exception e
) {
71 throw new ArgeoException("Cannot execute add role command",
76 // select all on focus
77 newRole
.addListener(SWT
.FocusIn
, new Listener() {
78 private static final long serialVersionUID
= 2612811281477034356L;
80 public void handleEvent(Event e
) {
86 Table table
= new Table(parent
, SWT
.V_SCROLL
| SWT
.BORDER
);
87 table
.setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, true));
88 table
.setLinesVisible(false);
89 table
.setHeaderVisible(false);
90 viewer
= new TableViewer(table
);
91 viewer
.setContentProvider(new RolesContentProvider());
92 viewer
.setLabelProvider(new UsersLabelProvider());
93 getViewSite().setSelectionProvider(viewer
);
94 viewer
.setInput(getViewSite());
98 public void setFocus() {
99 viewer
.getTable().setFocus();
102 public void setUserAdminService(UserAdminService userAdminService
) {
103 this.userAdminService
= userAdminService
;
106 public String
getAddNewRoleText() {
107 return addNewRoleText
;
110 private class RolesContentProvider
implements IStructuredContentProvider
{
111 private static final long serialVersionUID
= 7446442682717419289L;
113 public Object
[] getElements(Object inputElement
) {
114 return userAdminService
.listEditableRoles().toArray();
117 public void dispose() {
120 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {
125 private class UsersLabelProvider
extends LabelProvider
implements
126 ITableLabelProvider
{
127 private static final long serialVersionUID
= -1886204791002421430L;
129 public String
getColumnText(Object element
, int columnIndex
) {
130 return element
.toString();
133 public Image
getColumnImage(Object element
, int columnIndex
) {
139 public String
getNewRole() {
140 return newRole
.getText();
143 public void refresh() {
145 newRole
.setText(addNewRoleText
);