1 package org
.argeo
.people
.ui
;
6 import javax
.jcr
.RepositoryException
;
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
;
40 /** Entry to the admin area. */
41 public class SuiteUsersEntryArea
implements CmsUiProvider
{
43 private CmsUserManager cmsUserManager
;
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());
52 TableViewerColumn idCol
= new TableViewerColumn(usersViewer
, SWT
.NONE
);
53 idCol
.getColumn().setWidth(70);
54 idCol
.setLabelProvider(new ColumnLabelProvider() {
57 public String
getText(Object element
) {
59 return getUserProperty(element
, LdapAttrs
.uid
.name());
63 TableViewerColumn givenNameCol
= new TableViewerColumn(usersViewer
, SWT
.NONE
);
64 givenNameCol
.getColumn().setWidth(150);
65 givenNameCol
.setLabelProvider(new ColumnLabelProvider() {
68 public String
getText(Object element
) {
70 return getUserProperty(element
, LdapAttrs
.givenName
.name());
74 TableViewerColumn snCol
= new TableViewerColumn(usersViewer
, SWT
.NONE
);
75 snCol
.getColumn().setWidth(150);
76 snCol
.setLabelProvider(new ColumnLabelProvider() {
79 public String
getText(Object element
) {
81 return getUserProperty(element
, LdapAttrs
.sn
.name());
85 TableViewerColumn mailCol
= new TableViewerColumn(usersViewer
, SWT
.NONE
);
86 mailCol
.getColumn().setWidth(400);
87 mailCol
.setLabelProvider(new ColumnLabelProvider() {
90 public String
getText(Object element
) {
92 return getUserProperty(element
, LdapAttrs
.mail
.name());
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() {
110 public void doubleClick(DoubleClickEvent event
) {
111 User user
= (User
) usersViewer
.getStructuredSelection().getFirstElement();
113 // Node userNode = getOrCreateUserNode(user, context);
114 CmsView
.getCmsView(parent
).sendEvent(SuiteEvent
.openNewPart
.topic(),
115 SuiteEvent
.eventProperties(user
));
120 usersViewer
.addSelectionChangedListener(new ISelectionChangedListener() {
121 public void selectionChanged(SelectionChangedEvent event
) {
122 User user
= (User
) usersViewer
.getStructuredSelection().getFirstElement();
124 // Node userNode = getOrCreateUserNode(user, context);
125 CmsView
.getCmsView(parent
).sendEvent(SuiteEvent
.refreshPart
.topic(),
126 SuiteEvent
.eventProperties(user
));
127 deleteItem
.setEnabled(true);
129 deleteItem
.setEnabled(false);
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
) {
144 usersViewer
.getTable().setLayoutData(CmsUiUtils
.fillAll());
145 usersViewer
.setInput(cmsUserManager
);
147 return usersViewer
.getTable();
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());
156 private String
getUserProperty(Object element
, String key
) {
157 Object value
= ((User
) element
).getProperties().get(key
);
158 return value
!= null ? value
.toString() : null;
161 class UsersContentProvider
implements IStructuredContentProvider
{
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();
171 public void dispose() {
175 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {
180 public void setCmsUserManager(CmsUserManager cmsUserManager
) {
181 this.cmsUserManager
= cmsUserManager
;