1 package org.argeo.connect.ui.util;
2
3 import javax.jcr.Node;
4 import javax.jcr.query.Row;
5
6 import org.argeo.connect.ui.SystemWorkbenchService;
7 import org.argeo.connect.util.ConnectJcrUtils;
8 import org.argeo.eclipse.ui.EclipseUiUtils;
9 import org.eclipse.jface.viewers.DoubleClickEvent;
10 import org.eclipse.jface.viewers.IDoubleClickListener;
11 import org.eclipse.jface.viewers.IStructuredSelection;
12
13
14
15
16
17 public class JcrViewerDClickListener implements IDoubleClickListener {
18
19 private String selectorName;
20 private SystemWorkbenchService systemWorkbenchService;
21
22 public JcrViewerDClickListener() {
23 }
24
25 public JcrViewerDClickListener(String selectorName) {
26 if (EclipseUiUtils.notEmpty(selectorName))
27 this.selectorName = selectorName;
28 }
29
30 public JcrViewerDClickListener(String selectorName, SystemWorkbenchService systemWorkbenchService) {
31 if (EclipseUiUtils.notEmpty(selectorName))
32 this.selectorName = selectorName;
33 this.systemWorkbenchService = systemWorkbenchService;
34 }
35
36 public JcrViewerDClickListener(SystemWorkbenchService systemWorkbenchService) {
37 selectorName = null;
38 this.systemWorkbenchService = systemWorkbenchService;
39 }
40
41 public void doubleClick(DoubleClickEvent event) {
42 if (event.getSelection() == null || event.getSelection().isEmpty())
43 return;
44 Object obj = ((IStructuredSelection) event.getSelection()).getFirstElement();
45 Node currNode = null;
46
47 if (obj instanceof Row || obj instanceof Node)
48 currNode = ConnectJcrUtils.getNodeFromElement(obj, selectorName);
49 if (currNode != null) {
50
51
52
53
54
55 if (systemWorkbenchService != null) {
56 systemWorkbenchService.openEntityEditor(currNode);
57 }
58 }
59
60
61
62 }
63 }