Work on user form
authorMathieu Baudier <mbaudier@argeo.org>
Thu, 23 Jun 2022 12:45:28 +0000 (14:45 +0200)
committerMathieu Baudier <mbaudier@argeo.org>
Thu, 23 Jun 2022 12:45:28 +0000 (14:45 +0200)
org.argeo.app.ui/src/org/argeo/app/ui/people/PersonUiProvider.java

index 6e710a564e87aee9121332fedacafae9af61ea4d..17dc29bd2c5d45b0bd7abc41e19f0cda1dfadb5f 100644 (file)
@@ -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<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);
@@ -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<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);
+               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<String, Object> properties) {
                availableRoles = (String[]) properties.get("availableRoles");
+               // cmsUserManager.getRoles(null);
        }
 }