]> git.argeo.org Git - gpl/argeo-slc.git/blob - commands/CreateWorkspace.java
Prepare next development cycle
[gpl/argeo-slc.git] / commands / CreateWorkspace.java
1 package org.argeo.cms.ui.workbench.internal.jcr.commands;
2
3 import java.util.Arrays;
4
5 import org.argeo.cms.ui.jcr.model.RepositoryElem;
6 import org.argeo.cms.ui.workbench.WorkbenchUiPlugin;
7 import org.argeo.cms.ui.workbench.jcr.JcrBrowserView;
8 import org.argeo.eclipse.ui.dialogs.ErrorFeedback;
9 import org.argeo.eclipse.ui.dialogs.SingleValue;
10 import org.eclipse.core.commands.AbstractHandler;
11 import org.eclipse.core.commands.ExecutionEvent;
12 import org.eclipse.core.commands.ExecutionException;
13 import org.eclipse.jface.viewers.ISelection;
14 import org.eclipse.jface.viewers.IStructuredSelection;
15 import org.eclipse.ui.handlers.HandlerUtil;
16
17 /** Create a new JCR workspace */
18 public class CreateWorkspace extends AbstractHandler {
19
20 public final static String ID = WorkbenchUiPlugin.PLUGIN_ID
21 + ".addFolderNode";
22
23 public Object execute(ExecutionEvent event) throws ExecutionException {
24
25 ISelection selection = HandlerUtil.getActiveWorkbenchWindow(event)
26 .getActivePage().getSelection();
27
28 JcrBrowserView view = (JcrBrowserView) HandlerUtil
29 .getActiveWorkbenchWindow(event).getActivePage()
30 .findView(HandlerUtil.getActivePartId(event));
31
32 if (selection != null && !selection.isEmpty()
33 && selection instanceof IStructuredSelection) {
34 Object obj = ((IStructuredSelection) selection).getFirstElement();
35 if (!(obj instanceof RepositoryElem))
36 return null;
37
38 RepositoryElem repositoryNode = (RepositoryElem) obj;
39 String workspaceName = SingleValue.ask("Workspace name",
40 "Enter workspace name");
41 if (workspaceName != null) {
42 if (Arrays.asList(repositoryNode.getAccessibleWorkspaceNames())
43 .contains(workspaceName)) {
44 ErrorFeedback.show("Workspace " + workspaceName
45 + " already exists.");
46 } else {
47 repositoryNode.createWorkspace(workspaceName);
48 view.nodeAdded(repositoryNode);
49 }
50 }
51 } else {
52 ErrorFeedback.show("Cannot create workspace");
53 }
54 return null;
55 }
56 }