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.event.TreeModelEvent;
21 import javax.swing.tree.TreePath;
22 import java.awt.event.MouseEvent;
23
24 /***
25 * CategoryExplorerTree
26 *
27 * @author Michael J. Sikorsky
28 * @author Robert Shaw
29 * @author Brent Sprecher
30 * @author Brad Marlborough
31 */
32
33
34
35 public class CategoryExplorerTree extends JTree {
36 private static final long serialVersionUID = 8066257446951323576L;
37
38
39
40
41
42
43
44 protected CategoryExplorerModel _model;
45 protected boolean _rootAlreadyExpanded = false;
46
47
48
49
50
51
52
53
54
55 /***
56 * Construct a CategoryExplorerTree with a specific model.
57 */
58 public CategoryExplorerTree(CategoryExplorerModel model) {
59 super(model);
60
61 _model = model;
62 init();
63 }
64
65 /***
66 * Construct a CategoryExplorerTree and create a default CategoryExplorerModel.
67 */
68 public CategoryExplorerTree() {
69 super();
70
71 CategoryNode rootNode = new CategoryNode("Categories");
72
73 _model = new CategoryExplorerModel(rootNode);
74
75 setModel(_model);
76
77 init();
78 }
79
80
81
82
83
84 public CategoryExplorerModel getExplorerModel() {
85 return (_model);
86 }
87
88 public String getToolTipText(MouseEvent e) {
89
90 try {
91 return super.getToolTipText(e);
92 } catch (Exception ex) {
93 return "";
94 }
95
96 }
97
98
99
100
101
102 protected void init() {
103
104 putClientProperty("JTree.lineStyle", "Angled");
105
106
107
108 CategoryNodeRenderer renderer = new CategoryNodeRenderer();
109 setEditable(true);
110 setCellRenderer(renderer);
111
112 CategoryNodeEditor editor = new CategoryNodeEditor(_model);
113
114 setCellEditor(new CategoryImmediateEditor(this,
115 new CategoryNodeRenderer(),
116 editor));
117 setShowsRootHandles(true);
118
119 setToolTipText("");
120
121 ensureRootExpansion();
122
123 }
124
125 protected void expandRootNode() {
126 if (_rootAlreadyExpanded) {
127 return;
128 }
129 _rootAlreadyExpanded = true;
130 TreePath path = new TreePath(_model.getRootCategoryNode().getPath());
131 expandPath(path);
132 }
133
134 protected void ensureRootExpansion() {
135 _model.addTreeModelListener(new TreeModelAdapter() {
136 public void treeNodesInserted(TreeModelEvent e) {
137 expandRootNode();
138 }
139 });
140 }
141
142
143
144
145
146
147
148
149
150 }
151
152
153
154
155
156