Remove 32 bits SWT.
[lgpl/argeo-commons.git] / org.argeo.cms.ui.workbench / src / org / argeo / cms / ui / workbench / internal / useradmin / parts / UserEditor.java
index be1ce47cafad3dfec5a520f972ba0f28b7c83e1a..a1e5c627f4a7a107a627bc0c481f78fd42c4b979 100644 (file)
@@ -68,14 +68,14 @@ public class UserEditor extends FormEditor {
                username = ((UserEditorInput) getEditorInput()).getUsername();
                user = (User) userAdmin.getRole(username);
 
-               listener = new NameChangeListener(site.getShell().getDisplay(), user);
+               listener = new NameChangeListener(site.getShell().getDisplay());
                userAdminWrapper.addListener(listener);
                updateEditorTitle(null);
        }
 
        /**
-        * returns the list of all authorization for the given user or of the
-        * current displayed user if parameter is null
+        * returns the list of all authorization for the given user or of the current
+        * displayed user if parameter is null
         */
        protected List<User> getFlatGroups(User aUser) {
                Authorization currAuth;
@@ -89,7 +89,7 @@ public class UserEditor extends FormEditor {
                List<User> groups = new ArrayList<User>();
                for (String roleStr : roles) {
                        User currRole = (User) userAdmin.getRole(roleStr);
-                       if (!groups.contains(currRole))
+                       if (currRole != null && !groups.contains(currRole))
                                groups.add(currRole);
                }
                return groups;
@@ -100,6 +100,10 @@ public class UserEditor extends FormEditor {
                return user;
        }
 
+       private void setDisplayedUser(User user) {
+               this.user = user;
+       }
+
        void updateEditorTitle(String title) {
                if (title == null) {
                        String commonName = UserAdminUtils.getProperty(user, LdapAttrs.cn.name());
@@ -146,19 +150,18 @@ public class UserEditor extends FormEditor {
        // CONTROLERS FOR THIS EDITOR AND ITS PAGES
 
        private class NameChangeListener extends UiUserAdminListener {
-
-               private final User user;
-
-               public NameChangeListener(Display display, User user) {
+               public NameChangeListener(Display display) {
                        super(display);
-                       this.user = user;
                }
 
                @Override
                public void roleChangedToUiThread(UserAdminEvent event) {
                        Role changedRole = event.getRole();
-                       if (changedRole == null || changedRole.equals(user))
+                       if (changedRole == null || changedRole.equals(user)) {
                                updateEditorTitle(null);
+                               User reloadedUser = (User) userAdminWrapper.getUserAdmin().getRole(user.getName());
+                               setDisplayedUser(reloadedUser);
+                       }
                }
        }