1 package org
.argeo
.cms
.ui
.workbench
.internal
.jcr
.parts
;
5 import org
.argeo
.cms
.ui
.jcr
.JcrTreeContentProvider
;
6 import org
.argeo
.cms
.ui
.jcr
.NodeLabelProvider
;
7 import org
.argeo
.cms
.ui
.workbench
.WorkbenchUiPlugin
;
8 import org
.argeo
.cms
.ui
.workbench
.jcr
.DefaultNodeEditor
;
9 import org
.argeo
.eclipse
.ui
.EclipseUiException
;
10 import org
.argeo
.eclipse
.ui
.EclipseUiUtils
;
11 import org
.eclipse
.jface
.viewers
.DoubleClickEvent
;
12 import org
.eclipse
.jface
.viewers
.IDoubleClickListener
;
13 import org
.eclipse
.jface
.viewers
.IStructuredSelection
;
14 import org
.eclipse
.jface
.viewers
.ITreeContentProvider
;
15 import org
.eclipse
.jface
.viewers
.TreeViewer
;
16 import org
.eclipse
.swt
.SWT
;
17 import org
.eclipse
.swt
.layout
.GridLayout
;
18 import org
.eclipse
.swt
.widgets
.Composite
;
19 import org
.eclipse
.swt
.widgets
.Tree
;
20 import org
.eclipse
.ui
.PartInitException
;
21 import org
.eclipse
.ui
.forms
.IManagedForm
;
22 import org
.eclipse
.ui
.forms
.editor
.FormEditor
;
23 import org
.eclipse
.ui
.forms
.editor
.FormPage
;
24 import org
.eclipse
.ui
.forms
.widgets
.ScrolledForm
;
26 /** List all children of the current node */
27 public class ChildNodesPage
extends FormPage
{
28 // private final static Log log = LogFactory.getLog(ChildNodesPage.class);
30 private Node currentNode
;
32 private JcrTreeContentProvider nodeContentProvider
;
33 private TreeViewer nodesViewer
;
35 public ChildNodesPage(FormEditor editor
, String title
, Node currentNode
) {
36 super(editor
, "ChildNodesPage", title
);
37 this.currentNode
= currentNode
;
40 protected void createFormContent(IManagedForm managedForm
) {
42 ScrolledForm form
= managedForm
.getForm();
43 form
.setText(WorkbenchUiPlugin
.getMessage("childNodesPageTitle"));
44 Composite innerBox
= form
.getBody();
45 // Composite innerBox = new Composite(body, SWT.NO_FOCUS);
46 GridLayout twt
= new GridLayout(1, false);
47 twt
.marginWidth
= twt
.marginHeight
= 5;
48 innerBox
.setLayout(twt
);
49 if (!currentNode
.hasNodes()) {
50 managedForm
.getToolkit().createLabel(innerBox
, WorkbenchUiPlugin
.getMessage("warningNoChildNode"));
52 nodeContentProvider
= new JcrTreeContentProvider();
53 nodesViewer
= createNodeViewer(innerBox
, nodeContentProvider
);
54 nodesViewer
.setInput(currentNode
);
56 } catch (Exception e
) {
57 throw new EclipseUiException("Cannot create children page for " + currentNode
, e
);
61 protected TreeViewer
createNodeViewer(Composite parent
, final ITreeContentProvider nodeContentProvider
) {
63 final TreeViewer tmpNodeViewer
= new TreeViewer(parent
, SWT
.BORDER
);
64 Tree tree
= tmpNodeViewer
.getTree();
65 tree
.setLinesVisible(true);
66 tmpNodeViewer
.getTree().setLayoutData(EclipseUiUtils
.fillAll());
67 tmpNodeViewer
.setContentProvider(nodeContentProvider
);
68 tmpNodeViewer
.setLabelProvider(new NodeLabelProvider());
69 tmpNodeViewer
.addDoubleClickListener(new DClickListener());
73 public class DClickListener
implements IDoubleClickListener
{
75 public void doubleClick(DoubleClickEvent event
) {
76 if (event
.getSelection() == null || event
.getSelection().isEmpty())
78 Object obj
= ((IStructuredSelection
) event
.getSelection()).getFirstElement();
79 if (obj
instanceof Node
) {
80 Node node
= (Node
) obj
;
82 GenericNodeEditorInput gnei
= new GenericNodeEditorInput(node
);
83 WorkbenchUiPlugin
.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage()
84 .openEditor(gnei
, DefaultNodeEditor
.ID
);
85 } catch (PartInitException pie
) {
86 throw new EclipseUiException("Cannot open editor for " + node
, pie
);