]> git.argeo.org Git - lgpl/argeo-commons.git/blob - browser/NodeLabelProvider.java
Prepare next development cycle
[lgpl/argeo-commons.git] / browser / NodeLabelProvider.java
1 package org.argeo.jcr.ui.explorer.browser;
2
3 import javax.jcr.Node;
4 import javax.jcr.RepositoryException;
5 import javax.jcr.nodetype.NodeType;
6
7 import org.argeo.ArgeoException;
8 import org.argeo.eclipse.ui.jcr.DefaultNodeLabelProvider;
9 import org.argeo.eclipse.ui.jcr.JcrUiPlugin;
10 import org.argeo.jcr.ui.explorer.model.RepositoriesNode;
11 import org.argeo.jcr.ui.explorer.model.RepositoryNode;
12 import org.argeo.jcr.ui.explorer.model.SingleJcrNode;
13 import org.argeo.jcr.ui.explorer.model.WorkspaceNode;
14 import org.eclipse.swt.graphics.Image;
15
16 public class NodeLabelProvider extends DefaultNodeLabelProvider {
17 // Images
18 public final static Image REPOSITORIES = JcrUiPlugin.getImageDescriptor(
19 "icons/repositories.gif").createImage();
20
21 public String getText(Object element) {
22 try {
23 if (element instanceof SingleJcrNode) {
24 SingleJcrNode sjn = (SingleJcrNode) element;
25 return getText(sjn.getNode());
26 } else
27 return super.getText(element);
28 } catch (RepositoryException e) {
29 throw new ArgeoException(
30 "Unexpected JCR error while getting node name.");
31 }
32 }
33
34 protected String getText(Node node) throws RepositoryException {
35 String label = node.getName();
36 StringBuffer mixins = new StringBuffer("");
37 for (NodeType type : node.getMixinNodeTypes())
38 mixins.append(' ').append(type.getName());
39
40 return label + " [" + node.getPrimaryNodeType().getName() + mixins
41 + "]";
42 }
43
44 @Override
45 public Image getImage(Object element) {
46 if (element instanceof RepositoryNode) {
47 if (((RepositoryNode) element).getDefaultSession() == null)
48 return RepositoryNode.REPOSITORY_DISCONNECTED;
49 else
50 return RepositoryNode.REPOSITORY_CONNECTED;
51 } else if (element instanceof WorkspaceNode) {
52 if (((WorkspaceNode) element).getSession() == null)
53 return WorkspaceNode.WORKSPACE_DISCONNECTED;
54 else
55 return WorkspaceNode.WORKSPACE_CONNECTED;
56 } else if (element instanceof RepositoriesNode) {
57 return REPOSITORIES;
58 } else if (element instanceof SingleJcrNode)
59 try {
60 return super.getImage(((SingleJcrNode) element).getNode());
61 } catch (RepositoryException e) {
62 return null;
63 }
64 return super.getImage(element);
65 }
66
67 }