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