]> git.argeo.org Git - gpl/argeo-slc.git/blob - plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/controllers/DistTreeDoubleClickListener.java
Enable launch of "Run in OSGi" command on local workspaces
[gpl/argeo-slc.git] / plugins / org.argeo.slc.client.ui.dist / src / main / java / org / argeo / slc / client / ui / dist / controllers / DistTreeDoubleClickListener.java
1 package org.argeo.slc.client.ui.dist.controllers;
2
3 import java.util.HashMap;
4 import java.util.Map;
5
6 import javax.jcr.Node;
7 import javax.jcr.RepositoryException;
8
9 import org.argeo.eclipse.ui.utils.CommandUtils;
10 import org.argeo.slc.SlcException;
11 import org.argeo.slc.client.ui.dist.commands.OpenWorkspaceEditor;
12 import org.argeo.slc.client.ui.dist.model.RepoElem;
13 import org.argeo.slc.client.ui.dist.model.WorkspaceElem;
14 import org.eclipse.jface.viewers.DoubleClickEvent;
15 import org.eclipse.jface.viewers.IDoubleClickListener;
16 import org.eclipse.jface.viewers.IStructuredSelection;
17 import org.eclipse.jface.viewers.TreeViewer;
18
19 /** Listen to double-clicks on the distributions view tree. */
20 public class DistTreeDoubleClickListener implements IDoubleClickListener {
21
22 private TreeViewer treeViewer;
23
24 public DistTreeDoubleClickListener(TreeViewer treeViewer) {
25 this.treeViewer = treeViewer;
26 }
27
28 public void doubleClick(DoubleClickEvent event) {
29 if (event.getSelection() == null || event.getSelection().isEmpty())
30 return;
31 Object obj = ((IStructuredSelection) event.getSelection())
32 .getFirstElement();
33
34 if (obj instanceof RepoElem) {
35 RepoElem rpNode = (RepoElem) obj;
36 if (!rpNode.isConnected()) {
37 rpNode.login();
38 treeViewer.refresh(obj);
39 }
40 } else if (obj instanceof WorkspaceElem) {
41 WorkspaceElem wn = (WorkspaceElem) obj;
42 if (!wn.isConnected())
43 wn.login();
44 else {
45 WorkspaceElem we = (WorkspaceElem) obj;
46
47 try {
48 RepoElem repoElem = we.getRepoElem();
49 Map<String, String> params = new HashMap<String, String>();
50
51 Node repoNode = repoElem.getRepoNode();
52 if (repoNode != null)
53 params.put(OpenWorkspaceEditor.PARAM_REPO_NODE_PATH,
54 repoNode.getPath());
55 params.put(OpenWorkspaceEditor.PARAM_REPO_URI,
56 repoElem.getUri());
57 params.put(OpenWorkspaceEditor.PARAM_WORKSPACE_NAME,
58 we.getWorkspaceName());
59 CommandUtils.callCommand(OpenWorkspaceEditor.ID, params);
60 } catch (RepositoryException re) {
61 throw new SlcException(
62 "Cannot get path for node while "
63 + "setting parameters of command OpenWorkspaceEditor",
64 re);
65 }
66 }
67 treeViewer.refresh(obj);
68 }
69 }
70 }