1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.xmlhammer.gui.overview;
22
23 import java.awt.Component;
24
25 import javax.swing.ImageIcon;
26 import javax.swing.JLabel;
27 import javax.swing.JTree;
28 import javax.swing.tree.DefaultTreeCellRenderer;
29
30 import org.bounce.QIcon;
31 import org.bounce.image.ImageLoader;
32
33 /***
34 * The cell renderer for a XmlElementNode.
35 *
36 * @version $Revision: 1.6 $, $Date: 2007/07/04 19:42:51 $
37 * @author Edwin Dankert <edankert@gmail.com>
38 */
39 public class OverviewNodeRenderer extends DefaultTreeCellRenderer {
40 private static final long serialVersionUID = 1330322329212308384L;
41 private static final ImageIcon ERROR_ICON = ImageLoader.get().getImage( "/org/xmlhammer/gui/icons/ovr16/error_ovr.gif");
42
43 private OverviewNode result = null;
44
45 /***
46 * Configures the renderer based on the passed in components.
47 * The value is set from messaging the tree with
48 * <code>convertValueToText</code>, which ultimately invokes
49 * <code>toString</code> on <code>value</code>.
50 * The foreground color is set based on the selection and the icon
51 * is set based on on leaf and expanded.
52 */
53 public Component getTreeCellRendererComponent( JTree tree, Object value,
54 boolean selected, boolean expanded, boolean leaf,
55 int row, boolean focus) {
56 JLabel label = (JLabel)super.getTreeCellRendererComponent( tree, value, selected, expanded, leaf, row, focus);
57 label.setIconTextGap( 5);
58
59 if ( value instanceof OverviewNode) {
60 result = (OverviewNode)value;
61
62 label.setText(result.getNodeName());
63
64 if (isError(result)) {
65 label.setIcon(new QIcon(result.getNodeIcon(), ERROR_ICON, QIcon.SOUTH_WEST));
66 } else {
67 label.setIcon(result.getNodeIcon());
68 }
69 } else {
70 label.setText(value.toString());
71 }
72
73
74
75
76
77
78
79
80
81
82
83
84
85 return label;
86 }
87
88 public static boolean isError(OverviewNode node) {
89 if (node.getError() == null) {
90 for (OverviewNode child : node.getChildNodes()) {
91 if (isError(child)) {
92 return true;
93 }
94 }
95
96 return false;
97 }
98
99 return true;
100 }
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117 }