2 |
26 Feb 07 |
jari |
1 |
/* |
2 |
26 Feb 07 |
jari |
Copyright @ 1999-2004, The Institute for Genomic Research (TIGR). |
2 |
26 Feb 07 |
jari |
All rights reserved. |
2 |
26 Feb 07 |
jari |
4 |
*/ |
2 |
26 Feb 07 |
jari |
5 |
/* |
2 |
26 Feb 07 |
jari |
* TableViewer.java |
2 |
26 Feb 07 |
jari |
7 |
* |
2 |
26 Feb 07 |
jari |
* Created on September 5, 2003, 10:17 AM |
2 |
26 Feb 07 |
jari |
9 |
*/ |
2 |
26 Feb 07 |
jari |
10 |
|
2 |
26 Feb 07 |
jari |
11 |
package org.tigr.microarray.mev.cluster.gui.helpers; |
2 |
26 Feb 07 |
jari |
12 |
|
2 |
26 Feb 07 |
jari |
13 |
import java.awt.Color; |
2 |
26 Feb 07 |
jari |
14 |
import java.awt.Component; |
2 |
26 Feb 07 |
jari |
15 |
import java.beans.Expression; |
2 |
26 Feb 07 |
jari |
16 |
import java.awt.Font; |
2 |
26 Feb 07 |
jari |
17 |
import java.awt.GridBagConstraints; |
2 |
26 Feb 07 |
jari |
18 |
import java.awt.GridBagLayout; |
2 |
26 Feb 07 |
jari |
19 |
import java.awt.Insets; |
2 |
26 Feb 07 |
jari |
20 |
import java.awt.event.MouseAdapter; |
2 |
26 Feb 07 |
jari |
21 |
import java.awt.event.MouseEvent; |
2 |
26 Feb 07 |
jari |
22 |
import java.awt.image.BufferedImage; |
2 |
26 Feb 07 |
jari |
23 |
import java.util.Arrays; |
2 |
26 Feb 07 |
jari |
24 |
|
2 |
26 Feb 07 |
jari |
25 |
import javax.swing.JComponent; |
2 |
26 Feb 07 |
jari |
26 |
import javax.swing.JFrame; |
2 |
26 Feb 07 |
jari |
27 |
import javax.swing.JLabel; |
2 |
26 Feb 07 |
jari |
28 |
import javax.swing.JPanel; |
2 |
26 Feb 07 |
jari |
29 |
import javax.swing.JScrollPane; |
2 |
26 Feb 07 |
jari |
30 |
import javax.swing.JTable; |
2 |
26 Feb 07 |
jari |
31 |
import javax.swing.JTextArea; |
2 |
26 Feb 07 |
jari |
32 |
import javax.swing.table.AbstractTableModel; |
2 |
26 Feb 07 |
jari |
33 |
import javax.swing.table.DefaultTableCellRenderer; |
2 |
26 Feb 07 |
jari |
34 |
import javax.swing.table.JTableHeader; |
2 |
26 Feb 07 |
jari |
35 |
import javax.swing.table.TableModel; |
2 |
26 Feb 07 |
jari |
36 |
|
2 |
26 Feb 07 |
jari |
37 |
import org.tigr.microarray.mev.cluster.gui.Experiment; |
2 |
26 Feb 07 |
jari |
38 |
import org.tigr.microarray.mev.cluster.gui.IData; |
2 |
26 Feb 07 |
jari |
39 |
import org.tigr.microarray.mev.cluster.gui.IDisplayMenu; |
2 |
26 Feb 07 |
jari |
40 |
import org.tigr.microarray.mev.cluster.gui.IFramework; |
2 |
26 Feb 07 |
jari |
41 |
import org.tigr.microarray.mev.cluster.gui.IViewer; |
2 |
26 Feb 07 |
jari |
/** The TableViewer class is provided as a JPanel extention to be used |
2 |
26 Feb 07 |
jari |
* as a means of presenting tabular data. The TableViewer can be added |
2 |
26 Feb 07 |
jari |
* to any component and can recieve a variety of data types. |
2 |
26 Feb 07 |
jari |
* The JTable, TableModel, and JTableHeader are all returned by methods |
2 |
26 Feb 07 |
jari |
* so that interaction can be direct. |
2 |
26 Feb 07 |
jari |
* @author braisted |
2 |
26 Feb 07 |
jari |
48 |
*/ |
2 |
26 Feb 07 |
jari |
49 |
|
2 |
26 Feb 07 |
jari |
50 |
|
2 |
26 Feb 07 |
jari |
51 |
public class TableViewer extends JPanel implements IViewer { |
2 |
26 Feb 07 |
jari |
52 |
|
2 |
26 Feb 07 |
jari |
53 |
protected JTable table; |
2 |
26 Feb 07 |
jari |
54 |
protected TableModel model; |
2 |
26 Feb 07 |
jari |
55 |
protected JScrollPane pane; |
2 |
26 Feb 07 |
jari |
56 |
protected IFramework framework; |
2 |
26 Feb 07 |
jari |
57 |
private int exptID = 0; |
2 |
26 Feb 07 |
jari |
58 |
|
2 |
26 Feb 07 |
jari |
//EH |
2 |
26 Feb 07 |
jari |
60 |
Object[][] data; |
2 |
26 Feb 07 |
jari |
61 |
String[] headerNames; |
2 |
26 Feb 07 |
jari |
62 |
|
2 |
26 Feb 07 |
jari |
/** Creates a new instance of TableViewer */ |
2 |
26 Feb 07 |
jari |
64 |
public TableViewer() { } |
2 |
26 Feb 07 |
jari |
65 |
|
2 |
26 Feb 07 |
jari |
/** Creates a new TableViewer with header names and data. |
2 |
26 Feb 07 |
jari |
* @param headerNames Header name strings. |
2 |
26 Feb 07 |
jari |
* @param data table data |
2 |
26 Feb 07 |
jari |
69 |
*/ |
2 |
26 Feb 07 |
jari |
70 |
public TableViewer(String [] headerNames, Object [][] data) { |
2 |
26 Feb 07 |
jari |
71 |
this.data = data; |
2 |
26 Feb 07 |
jari |
72 |
this.headerNames = headerNames; |
2 |
26 Feb 07 |
jari |
73 |
model = new DefaultViewerTableModel(headerNames, data); |
2 |
26 Feb 07 |
jari |
74 |
|
2 |
26 Feb 07 |
jari |
75 |
table = new JTable(model); |
2 |
26 Feb 07 |
jari |
76 |
table.getTableHeader().addMouseListener(new TableHeaderMouseListener()); |
2 |
26 Feb 07 |
jari |
77 |
|
2 |
26 Feb 07 |
jari |
78 |
pane = new JScrollPane(table); |
2 |
26 Feb 07 |
jari |
79 |
|
2 |
26 Feb 07 |
jari |
80 |
this.setLayout(new GridBagLayout()); |
2 |
26 Feb 07 |
jari |
81 |
add(pane, new GridBagConstraints(0,0,1,1,1.0,1.0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,0,0,0), 0,0)); |
2 |
26 Feb 07 |
jari |
82 |
} |
2 |
26 Feb 07 |
jari |
83 |
|
2 |
26 Feb 07 |
jari |
84 |
public Expression getExpression(){ |
2 |
26 Feb 07 |
jari |
85 |
return new Expression(this, this.getClass(), "new", |
2 |
26 Feb 07 |
jari |
86 |
new Object[]{headerNames, data}); |
2 |
26 Feb 07 |
jari |
87 |
} |
2 |
26 Feb 07 |
jari |
88 |
public void setExperiment(Experiment e){} |
2 |
26 Feb 07 |
jari |
89 |
|
2 |
26 Feb 07 |
jari |
/** Allows the substitution of a specific table model. |
2 |
26 Feb 07 |
jari |
* @param model This model replaces the TableViewer's default TableModel. |
2 |
26 Feb 07 |
jari |
92 |
*/ |
2 |
26 Feb 07 |
jari |
93 |
public void setTableModel(TableModel model){ |
2 |
26 Feb 07 |
jari |
94 |
this.model = model; |
2 |
26 Feb 07 |
jari |
95 |
table.setModel(model); |
2 |
26 Feb 07 |
jari |
96 |
} |
2 |
26 Feb 07 |
jari |
97 |
|
2 |
26 Feb 07 |
jari |
/** Returns the table. |
2 |
26 Feb 07 |
jari |
* @return table component |
2 |
26 Feb 07 |
jari |
100 |
*/ |
2 |
26 Feb 07 |
jari |
101 |
public JTable getTable(){ |
2 |
26 Feb 07 |
jari |
102 |
return this.table; |
2 |
26 Feb 07 |
jari |
103 |
} |
2 |
26 Feb 07 |
jari |
104 |
|
2 |
26 Feb 07 |
jari |
/** Returns the active TableModel. |
2 |
26 Feb 07 |
jari |
* @return The tables data model |
2 |
26 Feb 07 |
jari |
107 |
*/ |
2 |
26 Feb 07 |
jari |
108 |
public TableModel getTableModel(){ |
2 |
26 Feb 07 |
jari |
109 |
return this.table.getModel(); |
2 |
26 Feb 07 |
jari |
110 |
} |
2 |
26 Feb 07 |
jari |
111 |
|
2 |
26 Feb 07 |
jari |
/** Returns the table's header component |
2 |
26 Feb 07 |
jari |
* @return table header |
2 |
26 Feb 07 |
jari |
114 |
*/ |
2 |
26 Feb 07 |
jari |
115 |
public JTableHeader getTableHeader(){ |
2 |
26 Feb 07 |
jari |
116 |
return this.table.getTableHeader(); |
2 |
26 Feb 07 |
jari |
117 |
} |
2 |
26 Feb 07 |
jari |
118 |
|
2 |
26 Feb 07 |
jari |
/** Indicates that the indexed column should be set to numerical |
2 |
26 Feb 07 |
jari |
* regardles of the object type. This will assist in proper sorting |
2 |
26 Feb 07 |
jari |
* if a numerical column is represented by Strings. |
2 |
26 Feb 07 |
jari |
* (By default columns are not numerical) |
2 |
26 Feb 07 |
jari |
* @param columnIndex index to the table column |
2 |
26 Feb 07 |
jari |
* @param setting sets as numerical. |
2 |
26 Feb 07 |
jari |
125 |
*/ |
2 |
26 Feb 07 |
jari |
126 |
public void setNumerical(int columnIndex, boolean setting){ |
2 |
26 Feb 07 |
jari |
127 |
if(this.model instanceof DefaultViewerTableModel) |
2 |
26 Feb 07 |
jari |
128 |
((DefaultViewerTableModel)this.model).setNumerical(columnIndex, setting); |
2 |
26 Feb 07 |
jari |
129 |
} |
2 |
26 Feb 07 |
jari |
130 |
|
2 |
26 Feb 07 |
jari |
131 |
public int getSelectedRow(){ |
2 |
26 Feb 07 |
jari |
132 |
int index = table.getSelectedRow(); |
2 |
26 Feb 07 |
jari |
133 |
if(index < 0) |
2 |
26 Feb 07 |
jari |
134 |
index = -1; |
2 |
26 Feb 07 |
jari |
135 |
else |
2 |
26 Feb 07 |
jari |
136 |
index = ((DefaultViewerTableModel) this.model).getRow(index); |
2 |
26 Feb 07 |
jari |
137 |
return index; |
2 |
26 Feb 07 |
jari |
138 |
} |
2 |
26 Feb 07 |
jari |
139 |
|
2 |
26 Feb 07 |
jari |
140 |
|
2 |
26 Feb 07 |
jari |
141 |
/** |
2 |
26 Feb 07 |
jari |
* Internal Classes |
2 |
26 Feb 07 |
jari |
143 |
* |
2 |
26 Feb 07 |
jari |
144 |
*/ |
2 |
26 Feb 07 |
jari |
145 |
public class DefaultViewerTableModel extends AbstractTableModel { |
2 |
26 Feb 07 |
jari |
146 |
String[] columnNames; |
2 |
26 Feb 07 |
jari |
147 |
Object[][] tableData; |
2 |
26 Feb 07 |
jari |
148 |
boolean [] numerical; |
2 |
26 Feb 07 |
jari |
149 |
Row [] rows; |
2 |
26 Feb 07 |
jari |
150 |
int colToSort = 0; |
2 |
26 Feb 07 |
jari |
151 |
boolean ascending = false; |
2 |
26 Feb 07 |
jari |
152 |
|
2 |
26 Feb 07 |
jari |
/** This inner class is used to support basic manipulation of the table. |
2 |
26 Feb 07 |
jari |
* The table helps to support ascending and descending row sorting based |
2 |
26 Feb 07 |
jari |
* on numerical or alphabetical column contents. |
2 |
26 Feb 07 |
jari |
* @param headerNames header names |
2 |
26 Feb 07 |
jari |
* @param data data matrix |
2 |
26 Feb 07 |
jari |
158 |
*/ |
2 |
26 Feb 07 |
jari |
159 |
public DefaultViewerTableModel(String [] headerNames, Object [][] data){ |
2 |
26 Feb 07 |
jari |
160 |
columnNames = headerNames; |
2 |
26 Feb 07 |
jari |
161 |
tableData = data; |
2 |
26 Feb 07 |
jari |
162 |
numerical = new boolean[headerNames.length]; |
2 |
26 Feb 07 |
jari |
163 |
rows = new Row[data.length]; |
2 |
26 Feb 07 |
jari |
164 |
for(int i = 0; i < rows.length; i++){ |
2 |
26 Feb 07 |
jari |
165 |
rows[i] = new Row(); |
2 |
26 Feb 07 |
jari |
166 |
rows[i].index = i; |
2 |
26 Feb 07 |
jari |
167 |
} |
2 |
26 Feb 07 |
jari |
168 |
} |
2 |
26 Feb 07 |
jari |
169 |
|
2 |
26 Feb 07 |
jari |
/** Sets column as numerical for sorting. |
2 |
26 Feb 07 |
jari |
* @param col column index |
2 |
26 Feb 07 |
jari |
* @param numericalBool sets as numerical or not numerical |
2 |
26 Feb 07 |
jari |
173 |
*/ |
2 |
26 Feb 07 |
jari |
174 |
public void setNumerical(int col, boolean numericalBool){ |
2 |
26 Feb 07 |
jari |
175 |
if(col > -1 && col < numerical.length) |
2 |
26 Feb 07 |
jari |
176 |
numerical[col] = numericalBool; |
2 |
26 Feb 07 |
jari |
177 |
} |
2 |
26 Feb 07 |
jari |
178 |
|
2 |
26 Feb 07 |
jari |
179 |
public int getColumnCount() { |
2 |
26 Feb 07 |
jari |
180 |
return columnNames.length; |
2 |
26 Feb 07 |
jari |
181 |
} |
2 |
26 Feb 07 |
jari |
182 |
|
2 |
26 Feb 07 |
jari |
183 |
public int getRowCount() { |
2 |
26 Feb 07 |
jari |
184 |
if(tableData == null) |
2 |
26 Feb 07 |
jari |
185 |
return 0; |
2 |
26 Feb 07 |
jari |
186 |
else |
2 |
26 Feb 07 |
jari |
187 |
return tableData.length; |
2 |
26 Feb 07 |
jari |
188 |
} |
2 |
26 Feb 07 |
jari |
189 |
|
2 |
26 Feb 07 |
jari |
190 |
public Object getValueAt(int param, int param1) { |
2 |
26 Feb 07 |
jari |
191 |
if(tableData != null && param < tableData.length && param1 < tableData[param].length) |
2 |
26 Feb 07 |
jari |
192 |
return tableData[rows[param].index][param1]; |
2 |
26 Feb 07 |
jari |
193 |
return null; |
2 |
26 Feb 07 |
jari |
194 |
} |
2 |
26 Feb 07 |
jari |
195 |
|
2 |
26 Feb 07 |
jari |
196 |
public String getColumnName(int index){ |
2 |
26 Feb 07 |
jari |
197 |
return columnNames[index]; |
2 |
26 Feb 07 |
jari |
198 |
} |
2 |
26 Feb 07 |
jari |
199 |
|
2 |
26 Feb 07 |
jari |
200 |
private boolean isNumerical(int col){ |
2 |
26 Feb 07 |
jari |
201 |
return numerical[col]; |
2 |
26 Feb 07 |
jari |
202 |
} |
2 |
26 Feb 07 |
jari |
203 |
|
2 |
26 Feb 07 |
jari |
204 |
public void sort(int col){ |
2 |
26 Feb 07 |
jari |
205 |
ascending = !ascending; |
2 |
26 Feb 07 |
jari |
206 |
colToSort = col; |
2 |
26 Feb 07 |
jari |
207 |
Arrays.sort(rows); |
2 |
26 Feb 07 |
jari |
208 |
fireTableDataChanged(); |
2 |
26 Feb 07 |
jari |
209 |
} |
2 |
26 Feb 07 |
jari |
210 |
|
2 |
26 Feb 07 |
jari |
211 |
public int getRow(int tableRow){ |
2 |
26 Feb 07 |
jari |
212 |
return rows[tableRow].index; |
2 |
26 Feb 07 |
jari |
213 |
} |
2 |
26 Feb 07 |
jari |
214 |
|
2 |
26 Feb 07 |
jari |
215 |
|
2 |
26 Feb 07 |
jari |
216 |
private class Row implements Comparable, java.io.Serializable { |
2 |
26 Feb 07 |
jari |
217 |
public int index; |
2 |
26 Feb 07 |
jari |
218 |
private String myString, otherString; |
2 |
26 Feb 07 |
jari |
219 |
|
2 |
26 Feb 07 |
jari |
220 |
public int compareTo(Object other){ |
2 |
26 Feb 07 |
jari |
221 |
if(ascending) |
2 |
26 Feb 07 |
jari |
222 |
return compareToOther(other); |
2 |
26 Feb 07 |
jari |
223 |
return compareToOther(other)*(-1); |
2 |
26 Feb 07 |
jari |
224 |
} |
2 |
26 Feb 07 |
jari |
225 |
|
2 |
26 Feb 07 |
jari |
226 |
public int compareToOther(Object other){ |
2 |
26 Feb 07 |
jari |
227 |
Row otherRow = (Row)other; |
2 |
26 Feb 07 |
jari |
228 |
Object myObject = tableData[index][colToSort]; |
2 |
26 Feb 07 |
jari |
229 |
Object otherObject = tableData[otherRow.index][colToSort]; |
2 |
26 Feb 07 |
jari |
230 |
if( myObject instanceof Comparable ) { |
2 |
26 Feb 07 |
jari |
231 |
if(isNumerical(colToSort)){ //catch string designation of a number |
2 |
26 Feb 07 |
jari |
232 |
if(myObject instanceof String){ |
2 |
26 Feb 07 |
jari |
233 |
Float myFloat = new Float((String)myObject); |
2 |
26 Feb 07 |
jari |
234 |
Float otherFloat = new Float((String)otherObject); |
2 |
26 Feb 07 |
jari |
235 |
return myFloat.compareTo(otherFloat); |
2 |
26 Feb 07 |
jari |
236 |
} |
2 |
26 Feb 07 |
jari |
237 |
} |
2 |
26 Feb 07 |
jari |
238 |
return ((Comparable)myObject).compareTo(otherObject); |
2 |
26 Feb 07 |
jari |
239 |
} |
2 |
26 Feb 07 |
jari |
240 |
if(myObject instanceof JLabel){ |
2 |
26 Feb 07 |
jari |
241 |
myString = ((JLabel)(myObject)).getText(); |
2 |
26 Feb 07 |
jari |
242 |
otherString = ((JLabel)(otherObject)).getText(); |
2 |
26 Feb 07 |
jari |
243 |
return myString.compareTo(otherString); |
2 |
26 Feb 07 |
jari |
244 |
} |
2 |
26 Feb 07 |
jari |
245 |
else return index - otherRow.index; |
2 |
26 Feb 07 |
jari |
246 |
} |
2 |
26 Feb 07 |
jari |
247 |
} |
2 |
26 Feb 07 |
jari |
248 |
|
2 |
26 Feb 07 |
jari |
249 |
} |
2 |
26 Feb 07 |
jari |
250 |
|
2 |
26 Feb 07 |
jari |
251 |
|
2 |
26 Feb 07 |
jari |
252 |
|
2 |
26 Feb 07 |
jari |
253 |
|
2 |
26 Feb 07 |
jari |
254 |
public class CellRenderer extends DefaultTableCellRenderer { |
2 |
26 Feb 07 |
jari |
255 |
|
2 |
26 Feb 07 |
jari |
256 |
JPanel colorPanel = new JPanel(); |
2 |
26 Feb 07 |
jari |
257 |
JLabel label; |
2 |
26 Feb 07 |
jari |
258 |
JTextArea textArea; |
2 |
26 Feb 07 |
jari |
259 |
|
2 |
26 Feb 07 |
jari |
/** Renders basic data input types JLabel, Color, |
2 |
26 Feb 07 |
jari |
261 |
*/ |
2 |
26 Feb 07 |
jari |
262 |
public Component getTableCellRendererComponent(JTable jTable, Object obj, boolean param, boolean param3, int row, int col) { |
2 |
26 Feb 07 |
jari |
263 |
if(obj instanceof Color){ |
2 |
26 Feb 07 |
jari |
264 |
colorPanel.setBackground((Color)obj); |
2 |
26 Feb 07 |
jari |
265 |
return colorPanel; |
2 |
26 Feb 07 |
jari |
266 |
} else if(obj instanceof JLabel){ |
2 |
26 Feb 07 |
jari |
267 |
label = (JLabel)obj; |
2 |
26 Feb 07 |
jari |
268 |
label.setOpaque(true); |
2 |
26 Feb 07 |
jari |
269 |
label.setFont(new Font("Arial", Font.PLAIN, 12)); |
2 |
26 Feb 07 |
jari |
270 |
label.setBackground(new Color(225, 225, 225)); |
2 |
26 Feb 07 |
jari |
271 |
label.setForeground(Color.black); |
2 |
26 Feb 07 |
jari |
272 |
label.setHorizontalAlignment(JLabel.CENTER); |
2 |
26 Feb 07 |
jari |
273 |
if(table.isRowSelected(row)) |
2 |
26 Feb 07 |
jari |
274 |
label.setBackground(table.getSelectionBackground()); |
2 |
26 Feb 07 |
jari |
275 |
return label; |
2 |
26 Feb 07 |
jari |
276 |
} else if(obj instanceof JTextArea){ |
2 |
26 Feb 07 |
jari |
277 |
textArea = (JTextArea)obj; |
2 |
26 Feb 07 |
jari |
278 |
if(table.isRowSelected(row)) |
2 |
26 Feb 07 |
jari |
279 |
textArea.setBackground(table.getSelectionBackground()); |
2 |
26 Feb 07 |
jari |
280 |
return textArea; |
2 |
26 Feb 07 |
jari |
281 |
} |
2 |
26 Feb 07 |
jari |
282 |
colorPanel.setBackground(Color.white); |
2 |
26 Feb 07 |
jari |
283 |
return colorPanel; |
2 |
26 Feb 07 |
jari |
284 |
} |
2 |
26 Feb 07 |
jari |
285 |
} |
2 |
26 Feb 07 |
jari |
286 |
|
2 |
26 Feb 07 |
jari |
287 |
|
2 |
26 Feb 07 |
jari |
288 |
|
2 |
26 Feb 07 |
jari |
289 |
public static void main(String [] args){ |
2 |
26 Feb 07 |
jari |
290 |
String [] headers = new String[3]; |
2 |
26 Feb 07 |
jari |
291 |
headers[0] = "Gene"; |
2 |
26 Feb 07 |
jari |
292 |
headers[1] = "GenBank #"; |
2 |
26 Feb 07 |
jari |
293 |
headers[2] = "Common Name"; |
2 |
26 Feb 07 |
jari |
294 |
|
2 |
26 Feb 07 |
jari |
295 |
Object [][] data = new Object[3][3]; |
2 |
26 Feb 07 |
jari |
296 |
for(int i = 0; i < data.length ; i++) |
2 |
26 Feb 07 |
jari |
297 |
for(int j = 0; j < data[0].length; j++) |
2 |
26 Feb 07 |
jari |
298 |
if(i == 1) |
2 |
26 Feb 07 |
jari |
299 |
data[i][j] = "1000"; |
2 |
26 Feb 07 |
jari |
300 |
else |
2 |
26 Feb 07 |
jari |
301 |
data[i][j] = Integer.toString(i*j+j); |
2 |
26 Feb 07 |
jari |
302 |
|
2 |
26 Feb 07 |
jari |
303 |
TableViewer tv = new TableViewer(headers, data); |
2 |
26 Feb 07 |
jari |
304 |
|
2 |
26 Feb 07 |
jari |
305 |
tv.setNumerical(0, true); |
2 |
26 Feb 07 |
jari |
306 |
tv.setNumerical(1, true); |
2 |
26 Feb 07 |
jari |
307 |
tv.setNumerical(2, false); |
2 |
26 Feb 07 |
jari |
308 |
JFrame frame = new JFrame(); |
2 |
26 Feb 07 |
jari |
309 |
frame.getContentPane().add(tv); |
2 |
26 Feb 07 |
jari |
310 |
frame.setSize(100,100); |
2 |
26 Feb 07 |
jari |
311 |
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); |
2 |
26 Feb 07 |
jari |
312 |
frame.setVisible(true); |
2 |
26 Feb 07 |
jari |
313 |
} |
2 |
26 Feb 07 |
jari |
314 |
|
2 |
26 Feb 07 |
jari |
315 |
|
2 |
26 Feb 07 |
jari |
316 |
public class TableHeaderMouseListener extends MouseAdapter{ |
2 |
26 Feb 07 |
jari |
317 |
|
2 |
26 Feb 07 |
jari |
318 |
public void mouseClicked(MouseEvent evt) { |
2 |
26 Feb 07 |
jari |
319 |
if(evt.getModifiers() == MouseEvent.BUTTON1_MASK && evt.getClickCount() > 1){ |
2 |
26 Feb 07 |
jari |
320 |
if(model instanceof DefaultViewerTableModel){ |
2 |
26 Feb 07 |
jari |
321 |
JTableHeader header = (JTableHeader)evt.getSource(); |
2 |
26 Feb 07 |
jari |
322 |
int tableCol = header.columnAtPoint(evt.getPoint()); |
2 |
26 Feb 07 |
jari |
323 |
int modelCol = table.convertColumnIndexToModel(tableCol); |
2 |
26 Feb 07 |
jari |
324 |
((DefaultViewerTableModel)model).sort(modelCol); |
2 |
26 Feb 07 |
jari |
325 |
} |
2 |
26 Feb 07 |
jari |
326 |
} |
2 |
26 Feb 07 |
jari |
327 |
} |
2 |
26 Feb 07 |
jari |
328 |
} |
2 |
26 Feb 07 |
jari |
329 |
|
2 |
26 Feb 07 |
jari |
330 |
|
2 |
26 Feb 07 |
jari |
331 |
/** |
2 |
26 Feb 07 |
jari |
* IViewer implementation Methods (Default Implementation) |
2 |
26 Feb 07 |
jari |
333 |
* |
2 |
26 Feb 07 |
jari |
334 |
*/ |
2 |
26 Feb 07 |
jari |
335 |
|
2 |
26 Feb 07 |
jari |
336 |
|
2 |
26 Feb 07 |
jari |
/** Returns a component to be inserted into scroll pane view port. |
2 |
26 Feb 07 |
jari |
* @return content component (JTable) |
2 |
26 Feb 07 |
jari |
339 |
*/ |
2 |
26 Feb 07 |
jari |
340 |
public JComponent getContentComponent() { |
2 |
26 Feb 07 |
jari |
341 |
return this.table; |
2 |
26 Feb 07 |
jari |
342 |
} |
2 |
26 Feb 07 |
jari |
343 |
|
2 |
26 Feb 07 |
jari |
/** Returns a component to be inserted into scroll pane header. |
2 |
26 Feb 07 |
jari |
* @return table header component. |
2 |
26 Feb 07 |
jari |
346 |
*/ |
2 |
26 Feb 07 |
jari |
347 |
public JComponent getHeaderComponent() { |
2 |
26 Feb 07 |
jari |
348 |
return table.getTableHeader(); |
2 |
26 Feb 07 |
jari |
349 |
} |
2 |
26 Feb 07 |
jari |
350 |
|
2 |
26 Feb 07 |
jari |
/** Invoked by the framework to save or to print viewer image. |
2 |
26 Feb 07 |
jari |
* @return Image or Null |
2 |
26 Feb 07 |
jari |
353 |
*/ |
2 |
26 Feb 07 |
jari |
354 |
public BufferedImage getImage() { |
2 |
26 Feb 07 |
jari |
355 |
return null; |
2 |
26 Feb 07 |
jari |
356 |
} |
2 |
26 Feb 07 |
jari |
357 |
|
2 |
26 Feb 07 |
jari |
/** Returns a component to be inserted into the scroll pane row header |
2 |
26 Feb 07 |
jari |
* @return Row header component or null |
2 |
26 Feb 07 |
jari |
360 |
*/ |
2 |
26 Feb 07 |
jari |
361 |
public JComponent getRowHeaderComponent() { |
2 |
26 Feb 07 |
jari |
362 |
return null; |
2 |
26 Feb 07 |
jari |
363 |
} |
2 |
26 Feb 07 |
jari |
364 |
|
2 |
26 Feb 07 |
jari |
/** Invoked when the framework is going to be closed. |
2 |
26 Feb 07 |
jari |
366 |
*/ |
2 |
26 Feb 07 |
jari |
367 |
public void onClosed() { |
2 |
26 Feb 07 |
jari |
368 |
} |
2 |
26 Feb 07 |
jari |
369 |
|
2 |
26 Feb 07 |
jari |
/** Invoked by the framework when data is changed, |
2 |
26 Feb 07 |
jari |
* if this viewer is selected. |
2 |
26 Feb 07 |
jari |
* @see IData |
2 |
26 Feb 07 |
jari |
373 |
*/ |
2 |
26 Feb 07 |
jari |
374 |
public void onDataChanged(IData data) { |
2 |
26 Feb 07 |
jari |
375 |
} |
2 |
26 Feb 07 |
jari |
376 |
|
2 |
26 Feb 07 |
jari |
/** Invoked by the framework when this viewer was deselected. |
2 |
26 Feb 07 |
jari |
378 |
*/ |
2 |
26 Feb 07 |
jari |
379 |
public void onDeselected() { |
2 |
26 Feb 07 |
jari |
380 |
} |
2 |
26 Feb 07 |
jari |
381 |
|
2 |
26 Feb 07 |
jari |
/** Invoked by the framework when display menu is changed, |
2 |
26 Feb 07 |
jari |
* if this viewer is selected. |
2 |
26 Feb 07 |
jari |
* @see IDisplayMenu |
2 |
26 Feb 07 |
jari |
385 |
*/ |
2 |
26 Feb 07 |
jari |
386 |
public void onMenuChanged(IDisplayMenu menu) { |
2 |
26 Feb 07 |
jari |
387 |
} |
2 |
26 Feb 07 |
jari |
388 |
|
2 |
26 Feb 07 |
jari |
/** Invoked by the framework when this viewer is selected. |
2 |
26 Feb 07 |
jari |
* @param framework The IFramework implementation |
2 |
26 Feb 07 |
jari |
391 |
*/ |
2 |
26 Feb 07 |
jari |
392 |
public void onSelected(IFramework framework) { |
2 |
26 Feb 07 |
jari |
393 |
this.framework = framework; |
2 |
26 Feb 07 |
jari |
394 |
} |
2 |
26 Feb 07 |
jari |
395 |
|
2 |
26 Feb 07 |
jari |
/** Returns the corner component corresponding to the indicated corner, |
2 |
26 Feb 07 |
jari |
* posibly null |
2 |
26 Feb 07 |
jari |
398 |
*/ |
2 |
26 Feb 07 |
jari |
399 |
public JComponent getCornerComponent(int cornerIndex) { |
2 |
26 Feb 07 |
jari |
400 |
return null; |
2 |
26 Feb 07 |
jari |
401 |
} |
2 |
26 Feb 07 |
jari |
402 |
|
2 |
26 Feb 07 |
jari |
403 |
public int[][] getClusters() { |
2 |
26 Feb 07 |
jari |
404 |
return null; |
2 |
26 Feb 07 |
jari |
405 |
} |
2 |
26 Feb 07 |
jari |
406 |
|
2 |
26 Feb 07 |
jari |
407 |
public Experiment getExperiment() { |
2 |
26 Feb 07 |
jari |
408 |
return null; |
2 |
26 Feb 07 |
jari |
409 |
} |
2 |
26 Feb 07 |
jari |
410 |
|
2 |
26 Feb 07 |
jari |
/** Returns int value indicating viewer type |
2 |
26 Feb 07 |
jari |
* Cluster.GENE_CLUSTER, Cluster.EXPERIMENT_CLUSTER, or -1 for both or unspecified |
2 |
26 Feb 07 |
jari |
413 |
*/ |
2 |
26 Feb 07 |
jari |
414 |
public int getViewerType() { |
2 |
26 Feb 07 |
jari |
415 |
return -1; |
2 |
26 Feb 07 |
jari |
416 |
} |
2 |
26 Feb 07 |
jari |
417 |
|
2 |
26 Feb 07 |
jari |
/* (non-Javadoc) |
2 |
26 Feb 07 |
jari |
* @see org.tigr.microarray.mev.cluster.gui.IViewer#getExperimentID() |
2 |
26 Feb 07 |
jari |
420 |
*/ |
2 |
26 Feb 07 |
jari |
421 |
public int getExperimentID() { |
2 |
26 Feb 07 |
jari |
422 |
return this.exptID; |
2 |
26 Feb 07 |
jari |
423 |
} |
2 |
26 Feb 07 |
jari |
424 |
|
2 |
26 Feb 07 |
jari |
/* (non-Javadoc) |
2 |
26 Feb 07 |
jari |
* @see org.tigr.microarray.mev.cluster.gui.IViewer#setExperimentID(int) |
2 |
26 Feb 07 |
jari |
427 |
*/ |
2 |
26 Feb 07 |
jari |
428 |
public void setExperimentID(int id) { |
2 |
26 Feb 07 |
jari |
429 |
this.exptID = id; |
2 |
26 Feb 07 |
jari |
430 |
} |
2 |
26 Feb 07 |
jari |
431 |
|
2 |
26 Feb 07 |
jari |
432 |
} |