View Javadoc
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   * Canonical double-click listener for a viewer that displays JCR Rows or Nodes.
15   * Calls the OpenEditor command retrieved via the AppWorkbenchService
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  		// try {
47  		if (obj instanceof Row || obj instanceof Node)
48  			currNode = ConnectJcrUtils.getNodeFromElement(obj, selectorName);
49  		if (currNode != null) {
50  			// String cmdId = OpenEntityEditor.ID;
51  			// if (systemWorkbenchService != null)
52  			// cmdId = systemWorkbenchService.getOpenEntityEditorCmdId();
53  			// CommandUtils.callCommand(cmdId, ConnectEditor.PARAM_JCR_ID,
54  			// currNode.getIdentifier());
55  			if (systemWorkbenchService != null) {
56  				systemWorkbenchService.openEntityEditor(currNode);
57  			}
58  		}
59  		// } catch (RepositoryException re) {
60  		// throw new ConnectException("Unable to open editor for node " + currNode, re);
61  		// }
62  	}
63  }