package org.argeo.eclipse.ui.jcr.browser; import javax.jcr.Node; import javax.jcr.RepositoryException; import javax.jcr.nodetype.NodeType; import org.argeo.ArgeoException; import org.argeo.eclipse.ui.jcr.JcrUiPlugin; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.graphics.Image; public class NodeLabelProvider extends LabelProvider { // Images public final static Image NODE = JcrUiPlugin.getImageDescriptor( "icons/node.gif").createImage(); public final static Image FOLDER = JcrUiPlugin.getImageDescriptor( "icons/folder.gif").createImage(); public final static Image FILE = JcrUiPlugin.getImageDescriptor( "icons/file.gif").createImage(); public final static Image BINARY = JcrUiPlugin.getImageDescriptor( "icons/binary.png").createImage(); public String getText(Object element) { try { if (element instanceof Node) { Node node = (Node) element; String label = node.getName(); // try { // Item primaryItem = node.getPrimaryItem(); // label = primaryItem instanceof Property ? ((Property) // primaryItem) // .getValue().getString() // + " (" // + node.getName() // + ")" : node.getName(); // } catch (RepositoryException e) { // label = node.getName(); // } StringBuffer mixins = new StringBuffer(""); for (NodeType type : node.getMixinNodeTypes()) mixins.append(' ').append(type.getName()); return label + " [" + node.getPrimaryNodeType().getName() + mixins + "]"; } return element.toString(); } catch (RepositoryException e) { throw new ArgeoException("Cannot get text for of " + element, e); } } @Override public Image getImage(Object element) { if (element instanceof Node) { Node node = (Node) element; try { if (node.getPrimaryNodeType().isNodeType(NodeType.NT_FOLDER)) return FOLDER; else if (node.getPrimaryNodeType().isNodeType(NodeType.NT_FILE)) return FILE; else if (node.getPrimaryNodeType().isNodeType( NodeType.NT_RESOURCE)) return BINARY; } catch (RepositoryException e) { // silent } return NODE; } else if (element instanceof RepositoryNode) { if (((RepositoryNode) element).getDefaultSession() == null) return RepositoryNode.REPOSITORY_DISCONNECTED; else return RepositoryNode.REPOSITORY_CONNECTED; } else if (element instanceof WorkspaceNode) { if (((WorkspaceNode) element).getSession() == null) return WorkspaceNode.WORKSPACE_DISCONNECTED; else return WorkspaceNode.WORKSPACE_CONNECTED; } return super.getImage(element); } }