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