1 package org
.argeo
.jcr
.ui
.explorer
.utils
;
4 import javax
.jcr
.RepositoryException
;
5 import javax
.jcr
.nodetype
.NodeType
;
7 import org
.argeo
.ArgeoException
;
8 import org
.argeo
.eclipse
.ui
.jcr
.utils
.JcrFileProvider
;
9 import org
.argeo
.eclipse
.ui
.specific
.FileHandler
;
10 import org
.argeo
.jcr
.ui
.explorer
.JcrExplorerPlugin
;
11 import org
.argeo
.jcr
.ui
.explorer
.editors
.GenericNodeEditor
;
12 import org
.argeo
.jcr
.ui
.explorer
.editors
.GenericNodeEditorInput
;
13 import org
.argeo
.jcr
.ui
.explorer
.model
.RepositoryNode
;
14 import org
.argeo
.jcr
.ui
.explorer
.model
.SingleJcrNode
;
15 import org
.argeo
.jcr
.ui
.explorer
.model
.WorkspaceNode
;
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 import org
.eclipse
.ui
.PartInitException
;
23 * Centralizes the management of double click on a NodeTreeViewer
25 public class GenericNodeDoubleClickListener
implements IDoubleClickListener
{
27 // private final static Log log = LogFactory
28 // .getLog(GenericNodeDoubleClickListener.class);
30 private TreeViewer nodeViewer
;
31 private JcrFileProvider jfp
;
32 private FileHandler fileHandler
;
34 public GenericNodeDoubleClickListener(TreeViewer nodeViewer
) {
35 this.nodeViewer
= nodeViewer
;
36 jfp
= new JcrFileProvider();
37 fileHandler
= new FileHandler(jfp
);
40 public void doubleClick(DoubleClickEvent event
) {
41 if (event
.getSelection() == null || event
.getSelection().isEmpty())
43 Object obj
= ((IStructuredSelection
) event
.getSelection())
45 if (obj
instanceof RepositoryNode
) {
46 RepositoryNode rpNode
= (RepositoryNode
) obj
;
47 if (rpNode
.getChildren().length
== 0) {
49 nodeViewer
.refresh(obj
);
52 } else if (obj
instanceof WorkspaceNode
) {
53 ((WorkspaceNode
) obj
).login();
54 nodeViewer
.refresh(obj
);
55 } else if (obj
instanceof SingleJcrNode
) {
56 SingleJcrNode sjn
= (SingleJcrNode
) obj
;
57 Node node
= sjn
.getNode();
59 if (node
.isNodeType(NodeType
.NT_FILE
)) {
60 // double click on a file node triggers its opening
61 String name
= node
.getName();
62 String id
= node
.getIdentifier();
64 // For the file provider to be able to browse the
67 // TODO : enhanced that.
68 // ITreeContentProvider itcp = (ITreeContentProvider)
70 // .getContentProvider();
71 jfp
.setReferenceNode(node
);
72 fileHandler
.openFile(name
, id
);
74 GenericNodeEditorInput gnei
= new GenericNodeEditorInput(node
);
75 JcrExplorerPlugin
.getDefault().getWorkbench()
76 .getActiveWorkbenchWindow().getActivePage()
77 .openEditor(gnei
, GenericNodeEditor
.ID
);
78 } catch (RepositoryException re
) {
79 throw new ArgeoException(
80 "Repository error while getting node info", re
);
81 } catch (PartInitException pie
) {
82 throw new ArgeoException(
83 "Unexepected exception while opening node editor", pie
);