]> git.argeo.org Git - lgpl/argeo-commons.git/blob - editors/ChildNodesPage.java
Prepare next development cycle
[lgpl/argeo-commons.git] / editors / ChildNodesPage.java
1 package org.argeo.jcr.ui.explorer.editors;
2
3 import javax.jcr.Node;
4
5 import org.apache.commons.logging.Log;
6 import org.apache.commons.logging.LogFactory;
7 import org.argeo.ArgeoException;
8 import org.argeo.jcr.ui.explorer.JcrExplorerPlugin;
9 import org.argeo.jcr.ui.explorer.browser.NodeLabelProvider;
10 import org.argeo.jcr.ui.explorer.providers.SingleNodeAsTreeContentProvider;
11 import org.argeo.jcr.ui.explorer.utils.GenericNodeDoubleClickListener;
12 import org.eclipse.jface.viewers.ITreeContentProvider;
13 import org.eclipse.jface.viewers.TreeViewer;
14 import org.eclipse.swt.SWT;
15 import org.eclipse.swt.layout.GridData;
16 import org.eclipse.swt.layout.GridLayout;
17 import org.eclipse.swt.widgets.Composite;
18 import org.eclipse.ui.forms.IManagedForm;
19 import org.eclipse.ui.forms.editor.FormEditor;
20 import org.eclipse.ui.forms.editor.FormPage;
21 import org.eclipse.ui.forms.widgets.ScrolledForm;
22
23 /**
24 * List all childs of the current node and brings some browsing capabilities
25 * accross the repository
26 */
27 public class ChildNodesPage extends FormPage {
28 private final static Log log = LogFactory.getLog(ChildNodesPage.class);
29
30 // business objects
31 private Node currentNode;
32
33 // this page UI components
34 private SingleNodeAsTreeContentProvider nodeContentProvider;
35 private TreeViewer nodesViewer;
36
37 public ChildNodesPage(FormEditor editor, String title, Node currentNode) {
38 super(editor, "ChildNodesPage", title);
39 this.currentNode = currentNode;
40 }
41
42 protected void createFormContent(IManagedForm managedForm) {
43 try {
44 ScrolledForm form = managedForm.getForm();
45 Composite body = form.getBody();
46 GridLayout twt = new GridLayout(1, false);
47 twt.marginWidth = twt.marginHeight = 0;
48 body.setLayout(twt);
49 if (!currentNode.hasNodes()) {
50 managedForm.getToolkit().createLabel(body,
51 JcrExplorerPlugin.getMessage("warningNoChildNode"));
52 } else {
53
54 nodeContentProvider = new SingleNodeAsTreeContentProvider();
55 nodesViewer = createNodeViewer(body, nodeContentProvider);
56 nodesViewer.setInput(currentNode);
57 }
58 } catch (Exception e) {
59 throw new ArgeoException(
60 "Unexpected error while creating child node page", e);
61 }
62 }
63
64 protected TreeViewer createNodeViewer(Composite parent,
65 final ITreeContentProvider nodeContentProvider) {
66
67 final TreeViewer tmpNodeViewer = new TreeViewer(parent, SWT.MULTI);
68
69 tmpNodeViewer.getTree().setLayoutData(
70 new GridData(SWT.FILL, SWT.FILL, true, true));
71
72 tmpNodeViewer.setContentProvider(nodeContentProvider);
73 tmpNodeViewer.setLabelProvider(new NodeLabelProvider());
74 tmpNodeViewer
75 .addDoubleClickListener(new GenericNodeDoubleClickListener(
76 tmpNodeViewer));
77 return tmpNodeViewer;
78 }
79 }