]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/views/JcrRolesView.java
First draft to adapt Security Admin UI to the new security model
[lgpl/argeo-commons.git] / org.argeo.security.ui.admin / src / org / argeo / security / ui / admin / views / JcrRolesView.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 JcrRolesView extends ViewPart {
42 public final static String ID = SecurityAdminPlugin.PLUGIN_ID
43 + ".jcrRolesView";
44
45 private Text newRole;
46
47 private TableViewer viewer;
48 private UserAdminService userAdminService;
49
50 private String addNewRoleText = "<add new role here>";
51
52 @Override
53 public void createPartControl(Composite parent) {
54 parent.setLayout(new GridLayout(1, false));
55
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;
63
64 public void handleEvent(Event evt) {
65 IWorkbench iw = SecurityAdminPlugin.getDefault().getWorkbench();
66 IHandlerService handlerService = (IHandlerService) iw
67 .getService(IHandlerService.class);
68 try {
69 handlerService.executeCommand(AddRole.COMMAND_ID, evt);
70 } catch (Exception e) {
71 throw new ArgeoException("Cannot execute add role command",
72 e);
73 }
74 }
75 });
76 // select all on focus
77 newRole.addListener(SWT.FocusIn, new Listener() {
78 private static final long serialVersionUID = 2612811281477034356L;
79
80 public void handleEvent(Event e) {
81 newRole.selectAll();
82 }
83 });
84
85 // roles table
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());
95 }
96
97 @Override
98 public void setFocus() {
99 viewer.getTable().setFocus();
100 }
101
102 public void setUserAdminService(UserAdminService userAdminService) {
103 this.userAdminService = userAdminService;
104 }
105
106 public String getAddNewRoleText() {
107 return addNewRoleText;
108 }
109
110 private class RolesContentProvider implements IStructuredContentProvider {
111 private static final long serialVersionUID = 7446442682717419289L;
112
113 public Object[] getElements(Object inputElement) {
114 return userAdminService.listEditableRoles().toArray();
115 }
116
117 public void dispose() {
118 }
119
120 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
121 }
122
123 }
124
125 private class UsersLabelProvider extends LabelProvider implements
126 ITableLabelProvider {
127 private static final long serialVersionUID = -1886204791002421430L;
128
129 public String getColumnText(Object element, int columnIndex) {
130 return element.toString();
131 }
132
133 public Image getColumnImage(Object element, int columnIndex) {
134 return null;
135 }
136
137 }
138
139 public String getNewRole() {
140 return newRole.getText();
141 }
142
143 public void refresh() {
144 viewer.refresh();
145 newRole.setText(addNewRoleText);
146 }
147 }