X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.ui.workbench%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2Fworkbench%2Finternal%2Fuseradmin%2Fparts%2FUserEditor.java;h=a1e5c627f4a7a107a627bc0c481f78fd42c4b979;hb=5b444174cd13680f99944026877f6cac2e1faba1;hp=c63e120ec3b5642fb16e74c7d1ac3bd19f711149;hpb=d53071455192a97322935a911c9fbbfd92084912;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserEditor.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserEditor.java index c63e120ec..a1e5c627f 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserEditor.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserEditor.java @@ -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.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 getFlatGroups(User aUser) { Authorization currAuth; @@ -86,7 +89,7 @@ public class UserEditor extends FormEditor { List groups = new ArrayList(); 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; + } + }