X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=eclipse%2Fruntime%2Forg.argeo.eclipse.ui.jcr%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Feclipse%2Fui%2Fjcr%2Fbrowser%2FNodeLabelProvider.java;fp=eclipse%2Fruntime%2Forg.argeo.eclipse.ui.jcr%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Feclipse%2Fui%2Fjcr%2Fbrowser%2FNodeLabelProvider.java;h=3d5ef58a4296e550765e74376c36f01f21b9ddc6;hb=591e96576707e4139b142026a7d915ffdde1e223;hp=0000000000000000000000000000000000000000;hpb=80daa6e3d69f481a065119e4f28aceac3ff7c88e;p=lgpl%2Fargeo-commons.git diff --git a/eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/browser/NodeLabelProvider.java b/eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/browser/NodeLabelProvider.java new file mode 100644 index 000000000..3d5ef58a4 --- /dev/null +++ b/eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/browser/NodeLabelProvider.java @@ -0,0 +1,81 @@ +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); + } +}