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