1 package org
.argeo
.app
.ui
.people
;
6 import javax
.jcr
.RepositoryException
;
8 import org
.argeo
.api
.cms
.CmsTheme
;
9 import org
.argeo
.app
.api
.SuiteRole
;
10 import org
.argeo
.app
.ui
.SuiteEvent
;
11 import org
.argeo
.app
.ui
.SuiteIcon
;
12 import org
.argeo
.app
.ui
.dialogs
.NewUserWizard
;
13 import org
.argeo
.cms
.CmsUserManager
;
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
;
39 /** Entry to the admin area. */
40 public class SuiteUsersEntryArea
implements CmsUiProvider
{
42 private CmsUserManager cmsUserManager
;
45 public Control
createUi(Composite parent
, Node context
) throws RepositoryException
{
46 CmsTheme theme
= CmsSwtUtils
.getCmsTheme(parent
);
47 parent
.setLayout(new GridLayout());
48 TableViewer usersViewer
= new TableViewer(parent
);
49 usersViewer
.setContentProvider(new UsersContentProvider());
51 TableViewerColumn idCol
= new TableViewerColumn(usersViewer
, SWT
.NONE
);
52 idCol
.getColumn().setWidth(70);
53 idCol
.setLabelProvider(new ColumnLabelProvider() {
56 public String
getText(Object element
) {
58 return getUserProperty(element
, LdapAttrs
.uid
.name());
62 TableViewerColumn givenNameCol
= new TableViewerColumn(usersViewer
, SWT
.NONE
);
63 givenNameCol
.getColumn().setWidth(150);
64 givenNameCol
.setLabelProvider(new ColumnLabelProvider() {
67 public String
getText(Object element
) {
69 return getUserProperty(element
, LdapAttrs
.givenName
.name());
73 TableViewerColumn snCol
= new TableViewerColumn(usersViewer
, SWT
.NONE
);
74 snCol
.getColumn().setWidth(150);
75 snCol
.setLabelProvider(new ColumnLabelProvider() {
78 public String
getText(Object element
) {
80 return getUserProperty(element
, LdapAttrs
.sn
.name());
84 TableViewerColumn mailCol
= new TableViewerColumn(usersViewer
, SWT
.NONE
);
85 mailCol
.getColumn().setWidth(400);
86 mailCol
.setLabelProvider(new ColumnLabelProvider() {
89 public String
getText(Object element
) {
91 return getUserProperty(element
, LdapAttrs
.mail
.name());
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(SuiteIcon
.delete
.getSmallIcon(theme
));
104 ToolItem addItem
= new ToolItem(bottomToolBar
, SWT
.FLAT
);
105 addItem
.setImage(SuiteIcon
.add
.getSmallIcon(theme
));
106 usersViewer
.addDoubleClickListener(new IDoubleClickListener() {
109 public void doubleClick(DoubleClickEvent event
) {
110 User user
= (User
) usersViewer
.getStructuredSelection().getFirstElement();
112 // Node userNode = getOrCreateUserNode(user, context);
113 CmsSwtUtils
.getCmsView(parent
).sendEvent(SuiteEvent
.openNewPart
.topic(),
114 SuiteEvent
.eventProperties(user
));
119 usersViewer
.addSelectionChangedListener(new ISelectionChangedListener() {
120 public void selectionChanged(SelectionChangedEvent event
) {
121 User user
= (User
) usersViewer
.getStructuredSelection().getFirstElement();
123 // Node userNode = getOrCreateUserNode(user, context);
124 CmsSwtUtils
.getCmsView(parent
).sendEvent(SuiteEvent
.refreshPart
.topic(),
125 SuiteEvent
.eventProperties(user
));
126 deleteItem
.setEnabled(true);
128 deleteItem
.setEnabled(false);
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
) {
143 usersViewer
.getTable().setLayoutData(CmsSwtUtils
.fillAll());
144 usersViewer
.setInput(cmsUserManager
);
146 return usersViewer
.getTable();
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());
155 private String
getUserProperty(Object element
, String key
) {
156 Object value
= ((User
) element
).getProperties().get(key
);
157 return value
!= null ? value
.toString() : null;
160 class UsersContentProvider
implements IStructuredContentProvider
{
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();
170 public void dispose() {
174 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {
179 public void setCmsUserManager(CmsUserManager cmsUserManager
) {
180 this.cmsUserManager
= cmsUserManager
;