]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.ui/src/org/argeo/cms/ui/jcr/NodeLabelProvider.java
1 package org
.argeo
.cms
.ui
.jcr
;
3 import javax
.jcr
.NamespaceException
;
5 import javax
.jcr
.Property
;
6 import javax
.jcr
.RepositoryException
;
7 import javax
.jcr
.nodetype
.NodeType
;
9 import org
.apache
.commons
.logging
.Log
;
10 import org
.apache
.commons
.logging
.LogFactory
;
11 import org
.argeo
.cms
.ui
.jcr
.model
.RemoteRepositoryElem
;
12 import org
.argeo
.cms
.ui
.jcr
.model
.RepositoriesElem
;
13 import org
.argeo
.cms
.ui
.jcr
.model
.RepositoryElem
;
14 import org
.argeo
.cms
.ui
.jcr
.model
.SingleJcrNodeElem
;
15 import org
.argeo
.cms
.ui
.jcr
.model
.WorkspaceElem
;
16 import org
.argeo
.eclipse
.ui
.EclipseUiException
;
17 import org
.eclipse
.jface
.viewers
.ColumnLabelProvider
;
18 import org
.eclipse
.swt
.graphics
.Image
;
20 /** Provides reasonable defaults for know JCR types. */
21 public class NodeLabelProvider
extends ColumnLabelProvider
{
22 private static final long serialVersionUID
= -3662051696443321843L;
24 private final static Log log
= LogFactory
.getLog(NodeLabelProvider
.class);
26 public String
getText(Object element
) {
28 if (element
instanceof SingleJcrNodeElem
) {
29 SingleJcrNodeElem sjn
= (SingleJcrNodeElem
) element
;
30 return getText(sjn
.getNode());
31 } else if (element
instanceof Node
) {
32 return getText((Node
) element
);
34 return super.getText(element
);
35 } catch (RepositoryException e
) {
36 throw new EclipseUiException("Unexpected JCR error while getting node name.");
40 protected String
getText(Node node
) throws RepositoryException
{
41 String label
= node
.getName();
42 StringBuffer mixins
= new StringBuffer("");
43 for (NodeType type
: node
.getMixinNodeTypes())
44 mixins
.append(' ').append(type
.getName());
46 return label
+ " [" + node
.getPrimaryNodeType().getName() + mixins
+ "]";
50 public Image
getImage(Object element
) {
51 if (element
instanceof RemoteRepositoryElem
) {
52 if (((RemoteRepositoryElem
) element
).isConnected())
53 return JcrImages
.REMOTE_CONNECTED
;
55 return JcrImages
.REMOTE_DISCONNECTED
;
56 } else if (element
instanceof RepositoryElem
) {
57 if (((RepositoryElem
) element
).isConnected())
58 return JcrImages
.REPOSITORY_CONNECTED
;
60 return JcrImages
.REPOSITORY_DISCONNECTED
;
61 } else if (element
instanceof WorkspaceElem
) {
62 if (((WorkspaceElem
) element
).isConnected())
63 return JcrImages
.WORKSPACE_CONNECTED
;
65 return JcrImages
.WORKSPACE_DISCONNECTED
;
66 } else if (element
instanceof RepositoriesElem
) {
67 return JcrImages
.REPOSITORIES
;
68 } else if (element
instanceof SingleJcrNodeElem
) {
69 Node nodeElem
= ((SingleJcrNodeElem
) element
).getNode();
70 return getImage(nodeElem
);
72 // if (element instanceof Node) {
73 // return getImage((Node) element);
74 // } else if (element instanceof WrappedNode) {
75 // return getImage(((WrappedNode) element).getNode());
76 // } else if (element instanceof NodesWrapper) {
77 // return getImage(((NodesWrapper) element).getNode());
81 // return super.getImage();
82 // } catch (RepositoryException e) {
85 return super.getImage(element
);
88 protected Image
getImage(Node node
) {
90 if (node
.getPrimaryNodeType().isNodeType(NodeType
.NT_FILE
))
91 return JcrImages
.FILE
;
92 else if (node
.getPrimaryNodeType().isNodeType(NodeType
.NT_FOLDER
))
93 return JcrImages
.FOLDER
;
94 else if (node
.getPrimaryNodeType().isNodeType(NodeType
.NT_RESOURCE
))
95 return JcrImages
.BINARY
;
97 // TODO check workspace type?
98 if (node
.getDepth() == 1 && node
.hasProperty(Property
.JCR_ID
))
99 return JcrImages
.HOME
;
102 // if (node.hasProperty(LdapAttrs.uid.property()) && node.isNodeType(NodeTypes.NODE_USER_HOME))
103 // return JcrImages.HOME;
104 } catch (NamespaceException e
) {
105 // node namespace is not registered in this repo
107 return JcrImages
.NODE
;
108 } catch (RepositoryException e
) {
109 log
.warn("Error while retrieving type for " + node
+ " in order to display corresponding image");