]> git.argeo.org Git - gpl/argeo-suite.git/blob - ContentEntryArea.java
4c8b041c949a1f558b435a843e19fe737a4b4961
[gpl/argeo-suite.git] / ContentEntryArea.java
1 package org.argeo.library.ui;
2
3 import java.util.SortedMap;
4 import java.util.TreeMap;
5
6 import javax.jcr.Node;
7 import javax.jcr.NodeIterator;
8 import javax.jcr.RepositoryException;
9 import javax.jcr.Session;
10 import javax.jcr.nodetype.NodeType;
11 import javax.jcr.query.Query;
12
13 import org.argeo.cms.ui.CmsUiProvider;
14 import org.argeo.cms.ui.util.CmsUiUtils;
15 import org.argeo.entity.EntityType;
16 import org.argeo.jcr.Jcr;
17 import org.argeo.jcr.JcrException;
18 import org.argeo.suite.ui.widgets.TreeOrSearchArea;
19 import org.eclipse.jface.viewers.ITreeContentProvider;
20 import org.eclipse.jface.viewers.Viewer;
21 import org.eclipse.swt.SWT;
22 import org.eclipse.swt.layout.GridLayout;
23 import org.eclipse.swt.widgets.Composite;
24 import org.eclipse.swt.widgets.Control;
25 import org.eclipse.swt.widgets.Label;
26
27 public class ContentEntryArea implements CmsUiProvider {
28
29 @Override
30 public Control createUi(Composite parent, Node context) throws RepositoryException {
31 parent.setLayout(new GridLayout());
32 Ui ui = new Ui(parent, SWT.NONE);
33 ui.setLayoutData(CmsUiUtils.fillAll());
34
35 ui.getTreeViewer().setContentProvider(new SpacesContentProvider());
36 ui.getTreeViewer().setInput(context.getSession());
37 return ui;
38 }
39
40 protected boolean isLeaf(Node node) {
41 return Jcr.isNodeType(node, EntityType.entity.get()) || Jcr.isNodeType(node, NodeType.NT_FILE);
42 }
43
44 class Ui extends TreeOrSearchArea {
45
46 public Ui(Composite parent, int style) {
47 super(parent, style);
48 }
49
50 }
51
52 class SpacesContentProvider implements ITreeContentProvider {
53
54 @Override
55 public Object[] getElements(Object inputElement) {
56 Session session = (Session) inputElement;
57 try {
58 Query query = session.getWorkspace().getQueryManager()
59 .createQuery("SELECT * FROM [" + EntityType.space.get() + "]", Query.JCR_SQL2);
60 NodeIterator spacesIt = query.execute().getNodes();
61 SortedMap<String, Node> map = new TreeMap<>();
62 while (spacesIt.hasNext()) {
63 Node space = spacesIt.nextNode();
64 String path = space.getPath();
65 map.put(path, space);
66 }
67 return map.values().toArray();
68 } catch (RepositoryException e) {
69 throw new JcrException(e);
70 }
71 }
72
73 @Override
74 public Object[] getChildren(Object parentElement) {
75 Node parent = (Node) parentElement;
76 if (isLeaf(parent))
77 return null;
78 return Jcr.getNodes(parent).toArray();
79 }
80
81 @Override
82 public Object getParent(Object element) {
83 Node node = (Node) element;
84 return Jcr.getParent(node);
85 }
86
87 @Override
88 public boolean hasChildren(Object element) {
89 Node node = (Node) element;
90 return !isLeaf(node);
91 }
92
93 @Override
94 public void dispose() {
95 }
96
97 @Override
98 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
99 }
100
101 }
102
103 }