2 * Copyright (C) 2007-2012 Argeo GmbH
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org
.argeo
.cms
.ui
.workbench
.internal
.jcr
.parts
;
18 import javax
.jcr
.Node
;
20 import org
.argeo
.cms
.ui
.workbench
.WorkbenchUiPlugin
;
21 import org
.argeo
.cms
.ui
.workbench
.internal
.jcr
.NodeLabelProvider
;
22 import org
.argeo
.cms
.ui
.workbench
.internal
.jcr
.JcrTreeContentProvider
;
23 import org
.argeo
.cms
.ui
.workbench
.jcr
.DefaultNodeEditor
;
24 import org
.argeo
.eclipse
.ui
.EclipseUiException
;
25 import org
.argeo
.eclipse
.ui
.EclipseUiUtils
;
26 import org
.eclipse
.jface
.viewers
.DoubleClickEvent
;
27 import org
.eclipse
.jface
.viewers
.IDoubleClickListener
;
28 import org
.eclipse
.jface
.viewers
.IStructuredSelection
;
29 import org
.eclipse
.jface
.viewers
.ITreeContentProvider
;
30 import org
.eclipse
.jface
.viewers
.TreeViewer
;
31 import org
.eclipse
.swt
.SWT
;
32 import org
.eclipse
.swt
.layout
.GridLayout
;
33 import org
.eclipse
.swt
.widgets
.Composite
;
34 import org
.eclipse
.swt
.widgets
.Tree
;
35 import org
.eclipse
.ui
.PartInitException
;
36 import org
.eclipse
.ui
.forms
.IManagedForm
;
37 import org
.eclipse
.ui
.forms
.editor
.FormEditor
;
38 import org
.eclipse
.ui
.forms
.editor
.FormPage
;
39 import org
.eclipse
.ui
.forms
.widgets
.ScrolledForm
;
42 * List all childs of the current node and brings some browsing capabilities
43 * accross the repository
45 public class ChildNodesPage
extends FormPage
{
46 // private final static Log log = LogFactory.getLog(ChildNodesPage.class);
49 private Node currentNode
;
51 // this page UI components
52 private JcrTreeContentProvider nodeContentProvider
;
53 private TreeViewer nodesViewer
;
55 public ChildNodesPage(FormEditor editor
, String title
, Node currentNode
) {
56 super(editor
, "ChildNodesPage", title
);
57 this.currentNode
= currentNode
;
60 protected void createFormContent(IManagedForm managedForm
) {
62 ScrolledForm form
= managedForm
.getForm();
63 form
.setText(WorkbenchUiPlugin
.getMessage("childNodesPageTitle"));
64 Composite body
= form
.getBody();
65 GridLayout twt
= new GridLayout(1, false);
66 twt
.marginWidth
= twt
.marginHeight
= 5;
68 if (!currentNode
.hasNodes()) {
69 managedForm
.getToolkit().createLabel(body
,
70 WorkbenchUiPlugin
.getMessage("warningNoChildNode"));
72 nodeContentProvider
= new JcrTreeContentProvider();
73 nodesViewer
= createNodeViewer(body
, nodeContentProvider
);
74 nodesViewer
.setInput(currentNode
);
76 } catch (Exception e
) {
77 throw new EclipseUiException(
78 "Unexpected error while creating child node page", e
);
82 protected TreeViewer
createNodeViewer(Composite parent
,
83 final ITreeContentProvider nodeContentProvider
) {
85 final TreeViewer tmpNodeViewer
= new TreeViewer(parent
, SWT
.BORDER
);
86 Tree tree
= tmpNodeViewer
.getTree();
87 tree
.setLinesVisible(true);
88 tmpNodeViewer
.getTree().setLayoutData(EclipseUiUtils
.fillAll());
89 tmpNodeViewer
.setContentProvider(nodeContentProvider
);
90 tmpNodeViewer
.setLabelProvider(new NodeLabelProvider());
91 tmpNodeViewer
.addDoubleClickListener(new DClickListener());
95 public class DClickListener
implements IDoubleClickListener
{
97 public void doubleClick(DoubleClickEvent event
) {
98 if (event
.getSelection() == null || event
.getSelection().isEmpty())
100 Object obj
= ((IStructuredSelection
) event
.getSelection())
102 if (obj
instanceof Node
) {
103 Node node
= (Node
) obj
;
105 GenericNodeEditorInput gnei
= new GenericNodeEditorInput(
107 WorkbenchUiPlugin
.getDefault().getWorkbench()
108 .getActiveWorkbenchWindow().getActivePage()
109 .openEditor(gnei
, DefaultNodeEditor
.ID
);
110 } catch (PartInitException pie
) {
111 throw new EclipseUiException(
112 "Unexepected exception while opening node editor",