]> git.argeo.org Git - gpl/argeo-suite.git/blob - argeo/suite/ui/AdminEntryArea.java
Prepare next development cycle
[gpl/argeo-suite.git] / argeo / suite / ui / AdminEntryArea.java
1 package org.argeo.suite.ui;
2
3 import java.util.Set;
4
5 import javax.jcr.Node;
6 import javax.jcr.RepositoryException;
7
8 import org.argeo.api.NodeConstants;
9 import org.argeo.cms.CmsUserManager;
10 import org.argeo.cms.ui.CmsTheme;
11 import org.argeo.cms.ui.CmsUiProvider;
12 import org.argeo.cms.ui.CmsView;
13 import org.argeo.cms.ui.util.CmsUiUtils;
14 import org.argeo.entity.EntityType;
15 import org.argeo.jcr.Jcr;
16 import org.argeo.jcr.JcrUtils;
17 import org.argeo.naming.LdapAttrs;
18 import org.argeo.suite.SuiteRole;
19 import org.eclipse.jface.viewers.ColumnLabelProvider;
20 import org.eclipse.jface.viewers.DoubleClickEvent;
21 import org.eclipse.jface.viewers.IDoubleClickListener;
22 import org.eclipse.jface.viewers.ISelectionChangedListener;
23 import org.eclipse.jface.viewers.IStructuredContentProvider;
24 import org.eclipse.jface.viewers.SelectionChangedEvent;
25 import org.eclipse.jface.viewers.TableViewer;
26 import org.eclipse.jface.viewers.TableViewerColumn;
27 import org.eclipse.jface.viewers.Viewer;
28 import org.eclipse.swt.SWT;
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.Control;
33 import org.eclipse.swt.widgets.ToolBar;
34 import org.eclipse.swt.widgets.ToolItem;
35 import org.osgi.service.useradmin.User;
36
37 /** Entry to the admin area. */
38 public class AdminEntryArea implements CmsUiProvider {
39
40 private CmsUserManager cmsUserManager;
41
42 @Override
43 public Control createUi(Composite parent, Node context) throws RepositoryException {
44 CmsTheme theme = CmsTheme.getCmsTheme(parent);
45 parent.setLayout(new GridLayout());
46 TableViewer usersViewer = new TableViewer(parent);
47 usersViewer.setContentProvider(new UsersContentProvider());
48
49 TableViewerColumn idCol = new TableViewerColumn(usersViewer, SWT.NONE);
50 idCol.getColumn().setWidth(70);
51 idCol.setLabelProvider(new ColumnLabelProvider() {
52
53 @Override
54 public String getText(Object element) {
55
56 return getUserProperty(element, LdapAttrs.uid.name());
57 }
58 });
59
60 TableViewerColumn givenNameCol = new TableViewerColumn(usersViewer, SWT.NONE);
61 givenNameCol.getColumn().setWidth(70);
62 givenNameCol.setLabelProvider(new ColumnLabelProvider() {
63
64 @Override
65 public String getText(Object element) {
66
67 return getUserProperty(element, LdapAttrs.givenName.name());
68 }
69 });
70
71 TableViewerColumn snCol = new TableViewerColumn(usersViewer, SWT.NONE);
72 snCol.getColumn().setWidth(70);
73 snCol.setLabelProvider(new ColumnLabelProvider() {
74
75 @Override
76 public String getText(Object element) {
77
78 return getUserProperty(element, LdapAttrs.sn.name());
79 }
80 });
81
82 TableViewerColumn mailCol = new TableViewerColumn(usersViewer, SWT.NONE);
83 mailCol.getColumn().setWidth(200);
84 mailCol.setLabelProvider(new ColumnLabelProvider() {
85
86 @Override
87 public String getText(Object element) {
88
89 return getUserProperty(element, LdapAttrs.mail.name());
90 }
91 });
92
93 Composite bottom = new Composite(parent, SWT.NONE);
94 bottom.setLayoutData(CmsUiUtils.fillWidth());
95 bottom.setLayout(CmsUiUtils.noSpaceGridLayout());
96 ToolBar bottomToolBar = new ToolBar(bottom, SWT.NONE);
97 bottomToolBar.setLayoutData(new GridData(SWT.END, SWT.FILL, true, false));
98 ToolItem deleteItem = new ToolItem(bottomToolBar, SWT.FLAT);
99 deleteItem.setEnabled(false);
100 // CmsUiUtils.style(deleteItem, SuiteStyle.recentItems);
101 deleteItem.setImage(SuiteIcon.delete.getSmallIcon(theme));
102 ToolItem addItem = new ToolItem(bottomToolBar, SWT.FLAT);
103 addItem.setImage(SuiteIcon.add.getSmallIcon(theme));
104 usersViewer.addDoubleClickListener(new IDoubleClickListener() {
105
106 @Override
107 public void doubleClick(DoubleClickEvent event) {
108 User user = (User) usersViewer.getStructuredSelection().getFirstElement();
109 if (user != null) {
110 // Node userNode = getOrCreateUserNode(user, context);
111 CmsView.getCmsView(parent).sendEvent(SuiteEvent.openNewPart.topic(),
112 SuiteEvent.eventProperties(user));
113 }
114
115 }
116 });
117 usersViewer.addSelectionChangedListener(new ISelectionChangedListener() {
118 public void selectionChanged(SelectionChangedEvent event) {
119 User user = (User) usersViewer.getStructuredSelection().getFirstElement();
120 if (user != null) {
121 // Node userNode = getOrCreateUserNode(user, context);
122 CmsView.getCmsView(parent).sendEvent(SuiteEvent.refreshPart.topic(),
123 SuiteEvent.eventProperties(user));
124 deleteItem.setEnabled(true);
125 } else {
126 deleteItem.setEnabled(false);
127 }
128 }
129 });
130
131 usersViewer.getTable().setLayoutData(CmsUiUtils.fillAll());
132 usersViewer.setInput(cmsUserManager);
133
134 return usersViewer.getTable();
135 }
136
137 // private Node getOrCreateUserNode(User user, Node context) {
138 // return JcrUtils.mkdirs(Jcr.getSession(context),
139 // "/" + EntityType.user.name() + "/" + getUserProperty(user, LdapAttrs.uid.name()),
140 // EntityType.user.get());
141 // }
142
143 private String getUserProperty(Object element, String key) {
144 Object value = ((User) element).getProperties().get(key);
145 return value != null ? value.toString() : null;
146 }
147
148 class UsersContentProvider implements IStructuredContentProvider {
149
150 @Override
151 public Object[] getElements(Object inputElement) {
152 CmsUserManager cum = (CmsUserManager) inputElement;
153 Set<User> users = cum.listUsersInGroup(SuiteRole.coworker.dn(), null);
154 return users.toArray();
155 }
156
157 @Override
158 public void dispose() {
159 }
160
161 @Override
162 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
163 }
164
165 }
166
167 public void setCmsUserManager(CmsUserManager cmsUserManager) {
168 this.cmsUserManager = cmsUserManager;
169 }
170
171 }