]> git.argeo.org Git - lgpl/argeo-commons.git/blob - NodeLabelProvider.java
a3ff38fc0e103f5ac106b92b5bf3921af4e1390d
[lgpl/argeo-commons.git] / NodeLabelProvider.java
1 package org.argeo.eclipse.ui.jcr.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.JcrUiPlugin;
9 import org.argeo.jcr.ArgeoTypes;
10 import org.argeo.jcr.RepositoryRegister;
11 import org.eclipse.jface.viewers.LabelProvider;
12 import org.eclipse.swt.graphics.Image;
13
14 public class NodeLabelProvider extends LabelProvider {
15 // Images
16 public final static Image NODE = JcrUiPlugin.getImageDescriptor(
17 "icons/node.gif").createImage();
18 public final static Image FOLDER = JcrUiPlugin.getImageDescriptor(
19 "icons/folder.gif").createImage();
20 public final static Image FILE = JcrUiPlugin.getImageDescriptor(
21 "icons/file.gif").createImage();
22 public final static Image BINARY = JcrUiPlugin.getImageDescriptor(
23 "icons/binary.png").createImage();
24 public final static Image HOME = JcrUiPlugin.getImageDescriptor(
25 "icons/home.gif").createImage();
26 public final static Image REPOSITORIES = JcrUiPlugin.getImageDescriptor(
27 "icons/repositories.gif").createImage();
28
29 public String getText(Object element) {
30 try {
31 if (element instanceof Node) {
32 Node node = (Node) element;
33 String label = node.getName();
34 StringBuffer mixins = new StringBuffer("");
35 for (NodeType type : node.getMixinNodeTypes())
36 mixins.append(' ').append(type.getName());
37
38 return label + " [" + node.getPrimaryNodeType().getName()
39 + mixins + "]";
40 } else if (element instanceof RepositoryRegister) {
41 return "Repositories";
42 }
43 return element.toString();
44 } catch (RepositoryException e) {
45 throw new ArgeoException("Cannot get text for of " + element, e);
46 }
47 }
48
49 @Override
50 public Image getImage(Object element) {
51 if (element instanceof Node) {
52 Node node = (Node) element;
53 try {
54 // optimized order
55 if (node.getPrimaryNodeType().isNodeType(NodeType.NT_FILE))
56 return FILE;
57 else if (node.getPrimaryNodeType().isNodeType(
58 NodeType.NT_FOLDER))
59 return FOLDER;
60 else if (node.getPrimaryNodeType().isNodeType(
61 NodeType.NT_RESOURCE))
62 return BINARY;
63 else if (node.isNodeType(ArgeoTypes.ARGEO_USER_HOME))
64 return HOME;
65 } catch (RepositoryException e) {
66 // silent
67 }
68 return NODE;
69 } else if (element instanceof RepositoryNode) {
70 if (((RepositoryNode) element).getDefaultSession() == null)
71 return RepositoryNode.REPOSITORY_DISCONNECTED;
72 else
73 return RepositoryNode.REPOSITORY_CONNECTED;
74 } else if (element instanceof WorkspaceNode) {
75 if (((WorkspaceNode) element).getSession() == null)
76 return WorkspaceNode.WORKSPACE_DISCONNECTED;
77 else
78 return WorkspaceNode.WORKSPACE_CONNECTED;
79 } else if (element instanceof RepositoryRegister) {
80 return REPOSITORIES;
81 }
82 return super.getImage(element);
83 }
84
85 }