]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/commands/NewUser.java
Fix wrong call while refreshing the "E-mail" text field
[lgpl/argeo-commons.git] / org.argeo.security.ui.admin / src / org / argeo / security / ui / admin / internal / commands / NewUser.java
index 4c1e8f4cbe47f0dba2ff84051b3c3264a2eb93b6..c336753dc6ec19a1f231d2b840ec3ab2b23bd44b 100644 (file)
@@ -26,9 +26,9 @@ import org.argeo.ArgeoException;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.eclipse.ui.dialogs.ErrorFeedback;
 import org.argeo.jcr.ArgeoNames;
+import org.argeo.osgi.useradmin.LdifName;
 import org.argeo.security.ui.admin.SecurityAdminPlugin;
 import org.argeo.security.ui.admin.internal.UiAdminUtils;
-import org.argeo.security.ui.admin.internal.UserAdminConstants;
 import org.argeo.security.ui.admin.internal.UserAdminWrapper;
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
@@ -67,27 +67,13 @@ public class NewUser extends AbstractHandler {
 
        public Object execute(ExecutionEvent event) throws ExecutionException {
                NewUserWizard newUserWizard = new NewUserWizard();
+               newUserWizard.setWindowTitle("User creation");
                WizardDialog dialog = new WizardDialog(
                                HandlerUtil.getActiveShell(event), newUserWizard);
-
                dialog.open();
-
-               // // Force refresh until the listener are implemented
-               // if (Window.OK == dialog.open())
-               // forceRefresh(event);
                return null;
        }
 
-       // private void forceRefresh(ExecutionEvent event) {
-       // IWorkbenchWindow iww = HandlerUtil.getActiveWorkbenchWindow(event);
-       // if (iww == null)
-       // return;
-       // IWorkbenchPage activePage = iww.getActivePage();
-       // IWorkbenchPart part = activePage.getActivePart();
-       // if (part instanceof UsersView)
-       // ((UsersView) part).refresh();
-       // }
-
        private class NewUserWizard extends Wizard {
 
                // pages
@@ -99,13 +85,15 @@ public class NewUser extends AbstractHandler {
                private Combo baseDnCmb;
 
                public NewUserWizard() {
+
                }
 
                @Override
                public void addPages() {
                        mainUserInfo = new MainUserInfoWizardPage();
                        addPage(mainUserInfo);
-                       String message = "Dummy wizard to ease user creation tests:\n Mail and last name are automatically "
+                       String message = "Default wizard that also eases user creation tests:\n "
+                                       + "Mail and last name are automatically "
                                        + "generated form the uid. Password are defauted to 'demo'.";
                        mainUserInfo.setMessage(message, WizardPage.WARNING);
                }
@@ -125,20 +113,20 @@ public class NewUser extends AbstractHandler {
 
                                String lastNameStr = lastNameTxt.getText();
                                if (UiAdminUtils.notNull(lastNameStr))
-                                       props.put(UserAdminConstants.KEY_LASTNAME, lastNameStr);
+                                       props.put(LdifName.sn.name(), lastNameStr);
 
                                String firstNameStr = firstNameTxt.getText();
                                if (UiAdminUtils.notNull(firstNameStr))
-                                       props.put(UserAdminConstants.KEY_FIRSTNAME, firstNameStr);
+                                       props.put(LdifName.givenname.name(), firstNameStr);
 
                                String cn = UiAdminUtils
                                                .getDefaultCn(firstNameStr, lastNameStr);
                                if (UiAdminUtils.notNull(cn))
-                                       props.put(UserAdminConstants.KEY_CN, cn);
+                                       props.put(LdifName.cn.name(), cn);
 
                                String mailStr = primaryMailTxt.getText();
                                if (UiAdminUtils.notNull(mailStr))
-                                       props.put(UserAdminConstants.KEY_MAIL, mailStr);
+                                       props.put(LdifName.mail.name(), mailStr);
 
                                char[] password = mainUserInfo.getPassword();
                                user.getCredentials().put(null, password);
@@ -169,8 +157,9 @@ public class NewUser extends AbstractHandler {
                                                "Distinguished name", this);
                                dNameTxt.setEnabled(false);
 
-                               baseDnCmb = createGridLC(composite, "Base DN", this);
+                               baseDnCmb = createGridLC(composite, "Base DN");
                                initialiseDnCmb(baseDnCmb);
+                               baseDnCmb.addModifyListener(this);
                                baseDnCmb.addModifyListener(new ModifyListener() {
                                        private static final long serialVersionUID = -1435351236582736843L;
 
@@ -262,7 +251,10 @@ public class NewUser extends AbstractHandler {
                        public void setVisible(boolean visible) {
                                super.setVisible(visible);
                                if (visible)
-                                       usernameTxt.setFocus();
+                                       if (baseDnCmb.getSelectionIndex() == -1)
+                                               baseDnCmb.setFocus();
+                                       else
+                                               usernameTxt.setFocus();
                        }
 
                        public String getUsername() {
@@ -285,7 +277,8 @@ public class NewUser extends AbstractHandler {
                                throw new ArgeoException(
                                                "No writable base dn found. Cannot create user");
                        combo.setItems(dns.toArray(new String[0]));
-                       // combo.select(0);
+                       if (dns.size() == 1)
+                               combo.select(0);
                }
 
                private String getMail(String username) {
@@ -302,18 +295,14 @@ public class NewUser extends AbstractHandler {
                                                + username + " with base dn " + baseDn, e);
                        }
                }
-
        }
 
-       private Combo createGridLC(Composite parent, String label,
-                       ModifyListener modifyListener) {
+       private Combo createGridLC(Composite parent, String label) {
                Label lbl = new Label(parent, SWT.LEAD);
                lbl.setText(label);
                lbl.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
                Combo combo = new Combo(parent, SWT.LEAD | SWT.BORDER | SWT.READ_ONLY);
                combo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-               if (modifyListener != null)
-                       combo.addModifyListener(modifyListener);
                return combo;
        }