import org.argeo.api.acr.Content;
import org.argeo.app.ui.SuiteMsg;
+import org.argeo.app.ui.SuiteStyle;
import org.argeo.app.ui.SuiteUiUtils;
import org.argeo.cms.CmsUserManager;
+import org.argeo.cms.Localized;
import org.argeo.cms.swt.CmsSwtUtils;
-import org.argeo.cms.swt.widgets.SwtSection;
+import org.argeo.cms.swt.acr.SwtSection;
+import org.argeo.cms.swt.widgets.EditableText;
import org.argeo.cms.ui.CmsUiProvider;
import org.argeo.util.naming.LdapAttrs;
+import org.argeo.util.naming.LdapObjs;
+import org.argeo.util.naming.QNamed;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Text;
-import org.osgi.service.useradmin.Group;
import org.osgi.service.useradmin.User;
/** Edit a suite user. */
SwtSection main = new SwtSection(parent, SWT.NONE, context);
main.setLayoutData(CmsSwtUtils.fillAll());
- User user = context.adapt(User.class);
-
- if (user instanceof Group) {
- String cn = context.getName().getLocalPart();
- Text cnT = SuiteUiUtils.addFormLine(main, "uid", getUserProperty(user, LdapAttrs.uid.name()));
- cnT.setText(cn);
-
- } else {
- String uid = context.getName().getLocalPart();
-
-// Text givenName = new Text(main, SWT.SINGLE);
-// givenName.setText(getUserProperty(user, LdapAttrs.givenName.name()));
- Text givenName = SuiteUiUtils.addFormInput(main, SuiteMsg.firstName.lead(),
- getUserProperty(user, LdapAttrs.givenName.name()));
+ main.setLayout(new GridLayout(2, false));
- Text sn = SuiteUiUtils.addFormInput(main, SuiteMsg.lastName.lead(),
- getUserProperty(user, LdapAttrs.sn.name()));
- // sn.setText(getUserProperty(user, LdapAttrs.sn.name()));
-
- Text email = SuiteUiUtils.addFormInput(main, SuiteMsg.email.lead(),
- getUserProperty(user, LdapAttrs.mail.name()));
- // email.setText(getUserProperty(user, LdapAttrs.mail.name()));
-
- Text uidT = SuiteUiUtils.addFormLine(main, "uid", getUserProperty(user, LdapAttrs.uid.name()));
- uidT.setText(uid);
+ User user = context.adapt(User.class);
-// Label dnL = new Label(main, SWT.NONE);
-// dnL.setText(user.getName());
+ if (context.hasContentClass(LdapObjs.person.qName())) {
+ addFormLine(main, SuiteMsg.firstName, context, LdapAttrs.givenName);
+ addFormLine(main, SuiteMsg.lastName, context, LdapAttrs.sn);
+ addFormLine(main, SuiteMsg.email, context, LdapAttrs.mail);
- // roles
- // Section rolesSection = new Section(main, SWT.NONE, context);
Composite rolesSection = new Composite(main, SWT.NONE);
// rolesSection.setText("Roles");
- rolesSection.setLayoutData(CmsSwtUtils.fillWidth());
+ rolesSection.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
rolesSection.setLayout(new GridLayout());
// new Label(rolesSection, SWT.NONE).setText("Roles:");
List<String> roles = Arrays.asList(cmsUserManager.getUserRoles(user.getName()));
- for (String role : availableRoles) {
+ for (String role : roles) {
// new Label(rolesSection, SWT.NONE).setText(role);
Button radio = new Button(rolesSection, SWT.CHECK);
radio.setText(role);
if (roles.contains(role))
radio.setSelection(true);
}
+
+// Composite facetsSection = new Composite(main, SWT.NONE);
+// facetsSection.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
+// facetsSection.setLayout(new GridLayout());
+// if (context.hasContentClass(LdapObjs.groupOfNames.qName())) {
+// String[] members = context.attr(LdapAttrs.member.qName()).split("\n");
+// for (String member : members) {
+// new Label(facetsSection, SWT.NONE).setText(member);
+// }
+// }
}
+// if (user instanceof Group) {
+// String cn = context.getName().getLocalPart();
+// Text cnT = SuiteUiUtils.addFormLine(main, "uid", getUserProperty(user, LdapAttrs.uid.name()));
+// cnT.setText(cn);
+//
+// } else {
+// String uid = context.getName().getLocalPart();
+//
+//// Text givenName = new Text(main, SWT.SINGLE);
+//// givenName.setText(getUserProperty(user, LdapAttrs.givenName.name()));
+// Text givenName = SuiteUiUtils.addFormInput(main, SuiteMsg.firstName.lead(),
+// getUserProperty(user, LdapAttrs.givenName.name()));
+//
+// Text sn = SuiteUiUtils.addFormInput(main, SuiteMsg.lastName.lead(),
+// getUserProperty(user, LdapAttrs.sn.name()));
+// // sn.setText(getUserProperty(user, LdapAttrs.sn.name()));
+//
+// Text email = SuiteUiUtils.addFormInput(main, SuiteMsg.email.lead(),
+// getUserProperty(user, LdapAttrs.mail.name()));
+// // email.setText(getUserProperty(user, LdapAttrs.mail.name()));
+//
+// Text uidT = SuiteUiUtils.addFormLine(main, "uid", getUserProperty(user, LdapAttrs.uid.name()));
+// uidT.setText(uid);
+//
+//// Label dnL = new Label(main, SWT.NONE);
+//// dnL.setText(user.getName());
+//
+// // roles
+// // Section rolesSection = new Section(main, SWT.NONE, context);
+// Composite rolesSection = new Composite(main, SWT.NONE);
+// // rolesSection.setText("Roles");
+// rolesSection.setLayoutData(CmsSwtUtils.fillWidth());
+// rolesSection.setLayout(new GridLayout());
+// // new Label(rolesSection, SWT.NONE).setText("Roles:");
+// List<String> roles = Arrays.asList(cmsUserManager.getUserRoles(user.getName()));
+// for (String role : availableRoles) {
+// // new Label(rolesSection, SWT.NONE).setText(role);
+// Button radio = new Button(rolesSection, SWT.CHECK);
+// radio.setText(role);
+// if (roles.contains(role))
+// radio.setSelection(true);
+// }
+// }
+
return main;
}
+ private void addFormLine(SwtSection parent, Localized msg, Content context, QNamed attr) {
+ SuiteUiUtils.addFormLabel(parent, msg.lead());
+ EditableText text = new EditableText(parent, SWT.SINGLE | SWT.FLAT);
+ text.setLayoutData(CmsSwtUtils.fillWidth());
+ text.setStyle(SuiteStyle.simpleInput);
+ String txt = context.attr(attr.qName());
+ if (txt == null) // FIXME understand why email is not found in IPA
+ txt = "";
+ text.setText(txt);
+ text.setMouseListener(new MouseAdapter() {
+
+ @Override
+ public void mouseDoubleClick(MouseEvent e) {
+ String currentTxt = text.getText();
+ text.startEditing();
+ text.setText(currentTxt);
+ ((Text) text.getControl()).addSelectionListener(new SelectionListener() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ String editedTxt = text.getText();
+ text.stopEditing();
+ text.setText(editedTxt);
+ text.getParent().layout(new Control[] { text.getControl() });
+ }
+ });
+ }
+
+ });
+ }
+
public void setCmsUserManager(CmsUserManager cmsUserManager) {
this.cmsUserManager = cmsUserManager;
}
public void init(Map<String, Object> properties) {
availableRoles = (String[]) properties.get("availableRoles");
+ // cmsUserManager.getRoles(null);
}
}