X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=plugins%2Forg.argeo.slc.client.ui.dist%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fclient%2Fui%2Fdist%2Fcontrollers%2FDistTreeDoubleClickListener.java;h=c280a53e00f8b78d23d4032f2ba99e2dbbbfe999;hb=1e6cf7254fb9f150251594cf0383b3b1c5210517;hp=bfa97665856a8785cc41e82a8e26d2be53b74a0c;hpb=d19ee0fc60f905f0f33bbc7ab34da3659accb046;p=gpl%2Fargeo-slc.git diff --git a/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/controllers/DistTreeDoubleClickListener.java b/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/controllers/DistTreeDoubleClickListener.java index bfa976658..c280a53e0 100644 --- a/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/controllers/DistTreeDoubleClickListener.java +++ b/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/controllers/DistTreeDoubleClickListener.java @@ -1,37 +1,75 @@ package org.argeo.slc.client.ui.dist.controllers; -import org.argeo.eclipse.ui.ErrorFeedback; -import org.argeo.slc.client.ui.dist.DistPlugin; -import org.argeo.slc.client.ui.dist.editors.DistributionEditor; -import org.argeo.slc.client.ui.dist.editors.DistributionEditorInput; +import java.util.HashMap; +import java.util.Map; + +import javax.jcr.Node; +import javax.jcr.RepositoryException; + +import org.argeo.eclipse.ui.utils.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.ui.PartInitException; +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 WorkspaceElem) { + + 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; - DistributionEditorInput dei = new DistributionEditorInput(we - .getRepoElem().getRepository(), we.getRepoElem() - .getCredentials(), we.getRepoElem().getLabel(), we - .getRepoElem().getDescription(), we.getWorkspaceName()); + 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 { - DistPlugin.getDefault().getWorkbench() - .getActiveWorkbenchWindow().getActivePage() - .openEditor(dei, DistributionEditor.ID); - } catch (PartInitException e) { - ErrorFeedback.show( - "Cannot open editor for " + we.getWorkspaceName(), e); + 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