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=35f2c7f3889b99fa460dfb0662445df25d48e763;hpb=e0b74f76a331289a476fb3b9bac117385e7435fe;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 35f2c7f38..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 @@ -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 getFlatGroups(User aUser) { Authorization currAuth; @@ -88,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; @@ -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; + } + }