]> git.argeo.org Git - gpl/argeo-suite.git/blob - org.argeo.app.ui/src/org/argeo/app/ui/people/PersonUiProvider.java
Adapt to changes in Argeo Commons.
[gpl/argeo-suite.git] / org.argeo.app.ui / src / org / argeo / app / ui / people / PersonUiProvider.java
1 package org.argeo.app.ui.people;
2
3 import java.util.Arrays;
4 import java.util.List;
5 import java.util.Map;
6
7 import org.argeo.api.acr.Content;
8 import org.argeo.app.ui.SuiteMsg;
9 import org.argeo.app.ui.SuiteUiUtils;
10 import org.argeo.cms.CmsUserManager;
11 import org.argeo.cms.swt.CmsSwtUtils;
12 import org.argeo.cms.swt.widgets.SwtSection;
13 import org.argeo.cms.ui.CmsUiProvider;
14 import org.argeo.util.naming.LdapAttrs;
15 import org.eclipse.swt.SWT;
16 import org.eclipse.swt.layout.GridLayout;
17 import org.eclipse.swt.widgets.Button;
18 import org.eclipse.swt.widgets.Composite;
19 import org.eclipse.swt.widgets.Control;
20 import org.eclipse.swt.widgets.Text;
21 import org.osgi.service.useradmin.Group;
22 import org.osgi.service.useradmin.User;
23
24 /** Edit a suite user. */
25 public class PersonUiProvider implements CmsUiProvider {
26 private String[] availableRoles;
27 private CmsUserManager cmsUserManager;
28
29 @Override
30 public Control createUiPart(Composite parent, Content context) {
31 SwtSection main = new SwtSection(parent, SWT.NONE, context);
32 main.setLayoutData(CmsSwtUtils.fillAll());
33
34 User user = context.adapt(User.class);
35
36 if (user instanceof Group) {
37 String cn = context.getName().getLocalPart();
38 Text cnT = SuiteUiUtils.addFormLine(main, "uid", getUserProperty(user, LdapAttrs.uid.name()));
39 cnT.setText(cn);
40
41 } else {
42 String uid = context.getName().getLocalPart();
43
44 // Text givenName = new Text(main, SWT.SINGLE);
45 // givenName.setText(getUserProperty(user, LdapAttrs.givenName.name()));
46 Text givenName = SuiteUiUtils.addFormInput(main, SuiteMsg.firstName.lead(),
47 getUserProperty(user, LdapAttrs.givenName.name()));
48
49 Text sn = SuiteUiUtils.addFormInput(main, SuiteMsg.lastName.lead(),
50 getUserProperty(user, LdapAttrs.sn.name()));
51 // sn.setText(getUserProperty(user, LdapAttrs.sn.name()));
52
53 Text email = SuiteUiUtils.addFormInput(main, SuiteMsg.email.lead(),
54 getUserProperty(user, LdapAttrs.mail.name()));
55 // email.setText(getUserProperty(user, LdapAttrs.mail.name()));
56
57 Text uidT = SuiteUiUtils.addFormLine(main, "uid", getUserProperty(user, LdapAttrs.uid.name()));
58 uidT.setText(uid);
59
60 // Label dnL = new Label(main, SWT.NONE);
61 // dnL.setText(user.getName());
62
63 // roles
64 // Section rolesSection = new Section(main, SWT.NONE, context);
65 Composite rolesSection = new Composite(main, SWT.NONE);
66 // rolesSection.setText("Roles");
67 rolesSection.setLayoutData(CmsSwtUtils.fillWidth());
68 rolesSection.setLayout(new GridLayout());
69 // new Label(rolesSection, SWT.NONE).setText("Roles:");
70 List<String> roles = Arrays.asList(cmsUserManager.getUserRoles(user.getName()));
71 for (String role : availableRoles) {
72 // new Label(rolesSection, SWT.NONE).setText(role);
73 Button radio = new Button(rolesSection, SWT.CHECK);
74 radio.setText(role);
75 if (roles.contains(role))
76 radio.setSelection(true);
77 }
78 }
79
80 return main;
81 }
82
83 public void setCmsUserManager(CmsUserManager cmsUserManager) {
84 this.cmsUserManager = cmsUserManager;
85 }
86
87 private String getUserProperty(Object element, String key) {
88 Object value = ((User) element).getProperties().get(key);
89 return value != null ? value.toString() : null;
90 }
91
92 public void init(Map<String, Object> properties) {
93 availableRoles = (String[]) properties.get("availableRoles");
94 }
95 }