From 01513d5ffb8cf1f1a7c230a9983a5943dc7e13f6 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Thu, 23 Jun 2022 14:45:28 +0200 Subject: [PATCH] Work on user form --- .../argeo/app/ui/people/PersonUiProvider.java | 126 +++++++++++++----- 1 file changed, 95 insertions(+), 31 deletions(-) diff --git a/org.argeo.app.ui/src/org/argeo/app/ui/people/PersonUiProvider.java b/org.argeo.app.ui/src/org/argeo/app/ui/people/PersonUiProvider.java index 6e710a5..17dc29b 100644 --- a/org.argeo.app.ui/src/org/argeo/app/ui/people/PersonUiProvider.java +++ b/org.argeo.app.ui/src/org/argeo/app/ui/people/PersonUiProvider.java @@ -6,19 +6,28 @@ import java.util.Map; 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.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. */ @@ -31,44 +40,22 @@ public class PersonUiProvider implements CmsUiProvider { 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())); - - 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())); + main.setLayout(new GridLayout(2, false)); - 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 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); @@ -77,9 +64,85 @@ public class PersonUiProvider implements CmsUiProvider { } } +// 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 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); + text.setText(context.attr(attr.qName())); + 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; } @@ -91,5 +154,6 @@ public class PersonUiProvider implements CmsUiProvider { public void init(Map properties) { availableRoles = (String[]) properties.get("availableRoles"); + // cmsUserManager.getRoles(null); } } -- 2.30.2