]> 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
Work on index policies.
[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 wn = (WorkspaceElem) obj;
44 // if (!wn.isConnected()) {
45 // wn.login();
46 // treeViewer.refresh(obj);
47 // } else {
48 WorkspaceElem we = (WorkspaceElem) obj;
49 Node repoNode = null;
50 try {
51 RepoElem repoElem = we.getRepoElem();
52 Map<String, String> params = new HashMap<String, String>();
53
54 repoNode = repoElem.getRepoNode();
55 if (repoNode != null)
56 params.put(OpenWorkspaceEditor.PARAM_REPO_NODE_PATH,
57 repoNode.getPath());
58 params.put(OpenWorkspaceEditor.PARAM_REPO_URI,
59 repoElem.getUri());
60 params.put(OpenWorkspaceEditor.PARAM_WORKSPACE_NAME,
61 we.getWorkspaceName());
62 CommandUtils.callCommand(OpenWorkspaceEditor.ID, params);
63 } catch (RepositoryException re) {
64 throw new SlcException("Cannot get path for node " + repoNode
65 + " while " + "setting parameters of command "
66 + "OpenWorkspaceEditor", re);
67 }
68 // }
69 } else if (obj instanceof ModularDistVersionElem) {
70 ModularDistVersionElem modDistElem = (ModularDistVersionElem) obj;
71 WorkspaceElem wkspElem = modDistElem.getWorkspaceElem();
72 Node repoNode = null;
73 Node moduleNode = modDistElem.getModularDistVersionNode();
74 try {
75 RepoElem repoElem = wkspElem.getRepoElem();
76 Map<String, String> params = new HashMap<String, String>();
77 repoNode = repoElem.getRepoNode();
78 if (repoNode != null)
79 params.put(OpenModuleEditor.PARAM_REPO_NODE_PATH,
80 repoNode.getPath());
81 params.put(OpenModuleEditor.PARAM_REPO_URI, repoElem.getUri());
82 params.put(OpenModuleEditor.PARAM_WORKSPACE_NAME,
83 wkspElem.getWorkspaceName());
84 params.put(OpenModuleEditor.PARAM_MODULE_PATH,
85 moduleNode.getPath());
86 CommandUtils.callCommand(OpenModuleEditor.ID, params);
87 } catch (RepositoryException re) {
88 throw new SlcException("Cannot get path for node " + repoNode
89 + " or " + moduleNode
90 + " while setting parameters for "
91 + "command OpenModuleEditor", re);
92 }
93 }
94 }
95 }