]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.ui/src/org/argeo/cms/ui/jcr/JcrTreeContentProvider.java
Rename remote auth interfaces
[lgpl/argeo-commons.git] / org.argeo.cms.ui / src / org / argeo / cms / ui / jcr / JcrTreeContentProvider.java
1 package org.argeo.cms.ui.jcr;
2
3 import java.util.ArrayList;
4 import java.util.Arrays;
5 import java.util.List;
6
7 import javax.jcr.Node;
8 import javax.jcr.NodeIterator;
9 import javax.jcr.RepositoryException;
10
11 import org.argeo.eclipse.ui.EclipseUiException;
12 import org.argeo.eclipse.ui.jcr.util.JcrItemsComparator;
13 import org.eclipse.jface.viewers.ITreeContentProvider;
14 import org.eclipse.jface.viewers.Viewer;
15
16 /**
17 * Implementation of the {@code ITreeContentProvider} in order to display a
18 * single JCR node and its children in a tree like structure
19 */
20 public class JcrTreeContentProvider implements ITreeContentProvider {
21 private static final long serialVersionUID = -2128326504754297297L;
22 // private Node rootNode;
23 private JcrItemsComparator itemComparator = new JcrItemsComparator();
24
25 /**
26 * Sends back the first level of the Tree. input element must be a single node
27 * object
28 */
29 public Object[] getElements(Object inputElement) {
30 Node rootNode = (Node) inputElement;
31 return childrenNodes(rootNode);
32 }
33
34 public Object[] getChildren(Object parentElement) {
35 return childrenNodes((Node) parentElement);
36 }
37
38 public Object getParent(Object element) {
39 try {
40 Node node = (Node) element;
41 if (!node.getPath().equals("/"))
42 return node.getParent();
43 else
44 return null;
45 } catch (RepositoryException e) {
46 return null;
47 }
48 }
49
50 public boolean hasChildren(Object element) {
51 try {
52 return ((Node) element).hasNodes();
53 } catch (RepositoryException e) {
54 throw new EclipseUiException("Cannot check children existence on " + element, e);
55 }
56 }
57
58 protected Object[] childrenNodes(Node parentNode) {
59 try {
60 List<Node> children = new ArrayList<Node>();
61 NodeIterator nit = parentNode.getNodes();
62 while (nit.hasNext()) {
63 Node node = nit.nextNode();
64 // if (node.getName().startsWith("rep:") || node.getName().startsWith("jcr:")
65 // || node.getName().startsWith("nt:"))
66 // continue nodes;
67 children.add(node);
68 }
69 Node[] arr = children.toArray(new Node[0]);
70 Arrays.sort(arr, itemComparator);
71 return arr;
72 } catch (RepositoryException e) {
73 throw new EclipseUiException("Cannot list children of " + parentNode, e);
74 }
75 }
76
77 public void dispose() {
78 }
79
80 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
81 }
82 }