<property name="userAdminWrapper" ref="userAdminWrapper" />
</bean>
+ <bean id="groupEditor" class="org.argeo.security.ui.admin.internal.parts.UserEditor"
+ scope="prototype">
+ <property name="userAdminWrapper" ref="userAdminWrapper" />
+ </bean>
+
<!-- Views -->
<bean id="usersView" class="org.argeo.security.ui.admin.internal.parts.UsersView"
scope="prototype">
scope="prototype">
<property name="userAdminWrapper" ref="userAdminWrapper" />
</bean>
-
+
</beans>
\ No newline at end of file
id="org.argeo.security.ui.admin.userEditor"
name="User"
icon="icons/user.gif"
+ default="false">
+ </editor>
+ <editor
+ class="org.argeo.eclipse.spring.SpringExtensionFactory"
+ id="org.argeo.security.ui.admin.groupEditor"
+ name="User"
+ icon="icons/users.gif"
default="false">
</editor>
</extension>
import org.argeo.security.ui.admin.internal.UserAdminConstants;
import org.argeo.security.ui.admin.internal.UserAdminWrapper;
import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.forms.AbstractFormPart;
import org.eclipse.ui.forms.editor.FormEditor;
-import org.eclipse.ui.forms.widgets.FormToolkit;
import org.osgi.service.useradmin.Authorization;
import org.osgi.service.useradmin.Role;
import org.osgi.service.useradmin.User;
public class UserEditor extends FormEditor implements UserAdminConstants {
private static final long serialVersionUID = 8357851520380820241L;
- public final static String ID = SecurityAdminPlugin.PLUGIN_ID
+ public final static String USER_EDITOR_ID = SecurityAdminPlugin.PLUGIN_ID
+ ".userEditor";
+ public final static String GROUP_EDITOR_ID = SecurityAdminPlugin.PLUGIN_ID
+ + ".groupEditor";
/* DEPENDENCY INJECTION */
private UserAdminWrapper userAdminWrapper;
listener = new NameChangeListener(user);
userAdminWrapper.addListener(listener);
-
- // TODO: following has been disabled because it causes NPE after a
- // login/logout on RAP
- // Image titleIcon = user.getType() == Role.GROUP ?
- // SecurityAdminImages.ICON_GROUP
- // : SecurityAdminImages.ICON_USER;
- // setTitleImage(titleIcon);
+ updateEditorTitle(null);
}
/**
void updateEditorTitle(String title) {
if (title == null) {
String commonName = UiAdminUtils.getProperty(user, KEY_CN);
- title = "".equals(commonName) ? commonName : user.getName();
+ title = "".equals(commonName) ? user.getName() : commonName;
}
setPartName(title);
}
}
}
- /**
- * Updates the property in the working copy. The transaction must be
- * explicitly committed to persist the update.
- */
- @SuppressWarnings("unchecked")
- protected void setProperty(String key, String value) {
- user.getProperties().put(key, value);
- }
-
@Override
public void doSave(IProgressMonitor monitor) {
userAdminWrapper.beginTransactionIfNeeded();
super.dispose();
}
+ @SuppressWarnings("unchecked")
public void commit(boolean onSave) {
- // TODO Sanity checks
- editor.setProperty(UserAdminConstants.KEY_FIRSTNAME,
+ // TODO Sanity checks (mail validity...)
+ user.getProperties().put(UserAdminConstants.KEY_FIRSTNAME,
firstName.getText());
- editor.setProperty(UserAdminConstants.KEY_LASTNAME,
+ user.getProperties().put(UserAdminConstants.KEY_LASTNAME,
lastName.getText());
- editor.setProperty(UserAdminConstants.KEY_CN,
+ user.getProperties().put(UserAdminConstants.KEY_CN,
commonName.getText());
- // TODO check mail validity
- editor.setProperty(UserAdminConstants.KEY_MAIL, email.getText());
-
+ user.getProperties().put(UserAdminConstants.KEY_MAIL, email.getText());
// Enable common name ?
// editor.setProperty(UserAdminConstants.KEY_CN,
// email.getText());
super.commit(onSave);
}
+
+
@Override
public void refresh() {
distinguishedName.setText(UiAdminUtils.getProperty(user,
}
});
- Action action = new RemoveMembershipAction(userViewer, user,
- "Remove selected groups", SecurityAdminImages.ICON_REMOVE_DESC);
+ String tooltip = "Remove " + UiAdminUtils.getUsername(user)
+ + " from the below selected groups";
+ Action action = new RemoveMembershipAction(userViewer, user, tooltip,
+ SecurityAdminImages.ICON_REMOVE_DESC);
toolBarManager.add(action);
toolBarManager.update(true);
section.setTextClient(toolbar);
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PartInitException;
+import org.osgi.service.useradmin.Group;
import org.osgi.service.useradmin.User;
/**
UserEditorInput uei = new UserEditorInput(user.getName());
try {
- // IEditorPart editor =
- iwp.openEditor(uei, UserEditor.ID);
+ // Work around the fact that dynamic setting of the editor icon
+ // causes NPE after a login/logout on RAP
+ if (user instanceof Group)
+ iwp.openEditor(uei, UserEditor.GROUP_EDITOR_ID);
+ else
+ iwp.openEditor(uei, UserEditor.USER_EDITOR_ID);
} catch (PartInitException pie) {
throw new ArgeoException("Unable to open UserEditor for " + user,
pie);