1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.log4j.chainsaw.receivers;
19
20 import org.apache.log4j.chainsaw.Generator;
21 import org.apache.log4j.chainsaw.icons.ChainsawIcons;
22 import org.apache.log4j.chainsaw.icons.LevelIconFactory;
23 import org.apache.log4j.plugins.Plugin;
24 import org.apache.log4j.spi.Thresholdable;
25
26 import javax.swing.*;
27 import javax.swing.tree.DefaultMutableTreeNode;
28 import javax.swing.tree.DefaultTreeCellRenderer;
29 import java.awt.*;
30
31
32
33
34
35
36
37
38 public class ReceiverTreeCellRenderer extends DefaultTreeCellRenderer {
39 private Icon rootIcon = new ImageIcon(ChainsawIcons.ANIM_NET_CONNECT);
40 private JPanel panel = new JPanel();
41 private JLabel levelLabel = new JLabel();
42
43 public ReceiverTreeCellRenderer() {
44 super();
45 BoxLayout layout = new BoxLayout(panel, BoxLayout.X_AXIS);
46 panel.setLayout(layout);
47 panel.setOpaque(false);
48 panel.add(levelLabel);
49
50 setPreferredSize(new Dimension(200, 19));
51 panel.add(this);
52 }
53
54 public Component getTreeCellRendererComponent(
55 JTree tree, Object value, boolean sel, boolean expanded, boolean leaf,
56 int row, boolean focus) {
57 super.getTreeCellRendererComponent(
58 tree, value, sel, expanded, leaf, row, focus);
59
60 DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
61 Object o = node.getUserObject();
62 setText(o.toString());
63
64 String tooltip = "";
65
66 setIcon(null);
67 if (
68 o == ((ReceiversTreeModel) tree.getModel()).getRootNode().getUserObject()) {
69 setText(o.toString());
70 } else if (o instanceof String) {
71 setText(o.toString());
72 setIcon(null);
73 } else if (o instanceof Plugin) {
74 setText(((Plugin) o).getName());
75 } else if (o instanceof Generator) {
76 Generator generator = (Generator) o;
77 setText(generator.getName());
78 setIcon(ChainsawIcons.ICON_HELP);
79 } else {
80 setText("(Unknown Type) :: " + o);
81 }
82
83 if (
84 o == ((ReceiversTreeModel) tree.getModel()).getRootNode().getUserObject()) {
85 setIcon(rootIcon);
86 }
87
88 levelLabel.setText(null);
89 levelLabel.setIcon(null);
90
91 if (o instanceof Thresholdable) {
92 Thresholdable t = (Thresholdable) o;
93
94 if (t.getThreshold() != null) {
95 levelLabel.setIcon(
96 LevelIconFactory.getInstance().getLevelToIconMap().get(
97 t.getThreshold().toString()));
98
99 if (levelLabel.getIcon() == null) {
100 levelLabel.setText(t.getThreshold().toString());
101 }
102 }
103 }
104
105 setToolTipText(tooltip);
106
107 return panel;
108 }
109 }