1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.log4j.lf5.viewer.categoryexplorer;
18
19 import javax.swing.*;
20 import javax.swing.tree.DefaultTreeCellRenderer;
21 import java.awt.*;
22 import java.net.URL;
23
24 /***
25 * CategoryNodeRenderer
26 *
27 * @author Michael J. Sikorsky
28 * @author Robert Shaw
29 */
30
31
32
33 public class CategoryNodeRenderer extends DefaultTreeCellRenderer {
34 private static final long serialVersionUID = -6046702673278595048L;
35
36
37
38
39
40 public static final Color FATAL_CHILDREN = new Color(189, 113, 0);
41
42
43
44
45 protected JCheckBox _checkBox = new JCheckBox();
46 protected JPanel _panel = new JPanel();
47 protected static ImageIcon _sat = null;
48
49
50
51
52
53
54
55
56
57 public CategoryNodeRenderer() {
58 _panel.setBackground(UIManager.getColor("Tree.textBackground"));
59
60 if (_sat == null) {
61
62 String resource =
63 "/org/apache/log4j/lf5/viewer/images/channelexplorer_satellite.gif";
64 URL satURL = getClass().getResource(resource);
65
66 _sat = new ImageIcon(satURL);
67 }
68
69 setOpaque(false);
70 _checkBox.setOpaque(false);
71 _panel.setOpaque(false);
72
73
74
75 _panel.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
76 _panel.add(_checkBox);
77 _panel.add(this);
78
79 setOpenIcon(_sat);
80 setClosedIcon(_sat);
81 setLeafIcon(_sat);
82 }
83
84
85
86
87 public Component getTreeCellRendererComponent(
88 JTree tree, Object value,
89 boolean selected, boolean expanded,
90 boolean leaf, int row,
91 boolean hasFocus) {
92
93 CategoryNode node = (CategoryNode) value;
94
95
96
97
98 super.getTreeCellRendererComponent(
99 tree, value, selected, expanded,
100 leaf, row, hasFocus);
101
102 if (row == 0) {
103
104 _checkBox.setVisible(false);
105 } else {
106 _checkBox.setVisible(true);
107 _checkBox.setSelected(node.isSelected());
108 }
109 String toolTip = buildToolTip(node);
110 _panel.setToolTipText(toolTip);
111 if (node.hasFatalChildren()) {
112 this.setForeground(FATAL_CHILDREN);
113 }
114 if (node.hasFatalRecords()) {
115 this.setForeground(Color.red);
116 }
117
118 return _panel;
119 }
120
121 public Dimension getCheckBoxOffset() {
122 return new Dimension(0, 0);
123 }
124
125
126
127
128
129 protected String buildToolTip(CategoryNode node) {
130 StringBuffer result = new StringBuffer();
131 result.append(node.getTitle()).append(" contains a total of ");
132 result.append(node.getTotalNumberOfRecords());
133 result.append(" LogRecords.");
134 result.append(" Right-click for more info.");
135 return result.toString();
136 }
137
138
139
140
141
142
143
144
145 }
146
147
148
149
150
151