]> 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
Update and session management pattern for view and editor to remove old deprecated...
[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 = SecurityAdminPlugin.PLUGIN_ID
43 + ".adminRolesView";
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 public void handleEvent(Event evt) {
63 IWorkbench iw = SecurityAdminPlugin.getDefault().getWorkbench();
64 IHandlerService handlerService = (IHandlerService) iw
65 .getService(IHandlerService.class);
66 try {
67 handlerService.executeCommand(AddRole.COMMAND_ID, evt);
68 } catch (Exception e) {
69 throw new ArgeoException("Cannot execute add role command",
70 e);
71 }
72 }
73 });
74 // select all on focus
75 newRole.addListener(SWT.FocusIn, new Listener() {
76 public void handleEvent(Event e) {
77 newRole.selectAll();
78 }
79 });
80
81 // roles table
82 Table table = new Table(parent, SWT.V_SCROLL | SWT.BORDER);
83 table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
84 table.setLinesVisible(false);
85 table.setHeaderVisible(false);
86 viewer = new TableViewer(table);
87 viewer.setContentProvider(new RolesContentProvider());
88 viewer.setLabelProvider(new UsersLabelProvider());
89 getViewSite().setSelectionProvider(viewer);
90 viewer.setInput(getViewSite());
91 }
92
93 @Override
94 public void setFocus() {
95 viewer.getTable().setFocus();
96 }
97
98 public void setUserAdminService(UserAdminService userAdminService) {
99 this.userAdminService = userAdminService;
100 }
101
102 public String getAddNewRoleText() {
103 return addNewRoleText;
104 }
105
106 private class RolesContentProvider implements IStructuredContentProvider {
107
108 public Object[] getElements(Object inputElement) {
109 return userAdminService.listEditableRoles().toArray();
110 }
111
112 public void dispose() {
113 }
114
115 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
116 }
117
118 }
119
120 private class UsersLabelProvider extends LabelProvider implements
121 ITableLabelProvider {
122 public String getColumnText(Object element, int columnIndex) {
123 return element.toString();
124 }
125
126 public Image getColumnImage(Object element, int columnIndex) {
127 return null;
128 }
129
130 }
131
132 public String getNewRole() {
133 return newRole.getText();
134 }
135
136 public void refresh() {
137 viewer.refresh();
138 newRole.setText(addNewRoleText);
139 }
140 }