View Javadoc
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.cms.ui.workbench.util.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  }