X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.client.ui.dist%2Fsrc%2Forg%2Fargeo%2Fslc%2Fclient%2Fui%2Fdist%2Fcontrollers%2FDistTreeDoubleClickListener.java;fp=org.argeo.slc.client.ui.dist%2Fsrc%2Forg%2Fargeo%2Fslc%2Fclient%2Fui%2Fdist%2Fcontrollers%2FDistTreeDoubleClickListener.java;h=84a6bcb0c6734bd02faf392891b23166d137ea2d;hb=2db415932b071525adb52c6374e021174512a924;hp=0000000000000000000000000000000000000000;hpb=7e2f6c6ae08e97925955184aaa29035ac05de149;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.client.ui.dist/src/org/argeo/slc/client/ui/dist/controllers/DistTreeDoubleClickListener.java b/org.argeo.slc.client.ui.dist/src/org/argeo/slc/client/ui/dist/controllers/DistTreeDoubleClickListener.java new file mode 100644 index 000000000..84a6bcb0c --- /dev/null +++ b/org.argeo.slc.client.ui.dist/src/org/argeo/slc/client/ui/dist/controllers/DistTreeDoubleClickListener.java @@ -0,0 +1,75 @@ +package org.argeo.slc.client.ui.dist.controllers; + +import java.util.HashMap; +import java.util.Map; + +import javax.jcr.Node; +import javax.jcr.RepositoryException; + +import org.argeo.eclipse.ui.workbench.CommandUtils; +import org.argeo.slc.SlcException; +import org.argeo.slc.client.ui.dist.commands.OpenModuleEditor; +import org.argeo.slc.client.ui.dist.commands.OpenWorkspaceEditor; +import org.argeo.slc.client.ui.dist.model.ModularDistVersionElem; +import org.argeo.slc.client.ui.dist.model.RepoElem; +import org.argeo.slc.client.ui.dist.model.WorkspaceElem; +import org.eclipse.jface.viewers.DoubleClickEvent; +import org.eclipse.jface.viewers.IDoubleClickListener; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.TreeViewer; + +/** Listen to double-clicks on the distributions view tree. */ +public class DistTreeDoubleClickListener implements IDoubleClickListener { + + private TreeViewer treeViewer; + + public DistTreeDoubleClickListener(TreeViewer treeViewer) { + this.treeViewer = treeViewer; + } + + public void doubleClick(DoubleClickEvent event) { + if (event.getSelection() == null || event.getSelection().isEmpty()) + return; + Object obj = ((IStructuredSelection) event.getSelection()) + .getFirstElement(); + + if (obj instanceof RepoElem) { + RepoElem rpNode = (RepoElem) obj; + if (!rpNode.isConnected()) { + rpNode.login(); + treeViewer.refresh(obj); + } + } else if (obj instanceof WorkspaceElem) { + WorkspaceElem we = (WorkspaceElem) obj; + RepoElem repoElem = we.getRepoElem(); + Map params = new HashMap(); + params.put(OpenWorkspaceEditor.PARAM_REPO_NODE_PATH, + repoElem.getRepoNodePath()); + params.put(OpenWorkspaceEditor.PARAM_REPO_URI, repoElem.getUri()); + params.put(OpenWorkspaceEditor.PARAM_WORKSPACE_NAME, + we.getWorkspaceName()); + CommandUtils.callCommand(OpenWorkspaceEditor.ID, params); + + } else if (obj instanceof ModularDistVersionElem) { + ModularDistVersionElem modDistElem = (ModularDistVersionElem) obj; + WorkspaceElem wkspElem = modDistElem.getWorkspaceElem(); + Node moduleNode = modDistElem.getModularDistVersionNode(); + RepoElem repoElem = wkspElem.getRepoElem(); + Map params = new HashMap(); + params.put(OpenModuleEditor.PARAM_REPO_NODE_PATH, + repoElem.getRepoNodePath()); + params.put(OpenModuleEditor.PARAM_REPO_URI, repoElem.getUri()); + params.put(OpenModuleEditor.PARAM_WORKSPACE_NAME, + wkspElem.getWorkspaceName()); + try { + params.put(OpenModuleEditor.PARAM_MODULE_PATH, + moduleNode.getPath()); + } catch (RepositoryException re) { + throw new SlcException("Cannot get path for node " + moduleNode + + " while setting parameters for " + + "command OpenModuleEditor", re); + } + CommandUtils.callCommand(OpenModuleEditor.ID, params); + } + } +} \ No newline at end of file