View Javadoc
1   /*
2    * Copyright (C) 2007-2012 Argeo GmbH
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *         http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.argeo.eclipse.ui.jcr;
17  
18  import javax.jcr.Node;
19  import javax.jcr.Property;
20  import javax.jcr.RepositoryException;
21  import javax.jcr.nodetype.NodeType;
22  
23  import org.argeo.eclipse.ui.EclipseUiException;
24  import org.eclipse.jface.viewers.ColumnLabelProvider;
25  import org.eclipse.swt.graphics.Image;
26  
27  /**
28   * Default label provider to manage node and corresponding UI objects. It
29   * provides reasonable overwrite-able default for known JCR types.
30   */
31  public class DefaultNodeLabelProvider extends ColumnLabelProvider {
32  	private static final long serialVersionUID = 1216182332792151235L;
33  
34  	public String getText(Object element) {
35  		try {
36  			if (element instanceof Node) {
37  				return getText((Node) element);
38  			} else if (element instanceof WrappedNode) {
39  				return getText(((WrappedNode) element).getNode());
40  			} else if (element instanceof NodesWrapper) {
41  				return getText(((NodesWrapper) element).getNode());
42  			}
43  			return super.getText(element);
44  		} catch (RepositoryException e) {
45  			throw new EclipseUiException("Cannot get text for of " + element, e);
46  		}
47  	}
48  
49  	protected String getText(Node node) throws RepositoryException {
50  		if (node.isNodeType(NodeType.MIX_TITLE)
51  				&& node.hasProperty(Property.JCR_TITLE))
52  			return node.getProperty(Property.JCR_TITLE).getString();
53  		else
54  			return node.getName();
55  	}
56  
57  	@Override
58  	public Image getImage(Object element) {
59  		try {
60  			if (element instanceof Node) {
61  				return getImage((Node) element);
62  			} else if (element instanceof WrappedNode) {
63  				return getImage(((WrappedNode) element).getNode());
64  			} else if (element instanceof NodesWrapper) {
65  				return getImage(((NodesWrapper) element).getNode());
66  			}
67  		} catch (RepositoryException e) {
68  			throw new EclipseUiException("Cannot retrieve image for " + element, e);
69  		}
70  		return super.getImage(element);
71  	}
72  
73  	protected Image getImage(Node node) throws RepositoryException {
74  		// FIXME who uses that?
75  		return null;
76  	}
77  
78  	@Override
79  	public String getToolTipText(Object element) {
80  		try {
81  			if (element instanceof Node) {
82  				return getToolTipText((Node) element);
83  			} else if (element instanceof WrappedNode) {
84  				return getToolTipText(((WrappedNode) element).getNode());
85  			} else if (element instanceof NodesWrapper) {
86  				return getToolTipText(((NodesWrapper) element).getNode());
87  			}
88  		} catch (RepositoryException e) {
89  			throw new EclipseUiException("Cannot get tooltip for " + element, e);
90  		}
91  		return super.getToolTipText(element);
92  	}
93  
94  	protected String getToolTipText(Node node) throws RepositoryException {
95  		return null;
96  	}
97  }