1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package com.puppycrawl.tools.checkstyle.gui;
21
22 import javax.swing.event.EventListenerList;
23 import javax.swing.event.TreeModelEvent;
24 import javax.swing.event.TreeModelListener;
25 import javax.swing.tree.TreeModel;
26 import javax.swing.tree.TreePath;
27
28 import com.puppycrawl.tools.checkstyle.api.DetailAST;
29 import com.puppycrawl.tools.checkstyle.gui.MainFrameModel.ParseMode;
30
31
32
33
34
35 public class ParseTreeTableModel implements TreeModel {
36
37
38 private final ParseTreeTablePresentation pModel;
39
40
41
42
43 private final EventListenerList listenerList = new EventListenerList();
44
45
46
47
48
49 public ParseTreeTableModel(DetailAST parseTree) {
50 pModel = new ParseTreeTablePresentation(parseTree);
51 setParseTree(parseTree);
52 }
53
54
55
56
57
58 protected final void setParseTree(DetailAST parseTree) {
59 pModel.setParseTree(parseTree);
60 final Object[] path = {pModel.getRoot()};
61
62
63 fireTreeStructureChanged(this, path, null, (Object[]) null);
64 }
65
66
67
68
69
70 protected void setParseMode(ParseMode mode) {
71 pModel.setParseMode(mode);
72 }
73
74
75
76
77
78 public int getColumnCount() {
79 return pModel.getColumnCount();
80 }
81
82
83
84
85
86
87 public String getColumnName(int column) {
88 return pModel.getColumnName(column);
89 }
90
91
92
93
94
95
96
97
98 public Class<?> getColumnClass(int column) {
99 return pModel.getColumnClass(column);
100 }
101
102
103
104
105
106
107
108
109 public Object getValueAt(Object node, int column) {
110 return pModel.getValueAt(node, column);
111 }
112
113 @Override
114 public Object getChild(Object parent, int index) {
115 return pModel.getChild(parent, index);
116 }
117
118 @Override
119 public int getChildCount(Object parent) {
120 return pModel.getChildCount(parent);
121 }
122
123 @Override
124 public void valueForPathChanged(TreePath path, Object newValue) {
125
126 }
127
128 @Override
129 public Object getRoot() {
130 return pModel.getRoot();
131 }
132
133 @Override
134 public boolean isLeaf(Object node) {
135 return pModel.isLeaf(node);
136 }
137
138
139 @Override
140 public int getIndexOfChild(Object parent, Object child) {
141 return pModel.getIndexOfChild(parent, child);
142 }
143
144 @Override
145 public void addTreeModelListener(TreeModelListener listener) {
146 listenerList.add(TreeModelListener.class, listener);
147 }
148
149 @Override
150 public void removeTreeModelListener(TreeModelListener listener) {
151 listenerList.remove(TreeModelListener.class, listener);
152 }
153
154
155
156
157
158
159
160
161
162
163
164
165 private void fireTreeStructureChanged(Object source, Object[] path,
166 int[] childIndices,
167 Object... children) {
168
169 final Object[] listeners = listenerList.getListenerList();
170 TreeModelEvent event = null;
171
172
173 for (int i = listeners.length - 2; i >= 0; i -= 2) {
174 if (listeners[i] == TreeModelListener.class) {
175
176 if (event == null) {
177 event = new TreeModelEvent(source, path,
178 childIndices, children);
179 }
180 ((TreeModelListener) listeners[i + 1]).treeStructureChanged(event);
181 }
182 }
183 }
184
185
186
187
188
189
190
191
192 public boolean isCellEditable(int column) {
193 return pModel.isCellEditable(column);
194 }
195
196 }