]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.ui/src/org/argeo/cms/ui/jcr/NodeLabelProvider.java
765f3201a9612bf067966e76212a83232b29dca4
2 * Copyright (C) 2007-2012 Argeo GmbH
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org
.argeo
.cms
.ui
.jcr
;
18 import javax
.jcr
.NamespaceException
;
19 import javax
.jcr
.Node
;
20 import javax
.jcr
.RepositoryException
;
21 import javax
.jcr
.nodetype
.NodeType
;
23 import org
.apache
.commons
.logging
.Log
;
24 import org
.apache
.commons
.logging
.LogFactory
;
25 import org
.argeo
.cms
.ui
.jcr
.model
.RemoteRepositoryElem
;
26 import org
.argeo
.cms
.ui
.jcr
.model
.RepositoriesElem
;
27 import org
.argeo
.cms
.ui
.jcr
.model
.RepositoryElem
;
28 import org
.argeo
.cms
.ui
.jcr
.model
.SingleJcrNodeElem
;
29 import org
.argeo
.cms
.ui
.jcr
.model
.WorkspaceElem
;
30 import org
.argeo
.eclipse
.ui
.EclipseUiException
;
31 import org
.argeo
.naming
.LdapAttrs
;
32 import org
.argeo
.node
.NodeTypes
;
33 import org
.eclipse
.jface
.viewers
.ColumnLabelProvider
;
34 import org
.eclipse
.swt
.graphics
.Image
;
36 /** Provides reasonable defaults for know JCR types. */
37 public class NodeLabelProvider
extends ColumnLabelProvider
{
38 private static final long serialVersionUID
= -3662051696443321843L;
40 private final static Log log
= LogFactory
.getLog(NodeLabelProvider
.class);
42 public String
getText(Object element
) {
44 if (element
instanceof SingleJcrNodeElem
) {
45 SingleJcrNodeElem sjn
= (SingleJcrNodeElem
) element
;
46 return getText(sjn
.getNode());
47 } else if (element
instanceof Node
) {
48 return getText((Node
) element
);
50 return super.getText(element
);
51 } catch (RepositoryException e
) {
52 throw new EclipseUiException("Unexpected JCR error while getting node name.");
56 protected String
getText(Node node
) throws RepositoryException
{
57 String label
= node
.getName();
58 StringBuffer mixins
= new StringBuffer("");
59 for (NodeType type
: node
.getMixinNodeTypes())
60 mixins
.append(' ').append(type
.getName());
62 return label
+ " [" + node
.getPrimaryNodeType().getName() + mixins
+ "]";
66 public Image
getImage(Object element
) {
67 if (element
instanceof RemoteRepositoryElem
) {
68 if (((RemoteRepositoryElem
) element
).isConnected())
69 return JcrImages
.REMOTE_CONNECTED
;
71 return JcrImages
.REMOTE_DISCONNECTED
;
72 } else if (element
instanceof RepositoryElem
) {
73 if (((RepositoryElem
) element
).isConnected())
74 return JcrImages
.REPOSITORY_CONNECTED
;
76 return JcrImages
.REPOSITORY_DISCONNECTED
;
77 } else if (element
instanceof WorkspaceElem
) {
78 if (((WorkspaceElem
) element
).isConnected())
79 return JcrImages
.WORKSPACE_CONNECTED
;
81 return JcrImages
.WORKSPACE_DISCONNECTED
;
82 } else if (element
instanceof RepositoriesElem
) {
83 return JcrImages
.REPOSITORIES
;
84 } else if (element
instanceof SingleJcrNodeElem
) {
85 Node nodeElem
= ((SingleJcrNodeElem
) element
).getNode();
86 return getImage(nodeElem
);
88 // if (element instanceof Node) {
89 // return getImage((Node) element);
90 // } else if (element instanceof WrappedNode) {
91 // return getImage(((WrappedNode) element).getNode());
92 // } else if (element instanceof NodesWrapper) {
93 // return getImage(((NodesWrapper) element).getNode());
97 // return super.getImage();
98 // } catch (RepositoryException e) {
101 return super.getImage(element
);
104 protected Image
getImage(Node node
) {
106 if (node
.getPrimaryNodeType().isNodeType(NodeType
.NT_FILE
))
107 return JcrImages
.FILE
;
108 else if (node
.getPrimaryNodeType().isNodeType(NodeType
.NT_FOLDER
))
109 return JcrImages
.FOLDER
;
110 else if (node
.getPrimaryNodeType().isNodeType(NodeType
.NT_RESOURCE
))
111 return JcrImages
.BINARY
;
114 if (node
.hasProperty(LdapAttrs
.uid
.property()) && node
.isNodeType(NodeTypes
.NODE_USER_HOME
))
115 return JcrImages
.HOME
;
116 } catch (NamespaceException e
) {
117 // node namespace is not registered in this repo
119 return JcrImages
.NODE
;
120 } catch (RepositoryException e
) {
121 log
.warn("Error while retrieving type for " + node
+ " in order to display corresponding image");