1 package org
.argeo
.cms
.ui
.jcr
;
3 import java
.util
.ArrayList
;
7 import javax
.jcr
.RepositoryException
;
8 import javax
.jcr
.nodetype
.NodeType
;
9 import javax
.jcr
.version
.Version
;
10 import javax
.jcr
.version
.VersionHistory
;
11 import javax
.jcr
.version
.VersionIterator
;
12 import javax
.jcr
.version
.VersionManager
;
14 import org
.argeo
.eclipse
.ui
.EclipseUiException
;
15 import org
.eclipse
.jface
.viewers
.ITreeContentProvider
;
16 import org
.eclipse
.jface
.viewers
.Viewer
;
19 * Display some version information of a JCR full versionable node in a tree
22 public class FullVersioningTreeContentProvider
implements ITreeContentProvider
{
23 private static final long serialVersionUID
= 8691772509491211112L;
26 * Sends back the first level of the Tree. input element must be a single
29 public Object
[] getElements(Object inputElement
) {
31 Node rootNode
= (Node
) inputElement
;
32 String curPath
= rootNode
.getPath();
33 VersionManager vm
= rootNode
.getSession().getWorkspace()
36 VersionHistory vh
= vm
.getVersionHistory(curPath
);
37 List
<Version
> result
= new ArrayList
<Version
>();
38 VersionIterator vi
= vh
.getAllLinearVersions();
40 while (vi
.hasNext()) {
41 result
.add(vi
.nextVersion());
43 return result
.toArray();
44 } catch (RepositoryException re
) {
45 throw new EclipseUiException(
46 "Unexpected error while getting version elements", re
);
50 public Object
[] getChildren(Object parentElement
) {
52 if (parentElement
instanceof Version
) {
53 List
<Node
> tmp
= new ArrayList
<Node
>();
54 tmp
.add(((Version
) parentElement
).getFrozenNode());
57 } catch (RepositoryException re
) {
58 throw new EclipseUiException("Unexpected error while getting child "
59 + "node for version element", re
);
64 public Object
getParent(Object element
) {
66 // this will not work in a simpleVersionning environment, parent is
68 if (element
instanceof Node
69 && ((Node
) element
).isNodeType(NodeType
.NT_FROZEN_NODE
)) {
70 Node node
= (Node
) element
;
71 return node
.getParent();
74 } catch (RepositoryException e
) {
79 public boolean hasChildren(Object element
) {
81 if (element
instanceof Version
)
83 else if (element
instanceof Node
)
84 return ((Node
) element
).hasNodes();
87 } catch (RepositoryException e
) {
88 throw new EclipseUiException("Cannot check children of " + element
, e
);
92 public void dispose() {
95 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {