X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=plugins%2Forg.argeo.slc.client.ui.dist%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fclient%2Fui%2Fdist%2Fcommands%2FCopyWorkspace.java;h=435410c46cf3d1a107e20bb77ac0df8354d2b313;hb=8f39009d2240088702aa247744e9f4e16ae0dd89;hp=72b5a75035045945845ae62190976de00954ef65;hpb=0d236262a853a1286b317c30d64d4692bc21c7a4;p=gpl%2Fargeo-slc.git diff --git a/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/commands/CopyWorkspace.java b/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/commands/CopyWorkspace.java index 72b5a7503..435410c46 100644 --- a/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/commands/CopyWorkspace.java +++ b/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/commands/CopyWorkspace.java @@ -25,6 +25,7 @@ import javax.jcr.security.Privilege; import org.argeo.ArgeoException; import org.argeo.jcr.JcrUtils; +import org.argeo.slc.SlcConstants; import org.argeo.slc.client.ui.dist.DistPlugin; import org.argeo.slc.client.ui.dist.utils.CommandHelpers; import org.argeo.slc.repo.RepoUtils; @@ -33,6 +34,8 @@ import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.jface.dialogs.InputDialog; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.window.Window; import org.eclipse.ui.handlers.HandlerUtil; /** @@ -42,18 +45,17 @@ import org.eclipse.ui.handlers.HandlerUtil; public class CopyWorkspace extends AbstractHandler { // private static final Log log = LogFactory.getLog(CopyWorkspace.class); public final static String ID = DistPlugin.ID + ".copyWorkspace"; - public final static String DEFAULT_LABEL = "Duplicate"; + public final static String DEFAULT_LABEL = "Duplicate..."; public final static String PARAM_SOURCE_WORKSPACE_NAME = "srcWkspName"; public final static String PARAM_TARGET_REPO_PATH = "targetRepoPath"; - public final static String DEFAULT_ICON_PATH = "icons/addItem.gif"; + public final static ImageDescriptor DEFAULT_ICON = DistPlugin + .getImageDescriptor("icons/addItem.gif"); // DEPENDENCY INJECTION private RepositoryFactory repositoryFactory; private Keyring keyring; private Repository nodeRepository; - private String slcRole = "ROLE_SLC"; - public Object execute(ExecutionEvent event) throws ExecutionException { String targetRepoPath = event.getParameter(PARAM_TARGET_REPO_PATH); @@ -74,20 +76,23 @@ public class CopyWorkspace extends AbstractHandler { .getActiveWorkbenchWindow(event).getShell(), "New copy of workspace " + wkspName, "Choose a name for the workspace to create", "", null); - inputDialog.open(); - String newWorkspaceName = inputDialog.getValue(); - srcSession = repository.login(credentials, wkspName); + int result = inputDialog.open(); + if (result == Window.OK) { + String newWorkspaceName = inputDialog.getValue(); + srcSession = repository.login(credentials, wkspName); - // Create the workspace - srcSession.getWorkspace().createWorkspace(newWorkspaceName); - Node srcRootNode = srcSession.getRootNode(); - // log in the newly created workspace - newSession = repository.login(credentials, newWorkspaceName); - Node newRootNode = newSession.getRootNode(); - RepoUtils.copy(srcRootNode, newRootNode); - newSession.save(); - JcrUtils.addPrivilege(newSession, "/", slcRole, Privilege.JCR_ALL); - CommandHelpers.callCommand(RefreshDistributionsView.ID); + // Create the workspace + srcSession.getWorkspace().createWorkspace(newWorkspaceName); + Node srcRootNode = srcSession.getRootNode(); + // log in the newly created workspace + newSession = repository.login(credentials, newWorkspaceName); + Node newRootNode = newSession.getRootNode(); + RepoUtils.copy(srcRootNode, newRootNode); + newSession.save(); + JcrUtils.addPrivilege(newSession, "/", SlcConstants.ROLE_SLC, + Privilege.JCR_ALL); + CommandHelpers.callCommand(RefreshDistributionsView.ID); + } } catch (RepositoryException re) { throw new ArgeoException( "Unexpected error while creating the new workspace.", re);