]> git.argeo.org Git - gpl/argeo-suite.git/blob - org.argeo.app.ui/src/org/argeo/app/ui/people/UsersEntryArea.java
Use SWT hierarchical part
[gpl/argeo-suite.git] / org.argeo.app.ui / src / org / argeo / app / ui / people / UsersEntryArea.java
1 package org.argeo.app.ui.people;
2
3 import java.util.List;
4
5 import javax.jcr.Node;
6 import javax.jcr.RepositoryException;
7
8 import org.argeo.api.acr.Content;
9 import org.argeo.api.cms.CmsTheme;
10 import org.argeo.api.cms.CmsView;
11 import org.argeo.app.ui.SuiteEvent;
12 import org.argeo.app.ui.SuiteIcon;
13 import org.argeo.app.ui.dialogs.NewUserWizard;
14 import org.argeo.cms.CmsUserManager;
15 import org.argeo.cms.jcr.acr.JcrContent;
16 import org.argeo.cms.swt.CmsSwtUtils;
17 import org.argeo.cms.swt.Selected;
18 import org.argeo.cms.swt.acr.SwtUiProvider;
19 import org.argeo.cms.swt.dialogs.CmsWizardDialog;
20 import org.argeo.cms.swt.widgets.SwtHierarchicalPart;
21 import org.argeo.cms.ui.CmsUiProvider;
22 import org.eclipse.jface.window.Window;
23 import org.eclipse.jface.wizard.Wizard;
24 import org.eclipse.swt.SWT;
25 import org.eclipse.swt.layout.GridData;
26 import org.eclipse.swt.layout.GridLayout;
27 import org.eclipse.swt.widgets.Composite;
28 import org.eclipse.swt.widgets.Control;
29 import org.eclipse.swt.widgets.ToolBar;
30 import org.eclipse.swt.widgets.ToolItem;
31 import org.eclipse.swt.widgets.TreeItem;
32 import org.osgi.service.useradmin.User;
33
34 /** Entry to the admin area. */
35 public class UsersEntryArea implements SwtUiProvider, CmsUiProvider {
36
37 private CmsUserManager cmsUserManager;
38
39 @Override
40 public Control createUiPart(Composite parent, Content context) {
41 CmsTheme theme = CmsSwtUtils.getCmsTheme(parent);
42 CmsView cmsView = CmsSwtUtils.getCmsView(parent);
43 parent.setLayout(new GridLayout());
44
45 List<User> orgs = cmsUserManager.listGroups(null, true, false);
46
47 SwtHierarchicalPart tree = new SwtHierarchicalPart(parent, SWT.NONE) {
48
49 @Override
50 protected void refreshRootItem(TreeItem item) {
51 int index = getTree().indexOf(item);
52 User org = (User) orgs.get(index);
53 item.setData(org);
54 item.setText(org.getName());
55
56 item.setItemCount(10);
57 }
58
59 @Override
60 protected void refreshItem(TreeItem parentItem, TreeItem item) {
61 String text = parentItem.getText() + " - " + parentItem.indexOf(item);
62 item.setText(text);
63 item.setItemCount(10);
64 }
65
66 @Override
67 protected int getRootItemCount() {
68 return orgs.size();
69 }
70
71 };
72
73 // final Tree tree = new Tree(parent, SWT.VIRTUAL | SWT.BORDER);
74 // tree.addListener(SWT.SetData, event -> {
75 // TreeItem item = (TreeItem) event.item;
76 // TreeItem parentItem = item.getParentItem();
77 // String text = null;
78 // if (parentItem == null) {
79 // int index = tree.indexOf(item);
80 // User org = (User) orgs.get(index);
81 // item.setData(org);
82 // text = org.getName();
83 // } else {
84 // text = parentItem.getText() + " - " + parentItem.indexOf(item);
85 // }
86 // item.setText(text);
87 // item.setItemCount(10);
88 // });
89 // tree.setItemCount(orgs.size());
90 // tree.setLayoutData(CmsSwtUtils.fillAll());
91 CmsSwtUtils.fill(tree);
92
93 Composite bottom = new Composite(parent, SWT.NONE);
94 bottom.setLayoutData(CmsSwtUtils.fillWidth());
95 bottom.setLayout(CmsSwtUtils.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
105 // tree.addSelectionListener((Selected) (e) -> {
106 // User user = (User) e.item.getData();
107 // if (user != null) {
108 // CmsSwtUtils.getCmsView(parent).sendEvent(SuiteEvent.refreshPart.topic(),
109 // SuiteEvent.eventProperties(user));
110 // deleteItem.setEnabled(true);
111 // } else {
112 // deleteItem.setEnabled(false);
113 // }
114 // });
115 // tree.addListener(SWT.MouseDoubleClick, (e) -> {
116 // User user = (User) e.item.getData();
117 // if (user != null) {
118 // CmsSwtUtils.getCmsView(parent).sendEvent(SuiteEvent.openNewPart.topic(),
119 // SuiteEvent.eventProperties(user));
120 // }
121 //
122 // });
123
124 tree.onSelected((o) -> {
125 User user = (User) o;
126 if (user != null) {
127 cmsView.sendEvent(SuiteEvent.refreshPart.topic(), SuiteEvent.eventProperties(user));
128 deleteItem.setEnabled(true);
129 } else {
130 deleteItem.setEnabled(false);
131 }
132 });
133
134 tree.onAction((o) -> {
135 User user = (User) o;
136 if (user != null) {
137 cmsView.sendEvent(SuiteEvent.openNewPart.topic(), SuiteEvent.eventProperties(user));
138 }
139 });
140
141 // tree.addSelectionListener(new SelectionListener() {
142 //
143 // @Override
144 // public void widgetSelected(SelectionEvent e) {
145 // User user = (User) e.item.getData();
146 // if (user != null) {
147 // CmsSwtUtils.getCmsView(parent).sendEvent(SuiteEvent.refreshPart.topic(),
148 // SuiteEvent.eventProperties(user));
149 // deleteItem.setEnabled(true);
150 // } else {
151 // deleteItem.setEnabled(false);
152 // }
153 // }
154 //
155 // @Override
156 // public void widgetDefaultSelected(SelectionEvent e) {
157 // User user = (User) e.item.getData();
158 // if (user != null) {
159 // CmsSwtUtils.getCmsView(parent).sendEvent(SuiteEvent.openNewPart.topic(),
160 // SuiteEvent.eventProperties(user));
161 // }
162 // }
163 // });
164
165 addItem.addSelectionListener((Selected) (e) -> {
166 // SuiteUtils.getOrCreateUserNode(adminSession, userDn);
167 Wizard wizard = new NewUserWizard(null);
168 CmsWizardDialog dialog = new CmsWizardDialog(parent.getShell(), wizard);
169 // WizardDialog dialog = new WizardDialog(shell, wizard);
170 if (dialog.open() == Window.OK) {
171 // TODO create
172 }
173 });
174
175 tree.refresh();
176
177 return tree;
178 }
179
180 private String getUserProperty(Object element, String key) {
181 Object value = ((User) element).getProperties().get(key);
182 return value != null ? value.toString() : null;
183 }
184
185 public void setCmsUserManager(CmsUserManager cmsUserManager) {
186 this.cmsUserManager = cmsUserManager;
187 }
188
189 @Override
190 public Control createUi(Composite parent, Node context) throws RepositoryException {
191 return createUiPart(parent, JcrContent.nodeToContent(context));
192 }
193
194 }