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 41fadac4eb27e7d4092921522a7a9170f059ed78..a1e5c627f4a7a107a627bc0c481f78fd42c4b979 100644 (file)
@@ -18,12 +18,15 @@ package org.argeo.cms.ui.workbench.internal.useradmin.parts;
 import java.util.ArrayList;
 import java.util.List;
 
+import javax.jcr.Repository;
+
 import org.argeo.cms.CmsException;
 import org.argeo.cms.ui.workbench.WorkbenchUiPlugin;
 import org.argeo.cms.ui.workbench.internal.useradmin.UiUserAdminListener;
 import org.argeo.cms.ui.workbench.internal.useradmin.UserAdminWrapper;
-import org.argeo.cms.util.useradmin.UserAdminUtils;
+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;
@@ -44,14 +47,14 @@ import org.osgi.service.useradmin.UserAdminEvent;
 public class UserEditor extends FormEditor {
        private static final long serialVersionUID = 8357851520380820241L;
 
-       public final static String USER_EDITOR_ID = WorkbenchUiPlugin.PLUGIN_ID
-                       + ".userEditor";
-       public final static String GROUP_EDITOR_ID = WorkbenchUiPlugin.PLUGIN_ID
-                       + ".groupEditor";
+       public final static String USER_EDITOR_ID = WorkbenchUiPlugin.PLUGIN_ID + ".userEditor";
+       public final static String GROUP_EDITOR_ID = WorkbenchUiPlugin.PLUGIN_ID + ".groupEditor";
 
        /* DEPENDENCY INJECTION */
+       private Repository repository;
        private UserAdminWrapper userAdminWrapper;
        private UserAdmin userAdmin;
+       private NodeInstance nodeInstance;
 
        // Context
        private User user;
@@ -59,20 +62,20 @@ public class UserEditor extends FormEditor {
 
        private NameChangeListener listener;
 
-       public void init(IEditorSite site, IEditorInput input)
-                       throws PartInitException {
+       public void init(IEditorSite site, IEditorInput input) throws PartInitException {
                super.init(site, input);
+               this.userAdmin = userAdminWrapper.getUserAdmin();
                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;
@@ -86,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;
@@ -97,10 +100,13 @@ 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());
+                       String commonName = UserAdminUtils.getProperty(user, LdapAttrs.cn.name());
                        title = "".equals(commonName) ? user.getName() : commonName;
                }
                setPartName(title);
@@ -109,7 +115,7 @@ public class UserEditor extends FormEditor {
        protected void addPages() {
                try {
                        if (user.getType() == Role.GROUP)
-                               addPage(new GroupMainPage(this, userAdminWrapper));
+                               addPage(new GroupMainPage(this, userAdminWrapper, repository, nodeInstance));
                        else
                                addPage(new UserMainPage(this, userAdminWrapper));
                } catch (Exception e) {
@@ -123,8 +129,7 @@ public class UserEditor extends FormEditor {
                commitPages(true);
                userAdminWrapper.commitOrNotifyTransactionStateChange();
                firePropertyChange(PROP_DIRTY);
-               userAdminWrapper.notifyListeners(new UserAdminEvent(null,
-                               UserAdminEvent.ROLE_REMOVED, user));
+               userAdminWrapper.notifyListeners(new UserAdminEvent(null, UserAdminEvent.ROLE_REMOVED, user));
        }
 
        @Override
@@ -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);
+                       }
                }
        }
 
@@ -212,6 +216,14 @@ public class UserEditor extends FormEditor {
        /* DEPENDENCY INJECTION */
        public void setUserAdminWrapper(UserAdminWrapper userAdminWrapper) {
                this.userAdminWrapper = userAdminWrapper;
-               this.userAdmin = userAdminWrapper.getUserAdmin();
        }
+
+       public void setRepository(Repository repository) {
+               this.repository = repository;
+       }
+
+       public void setNodeInstance(NodeInstance nodeInstance) {
+               this.nodeInstance = nodeInstance;
+       }
+
 }