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 35f2c7f3889b99fa460dfb0662445df25d48e763..a1e5c627f4a7a107a627bc0c481f78fd42c4b979 100644 (file)
@@ -26,6 +26,7 @@ import org.argeo.cms.ui.workbench.internal.useradmin.UiUserAdminListener;
 import org.argeo.cms.ui.workbench.internal.useradmin.UserAdminWrapper;
 import org.argeo.cms.util.UserAdminUtils;
 import org.argeo.naming.LdapAttrs;
+import org.argeo.node.NodeInstance;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.ModifyListener;
@@ -53,8 +54,8 @@ public class UserEditor extends FormEditor {
        private Repository repository;
        private UserAdminWrapper userAdminWrapper;
        private UserAdmin userAdmin;
+       private NodeInstance nodeInstance;
 
-       
        // Context
        private User user;
        private String username;
@@ -67,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;
@@ -88,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;
@@ -99,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());
@@ -110,7 +115,7 @@ public class UserEditor extends FormEditor {
        protected void addPages() {
                try {
                        if (user.getType() == Role.GROUP)
-                               addPage(new GroupMainPage(this, userAdminWrapper, repository));
+                               addPage(new GroupMainPage(this, userAdminWrapper, repository, nodeInstance));
                        else
                                addPage(new UserMainPage(this, userAdminWrapper));
                } catch (Exception e) {
@@ -145,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);
+                       }
                }
        }
 
@@ -213,9 +217,13 @@ public class UserEditor extends FormEditor {
        public void setUserAdminWrapper(UserAdminWrapper userAdminWrapper) {
                this.userAdminWrapper = userAdminWrapper;
        }
-       
+
        public void setRepository(Repository repository) {
                this.repository = repository;
        }
-       
+
+       public void setNodeInstance(NodeInstance nodeInstance) {
+               this.nodeInstance = nodeInstance;
+       }
+
 }