1 package org
.argeo
.suite
.ui
;
6 import javax
.jcr
.RepositoryException
;
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
;
37 /** Entry to the admin area. */
38 public class AdminEntryArea
implements CmsUiProvider
{
40 private CmsUserManager cmsUserManager
;
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());
49 TableViewerColumn idCol
= new TableViewerColumn(usersViewer
, SWT
.NONE
);
50 idCol
.getColumn().setWidth(70);
51 idCol
.setLabelProvider(new ColumnLabelProvider() {
54 public String
getText(Object element
) {
56 return getUserProperty(element
, LdapAttrs
.uid
.name());
60 TableViewerColumn givenNameCol
= new TableViewerColumn(usersViewer
, SWT
.NONE
);
61 givenNameCol
.getColumn().setWidth(70);
62 givenNameCol
.setLabelProvider(new ColumnLabelProvider() {
65 public String
getText(Object element
) {
67 return getUserProperty(element
, LdapAttrs
.givenName
.name());
71 TableViewerColumn snCol
= new TableViewerColumn(usersViewer
, SWT
.NONE
);
72 snCol
.getColumn().setWidth(70);
73 snCol
.setLabelProvider(new ColumnLabelProvider() {
76 public String
getText(Object element
) {
78 return getUserProperty(element
, LdapAttrs
.sn
.name());
82 TableViewerColumn mailCol
= new TableViewerColumn(usersViewer
, SWT
.NONE
);
83 mailCol
.getColumn().setWidth(200);
84 mailCol
.setLabelProvider(new ColumnLabelProvider() {
87 public String
getText(Object element
) {
89 return getUserProperty(element
, LdapAttrs
.mail
.name());
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() {
107 public void doubleClick(DoubleClickEvent event
) {
108 User user
= (User
) usersViewer
.getStructuredSelection().getFirstElement();
110 // Node userNode = getOrCreateUserNode(user, context);
111 CmsView
.getCmsView(parent
).sendEvent(SuiteEvent
.openNewPart
.topic(),
112 SuiteEvent
.eventProperties(user
));
117 usersViewer
.addSelectionChangedListener(new ISelectionChangedListener() {
118 public void selectionChanged(SelectionChangedEvent event
) {
119 User user
= (User
) usersViewer
.getStructuredSelection().getFirstElement();
121 // Node userNode = getOrCreateUserNode(user, context);
122 CmsView
.getCmsView(parent
).sendEvent(SuiteEvent
.refreshPart
.topic(),
123 SuiteEvent
.eventProperties(user
));
124 deleteItem
.setEnabled(true);
126 deleteItem
.setEnabled(false);
131 usersViewer
.getTable().setLayoutData(CmsUiUtils
.fillAll());
132 usersViewer
.setInput(cmsUserManager
);
134 return usersViewer
.getTable();
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());
143 private String
getUserProperty(Object element
, String key
) {
144 Object value
= ((User
) element
).getProperties().get(key
);
145 return value
!= null ? value
.toString() : null;
148 class UsersContentProvider
implements IStructuredContentProvider
{
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();
158 public void dispose() {
162 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {
167 public void setCmsUserManager(CmsUserManager cmsUserManager
) {
168 this.cmsUserManager
= cmsUserManager
;