]> 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.JcrImages;
10 import org.argeo.jcr.ui.explorer.model.RemoteRepositoryNode;
11 import org.argeo.jcr.ui.explorer.model.RepositoriesNode;
12 import org.argeo.jcr.ui.explorer.model.RepositoryNode;
13 import org.argeo.jcr.ui.explorer.model.SingleJcrNode;
14 import org.argeo.jcr.ui.explorer.model.WorkspaceNode;
15 import org.eclipse.swt.graphics.Image;
16
17 public class NodeLabelProvider extends DefaultNodeLabelProvider {
18 // Images
19
20 public String getText(Object element) {
21 try {
22 if (element instanceof SingleJcrNode) {
23 SingleJcrNode sjn = (SingleJcrNode) element;
24 return getText(sjn.getNode());
25 } else
26 return super.getText(element);
27 } catch (RepositoryException e) {
28 throw new ArgeoException(
29 "Unexpected JCR error while getting node name.");
30 }
31 }
32
33 protected String getText(Node node) throws RepositoryException {
34 String label = node.getName();
35 StringBuffer mixins = new StringBuffer("");
36 for (NodeType type : node.getMixinNodeTypes())
37 mixins.append(' ').append(type.getName());
38
39 return label + " [" + node.getPrimaryNodeType().getName() + mixins
40 + "]";
41 }
42
43 @Override
44 public Image getImage(Object element) {
45 if (element instanceof RemoteRepositoryNode) {
46 if (((RemoteRepositoryNode) element).getDefaultSession() == null)
47 return JcrImages.REMOTE_DISCONNECTED;
48 else
49 return JcrImages.REMOTE_CONNECTED;
50 } else if (element instanceof RepositoryNode) {
51 if (((RepositoryNode) element).getDefaultSession() == null)
52 return JcrImages.REPOSITORY_DISCONNECTED;
53 else
54 return JcrImages.REPOSITORY_CONNECTED;
55 } else if (element instanceof WorkspaceNode) {
56 if (((WorkspaceNode) element).getSession() == null)
57 return JcrImages.WORKSPACE_DISCONNECTED;
58 else
59 return JcrImages.WORKSPACE_CONNECTED;
60 } else if (element instanceof RepositoriesNode) {
61 return JcrImages.REPOSITORIES;
62 } else if (element instanceof SingleJcrNode)
63 try {
64 return super.getImage(((SingleJcrNode) element).getNode());
65 } catch (RepositoryException e) {
66 return null;
67 }
68 return super.getImage(element);
69 }
70
71 }