]> 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
Fix file download for rap. Add various links in the bundle detail editor.
[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.OpenModuleEditor;
12 import org.argeo.slc.client.ui.dist.commands.OpenWorkspaceEditor;
13 import org.argeo.slc.client.ui.dist.model.ModularDistVersionElem;
14 import org.argeo.slc.client.ui.dist.model.RepoElem;
15 import org.argeo.slc.client.ui.dist.model.WorkspaceElem;
16 import org.eclipse.jface.viewers.DoubleClickEvent;
17 import org.eclipse.jface.viewers.IDoubleClickListener;
18 import org.eclipse.jface.viewers.IStructuredSelection;
19 import org.eclipse.jface.viewers.TreeViewer;
20
21 /** Listen to double-clicks on the distributions view tree. */
22 public class DistTreeDoubleClickListener implements IDoubleClickListener {
23
24 private TreeViewer treeViewer;
25
26 public DistTreeDoubleClickListener(TreeViewer treeViewer) {
27 this.treeViewer = treeViewer;
28 }
29
30 public void doubleClick(DoubleClickEvent event) {
31 if (event.getSelection() == null || event.getSelection().isEmpty())
32 return;
33 Object obj = ((IStructuredSelection) event.getSelection())
34 .getFirstElement();
35
36 if (obj instanceof RepoElem) {
37 RepoElem rpNode = (RepoElem) obj;
38 if (!rpNode.isConnected()) {
39 rpNode.login();
40 treeViewer.refresh(obj);
41 }
42 } else if (obj instanceof WorkspaceElem) {
43 WorkspaceElem we = (WorkspaceElem) obj;
44 RepoElem repoElem = we.getRepoElem();
45 Map<String, String> params = new HashMap<String, String>();
46 params.put(OpenWorkspaceEditor.PARAM_REPO_NODE_PATH,
47 repoElem.getRepoNodePath());
48 params.put(OpenWorkspaceEditor.PARAM_REPO_URI, repoElem.getUri());
49 params.put(OpenWorkspaceEditor.PARAM_WORKSPACE_NAME,
50 we.getWorkspaceName());
51 CommandUtils.callCommand(OpenWorkspaceEditor.ID, params);
52
53 } else if (obj instanceof ModularDistVersionElem) {
54 ModularDistVersionElem modDistElem = (ModularDistVersionElem) obj;
55 WorkspaceElem wkspElem = modDistElem.getWorkspaceElem();
56 Node moduleNode = modDistElem.getModularDistVersionNode();
57 RepoElem repoElem = wkspElem.getRepoElem();
58 Map<String, String> params = new HashMap<String, String>();
59 params.put(OpenModuleEditor.PARAM_REPO_NODE_PATH,
60 repoElem.getRepoNodePath());
61 params.put(OpenModuleEditor.PARAM_REPO_URI, repoElem.getUri());
62 params.put(OpenModuleEditor.PARAM_WORKSPACE_NAME,
63 wkspElem.getWorkspaceName());
64 try {
65 params.put(OpenModuleEditor.PARAM_MODULE_PATH,
66 moduleNode.getPath());
67 } catch (RepositoryException re) {
68 throw new SlcException("Cannot get path for node " + moduleNode
69 + " while setting parameters for "
70 + "command OpenModuleEditor", re);
71 }
72 CommandUtils.callCommand(OpenModuleEditor.ID, params);
73 }
74 }
75 }