]> git.argeo.org Git - gpl/argeo-slc.git/blob - legacy/argeo-commons/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/ChildNodesPage.java
Adapt to changes in Argeo Commons
[gpl/argeo-slc.git] / legacy / argeo-commons / org.argeo.cms.ui.workbench / src / org / argeo / cms / ui / workbench / internal / jcr / parts / ChildNodesPage.java
1 package org.argeo.cms.ui.workbench.internal.jcr.parts;
2
3 import javax.jcr.Node;
4
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;
25
26 /** List all children of the current node */
27 public class ChildNodesPage extends FormPage {
28 // private final static Log log = LogFactory.getLog(ChildNodesPage.class);
29
30 private Node currentNode;
31
32 private JcrTreeContentProvider nodeContentProvider;
33 private TreeViewer nodesViewer;
34
35 public ChildNodesPage(FormEditor editor, String title, Node currentNode) {
36 super(editor, "ChildNodesPage", title);
37 this.currentNode = currentNode;
38 }
39
40 protected void createFormContent(IManagedForm managedForm) {
41 try {
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"));
51 } else {
52 nodeContentProvider = new JcrTreeContentProvider();
53 nodesViewer = createNodeViewer(innerBox, nodeContentProvider);
54 nodesViewer.setInput(currentNode);
55 }
56 } catch (Exception e) {
57 throw new EclipseUiException("Cannot create children page for " + currentNode, e);
58 }
59 }
60
61 protected TreeViewer createNodeViewer(Composite parent, final ITreeContentProvider nodeContentProvider) {
62
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());
70 return tmpNodeViewer;
71 }
72
73 public class DClickListener implements IDoubleClickListener {
74
75 public void doubleClick(DoubleClickEvent event) {
76 if (event.getSelection() == null || event.getSelection().isEmpty())
77 return;
78 Object obj = ((IStructuredSelection) event.getSelection()).getFirstElement();
79 if (obj instanceof Node) {
80 Node node = (Node) obj;
81 try {
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);
87 }
88 }
89 }
90 }
91 }