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;
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;
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;
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;
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);
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) {
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
// 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);
+ }
}
}
/* 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;
+ }
+
}