1 package org
.argeo
.jcr
.ui
.explorer
.browser
;
3 import java
.util
.ArrayList
;
4 import java
.util
.Arrays
;
8 import javax
.jcr
.Session
;
10 import org
.apache
.commons
.logging
.Log
;
11 import org
.apache
.commons
.logging
.LogFactory
;
12 import org
.argeo
.eclipse
.ui
.TreeParent
;
13 import org
.argeo
.jcr
.ArgeoJcrConstants
;
14 import org
.argeo
.jcr
.JcrUtils
;
15 import org
.argeo
.jcr
.RepositoryRegister
;
16 import org
.argeo
.jcr
.security
.JcrKeyring
;
17 import org
.argeo
.jcr
.ui
.explorer
.model
.RepositoriesNode
;
18 import org
.argeo
.jcr
.ui
.explorer
.model
.SingleJcrNode
;
19 import org
.argeo
.jcr
.ui
.explorer
.utils
.TreeObjectsComparator
;
20 import org
.eclipse
.jface
.viewers
.ITreeContentProvider
;
21 import org
.eclipse
.jface
.viewers
.Viewer
;
24 * Implementation of the {@code ITreeContentProvider} to display multiple
25 * repository environment in a tree like structure
28 public class NodeContentProvider
implements ITreeContentProvider
{
29 private final static Log log
= LogFactory
.getLog(NodeContentProvider
.class);
32 private RepositoryRegister repositoryRegister
;
33 private Session userSession
;
34 private JcrKeyring jcrKeyring
;
37 private boolean sortChildren
= true;
38 private TreeObjectsComparator itemComparator
= new TreeObjectsComparator();
40 public NodeContentProvider(JcrKeyring jcrKeyring
,
41 RepositoryRegister repositoryRegister
) {
42 this.userSession
= jcrKeyring
!= null ? jcrKeyring
.getSession() : null;
43 this.jcrKeyring
= jcrKeyring
;
44 this.repositoryRegister
= repositoryRegister
;
48 * Sends back the first level of the Tree. Independent from inputElement
51 public Object
[] getElements(Object inputElement
) {
52 List
<Object
> objs
= new ArrayList
<Object
>();
53 if (userSession
!= null) {
54 Node userHome
= JcrUtils
.getUserHome(userSession
);
56 // TODO : find a way to dynamically get alias for the node
57 objs
.add(new SingleJcrNode(null, userHome
, userSession
58 .getUserID(), ArgeoJcrConstants
.ALIAS_NODE
));
60 if (repositoryRegister
!= null)
61 objs
.add(new RepositoriesNode("Repositories", repositoryRegister
,
63 return objs
.toArray();
66 public Object
[] getChildren(Object parentElement
) {
67 if (parentElement
instanceof TreeParent
) {
69 // TreeParent[] arr = (TreeParent[]) ((TreeParent)
72 Object
[] tmpArr
= ((TreeParent
) parentElement
).getChildren();
73 TreeParent
[] arr
= new TreeParent
[tmpArr
.length
];
74 for (int i
= 0; i
< tmpArr
.length
; i
++)
75 arr
[i
] = (TreeParent
) tmpArr
[i
];
77 Arrays
.sort(arr
, itemComparator
);
80 return ((TreeParent
) parentElement
).getChildren();
87 public Object
getParent(Object element
) {
88 if (element
instanceof TreeParent
) {
89 return ((TreeParent
) element
).getParent();
94 public boolean hasChildren(Object element
) {
95 if (element
instanceof RepositoriesNode
) {
96 RepositoryRegister rr
= ((RepositoriesNode
) element
)
97 .getRepositoryRegister();
98 return rr
.getRepositories().size() > 0;
99 } else if (element
instanceof TreeParent
) {
100 TreeParent tp
= (TreeParent
) element
;
101 return tp
.hasChildren();
106 public void dispose() {
109 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {