--- /dev/null
+package org.argeo.slc.client.ui.dist.commands;
+
+import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+
+import org.argeo.jcr.JcrUtils;
+import org.argeo.slc.SlcException;
+import org.argeo.slc.client.ui.dist.DistPlugin;
+import org.argeo.slc.client.ui.dist.wizards.ChangeRightsWizard;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+/** Open a dialog to manage rights on the current workspace's root node */
+public class ManageWorkspaceAuth extends AbstractHandler {
+ // private static final Log log =
+ // LogFactory.getLog(ManageWorkspaceAuth.class);
+ public final static String ID = DistPlugin.PLUGIN_ID
+ + ".manageWorkspaceAuth";
+ public final static String DEFAULT_LABEL = "Manage Rights";
+ public final static ImageDescriptor DEFAULT_ICON = DistPlugin
+ .getImageDescriptor("icons/changeRights.gif");
+
+ public final static String PARAM_WORKSPACE_NAME = DistPlugin.PLUGIN_ID
+ + ".workspaceName";
+
+ /* DEPENDENCY INJECTION */
+ private Repository repository;
+ private Session session;
+
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ String workspaceName = event.getParameter(PARAM_WORKSPACE_NAME);
+ try {
+ session = repository.login(workspaceName);
+ ChangeRightsWizard wizard = new ChangeRightsWizard(session);
+ WizardDialog dialog = new WizardDialog(
+ HandlerUtil.getActiveShell(event), wizard);
+ dialog.open();
+ return null;
+ } catch (RepositoryException re) {
+ throw new SlcException("Cannot log in the repository "
+ + repository + " in workspace " + workspaceName, re);
+ } finally {
+ JcrUtils.logoutQuietly(session);
+ }
+ }
+
+ /* DEPENDENCY INJECTION */
+ public void setRepository(Repository repository) {
+ this.repository = repository;
+ }
+}
\ No newline at end of file