1 package org
.argeo
.app
.ui
.people
;
3 import java
.util
.ArrayList
;
7 import javax
.jcr
.RepositoryException
;
9 import org
.argeo
.api
.acr
.Content
;
10 import org
.argeo
.api
.cms
.CmsTheme
;
11 import org
.argeo
.api
.cms
.CmsView
;
12 import org
.argeo
.app
.ui
.SuiteEvent
;
13 import org
.argeo
.app
.ui
.SuiteIcon
;
14 import org
.argeo
.app
.ui
.dialogs
.NewUserWizard
;
15 import org
.argeo
.cms
.CmsUserManager
;
16 import org
.argeo
.cms
.jcr
.acr
.JcrContent
;
17 import org
.argeo
.cms
.swt
.CmsSwtUtils
;
18 import org
.argeo
.cms
.swt
.Selected
;
19 import org
.argeo
.cms
.swt
.acr
.SwtUiProvider
;
20 import org
.argeo
.cms
.swt
.dialogs
.CmsWizardDialog
;
21 import org
.argeo
.cms
.swt
.widgets
.SwtHierarchicalPart
;
22 import org
.argeo
.cms
.swt
.widgets
.SwtTabularPart
;
23 import org
.argeo
.cms
.ui
.CmsUiProvider
;
24 import org
.argeo
.cms
.ux
.widgets
.HierarchicalPart
;
25 import org
.argeo
.cms
.ux
.widgets
.TabularPart
;
26 import org
.argeo
.osgi
.useradmin
.HierarchyUnit
;
27 import org
.argeo
.osgi
.useradmin
.UserDirectory
;
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
.custom
.SashForm
;
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
.TableItem
;
37 import org
.eclipse
.swt
.widgets
.ToolBar
;
38 import org
.eclipse
.swt
.widgets
.ToolItem
;
39 import org
.eclipse
.swt
.widgets
.TreeItem
;
40 import org
.osgi
.service
.useradmin
.Role
;
41 import org
.osgi
.service
.useradmin
.User
;
43 /** Entry to the admin area. */
44 public class UsersEntryArea
implements SwtUiProvider
, CmsUiProvider
{
46 private CmsUserManager cmsUserManager
;
49 public Control
createUiPart(Composite parent
, Content context
) {
50 CmsTheme theme
= CmsSwtUtils
.getCmsTheme(parent
);
51 CmsView cmsView
= CmsSwtUtils
.getCmsView(parent
);
52 parent
.setLayout(new GridLayout());
54 SashForm sashForm
= new SashForm(parent
, SWT
.VERTICAL
);
55 CmsSwtUtils
.fill(sashForm
);
58 List
<UserDirectory
> directories
= new ArrayList
<>(cmsUserManager
.getUserDirectories());
59 // List<User> orgs = cmsUserManager.listGroups(null, true, false);
62 HierarchicalPart directoriesView
= new SwtHierarchicalPart(sashForm
, SWT
.NONE
) {
65 protected void refreshRootItem(TreeItem item
) {
66 int index
= getTree().indexOf(item
);
67 UserDirectory directory
= (UserDirectory
) directories
.get(index
);
68 item
.setData(directory
);
69 item
.setText(directory
.getBasePath());
71 item
.setItemCount(directory
.getHierarchyChildCount());
75 protected void refreshItem(TreeItem parentItem
, TreeItem item
) {
76 int index
= getTree().indexOf(item
);
77 HierarchyUnit parent
= (HierarchyUnit
) parentItem
.getData();
78 HierarchyUnit child
= parent
.getHierarchyChild(index
);
80 item
.setText(child
.getHierarchyUnitName());
81 item
.setItemCount(child
.getHierarchyChildCount());
85 protected int getRootItemCount() {
86 return directories
.size();
91 TabularPart usersView
= new SwtTabularPart(sashForm
, SWT
.NONE
) {
92 List
<?
extends Role
> roles
;
95 protected void refreshItem(TableItem item
) {
96 int index
= getTable().indexOf(item
);
97 User role
= (User
) roles
.get(index
);
99 item
.setText(role
.getName());
103 protected int getItemCount() {
104 HierarchyUnit hu
= (HierarchyUnit
) getInput();
107 roles
= hu
.getRoles(null, false);
113 Composite bottom
= new Composite(parent
, SWT
.NONE
);
114 bottom
.setLayoutData(CmsSwtUtils
.fillWidth());
115 bottom
.setLayout(CmsSwtUtils
.noSpaceGridLayout());
116 ToolBar bottomToolBar
= new ToolBar(bottom
, SWT
.NONE
);
117 bottomToolBar
.setLayoutData(new GridData(SWT
.END
, SWT
.FILL
, true, false));
118 ToolItem deleteItem
= new ToolItem(bottomToolBar
, SWT
.FLAT
);
119 deleteItem
.setEnabled(false);
120 // CmsUiUtils.style(deleteItem, SuiteStyle.recentItems);
121 deleteItem
.setImage(SuiteIcon
.delete
.getSmallIcon(theme
));
122 ToolItem addItem
= new ToolItem(bottomToolBar
, SWT
.FLAT
);
123 addItem
.setImage(SuiteIcon
.add
.getSmallIcon(theme
));
126 directoriesView
.onSelected((o
) -> {
127 HierarchyUnit hu
= (HierarchyUnit
) o
;
128 usersView
.setInput(hu
);
131 usersView
.onSelected((o
) -> {
132 User user
= (User
) o
;
134 cmsView
.sendEvent(SuiteEvent
.refreshPart
.topic(), SuiteEvent
.eventProperties(user
));
135 deleteItem
.setEnabled(true);
137 deleteItem
.setEnabled(false);
141 usersView
.onAction((o
) -> {
142 User user
= (User
) o
;
144 cmsView
.sendEvent(SuiteEvent
.openNewPart
.topic(), SuiteEvent
.eventProperties(user
));
148 addItem
.addSelectionListener((Selected
) (e
) -> {
149 // SuiteUtils.getOrCreateUserNode(adminSession, userDn);
150 Wizard wizard
= new NewUserWizard(null);
151 CmsWizardDialog dialog
= new CmsWizardDialog(parent
.getShell(), wizard
);
152 // WizardDialog dialog = new WizardDialog(shell, wizard);
153 if (dialog
.open() == Window
.OK
) {
158 directoriesView
.refresh();
164 // private String getUserProperty(Object element, String key) {
165 // Object value = ((User) element).getProperties().get(key);
166 // return value != null ? value.toString() : null;
169 public void setCmsUserManager(CmsUserManager cmsUserManager
) {
170 this.cmsUserManager
= cmsUserManager
;
174 public Control
createUi(Composite parent
, Node context
) throws RepositoryException
{
175 return createUiPart(parent
, JcrContent
.nodeToContent(context
));