1 package net.logAnalyzer.utils.gui.treetable;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 import javax.swing.table.AbstractTableModel;
43 import javax.swing.JTree;
44 import javax.swing.tree.TreePath;
45 import javax.swing.event.TreeExpansionEvent;
46 import javax.swing.event.TreeExpansionListener;
47
48 /***
49 * This is a wrapper class takes a TreeTableModel and implements
50 * the table model interface. The implementation is trivial, with
51 * all of the event dispatching support provided by the superclass:
52 * the AbstractTableModel.
53 *
54 * @version %I% %G%
55 *
56 * @author Philip Milne
57 * @author Scott Violet
58 */
59
60
61 public class TreeTableModelAdapter extends AbstractTableModel
62 {
63 JTree tree;
64 TreeTableModel treeTableModel;
65
66 public TreeTableModelAdapter(TreeTableModel treeTableModel, JTree tree) {
67 this.tree = tree;
68 this.treeTableModel = treeTableModel;
69
70 tree.addTreeExpansionListener(new TreeExpansionListener() {
71
72
73 public void treeExpanded(TreeExpansionEvent event) {
74 fireTableDataChanged();
75 }
76 public void treeCollapsed(TreeExpansionEvent event) {
77 fireTableDataChanged();
78 }
79 });
80 }
81
82
83
84 public int getColumnCount() {
85 return treeTableModel.getColumnCount();
86 }
87
88 public String getColumnName(int column) {
89 return treeTableModel.getColumnName(column);
90 }
91
92 public Class getColumnClass(int column) {
93 return treeTableModel.getColumnClass(column);
94 }
95
96 public int getRowCount() {
97 return tree.getRowCount();
98 }
99
100 protected Object nodeForRow(int row) {
101 TreePath treePath = tree.getPathForRow(row);
102 return treePath.getLastPathComponent();
103 }
104
105 public Object getValueAt(int row, int column) {
106 return treeTableModel.getValueAt(nodeForRow(row), column);
107 }
108
109 public boolean isCellEditable(int row, int column) {
110 return treeTableModel.isCellEditable(nodeForRow(row), column);
111 }
112
113 public void setValueAt(Object value, int row, int column) {
114 treeTableModel.setValueAt(value, nodeForRow(row), column);
115 }
116 }
117
118