X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.app.ui%2Fsrc%2Forg%2Fargeo%2Fapp%2Fui%2Fpeople%2FPersonUiProvider.java;h=d1dfd7861ff7ad85fd35d981c24dfdf99876a55f;hb=f1b87af2e0de38f1f49ab8fe68f9988018914811;hp=4cf2294ac0835ea94007dd42bb2177e2afbba3bf;hpb=242098dba4f7b96f4b120f8a7aa151b7e4b2ce77;p=gpl%2Fargeo-suite.git 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 4cf2294..d1dfd78 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,23 +6,31 @@ 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.widgets.SwtSection; -import org.argeo.cms.ui.CmsUiProvider; +import org.argeo.cms.swt.acr.SwtSection; +import org.argeo.cms.swt.acr.SwtUiProvider; +import org.argeo.cms.swt.widgets.EditableText; import org.argeo.util.naming.LdapAttrs; +import org.argeo.util.naming.LdapObjs; 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. */ -public class PersonUiProvider implements CmsUiProvider { +public class PersonUiProvider implements SwtUiProvider { private String[] availableRoles; private CmsUserManager cmsUserManager; @@ -31,55 +39,122 @@ 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().split("=")[1]; - Text cnT = SuiteUiUtils.addFormLine(main, "uid", getUserProperty(user, LdapAttrs.uid.name())); - cnT.setText(cn); - - } else { - String uid = context.getName().getLocalPart().split("=")[1]; - -// 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 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 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, LdapAttrs 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; } @@ -91,5 +166,6 @@ public class PersonUiProvider implements CmsUiProvider { public void init(Map properties) { availableRoles = (String[]) properties.get("availableRoles"); + // cmsUserManager.getRoles(null); } }