2 * Copyright (C) 2007-2012 Argeo GmbH
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org
.argeo
.eclipse
.ui
.workbench
.internal
.jcr
;
18 import javax
.jcr
.Node
;
19 import javax
.jcr
.RepositoryException
;
20 import javax
.jcr
.nodetype
.NodeType
;
22 import org
.argeo
.eclipse
.ui
.EclipseUiException
;
23 import org
.argeo
.eclipse
.ui
.workbench
.WorkbenchUiPlugin
;
24 import org
.argeo
.eclipse
.ui
.workbench
.internal
.jcr
.model
.RepositoryElem
;
25 import org
.argeo
.eclipse
.ui
.workbench
.internal
.jcr
.model
.SingleJcrNodeElem
;
26 import org
.argeo
.eclipse
.ui
.workbench
.internal
.jcr
.model
.WorkspaceElem
;
27 import org
.argeo
.eclipse
.ui
.workbench
.internal
.jcr
.parts
.GenericNodeEditorInput
;
28 import org
.argeo
.eclipse
.ui
.workbench
.jcr
.DefaultNodeEditor
;
29 import org
.eclipse
.jface
.viewers
.DoubleClickEvent
;
30 import org
.eclipse
.jface
.viewers
.IDoubleClickListener
;
31 import org
.eclipse
.jface
.viewers
.IStructuredSelection
;
32 import org
.eclipse
.jface
.viewers
.TreeViewer
;
33 import org
.eclipse
.ui
.PartInitException
;
35 /** Centralizes the management of double click on a NodeTreeViewer */
36 public class GenericNodeDoubleClickListener
implements IDoubleClickListener
{
37 // private final static Log log = LogFactory
38 // .getLog(GenericNodeDoubleClickListener.class);
40 private TreeViewer nodeViewer
;
42 // private JcrFileProvider jfp;
43 // private FileHandler fileHandler;
45 public GenericNodeDoubleClickListener(TreeViewer nodeViewer
) {
46 this.nodeViewer
= nodeViewer
;
47 // jfp = new JcrFileProvider();
48 // Commented out. see https://www.argeo.org/bugzilla/show_bug.cgi?id=188
49 // fileHandler = null;
50 // fileHandler = new FileHandler(jfp);
53 public void doubleClick(DoubleClickEvent event
) {
54 if (event
.getSelection() == null || event
.getSelection().isEmpty())
56 Object obj
= ((IStructuredSelection
) event
.getSelection())
58 if (obj
instanceof RepositoryElem
) {
59 RepositoryElem rpNode
= (RepositoryElem
) obj
;
60 if (!rpNode
.isConnected()) {
62 nodeViewer
.refresh(obj
);
64 } else if (obj
instanceof WorkspaceElem
) {
65 WorkspaceElem wn
= (WorkspaceElem
) obj
;
70 nodeViewer
.refresh(obj
);
71 } else if (obj
instanceof SingleJcrNodeElem
) {
72 SingleJcrNodeElem sjn
= (SingleJcrNodeElem
) obj
;
73 Node node
= sjn
.getNode();
75 if (node
.isNodeType(NodeType
.NT_FILE
)) {
76 // double click on a file node triggers its opening
77 // String name = node.getName();
78 // String id = node.getIdentifier();
80 // TODO add integration of direct retrieval of the binary in
82 // Map<String, String> params = new HashMap<String,
84 // params.put(OpenFile.PARAM_FILE_NAME, name);
85 // params.put(OpenFile.PARAM_FILE_URI, "jcr://" + id);
87 // .callCommand("org.argeo.security.ui.specific.openFile",
90 // For the file provider to be able to browse the
93 // TODO : enhanced that.
94 // ITreeContentProvider itcp = (ITreeContentProvider)
96 // .getContentProvider();
97 // jfp.setReferenceNode(node);
98 // if (fileHandler != null)
99 // fileHandler.openFile(name, id);
101 GenericNodeEditorInput gnei
= new GenericNodeEditorInput(node
);
102 WorkbenchUiPlugin
.getDefault().getWorkbench()
103 .getActiveWorkbenchWindow().getActivePage()
104 .openEditor(gnei
, DefaultNodeEditor
.ID
);
105 } catch (RepositoryException re
) {
106 throw new EclipseUiException(
107 "Repository error while getting node info", re
);
108 } catch (PartInitException pie
) {
109 throw new EclipseUiException(
110 "Unexepected exception while opening node editor", pie
);