2 |
26 Feb 07 |
jari |
1 |
/* |
2 |
26 Feb 07 |
jari |
Copyright @ 1999-2005, 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 |
* DAMClassificationEditor.java |
2 |
26 Feb 07 |
jari |
7 |
* |
2 |
26 Feb 07 |
jari |
8 |
*/ |
2 |
26 Feb 07 |
jari |
9 |
|
2 |
26 Feb 07 |
jari |
10 |
package org.tigr.microarray.mev.cluster.gui.impl.dam; |
2 |
26 Feb 07 |
jari |
11 |
|
2 |
26 Feb 07 |
jari |
12 |
import java.awt.Color; |
2 |
26 Feb 07 |
jari |
13 |
import java.awt.Dimension; |
2 |
26 Feb 07 |
jari |
14 |
import java.awt.GridBagConstraints; |
2 |
26 Feb 07 |
jari |
15 |
import java.awt.GridBagLayout; |
2 |
26 Feb 07 |
jari |
16 |
import java.awt.Toolkit; |
2 |
26 Feb 07 |
jari |
17 |
import java.awt.event.ActionEvent; |
2 |
26 Feb 07 |
jari |
18 |
import java.awt.event.ActionListener; |
2 |
26 Feb 07 |
jari |
19 |
import java.awt.event.WindowAdapter; |
2 |
26 Feb 07 |
jari |
20 |
import java.awt.event.WindowEvent; |
2 |
26 Feb 07 |
jari |
21 |
import java.io.BufferedReader; |
2 |
26 Feb 07 |
jari |
22 |
import java.io.File; |
2 |
26 Feb 07 |
jari |
23 |
import java.io.FileOutputStream; |
2 |
26 Feb 07 |
jari |
24 |
import java.io.FileReader; |
2 |
26 Feb 07 |
jari |
25 |
import java.io.PrintWriter; |
2 |
26 Feb 07 |
jari |
26 |
import java.util.Arrays; |
2 |
26 Feb 07 |
jari |
27 |
import java.util.Vector; |
2 |
26 Feb 07 |
jari |
28 |
|
2 |
26 Feb 07 |
jari |
29 |
import javax.swing.ButtonGroup; |
2 |
26 Feb 07 |
jari |
30 |
import javax.swing.JButton; |
2 |
26 Feb 07 |
jari |
31 |
import javax.swing.JFileChooser; |
2 |
26 Feb 07 |
jari |
32 |
import javax.swing.JFrame; |
2 |
26 Feb 07 |
jari |
33 |
import javax.swing.JMenu; |
2 |
26 Feb 07 |
jari |
34 |
import javax.swing.JMenuBar; |
2 |
26 Feb 07 |
jari |
35 |
import javax.swing.JMenuItem; |
2 |
26 Feb 07 |
jari |
36 |
import javax.swing.JOptionPane; |
2 |
26 Feb 07 |
jari |
37 |
import javax.swing.JPanel; |
2 |
26 Feb 07 |
jari |
38 |
import javax.swing.JRadioButton; |
2 |
26 Feb 07 |
jari |
39 |
import javax.swing.JScrollPane; |
2 |
26 Feb 07 |
jari |
40 |
import javax.swing.JTable; |
2 |
26 Feb 07 |
jari |
41 |
import javax.swing.JTextArea; |
2 |
26 Feb 07 |
jari |
42 |
import javax.swing.border.EtchedBorder; |
2 |
26 Feb 07 |
jari |
43 |
import javax.swing.event.TableModelEvent; |
2 |
26 Feb 07 |
jari |
44 |
import javax.swing.event.TableModelListener; |
2 |
26 Feb 07 |
jari |
45 |
import javax.swing.table.AbstractTableModel; |
2 |
26 Feb 07 |
jari |
46 |
import javax.swing.table.TableColumn; |
2 |
26 Feb 07 |
jari |
47 |
import javax.swing.table.TableColumnModel; |
2 |
26 Feb 07 |
jari |
48 |
|
2 |
26 Feb 07 |
jari |
49 |
import org.tigr.microarray.mev.cluster.gui.IData; |
2 |
26 Feb 07 |
jari |
50 |
import org.tigr.microarray.mev.cluster.gui.IFramework; |
2 |
26 Feb 07 |
jari |
51 |
import org.tigr.util.StringSplitter; |
2 |
26 Feb 07 |
jari |
52 |
|
2 |
26 Feb 07 |
jari |
53 |
public class DAMClassificationEditor extends JFrame { |
2 |
26 Feb 07 |
jari |
54 |
|
2 |
26 Feb 07 |
jari |
55 |
IFramework framework; |
2 |
26 Feb 07 |
jari |
56 |
IData data; |
2 |
26 Feb 07 |
jari |
57 |
boolean classifyGenes; |
2 |
26 Feb 07 |
jari |
58 |
private boolean stopHere = true; |
2 |
26 Feb 07 |
jari |
59 |
private boolean nextPressed = false; |
2 |
26 Feb 07 |
jari |
60 |
private boolean cancelPressed = false; |
2 |
26 Feb 07 |
jari |
61 |
private boolean incompatible = false; |
2 |
26 Feb 07 |
jari |
62 |
private boolean fileSaved = false; |
2 |
26 Feb 07 |
jari |
63 |
private boolean fileOpened = false; |
2 |
26 Feb 07 |
jari |
64 |
int numberOfClasses; |
2 |
26 Feb 07 |
jari |
65 |
String[] fieldNames; |
2 |
26 Feb 07 |
jari |
66 |
int numGenes, numExps; |
2 |
26 Feb 07 |
jari |
67 |
JTable damClassTable; |
2 |
26 Feb 07 |
jari |
68 |
DAMClassTableModel damTabModel; |
2 |
26 Feb 07 |
jari |
69 |
JMenuBar menuBar; |
2 |
26 Feb 07 |
jari |
70 |
JMenu fileMenu, editMenu, toolsMenu, assignSubMenu, sortAscMenu, sortDescMenu; |
2 |
26 Feb 07 |
jari |
71 |
JMenuItem openItem, closeItem, selectAllItem, searchItem, sortByClassItem, origOrderItem; |
2 |
26 Feb 07 |
jari |
72 |
JMenuItem[] classItem, labelsAscItem, labelsDescItem; |
2 |
26 Feb 07 |
jari |
73 |
JRadioButton saveButton, doNotSaveButton; |
2 |
26 Feb 07 |
jari |
74 |
JButton nextButton; |
2 |
26 Feb 07 |
jari |
75 |
JButton cancelButton; |
2 |
26 Feb 07 |
jari |
76 |
JFrame mainFrame; |
2 |
26 Feb 07 |
jari |
77 |
|
2 |
26 Feb 07 |
jari |
78 |
DAMSearchDialog searchDialog; |
2 |
26 Feb 07 |
jari |
79 |
|
2 |
26 Feb 07 |
jari |
//SortListener sorter; |
2 |
26 Feb 07 |
jari |
81 |
|
2 |
26 Feb 07 |
jari |
82 |
Object[][] origData; |
2 |
26 Feb 07 |
jari |
83 |
|
2 |
26 Feb 07 |
jari |
/** Creates a new instance of DAMClassificationEditor */ |
2 |
26 Feb 07 |
jari |
85 |
public DAMClassificationEditor(IFramework framework, boolean classifyGenes, int numberOfClasses) { |
2 |
26 Feb 07 |
jari |
86 |
this.setTitle("DAM Classification Editor"); |
2 |
26 Feb 07 |
jari |
87 |
mainFrame = (JFrame)(framework.getFrame()); |
2 |
26 Feb 07 |
jari |
//super((JFrame)(framework.getFrame()), "DAM Classification Editor", true); |
2 |
26 Feb 07 |
jari |
89 |
setBounds(0, 0, 550, 800); |
2 |
26 Feb 07 |
jari |
90 |
setBackground(Color.white); |
2 |
26 Feb 07 |
jari |
91 |
|
2 |
26 Feb 07 |
jari |
92 |
addWindowListener(new WindowAdapter() { |
2 |
26 Feb 07 |
jari |
93 |
public void windowClosing(WindowEvent evt) { |
2 |
26 Feb 07 |
jari |
94 |
closeDialog(evt); |
2 |
26 Feb 07 |
jari |
95 |
} |
2 |
26 Feb 07 |
jari |
96 |
}); |
2 |
26 Feb 07 |
jari |
97 |
|
2 |
26 Feb 07 |
jari |
98 |
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); |
2 |
26 Feb 07 |
jari |
99 |
this.framework = framework; |
2 |
26 Feb 07 |
jari |
100 |
this.data = framework.getData(); |
2 |
26 Feb 07 |
jari |
// this.numGenes = data.getFeaturesSize(); |
2 |
26 Feb 07 |
jari |
// this.numExps = data.getFeaturesCount(); |
2 |
26 Feb 07 |
jari |
103 |
this.numGenes = data.getExperiment().getNumberOfGenes(); |
2 |
26 Feb 07 |
jari |
104 |
this.numExps = data.getExperiment().getNumberOfSamples(); |
2 |
26 Feb 07 |
jari |
105 |
this.fieldNames = data.getFieldNames(); |
2 |
26 Feb 07 |
jari |
106 |
this.classifyGenes = classifyGenes; |
2 |
26 Feb 07 |
jari |
107 |
this.numberOfClasses = numberOfClasses; |
2 |
26 Feb 07 |
jari |
108 |
|
2 |
26 Feb 07 |
jari |
109 |
menuBar = new JMenuBar(); |
2 |
26 Feb 07 |
jari |
110 |
this.setJMenuBar(menuBar); |
2 |
26 Feb 07 |
jari |
111 |
|
2 |
26 Feb 07 |
jari |
112 |
GridBagLayout gridbag = new GridBagLayout(); |
2 |
26 Feb 07 |
jari |
113 |
GridBagConstraints constraints = new GridBagConstraints(); |
2 |
26 Feb 07 |
jari |
114 |
constraints.fill = GridBagConstraints.BOTH; |
2 |
26 Feb 07 |
jari |
115 |
|
2 |
26 Feb 07 |
jari |
116 |
JPanel pane = new JPanel(); |
2 |
26 Feb 07 |
jari |
117 |
pane.setLayout(gridbag); |
2 |
26 Feb 07 |
jari |
118 |
|
2 |
26 Feb 07 |
jari |
119 |
JPanel tablePanel = new JPanel(); |
2 |
26 Feb 07 |
jari |
120 |
GridBagLayout grid1 = new GridBagLayout(); |
2 |
26 Feb 07 |
jari |
121 |
tablePanel.setLayout(grid1); |
2 |
26 Feb 07 |
jari |
122 |
|
2 |
26 Feb 07 |
jari |
123 |
damTabModel = new DAMClassTableModel(); |
2 |
26 Feb 07 |
jari |
124 |
damClassTable = new JTable(damTabModel); |
2 |
26 Feb 07 |
jari |
125 |
damClassTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); |
2 |
26 Feb 07 |
jari |
126 |
TableColumn column = null; |
2 |
26 Feb 07 |
jari |
127 |
for (int i = 0; i < damTabModel.getColumnCount(); i++) { |
2 |
26 Feb 07 |
jari |
128 |
column = damClassTable.getColumnModel().getColumn(i); |
2 |
26 Feb 07 |
jari |
129 |
column.setMinWidth(30); |
2 |
26 Feb 07 |
jari |
130 |
} |
2 |
26 Feb 07 |
jari |
131 |
damClassTable.setColumnModel(new DAMClassTableColumnModel(damClassTable.getColumnModel())); |
2 |
26 Feb 07 |
jari |
132 |
damClassTable.getModel().addTableModelListener(new ClassSelectionListener()); |
2 |
26 Feb 07 |
jari |
133 |
|
2 |
26 Feb 07 |
jari |
134 |
searchDialog = new DAMSearchDialog(JOptionPane.getFrameForComponent(this), damClassTable, numberOfClasses, false); //persistent search dialog |
2 |
26 Feb 07 |
jari |
135 |
|
2 |
26 Feb 07 |
jari |
136 |
JScrollPane scroll = new JScrollPane(damClassTable); |
2 |
26 Feb 07 |
jari |
137 |
buildConstraints(constraints, 0, 0, 1, 1, 100, 100); |
2 |
26 Feb 07 |
jari |
138 |
grid1.setConstraints(scroll, constraints); |
2 |
26 Feb 07 |
jari |
139 |
tablePanel.add(scroll); |
2 |
26 Feb 07 |
jari |
140 |
|
2 |
26 Feb 07 |
jari |
141 |
buildConstraints(constraints, 0, 0, 1, 1, 100, 90); |
2 |
26 Feb 07 |
jari |
142 |
gridbag.setConstraints(tablePanel, constraints); |
2 |
26 Feb 07 |
jari |
143 |
pane.add(tablePanel); |
2 |
26 Feb 07 |
jari |
144 |
|
2 |
26 Feb 07 |
jari |
145 |
JPanel bottomPanel = new JPanel(); |
2 |
26 Feb 07 |
jari |
146 |
bottomPanel.setBorder(new EtchedBorder()); |
2 |
26 Feb 07 |
jari |
147 |
bottomPanel.setBackground(Color.white); |
2 |
26 Feb 07 |
jari |
148 |
GridBagLayout grid2 = new GridBagLayout(); |
2 |
26 Feb 07 |
jari |
149 |
bottomPanel.setLayout(grid2); |
2 |
26 Feb 07 |
jari |
150 |
|
2 |
26 Feb 07 |
jari |
151 |
saveButton = new JRadioButton("Save classification to file", true); |
2 |
26 Feb 07 |
jari |
152 |
saveButton.setBackground(Color.white); |
2 |
26 Feb 07 |
jari |
153 |
doNotSaveButton = new JRadioButton("Do not save classification to file", false); |
2 |
26 Feb 07 |
jari |
154 |
doNotSaveButton.setBackground(Color.white); |
2 |
26 Feb 07 |
jari |
155 |
ButtonGroup saveOrNot = new ButtonGroup(); |
2 |
26 Feb 07 |
jari |
156 |
saveOrNot.add(saveButton); |
2 |
26 Feb 07 |
jari |
157 |
saveOrNot.add(doNotSaveButton); |
2 |
26 Feb 07 |
jari |
158 |
|
2 |
26 Feb 07 |
jari |
159 |
final JFileChooser fc = new JFileChooser(); |
2 |
26 Feb 07 |
jari |
160 |
fc.setCurrentDirectory(new File("Data")); |
2 |
26 Feb 07 |
jari |
161 |
fc.setDialogTitle("Save classification"); |
2 |
26 Feb 07 |
jari |
162 |
|
2 |
26 Feb 07 |
jari |
163 |
|
2 |
26 Feb 07 |
jari |
164 |
cancelButton = new JButton("Cancel >"); |
2 |
26 Feb 07 |
jari |
165 |
cancelButton.addActionListener(new ActionListener() { |
2 |
26 Feb 07 |
jari |
166 |
public void actionPerformed(ActionEvent evt) { |
2 |
26 Feb 07 |
jari |
167 |
dispose(); |
2 |
26 Feb 07 |
jari |
168 |
} |
2 |
26 Feb 07 |
jari |
169 |
}); |
2 |
26 Feb 07 |
jari |
170 |
|
2 |
26 Feb 07 |
jari |
171 |
|
2 |
26 Feb 07 |
jari |
172 |
nextButton = new JButton("Next >"); |
2 |
26 Feb 07 |
jari |
173 |
nextButton.addActionListener(new ActionListener() { |
2 |
26 Feb 07 |
jari |
174 |
public void actionPerformed(ActionEvent evt) { |
2 |
26 Feb 07 |
jari |
175 |
if (doNotSaveButton.isSelected()) { |
2 |
26 Feb 07 |
jari |
176 |
DAMClassificationEditor.this.dispose(); |
2 |
26 Feb 07 |
jari |
177 |
stopHere = false; |
2 |
26 Feb 07 |
jari |
178 |
nextPressed = true; |
2 |
26 Feb 07 |
jari |
179 |
} else { |
2 |
26 Feb 07 |
jari |
180 |
int returnVal = fc.showSaveDialog(DAMClassificationEditor.this); |
2 |
26 Feb 07 |
jari |
181 |
if (returnVal == JFileChooser.APPROVE_OPTION) { |
2 |
26 Feb 07 |
jari |
182 |
File file = fc.getSelectedFile(); |
2 |
26 Feb 07 |
jari |
183 |
|
2 |
26 Feb 07 |
jari |
184 |
saveToFile(file); |
2 |
26 Feb 07 |
jari |
185 |
|
2 |
26 Feb 07 |
jari |
186 |
DAMSecondDialog kSecDialog = new DAMSecondDialog(mainFrame, true); |
2 |
26 Feb 07 |
jari |
187 |
kSecDialog.setVisible(true); |
2 |
26 Feb 07 |
jari |
188 |
if (!kSecDialog.proceed()) { |
2 |
26 Feb 07 |
jari |
189 |
stopHere = true; |
2 |
26 Feb 07 |
jari |
190 |
} else { |
2 |
26 Feb 07 |
jari |
191 |
stopHere = false; |
2 |
26 Feb 07 |
jari |
192 |
} |
2 |
26 Feb 07 |
jari |
193 |
|
2 |
26 Feb 07 |
jari |
194 |
incompatible = false; |
2 |
26 Feb 07 |
jari |
195 |
fileSaved = true; |
2 |
26 Feb 07 |
jari |
196 |
|
2 |
26 Feb 07 |
jari |
197 |
if (stopHere == true) { |
2 |
26 Feb 07 |
jari |
198 |
nextPressed = false; |
2 |
26 Feb 07 |
jari |
199 |
DAMClassificationEditor.this.setVisible(true); |
2 |
26 Feb 07 |
jari |
200 |
} else { |
2 |
26 Feb 07 |
jari |
201 |
nextPressed = true; |
2 |
26 Feb 07 |
jari |
202 |
DAMClassificationEditor.this.dispose(); |
2 |
26 Feb 07 |
jari |
203 |
} |
2 |
26 Feb 07 |
jari |
204 |
|
2 |
26 Feb 07 |
jari |
205 |
/* |
2 |
26 Feb 07 |
jari |
DAMSecondDialog kSecDialog = new DAMSecondDialog(mainFrame, true); |
2 |
26 Feb 07 |
jari |
kSecDialog.setVisible(true); |
2 |
26 Feb 07 |
jari |
if (!kSecDialog.proceed()) { |
2 |
26 Feb 07 |
jari |
stopHere = true; |
2 |
26 Feb 07 |
jari |
210 |
} |
2 |
26 Feb 07 |
jari |
211 |
*/ |
2 |
26 Feb 07 |
jari |
212 |
|
2 |
26 Feb 07 |
jari |
213 |
} |
2 |
26 Feb 07 |
jari |
214 |
} |
2 |
26 Feb 07 |
jari |
215 |
} |
2 |
26 Feb 07 |
jari |
216 |
}); |
2 |
26 Feb 07 |
jari |
217 |
|
2 |
26 Feb 07 |
jari |
218 |
constraints.fill = GridBagConstraints.NONE; |
2 |
26 Feb 07 |
jari |
219 |
|
2 |
26 Feb 07 |
jari |
220 |
buildConstraints(constraints, 0, 0, 1, 1, 100, 33); |
2 |
26 Feb 07 |
jari |
221 |
grid2.setConstraints(saveButton, constraints); |
2 |
26 Feb 07 |
jari |
222 |
bottomPanel.add(saveButton); |
2 |
26 Feb 07 |
jari |
223 |
|
2 |
26 Feb 07 |
jari |
224 |
buildConstraints(constraints, 0, 1, 1, 1, 0, 33); |
2 |
26 Feb 07 |
jari |
225 |
grid2.setConstraints(doNotSaveButton, constraints); |
2 |
26 Feb 07 |
jari |
226 |
bottomPanel.add(doNotSaveButton); |
2 |
26 Feb 07 |
jari |
227 |
|
2 |
26 Feb 07 |
jari |
228 |
buildConstraints(constraints, 0, 2, 1, 1, 0, 34); |
2 |
26 Feb 07 |
jari |
229 |
grid2.setConstraints(nextButton, constraints); |
2 |
26 Feb 07 |
jari |
230 |
bottomPanel.add(nextButton); |
2 |
26 Feb 07 |
jari |
231 |
|
2 |
26 Feb 07 |
jari |
232 |
/* |
2 |
26 Feb 07 |
jari |
buildConstraints(constraints, 0, 3, 1, 1, 0, 34); |
2 |
26 Feb 07 |
jari |
grid2.setConstraints(cancelButton, constraints); |
2 |
26 Feb 07 |
jari |
bottomPanel.add(cancelButton); |
2 |
26 Feb 07 |
jari |
236 |
*/ |
2 |
26 Feb 07 |
jari |
237 |
|
2 |
26 Feb 07 |
jari |
238 |
constraints.fill = GridBagConstraints.BOTH; |
2 |
26 Feb 07 |
jari |
239 |
buildConstraints(constraints, 0, 1, 1, 1, 0, 10); |
2 |
26 Feb 07 |
jari |
240 |
gridbag.setConstraints(bottomPanel, constraints); |
2 |
26 Feb 07 |
jari |
241 |
pane.add(bottomPanel); |
2 |
26 Feb 07 |
jari |
242 |
|
2 |
26 Feb 07 |
jari |
243 |
this.setContentPane(pane); |
2 |
26 Feb 07 |
jari |
244 |
|
2 |
26 Feb 07 |
jari |
245 |
if (classifyGenes) { |
2 |
26 Feb 07 |
jari |
246 |
labelsAscItem = new JMenuItem[fieldNames.length]; |
2 |
26 Feb 07 |
jari |
247 |
labelsDescItem = new JMenuItem[fieldNames.length]; |
2 |
26 Feb 07 |
jari |
248 |
for (int i = 0; i < fieldNames.length; i++) { |
2 |
26 Feb 07 |
jari |
249 |
labelsAscItem[i] = new JMenuItem(fieldNames[i]); |
2 |
26 Feb 07 |
jari |
250 |
labelsDescItem[i] = new JMenuItem(fieldNames[i]); |
2 |
26 Feb 07 |
jari |
251 |
} |
2 |
26 Feb 07 |
jari |
252 |
} else { |
2 |
26 Feb 07 |
jari |
253 |
labelsAscItem = new JMenuItem[1]; |
2 |
26 Feb 07 |
jari |
254 |
labelsAscItem[0] = new JMenuItem("Sample/Experiment Name"); |
2 |
26 Feb 07 |
jari |
255 |
labelsDescItem = new JMenuItem[1]; |
2 |
26 Feb 07 |
jari |
256 |
labelsDescItem[0] = new JMenuItem("Sample/Experiment Name"); |
2 |
26 Feb 07 |
jari |
257 |
} |
2 |
26 Feb 07 |
jari |
258 |
|
2 |
26 Feb 07 |
jari |
259 |
for (int i = 0; i < labelsAscItem.length; i++) { |
2 |
26 Feb 07 |
jari |
260 |
labelsAscItem[i].addActionListener(new SortListener(true, false)); |
2 |
26 Feb 07 |
jari |
261 |
labelsDescItem[i].addActionListener(new SortListener(false, false)); |
2 |
26 Feb 07 |
jari |
262 |
} |
2 |
26 Feb 07 |
jari |
263 |
|
2 |
26 Feb 07 |
jari |
264 |
classItem = new JMenuItem[numberOfClasses + 1]; |
2 |
26 Feb 07 |
jari |
265 |
|
2 |
26 Feb 07 |
jari |
266 |
for (int i = 0; i < numberOfClasses; i++) { |
2 |
26 Feb 07 |
jari |
267 |
classItem[i] = new JMenuItem("Class " + (i + 1)); |
2 |
26 Feb 07 |
jari |
268 |
} |
2 |
26 Feb 07 |
jari |
269 |
|
2 |
26 Feb 07 |
jari |
270 |
classItem[numberOfClasses] = new JMenuItem("Neutral"); |
2 |
26 Feb 07 |
jari |
271 |
|
2 |
26 Feb 07 |
jari |
272 |
for (int i = 0; i < classItem.length; i++) { |
2 |
26 Feb 07 |
jari |
273 |
classItem[i].addActionListener(new AssignListener()); |
2 |
26 Feb 07 |
jari |
274 |
} |
2 |
26 Feb 07 |
jari |
275 |
|
2 |
26 Feb 07 |
jari |
276 |
final JFileChooser fc1 = new JFileChooser(); |
2 |
26 Feb 07 |
jari |
277 |
fc1.setCurrentDirectory(new File("Data")); |
2 |
26 Feb 07 |
jari |
278 |
fc1.setDialogTitle("Open Classification"); |
2 |
26 Feb 07 |
jari |
279 |
|
2 |
26 Feb 07 |
jari |
280 |
fileMenu = new JMenu("File"); |
2 |
26 Feb 07 |
jari |
281 |
openItem = new JMenuItem("Apply File"); |
2 |
26 Feb 07 |
jari |
282 |
openItem.addActionListener(new ActionListener() { |
2 |
26 Feb 07 |
jari |
283 |
public void actionPerformed(ActionEvent evt) { |
2 |
26 Feb 07 |
jari |
284 |
|
2 |
26 Feb 07 |
jari |
285 |
int returnVal = fc1.showOpenDialog(DAMClassificationEditor.this); |
2 |
26 Feb 07 |
jari |
286 |
if (returnVal == JFileChooser.APPROVE_OPTION) { |
2 |
26 Feb 07 |
jari |
287 |
File file = fc1.getSelectedFile(); |
2 |
26 Feb 07 |
jari |
288 |
loadFromFile(file); |
2 |
26 Feb 07 |
jari |
289 |
|
2 |
26 Feb 07 |
jari |
290 |
fileOpened = true; |
2 |
26 Feb 07 |
jari |
291 |
nextPressed = false; |
2 |
26 Feb 07 |
jari |
292 |
|
2 |
26 Feb 07 |
jari |
293 |
} |
2 |
26 Feb 07 |
jari |
294 |
} |
2 |
26 Feb 07 |
jari |
295 |
}); |
2 |
26 Feb 07 |
jari |
296 |
|
2 |
26 Feb 07 |
jari |
297 |
|
2 |
26 Feb 07 |
jari |
298 |
fileMenu.add(openItem); |
2 |
26 Feb 07 |
jari |
299 |
|
2 |
26 Feb 07 |
jari |
300 |
menuBar.add(fileMenu); |
2 |
26 Feb 07 |
jari |
301 |
|
2 |
26 Feb 07 |
jari |
302 |
editMenu = new JMenu("Edit"); |
2 |
26 Feb 07 |
jari |
303 |
selectAllItem = new JMenuItem("Select all rows"); |
2 |
26 Feb 07 |
jari |
304 |
selectAllItem.addActionListener(new ActionListener() { |
2 |
26 Feb 07 |
jari |
305 |
public void actionPerformed(ActionEvent evt) { |
2 |
26 Feb 07 |
jari |
306 |
damClassTable.selectAll(); |
2 |
26 Feb 07 |
jari |
307 |
} |
2 |
26 Feb 07 |
jari |
308 |
}); |
2 |
26 Feb 07 |
jari |
309 |
editMenu.add(selectAllItem); |
2 |
26 Feb 07 |
jari |
310 |
assignSubMenu = new JMenu("Assign selected rows to"); |
2 |
26 Feb 07 |
jari |
311 |
for (int i = 0; i < classItem.length; i++) { |
2 |
26 Feb 07 |
jari |
312 |
assignSubMenu.add(classItem[i]); |
2 |
26 Feb 07 |
jari |
313 |
} |
2 |
26 Feb 07 |
jari |
314 |
editMenu.add(assignSubMenu); |
2 |
26 Feb 07 |
jari |
315 |
menuBar.add(editMenu); |
2 |
26 Feb 07 |
jari |
316 |
|
2 |
26 Feb 07 |
jari |
317 |
toolsMenu = new JMenu("Tools"); |
2 |
26 Feb 07 |
jari |
318 |
searchItem = new JMenuItem("Search"); |
2 |
26 Feb 07 |
jari |
319 |
searchItem.addActionListener(new ActionListener() { |
2 |
26 Feb 07 |
jari |
320 |
public void actionPerformed(ActionEvent evt) { |
2 |
26 Feb 07 |
jari |
321 |
searchTable(); |
2 |
26 Feb 07 |
jari |
322 |
} |
2 |
26 Feb 07 |
jari |
323 |
}); |
2 |
26 Feb 07 |
jari |
324 |
toolsMenu.add(searchItem); |
2 |
26 Feb 07 |
jari |
325 |
sortAscMenu = new JMenu("Sort ascending by"); |
2 |
26 Feb 07 |
jari |
326 |
for (int i = 0; i < labelsAscItem.length; i++) { |
2 |
26 Feb 07 |
jari |
327 |
sortAscMenu.add(labelsAscItem[i]); |
2 |
26 Feb 07 |
jari |
328 |
} |
2 |
26 Feb 07 |
jari |
329 |
toolsMenu.add(sortAscMenu); |
2 |
26 Feb 07 |
jari |
330 |
sortDescMenu = new JMenu("Sort descending by"); |
2 |
26 Feb 07 |
jari |
331 |
for (int i = 0; i < labelsDescItem.length; i++) { |
2 |
26 Feb 07 |
jari |
332 |
sortDescMenu.add(labelsDescItem[i]); |
2 |
26 Feb 07 |
jari |
333 |
} |
2 |
26 Feb 07 |
jari |
334 |
toolsMenu.add(sortDescMenu); |
2 |
26 Feb 07 |
jari |
335 |
sortByClassItem = new JMenuItem("Sort by classification"); |
2 |
26 Feb 07 |
jari |
336 |
sortByClassItem.addActionListener(new ActionListener() { |
2 |
26 Feb 07 |
jari |
337 |
public void actionPerformed(ActionEvent evt) { |
2 |
26 Feb 07 |
jari |
338 |
sortByClassification(); |
2 |
26 Feb 07 |
jari |
339 |
} |
2 |
26 Feb 07 |
jari |
340 |
}); |
2 |
26 Feb 07 |
jari |
341 |
toolsMenu.add(sortByClassItem); |
2 |
26 Feb 07 |
jari |
342 |
origOrderItem = new JMenuItem("Restore original ordering"); |
2 |
26 Feb 07 |
jari |
343 |
origOrderItem.addActionListener(new SortListener(true, true)); |
2 |
26 Feb 07 |
jari |
344 |
toolsMenu.add(origOrderItem); |
2 |
26 Feb 07 |
jari |
345 |
|
2 |
26 Feb 07 |
jari |
346 |
menuBar.add(toolsMenu); |
2 |
26 Feb 07 |
jari |
347 |
|
2 |
26 Feb 07 |
jari |
348 |
} |
2 |
26 Feb 07 |
jari |
349 |
|
2 |
26 Feb 07 |
jari |
/** Closes the dialog */ |
2 |
26 Feb 07 |
jari |
351 |
private void closeDialog(WindowEvent evt) { |
2 |
26 Feb 07 |
jari |
352 |
setVisible(false); |
2 |
26 Feb 07 |
jari |
353 |
cancelPressed = true; |
2 |
26 Feb 07 |
jari |
354 |
dispose(); |
2 |
26 Feb 07 |
jari |
355 |
} |
2 |
26 Feb 07 |
jari |
356 |
|
2 |
26 Feb 07 |
jari |
357 |
|
2 |
26 Feb 07 |
jari |
358 |
void buildConstraints(GridBagConstraints gbc, int gx, int gy, |
2 |
26 Feb 07 |
jari |
359 |
int gw, int gh, int wx, int wy) { |
2 |
26 Feb 07 |
jari |
360 |
|
2 |
26 Feb 07 |
jari |
361 |
gbc.gridx = gx; |
2 |
26 Feb 07 |
jari |
362 |
gbc.gridy = gy; |
2 |
26 Feb 07 |
jari |
363 |
gbc.gridwidth = gw; |
2 |
26 Feb 07 |
jari |
364 |
gbc.gridheight = gh; |
2 |
26 Feb 07 |
jari |
365 |
gbc.weightx = wx; |
2 |
26 Feb 07 |
jari |
366 |
gbc.weighty = wy; |
2 |
26 Feb 07 |
jari |
367 |
} |
2 |
26 Feb 07 |
jari |
368 |
|
2 |
26 Feb 07 |
jari |
369 |
public void setVisible(boolean visible) { |
2 |
26 Feb 07 |
jari |
370 |
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); |
2 |
26 Feb 07 |
jari |
371 |
setLocation((screenSize.width - getSize().width)/2, (screenSize.height - getSize().height)/2); |
2 |
26 Feb 07 |
jari |
372 |
|
2 |
26 Feb 07 |
jari |
373 |
super.setVisible(visible); |
2 |
26 Feb 07 |
jari |
374 |
} |
2 |
26 Feb 07 |
jari |
375 |
|
2 |
26 Feb 07 |
jari |
376 |
class DAMClassifierTable extends JTable { |
2 |
26 Feb 07 |
jari |
377 |
} |
2 |
26 Feb 07 |
jari |
378 |
|
2 |
26 Feb 07 |
jari |
379 |
class DAMClassTableModel extends AbstractTableModel { |
2 |
26 Feb 07 |
jari |
380 |
String[] columnNames; |
2 |
26 Feb 07 |
jari |
381 |
Object tableData[][]; |
2 |
26 Feb 07 |
jari |
382 |
int indexLastClass; |
2 |
26 Feb 07 |
jari |
383 |
|
2 |
26 Feb 07 |
jari |
384 |
public DAMClassTableModel() { |
2 |
26 Feb 07 |
jari |
385 |
indexLastClass = numberOfClasses; |
2 |
26 Feb 07 |
jari |
386 |
if (classifyGenes) { |
2 |
26 Feb 07 |
jari |
387 |
columnNames = new String[fieldNames.length + numberOfClasses + 2]; |
2 |
26 Feb 07 |
jari |
388 |
columnNames[0] = "Index"; |
2 |
26 Feb 07 |
jari |
389 |
for (int i = 0; i < numberOfClasses; i++) { |
2 |
26 Feb 07 |
jari |
390 |
columnNames[i + 1] = "Class " + (i+1); |
2 |
26 Feb 07 |
jari |
391 |
} |
2 |
26 Feb 07 |
jari |
392 |
columnNames[numberOfClasses + 1] = "Neutral"; |
2 |
26 Feb 07 |
jari |
393 |
|
2 |
26 Feb 07 |
jari |
394 |
for (int i = 0; i < fieldNames.length; i++) { |
2 |
26 Feb 07 |
jari |
395 |
columnNames[numberOfClasses + 2 + i] = fieldNames[i]; |
2 |
26 Feb 07 |
jari |
396 |
} |
2 |
26 Feb 07 |
jari |
397 |
|
2 |
26 Feb 07 |
jari |
398 |
tableData = new Object[numGenes][columnNames.length]; |
2 |
26 Feb 07 |
jari |
//EH changed for loop counters from i,j to row,col for clarity |
2 |
26 Feb 07 |
jari |
400 |
for (int row = 0; row < tableData.length; row++) { |
2 |
26 Feb 07 |
jari |
401 |
for (int col = 0; col < columnNames.length; col++) { |
2 |
26 Feb 07 |
jari |
402 |
if (col == 0) { |
2 |
26 Feb 07 |
jari |
403 |
tableData[row][col] = new Integer(row); |
2 |
26 Feb 07 |
jari |
404 |
} else if ((col > 0) && (col < (numberOfClasses + 1))) { |
2 |
26 Feb 07 |
jari |
405 |
tableData[row][col] = new Boolean(false); |
2 |
26 Feb 07 |
jari |
406 |
} else if (col == numberOfClasses + 1) { |
2 |
26 Feb 07 |
jari |
407 |
tableData[row][col] = new Boolean(true); |
2 |
26 Feb 07 |
jari |
408 |
} else { |
2 |
26 Feb 07 |
jari |
409 |
tableData[row][col] = data.getElementAttribute(row, col - (numberOfClasses + 2)); |
2 |
26 Feb 07 |
jari |
410 |
} |
2 |
26 Feb 07 |
jari |
411 |
} |
2 |
26 Feb 07 |
jari |
412 |
} |
2 |
26 Feb 07 |
jari |
413 |
|
2 |
26 Feb 07 |
jari |
414 |
} else { // (!classifyGenes) |
2 |
26 Feb 07 |
jari |
415 |
columnNames = new String[numberOfClasses + 3]; |
2 |
26 Feb 07 |
jari |
416 |
columnNames[0] = "Index"; |
2 |
26 Feb 07 |
jari |
417 |
for (int i = 0; i < numberOfClasses; i++) { |
2 |
26 Feb 07 |
jari |
418 |
columnNames[i + 1] = "Class " + (i+1); |
2 |
26 Feb 07 |
jari |
419 |
} |
2 |
26 Feb 07 |
jari |
420 |
columnNames[numberOfClasses + 1] = "Neutral"; |
2 |
26 Feb 07 |
jari |
421 |
columnNames[numberOfClasses + 2] = "Sample/Experiment Name"; |
2 |
26 Feb 07 |
jari |
422 |
tableData = new Object[numExps][columnNames.length]; |
2 |
26 Feb 07 |
jari |
423 |
|
2 |
26 Feb 07 |
jari |
//EH changed for loop counters from i,j to row,col for clarity |
2 |
26 Feb 07 |
jari |
425 |
for (int row = 0; row < tableData.length; row++) { |
2 |
26 Feb 07 |
jari |
426 |
for (int col = 0; col < columnNames.length; col++) { |
2 |
26 Feb 07 |
jari |
427 |
if (col == 0) { |
2 |
26 Feb 07 |
jari |
428 |
tableData[row][col] = new Integer(row); |
2 |
26 Feb 07 |
jari |
429 |
} else if ((col > 0) && (col < (numberOfClasses + 1))) { |
2 |
26 Feb 07 |
jari |
430 |
tableData[row][col] = new Boolean(false); |
2 |
26 Feb 07 |
jari |
431 |
} else if (col == numberOfClasses + 1) { |
2 |
26 Feb 07 |
jari |
432 |
tableData[row][col] = new Boolean(true); |
2 |
26 Feb 07 |
jari |
433 |
} else if (col == numberOfClasses + 2) { |
2 |
26 Feb 07 |
jari |
434 |
tableData[row][col] = data.getFullSampleName(row); |
2 |
26 Feb 07 |
jari |
435 |
} |
2 |
26 Feb 07 |
jari |
436 |
} |
2 |
26 Feb 07 |
jari |
437 |
} |
2 |
26 Feb 07 |
jari |
438 |
} |
2 |
26 Feb 07 |
jari |
439 |
|
2 |
26 Feb 07 |
jari |
440 |
origData = new Object[tableData.length][tableData[0].length]; |
2 |
26 Feb 07 |
jari |
441 |
|
2 |
26 Feb 07 |
jari |
442 |
for (int i = 0; i < tableData.length; i++) { |
2 |
26 Feb 07 |
jari |
443 |
for (int j = 0; j < tableData[0].length; j++) { |
2 |
26 Feb 07 |
jari |
444 |
origData[i][j] = tableData[i][j]; |
2 |
26 Feb 07 |
jari |
445 |
} |
2 |
26 Feb 07 |
jari |
446 |
} |
2 |
26 Feb 07 |
jari |
447 |
|
2 |
26 Feb 07 |
jari |
448 |
} |
2 |
26 Feb 07 |
jari |
449 |
|
2 |
26 Feb 07 |
jari |
450 |
public int getColumnCount() { |
2 |
26 Feb 07 |
jari |
451 |
return columnNames.length; |
2 |
26 Feb 07 |
jari |
452 |
} |
2 |
26 Feb 07 |
jari |
453 |
|
2 |
26 Feb 07 |
jari |
454 |
public int getRowCount() { |
2 |
26 Feb 07 |
jari |
455 |
return tableData.length; |
2 |
26 Feb 07 |
jari |
456 |
} |
2 |
26 Feb 07 |
jari |
457 |
|
2 |
26 Feb 07 |
jari |
458 |
public String getColumnName(int col) { |
2 |
26 Feb 07 |
jari |
459 |
return columnNames[col]; |
2 |
26 Feb 07 |
jari |
460 |
} |
2 |
26 Feb 07 |
jari |
461 |
|
2 |
26 Feb 07 |
jari |
462 |
public int getColumnIndex(String name) { |
2 |
26 Feb 07 |
jari |
463 |
int i; |
2 |
26 Feb 07 |
jari |
464 |
for (i = 0; i < columnNames.length; i++) { |
2 |
26 Feb 07 |
jari |
465 |
if (columnNames[i].equals(name)) { |
2 |
26 Feb 07 |
jari |
466 |
break; |
2 |
26 Feb 07 |
jari |
467 |
} |
2 |
26 Feb 07 |
jari |
468 |
} |
2 |
26 Feb 07 |
jari |
469 |
if (i < columnNames.length) { |
2 |
26 Feb 07 |
jari |
470 |
return i; |
2 |
26 Feb 07 |
jari |
471 |
} else { |
2 |
26 Feb 07 |
jari |
472 |
return -1; |
2 |
26 Feb 07 |
jari |
473 |
} |
2 |
26 Feb 07 |
jari |
474 |
} |
2 |
26 Feb 07 |
jari |
475 |
|
2 |
26 Feb 07 |
jari |
476 |
public Object getValueAt(int row, int col) { |
2 |
26 Feb 07 |
jari |
477 |
return tableData[row][col]; |
2 |
26 Feb 07 |
jari |
478 |
} |
2 |
26 Feb 07 |
jari |
479 |
|
2 |
26 Feb 07 |
jari |
480 |
public void setValueAt(Object value, int row, int col) { |
2 |
26 Feb 07 |
jari |
481 |
tableData[row][col] = value; |
2 |
26 Feb 07 |
jari |
//fireTableCellUpdated(row, col); |
2 |
26 Feb 07 |
jari |
483 |
this.fireTableChanged(new TableModelEvent(this, row, row, col)); |
2 |
26 Feb 07 |
jari |
484 |
} |
2 |
26 Feb 07 |
jari |
485 |
|
2 |
26 Feb 07 |
jari |
486 |
|
2 |
26 Feb 07 |
jari |
487 |
public Class getColumnClass(int c) { |
2 |
26 Feb 07 |
jari |
488 |
if (c == 0) { |
2 |
26 Feb 07 |
jari |
489 |
return java.lang.Integer.class; |
2 |
26 Feb 07 |
jari |
490 |
} else if ((c > 0) && (c <= (numberOfClasses + 1))) { |
2 |
26 Feb 07 |
jari |
491 |
return java.lang.Boolean.class; |
2 |
26 Feb 07 |
jari |
492 |
} else { |
2 |
26 Feb 07 |
jari |
493 |
return getValueAt(0, c).getClass(); |
2 |
26 Feb 07 |
jari |
494 |
} |
2 |
26 Feb 07 |
jari |
495 |
} |
2 |
26 Feb 07 |
jari |
496 |
|
2 |
26 Feb 07 |
jari |
497 |
|
2 |
26 Feb 07 |
jari |
498 |
public boolean isCellEditable(int row, int col) { |
2 |
26 Feb 07 |
jari |
//Note that the data/cell address is constant, |
2 |
26 Feb 07 |
jari |
//no matter where the cell appears onscreen. |
2 |
26 Feb 07 |
jari |
501 |
if ((col > 0) && (col <= (numberOfClasses + 1))) { |
2 |
26 Feb 07 |
jari |
502 |
return true; |
2 |
26 Feb 07 |
jari |
503 |
} else { |
2 |
26 Feb 07 |
jari |
504 |
return false; |
2 |
26 Feb 07 |
jari |
505 |
} |
2 |
26 Feb 07 |
jari |
506 |
} |
2 |
26 Feb 07 |
jari |
507 |
} |
2 |
26 Feb 07 |
jari |
508 |
|
2 |
26 Feb 07 |
jari |
509 |
|
2 |
26 Feb 07 |
jari |
510 |
class DAMClassTableColumnModel implements TableColumnModel { |
2 |
26 Feb 07 |
jari |
511 |
|
2 |
26 Feb 07 |
jari |
512 |
TableColumnModel tcm; |
2 |
26 Feb 07 |
jari |
513 |
|
2 |
26 Feb 07 |
jari |
514 |
public DAMClassTableColumnModel(TableColumnModel TCM) { |
2 |
26 Feb 07 |
jari |
515 |
this.tcm = TCM; |
2 |
26 Feb 07 |
jari |
516 |
} |
2 |
26 Feb 07 |
jari |
517 |
|
2 |
26 Feb 07 |
jari |
518 |
public void addColumn(javax.swing.table.TableColumn tableColumn) { |
2 |
26 Feb 07 |
jari |
519 |
tcm.addColumn(tableColumn); |
2 |
26 Feb 07 |
jari |
520 |
} |
2 |
26 Feb 07 |
jari |
521 |
|
2 |
26 Feb 07 |
jari |
522 |
public void addColumnModelListener(javax.swing.event.TableColumnModelListener tableColumnModelListener) { |
2 |
26 Feb 07 |
jari |
523 |
tcm.addColumnModelListener(tableColumnModelListener); |
2 |
26 Feb 07 |
jari |
524 |
} |
2 |
26 Feb 07 |
jari |
525 |
|
2 |
26 Feb 07 |
jari |
526 |
public javax.swing.table.TableColumn getColumn(int param) { |
2 |
26 Feb 07 |
jari |
527 |
return tcm.getColumn(param); |
2 |
26 Feb 07 |
jari |
528 |
} |
2 |
26 Feb 07 |
jari |
529 |
|
2 |
26 Feb 07 |
jari |
530 |
public int getColumnCount() { |
2 |
26 Feb 07 |
jari |
531 |
return tcm.getColumnCount(); |
2 |
26 Feb 07 |
jari |
532 |
} |
2 |
26 Feb 07 |
jari |
533 |
|
2 |
26 Feb 07 |
jari |
534 |
public int getColumnIndex(Object obj) { |
2 |
26 Feb 07 |
jari |
535 |
return tcm.getColumnIndex(obj); |
2 |
26 Feb 07 |
jari |
536 |
} |
2 |
26 Feb 07 |
jari |
537 |
|
2 |
26 Feb 07 |
jari |
538 |
public int getColumnIndexAtX(int param) { |
2 |
26 Feb 07 |
jari |
539 |
return tcm.getColumnIndexAtX(param); |
2 |
26 Feb 07 |
jari |
540 |
} |
2 |
26 Feb 07 |
jari |
541 |
|
2 |
26 Feb 07 |
jari |
542 |
public int getColumnMargin() { |
2 |
26 Feb 07 |
jari |
543 |
return tcm.getColumnMargin(); |
2 |
26 Feb 07 |
jari |
544 |
} |
2 |
26 Feb 07 |
jari |
545 |
|
2 |
26 Feb 07 |
jari |
546 |
public boolean getColumnSelectionAllowed() { |
2 |
26 Feb 07 |
jari |
547 |
return tcm.getColumnSelectionAllowed(); |
2 |
26 Feb 07 |
jari |
548 |
} |
2 |
26 Feb 07 |
jari |
549 |
|
2 |
26 Feb 07 |
jari |
550 |
public java.util.Enumeration getColumns() { |
2 |
26 Feb 07 |
jari |
551 |
return tcm.getColumns(); |
2 |
26 Feb 07 |
jari |
552 |
} |
2 |
26 Feb 07 |
jari |
553 |
|
2 |
26 Feb 07 |
jari |
554 |
public int getSelectedColumnCount() { |
2 |
26 Feb 07 |
jari |
555 |
return tcm.getSelectedColumnCount(); |
2 |
26 Feb 07 |
jari |
556 |
} |
2 |
26 Feb 07 |
jari |
557 |
|
2 |
26 Feb 07 |
jari |
558 |
public int[] getSelectedColumns() { |
2 |
26 Feb 07 |
jari |
559 |
return tcm.getSelectedColumns(); |
2 |
26 Feb 07 |
jari |
560 |
} |
2 |
26 Feb 07 |
jari |
561 |
|
2 |
26 Feb 07 |
jari |
562 |
public javax.swing.ListSelectionModel getSelectionModel() { |
2 |
26 Feb 07 |
jari |
563 |
return tcm.getSelectionModel(); |
2 |
26 Feb 07 |
jari |
564 |
} |
2 |
26 Feb 07 |
jari |
565 |
|
2 |
26 Feb 07 |
jari |
566 |
public int getTotalColumnWidth() { |
2 |
26 Feb 07 |
jari |
567 |
return tcm.getTotalColumnWidth(); |
2 |
26 Feb 07 |
jari |
568 |
} |
2 |
26 Feb 07 |
jari |
569 |
|
2 |
26 Feb 07 |
jari |
570 |
public void moveColumn(int from, int to) { |
2 |
26 Feb 07 |
jari |
571 |
if (from <= (numberOfClasses + 1) || to <= (numberOfClasses + 1)) { |
2 |
26 Feb 07 |
jari |
572 |
return; |
2 |
26 Feb 07 |
jari |
573 |
} else { |
2 |
26 Feb 07 |
jari |
574 |
tcm.moveColumn(from, to); |
2 |
26 Feb 07 |
jari |
575 |
} |
2 |
26 Feb 07 |
jari |
576 |
} |
2 |
26 Feb 07 |
jari |
577 |
|
2 |
26 Feb 07 |
jari |
578 |
public void removeColumn(javax.swing.table.TableColumn tableColumn) { |
2 |
26 Feb 07 |
jari |
579 |
tcm.removeColumn(tableColumn); |
2 |
26 Feb 07 |
jari |
580 |
} |
2 |
26 Feb 07 |
jari |
581 |
|
2 |
26 Feb 07 |
jari |
582 |
public void removeColumnModelListener(javax.swing.event.TableColumnModelListener tableColumnModelListener) { |
2 |
26 Feb 07 |
jari |
583 |
tcm.removeColumnModelListener(tableColumnModelListener); |
2 |
26 Feb 07 |
jari |
584 |
} |
2 |
26 Feb 07 |
jari |
585 |
|
2 |
26 Feb 07 |
jari |
586 |
public void setColumnMargin(int param) { |
2 |
26 Feb 07 |
jari |
587 |
tcm.setColumnMargin(param); |
2 |
26 Feb 07 |
jari |
588 |
} |
2 |
26 Feb 07 |
jari |
589 |
|
2 |
26 Feb 07 |
jari |
590 |
public void setColumnSelectionAllowed(boolean param) { |
2 |
26 Feb 07 |
jari |
591 |
tcm.setColumnSelectionAllowed(param); |
2 |
26 Feb 07 |
jari |
592 |
} |
2 |
26 Feb 07 |
jari |
593 |
|
2 |
26 Feb 07 |
jari |
594 |
public void setSelectionModel(javax.swing.ListSelectionModel listSelectionModel) { |
2 |
26 Feb 07 |
jari |
595 |
tcm.setSelectionModel(listSelectionModel); |
2 |
26 Feb 07 |
jari |
596 |
} |
2 |
26 Feb 07 |
jari |
597 |
|
2 |
26 Feb 07 |
jari |
598 |
} |
2 |
26 Feb 07 |
jari |
599 |
|
2 |
26 Feb 07 |
jari |
600 |
|
2 |
26 Feb 07 |
jari |
601 |
class ClassSelectionListener implements TableModelListener { |
2 |
26 Feb 07 |
jari |
602 |
|
2 |
26 Feb 07 |
jari |
603 |
public void tableChanged(TableModelEvent tme) { |
2 |
26 Feb 07 |
jari |
//TableModel tabMod = (TableModel)tme.getSource(); |
2 |
26 Feb 07 |
jari |
605 |
int selectedCol = tme.getColumn(); // |
2 |
26 Feb 07 |
jari |
606 |
int selectedRow = tme.getFirstRow(); // |
2 |
26 Feb 07 |
jari |
607 |
|
2 |
26 Feb 07 |
jari |
608 |
if ((selectedCol < 1) || (selectedCol > (numberOfClasses + 1) )) { |
2 |
26 Feb 07 |
jari |
609 |
return; |
2 |
26 Feb 07 |
jari |
610 |
} |
2 |
26 Feb 07 |
jari |
611 |
|
2 |
26 Feb 07 |
jari |
612 |
if( verifySelected(selectedRow, selectedCol)){ |
2 |
26 Feb 07 |
jari |
613 |
changeNeighbors(selectedRow, selectedCol); |
2 |
26 Feb 07 |
jari |
614 |
} |
2 |
26 Feb 07 |
jari |
615 |
|
2 |
26 Feb 07 |
jari |
616 |
int origDataRow = ((Integer)(damTabModel.getValueAt(selectedRow, 0))).intValue(); |
2 |
26 Feb 07 |
jari |
617 |
|
2 |
26 Feb 07 |
jari |
618 |
origData[origDataRow][selectedCol] = new Boolean(true); |
2 |
26 Feb 07 |
jari |
619 |
|
2 |
26 Feb 07 |
jari |
620 |
for (int i = 1; i <= (numberOfClasses + 1); i++) { |
2 |
26 Feb 07 |
jari |
621 |
if (i != selectedCol) { |
2 |
26 Feb 07 |
jari |
622 |
origData[origDataRow][i] = new Boolean(false); |
2 |
26 Feb 07 |
jari |
623 |
} |
2 |
26 Feb 07 |
jari |
624 |
} |
2 |
26 Feb 07 |
jari |
625 |
} |
2 |
26 Feb 07 |
jari |
626 |
|
2 |
26 Feb 07 |
jari |
627 |
private void changeNeighbors(int first, int col){ |
2 |
26 Feb 07 |
jari |
628 |
for (int i = 1; i <= (numberOfClasses + 1); i++) { |
2 |
26 Feb 07 |
jari |
629 |
if (i != col) { |
2 |
26 Feb 07 |
jari |
630 |
damClassTable.setValueAt(new Boolean(false), first, i); |
2 |
26 Feb 07 |
jari |
//origData[first][i] = new Boolean(false); |
2 |
26 Feb 07 |
jari |
632 |
} |
2 |
26 Feb 07 |
jari |
633 |
} |
2 |
26 Feb 07 |
jari |
634 |
} |
2 |
26 Feb 07 |
jari |
635 |
|
2 |
26 Feb 07 |
jari |
636 |
private boolean verifySelected(int row, int col){ |
2 |
26 Feb 07 |
jari |
637 |
|
2 |
26 Feb 07 |
jari |
638 |
boolean selVal = ((Boolean)damClassTable.getValueAt(row,col)).booleanValue(); |
2 |
26 Feb 07 |
jari |
//boolean value1, value2; |
2 |
26 Feb 07 |
jari |
640 |
|
2 |
26 Feb 07 |
jari |
641 |
if(selVal == true){ |
2 |
26 Feb 07 |
jari |
642 |
return true; |
2 |
26 Feb 07 |
jari |
643 |
} else { |
2 |
26 Feb 07 |
jari |
644 |
Vector truthValues = new Vector(); |
2 |
26 Feb 07 |
jari |
645 |
for (int i = 1; i <=(numberOfClasses + 1); i++) { |
2 |
26 Feb 07 |
jari |
646 |
if (i != col) { |
2 |
26 Feb 07 |
jari |
647 |
boolean value = ((Boolean)(damClassTable.getValueAt(row,i))).booleanValue(); |
2 |
26 Feb 07 |
jari |
648 |
truthValues.add(new Boolean(value)); |
2 |
26 Feb 07 |
jari |
649 |
} |
2 |
26 Feb 07 |
jari |
650 |
} |
2 |
26 Feb 07 |
jari |
651 |
boolean val1 = true; |
2 |
26 Feb 07 |
jari |
652 |
for (int i = 0; i < truthValues.size(); i++) { |
2 |
26 Feb 07 |
jari |
653 |
boolean val2 = ((Boolean)(truthValues.get(i))).booleanValue(); |
2 |
26 Feb 07 |
jari |
654 |
if (val2 == true) { |
2 |
26 Feb 07 |
jari |
655 |
val1 = false; |
2 |
26 Feb 07 |
jari |
656 |
break; |
2 |
26 Feb 07 |
jari |
657 |
} |
2 |
26 Feb 07 |
jari |
658 |
} |
2 |
26 Feb 07 |
jari |
659 |
|
2 |
26 Feb 07 |
jari |
660 |
if (val1 == true) { |
2 |
26 Feb 07 |
jari |
661 |
damClassTable.setValueAt(new Boolean(true), row, col); |
2 |
26 Feb 07 |
jari |
//origData[row][col] = new Boolean(true); |
2 |
26 Feb 07 |
jari |
663 |
} |
2 |
26 Feb 07 |
jari |
664 |
|
2 |
26 Feb 07 |
jari |
665 |
} |
2 |
26 Feb 07 |
jari |
666 |
return false; |
2 |
26 Feb 07 |
jari |
667 |
|
2 |
26 Feb 07 |
jari |
/*else { |
2 |
26 Feb 07 |
jari |
damClassTable.setValueAt(new Boolean(true), selectedRow, selectedCol); |
2 |
26 Feb 07 |
jari |
670 |
|
2 |
26 Feb 07 |
jari |
for (int i = 1; i <= (numberOfClasses + 1); i++) { |
2 |
26 Feb 07 |
jari |
if (i != selectedCol) { |
2 |
26 Feb 07 |
jari |
damClassTable.setValueAt(new Boolean(false), selectedRow, i); |
2 |
26 Feb 07 |
jari |
674 |
} |
2 |
26 Feb 07 |
jari |
675 |
} |
2 |
26 Feb 07 |
jari |
676 |
|
2 |
26 Feb 07 |
jari |
677 |
} |
2 |
26 Feb 07 |
jari |
678 |
*/ |
2 |
26 Feb 07 |
jari |
679 |
|
2 |
26 Feb 07 |
jari |
680 |
} |
2 |
26 Feb 07 |
jari |
681 |
|
2 |
26 Feb 07 |
jari |
682 |
} |
2 |
26 Feb 07 |
jari |
683 |
|
2 |
26 Feb 07 |
jari |
684 |
public void sortByColumn(int column, boolean ascending, boolean originalOrder) { |
2 |
26 Feb 07 |
jari |
685 |
if (originalOrder) { |
2 |
26 Feb 07 |
jari |
//double[] indices = new int[damTabModel.getRowCount()]; |
2 |
26 Feb 07 |
jari |
//for (int i = 0; i < damTabModel.getRowCount(); i++) { |
2 |
26 Feb 07 |
jari |
//indices[i] = ((Integer)(damTabModel.getValueAt(i, 0))).doubleValue(); |
2 |
26 Feb 07 |
jari |
689 |
/* |
2 |
26 Feb 07 |
jari |
QSort sortIndices = new QSort(indices); |
2 |
26 Feb 07 |
jari |
int[] sorted = sortIndices.getOrigIndx(); |
2 |
26 Feb 07 |
jari |
692 |
*/ |
2 |
26 Feb 07 |
jari |
693 |
Object[][] sortedData = new Object[damTabModel.getRowCount()][damTabModel.getColumnCount()]; |
2 |
26 Feb 07 |
jari |
694 |
|
2 |
26 Feb 07 |
jari |
695 |
for (int i = 0; i < sortedData.length; i++) { |
2 |
26 Feb 07 |
jari |
696 |
for (int j = 0; j < sortedData[0].length; j++) { |
2 |
26 Feb 07 |
jari |
697 |
sortedData[i][j] = origData[i][j]; |
2 |
26 Feb 07 |
jari |
698 |
} |
2 |
26 Feb 07 |
jari |
699 |
} |
2 |
26 Feb 07 |
jari |
700 |
|
2 |
26 Feb 07 |
jari |
701 |
for (int i = 0; i < sortedData.length; i++) { |
2 |
26 Feb 07 |
jari |
702 |
for (int j = 0; j < sortedData[0].length; j++) { |
2 |
26 Feb 07 |
jari |
703 |
damTabModel.setValueAt(sortedData[i][j], i, j); |
2 |
26 Feb 07 |
jari |
704 |
} |
2 |
26 Feb 07 |
jari |
705 |
validateTable(sortedData, i); |
2 |
26 Feb 07 |
jari |
706 |
} |
2 |
26 Feb 07 |
jari |
707 |
return; |
2 |
26 Feb 07 |
jari |
708 |
//} |
2 |
26 Feb 07 |
jari |
709 |
/* |
2 |
26 Feb 07 |
jari |
for (int i = 0; i < damTabModel.getRowCount(); i++) { |
2 |
26 Feb 07 |
jari |
for (int j = 0; j < damTabModel.getColumnCount(); j++) { |
2 |
26 Feb 07 |
jari |
damTabModel.setValueAt(origData[i][j], i, j); |
2 |
26 Feb 07 |
jari |
713 |
} |
2 |
26 Feb 07 |
jari |
validateTable(origData, i); |
2 |
26 Feb 07 |
jari |
715 |
} |
2 |
26 Feb 07 |
jari |
return; |
2 |
26 Feb 07 |
jari |
717 |
*/ |
2 |
26 Feb 07 |
jari |
718 |
} |
2 |
26 Feb 07 |
jari |
719 |
if ((column < 0)|| (column > damTabModel.getColumnCount())) { |
2 |
26 Feb 07 |
jari |
720 |
return; |
2 |
26 Feb 07 |
jari |
721 |
} |
2 |
26 Feb 07 |
jari |
722 |
Object[][] sortedData = new Object[damTabModel.getRowCount()][damTabModel.getColumnCount()]; |
2 |
26 Feb 07 |
jari |
//float[] origArray = new float[damTabModel.getRowCount()]; |
2 |
26 Feb 07 |
jari |
724 |
SortableField[] sortFields = new SortableField[damTabModel.getRowCount()]; |
2 |
26 Feb 07 |
jari |
725 |
|
2 |
26 Feb 07 |
jari |
726 |
for (int i = 0; i < sortFields.length; i++) { |
2 |
26 Feb 07 |
jari |
727 |
int origDataRow = ((Integer)(damTabModel.getValueAt(i, 0))).intValue(); |
2 |
26 Feb 07 |
jari |
728 |
sortFields[i] = new SortableField(origDataRow, column); |
2 |
26 Feb 07 |
jari |
729 |
} |
2 |
26 Feb 07 |
jari |
730 |
Arrays.sort(sortFields); |
2 |
26 Feb 07 |
jari |
731 |
int[] sortedIndices = new int[sortFields.length]; |
2 |
26 Feb 07 |
jari |
732 |
for (int i = 0; i < sortedIndices.length; i++) { |
2 |
26 Feb 07 |
jari |
733 |
sortedIndices[i] = sortFields[i].getIndex(); |
2 |
26 Feb 07 |
jari |
734 |
} |
2 |
26 Feb 07 |
jari |
735 |
if (!ascending) { |
2 |
26 Feb 07 |
jari |
736 |
sortedIndices = reverse(sortedIndices); |
2 |
26 Feb 07 |
jari |
737 |
} |
2 |
26 Feb 07 |
jari |
738 |
|
2 |
26 Feb 07 |
jari |
739 |
for (int i = 0; i < sortedData.length; i++) { |
2 |
26 Feb 07 |
jari |
740 |
for (int j = 0; j < sortedData[i].length; j++) { |
2 |
26 Feb 07 |
jari |
//sortedData[i][j] = tModel.getValueAt(sortedMeansAIndices[i], j); |
2 |
26 Feb 07 |
jari |
742 |
sortedData[i][j] = origData[sortedIndices[i]][j]; |
2 |
26 Feb 07 |
jari |
743 |
} |
2 |
26 Feb 07 |
jari |
744 |
} |
2 |
26 Feb 07 |
jari |
745 |
|
2 |
26 Feb 07 |
jari |
746 |
for (int i = 0; i < sortedData.length; i++) { |
2 |
26 Feb 07 |
jari |
747 |
for (int j = 0; j < sortedData[i].length; j++) { |
2 |
26 Feb 07 |
jari |
748 |
damTabModel.setValueAt(sortedData[i][j], i, j); |
2 |
26 Feb 07 |
jari |
749 |
} |
2 |
26 Feb 07 |
jari |
750 |
validateTable(sortedData, i); |
2 |
26 Feb 07 |
jari |
751 |
} |
2 |
26 Feb 07 |
jari |
752 |
|
2 |
26 Feb 07 |
jari |
753 |
damClassTable.removeRowSelectionInterval(0, damClassTable.getRowCount() - 1); |
2 |
26 Feb 07 |
jari |
754 |
} |
2 |
26 Feb 07 |
jari |
755 |
|
2 |
26 Feb 07 |
jari |
756 |
private int[] reverse(int[] arr) { |
2 |
26 Feb 07 |
jari |
757 |
int[] revArr = new int[arr.length]; |
2 |
26 Feb 07 |
jari |
758 |
int revCount = 0; |
2 |
26 Feb 07 |
jari |
759 |
int count = arr.length - 1; |
2 |
26 Feb 07 |
jari |
760 |
for (int i=0; i < arr.length; i++) { |
2 |
26 Feb 07 |
jari |
761 |
revArr[revCount] = arr[count]; |
2 |
26 Feb 07 |
jari |
762 |
revCount++; |
2 |
26 Feb 07 |
jari |
763 |
count--; |
2 |
26 Feb 07 |
jari |
764 |
} |
2 |
26 Feb 07 |
jari |
765 |
return revArr; |
2 |
26 Feb 07 |
jari |
766 |
} |
2 |
26 Feb 07 |
jari |
767 |
|
2 |
26 Feb 07 |
jari |
768 |
private void sortByClassification() { |
2 |
26 Feb 07 |
jari |
769 |
Vector[] classVectors = new Vector[numberOfClasses + 1]; |
2 |
26 Feb 07 |
jari |
770 |
for (int i = 0; i < classVectors.length; i++) { |
2 |
26 Feb 07 |
jari |
771 |
classVectors[i] = new Vector(); |
2 |
26 Feb 07 |
jari |
772 |
} |
2 |
26 Feb 07 |
jari |
773 |
|
2 |
26 Feb 07 |
jari |
774 |
for (int i = 0; i < damTabModel.getRowCount(); i++) { |
2 |
26 Feb 07 |
jari |
775 |
for (int j = 1; (j <= numberOfClasses + 1); j++) { |
2 |
26 Feb 07 |
jari |
776 |
boolean b = ((Boolean)(damTabModel.getValueAt(i, j))).booleanValue(); |
2 |
26 Feb 07 |
jari |
777 |
if (b) { |
2 |
26 Feb 07 |
jari |
778 |
classVectors[j - 1].add(new Integer(i)); |
2 |
26 Feb 07 |
jari |
779 |
break; |
2 |
26 Feb 07 |
jari |
780 |
} |
2 |
26 Feb 07 |
jari |
781 |
} |
2 |
26 Feb 07 |
jari |
782 |
} |
2 |
26 Feb 07 |
jari |
783 |
|
2 |
26 Feb 07 |
jari |
784 |
int[] sortedIndices = new int[damTabModel.getRowCount()]; |
2 |
26 Feb 07 |
jari |
785 |
int counter = 0; |
2 |
26 Feb 07 |
jari |
786 |
|
2 |
26 Feb 07 |
jari |
787 |
for (int i = 0; i < classVectors.length; i++) { |
2 |
26 Feb 07 |
jari |
788 |
for (int j = 0; j < classVectors[i].size(); j++) { |
2 |
26 Feb 07 |
jari |
789 |
sortedIndices[counter] = ((Integer)(classVectors[i].get(j))).intValue(); |
2 |
26 Feb 07 |
jari |
790 |
counter++; |
2 |
26 Feb 07 |
jari |
791 |
} |
2 |
26 Feb 07 |
jari |
792 |
} |
2 |
26 Feb 07 |
jari |
793 |
|
2 |
26 Feb 07 |
jari |
794 |
Object sortedData[][] = new Object[damTabModel.getRowCount()][damTabModel.getColumnCount()]; |
2 |
26 Feb 07 |
jari |
795 |
|
2 |
26 Feb 07 |
jari |
796 |
for (int i = 0; i < sortedData.length; i++) { |
2 |
26 Feb 07 |
jari |
797 |
for (int j = 0; j < sortedData[0].length; j++) { |
2 |
26 Feb 07 |
jari |
798 |
sortedData[i][j] = damTabModel.getValueAt(sortedIndices[i], j); |
2 |
26 Feb 07 |
jari |
799 |
} |
2 |
26 Feb 07 |
jari |
800 |
} |
2 |
26 Feb 07 |
jari |
801 |
|
2 |
26 Feb 07 |
jari |
802 |
for (int i = 0; i < damTabModel.getRowCount(); i++) { |
2 |
26 Feb 07 |
jari |
803 |
for (int j = 0; j < damTabModel.getColumnCount(); j++) { |
2 |
26 Feb 07 |
jari |
804 |
damTabModel.setValueAt(sortedData[i][j], i, j); |
2 |
26 Feb 07 |
jari |
805 |
} |
2 |
26 Feb 07 |
jari |
806 |
validateTable(sortedData, i); |
2 |
26 Feb 07 |
jari |
807 |
} |
2 |
26 Feb 07 |
jari |
808 |
|
2 |
26 Feb 07 |
jari |
809 |
damClassTable.removeRowSelectionInterval(0, damClassTable.getRowCount() - 1); |
2 |
26 Feb 07 |
jari |
810 |
} |
2 |
26 Feb 07 |
jari |
811 |
|
2 |
26 Feb 07 |
jari |
812 |
private void validateTable(Object[][] tabData, int row) { |
2 |
26 Feb 07 |
jari |
813 |
for (int i = 1; i <= (numberOfClasses + 1); i++) { |
2 |
26 Feb 07 |
jari |
814 |
boolean check = ((Boolean)(tabData[row][i])).booleanValue(); |
2 |
26 Feb 07 |
jari |
815 |
if (check) { |
2 |
26 Feb 07 |
jari |
816 |
damTabModel.setValueAt(new Boolean(true), row, i); |
2 |
26 Feb 07 |
jari |
817 |
break; |
2 |
26 Feb 07 |
jari |
818 |
} |
2 |
26 Feb 07 |
jari |
819 |
} |
2 |
26 Feb 07 |
jari |
820 |
} |
2 |
26 Feb 07 |
jari |
821 |
|
2 |
26 Feb 07 |
jari |
822 |
private void searchTable(){ |
2 |
26 Feb 07 |
jari |
823 |
|
2 |
26 Feb 07 |
jari |
824 |
searchDialog.setVisible(true); |
2 |
26 Feb 07 |
jari |
825 |
searchDialog.toFront(); |
2 |
26 Feb 07 |
jari |
//searchDialog.requestFocus(); |
2 |
26 Feb 07 |
jari |
827 |
searchDialog.setLocation(this.getLocation().x + 100, this.getLocation().y +100); |
2 |
26 Feb 07 |
jari |
828 |
|
2 |
26 Feb 07 |
jari |
829 |
} |
2 |
26 Feb 07 |
jari |
830 |
|
2 |
26 Feb 07 |
jari |
831 |
private void saveToFile(File file) { |
2 |
26 Feb 07 |
jari |
832 |
try { |
2 |
26 Feb 07 |
jari |
833 |
PrintWriter out = new PrintWriter(new FileOutputStream(file)); |
2 |
26 Feb 07 |
jari |
834 |
for (int i = 0; i < damTabModel.getRowCount(); i++) { |
2 |
26 Feb 07 |
jari |
835 |
out.print(((Integer)(damTabModel.getValueAt(i, 0))).intValue()); |
2 |
26 Feb 07 |
jari |
836 |
out.print("\t"); |
2 |
26 Feb 07 |
jari |
837 |
for (int j = 1; j <= numberOfClasses; j++) { |
2 |
26 Feb 07 |
jari |
838 |
if (((Boolean)(damTabModel.getValueAt(i, j))).booleanValue()) { |
2 |
26 Feb 07 |
jari |
839 |
out.print(j); |
2 |
26 Feb 07 |
jari |
840 |
break; |
2 |
26 Feb 07 |
jari |
841 |
} |
2 |
26 Feb 07 |
jari |
842 |
} |
2 |
26 Feb 07 |
jari |
843 |
if (((Boolean)(damTabModel.getValueAt(i, numberOfClasses + 1))).booleanValue()) { |
2 |
26 Feb 07 |
jari |
844 |
out.print(-1); |
2 |
26 Feb 07 |
jari |
845 |
} |
2 |
26 Feb 07 |
jari |
//out.print("\t"); |
2 |
26 Feb 07 |
jari |
847 |
for (int j = numberOfClasses + 2; j < damTabModel.getColumnCount(); j++) { |
2 |
26 Feb 07 |
jari |
848 |
out.print("\t"); |
2 |
26 Feb 07 |
jari |
849 |
out.print(damTabModel.getValueAt(i, j)); |
2 |
26 Feb 07 |
jari |
850 |
} |
2 |
26 Feb 07 |
jari |
851 |
out.print("\r"); |
2 |
26 Feb 07 |
jari |
852 |
out.print("\n"); |
2 |
26 Feb 07 |
jari |
853 |
} |
2 |
26 Feb 07 |
jari |
854 |
out.flush(); |
2 |
26 Feb 07 |
jari |
855 |
out.close(); |
2 |
26 Feb 07 |
jari |
856 |
|
2 |
26 Feb 07 |
jari |
857 |
} catch (Exception e) { |
2 |
26 Feb 07 |
jari |
//e.printStackTrace(); |
2 |
26 Feb 07 |
jari |
859 |
} |
2 |
26 Feb 07 |
jari |
860 |
} |
2 |
26 Feb 07 |
jari |
861 |
|
2 |
26 Feb 07 |
jari |
862 |
|
2 |
26 Feb 07 |
jari |
863 |
public void loadFromFile (File file) { |
2 |
26 Feb 07 |
jari |
864 |
Vector indicesVector = new Vector(); |
2 |
26 Feb 07 |
jari |
865 |
Vector classVector = new Vector(); |
2 |
26 Feb 07 |
jari |
866 |
|
2 |
26 Feb 07 |
jari |
867 |
incompatible = false; |
2 |
26 Feb 07 |
jari |
868 |
|
2 |
26 Feb 07 |
jari |
869 |
try { |
2 |
26 Feb 07 |
jari |
870 |
BufferedReader buff = new BufferedReader(new FileReader(file)); |
2 |
26 Feb 07 |
jari |
871 |
|
2 |
26 Feb 07 |
jari |
872 |
String line = new String(); |
2 |
26 Feb 07 |
jari |
873 |
StringSplitter st; |
2 |
26 Feb 07 |
jari |
874 |
|
2 |
26 Feb 07 |
jari |
875 |
while ((line = buff.readLine()) != null) { |
2 |
26 Feb 07 |
jari |
876 |
st = new StringSplitter('\t'); |
2 |
26 Feb 07 |
jari |
877 |
st.init(line); |
2 |
26 Feb 07 |
jari |
878 |
String currIndex = st.nextToken(); |
2 |
26 Feb 07 |
jari |
879 |
indicesVector.add(new Integer(currIndex)); |
2 |
26 Feb 07 |
jari |
880 |
String currClass = st.nextToken(); |
2 |
26 Feb 07 |
jari |
881 |
classVector.add(new Integer(currClass)); |
2 |
26 Feb 07 |
jari |
882 |
} |
2 |
26 Feb 07 |
jari |
883 |
|
2 |
26 Feb 07 |
jari |
884 |
if (indicesVector.size() != damTabModel.getRowCount()) { |
2 |
26 Feb 07 |
jari |
885 |
|
2 |
26 Feb 07 |
jari |
886 |
JOptionPane.showMessageDialog(framework.getFrame(), "Number of rows mismatch!", "Error", JOptionPane.WARNING_MESSAGE); |
2 |
26 Feb 07 |
jari |
887 |
incompatible = true; |
2 |
26 Feb 07 |
jari |
888 |
DAMClassificationEditor.this.setVisible(true); |
2 |
26 Feb 07 |
jari |
889 |
|
2 |
26 Feb 07 |
jari |
890 |
return; |
2 |
26 Feb 07 |
jari |
891 |
} |
2 |
26 Feb 07 |
jari |
892 |
|
2 |
26 Feb 07 |
jari |
893 |
for (int i = 0; i < indicesVector.size(); i++) { |
2 |
26 Feb 07 |
jari |
894 |
int currCl = ((Integer)(classVector.get(i))).intValue(); |
2 |
26 Feb 07 |
jari |
895 |
|
2 |
26 Feb 07 |
jari |
896 |
if (currCl > numberOfClasses){ |
2 |
26 Feb 07 |
jari |
897 |
|
2 |
26 Feb 07 |
jari |
898 |
JOptionPane.showMessageDialog(framework.getFrame(), "Class index larger than number of classes!", "Error", JOptionPane.WARNING_MESSAGE); |
2 |
26 Feb 07 |
jari |
899 |
incompatible = true; |
2 |
26 Feb 07 |
jari |
900 |
DAMClassificationEditor.this.setVisible(true); |
2 |
26 Feb 07 |
jari |
901 |
|
2 |
26 Feb 07 |
jari |
902 |
return; |
2 |
26 Feb 07 |
jari |
903 |
} |
2 |
26 Feb 07 |
jari |
904 |
} |
2 |
26 Feb 07 |
jari |
905 |
|
2 |
26 Feb 07 |
jari |
906 |
for (int i = 0; i < indicesVector.size(); i++) { |
2 |
26 Feb 07 |
jari |
907 |
int currInd = ((Integer)(indicesVector.get(i))).intValue(); |
2 |
26 Feb 07 |
jari |
908 |
int currCl = ((Integer)(classVector.get(i))).intValue(); |
2 |
26 Feb 07 |
jari |
909 |
|
2 |
26 Feb 07 |
jari |
910 |
if (currCl == (-1)) { |
2 |
26 Feb 07 |
jari |
911 |
damTabModel.setValueAt(new Boolean(true), currInd, (numberOfClasses + 1)); |
2 |
26 Feb 07 |
jari |
912 |
damClassTable.setValueAt(new Boolean(true), currInd, (numberOfClasses+1)); |
2 |
26 Feb 07 |
jari |
913 |
} else { |
2 |
26 Feb 07 |
jari |
914 |
damTabModel.setValueAt(new Boolean(true), currInd, currCl); |
2 |
26 Feb 07 |
jari |
915 |
damClassTable.setValueAt(new Boolean(true), currInd, currCl); |
2 |
26 Feb 07 |
jari |
916 |
} |
2 |
26 Feb 07 |
jari |
917 |
} |
2 |
26 Feb 07 |
jari |
918 |
|
2 |
26 Feb 07 |
jari |
// DAMClassificationEditor.this.setVisible(true); |
2 |
26 Feb 07 |
jari |
920 |
|
2 |
26 Feb 07 |
jari |
//showWarningMessage(); |
2 |
26 Feb 07 |
jari |
922 |
|
2 |
26 Feb 07 |
jari |
923 |
} catch (Exception e) { |
2 |
26 Feb 07 |
jari |
924 |
JOptionPane.showMessageDialog(framework.getFrame(), "Incompatible file!", "Error", JOptionPane.WARNING_MESSAGE); |
2 |
26 Feb 07 |
jari |
925 |
incompatible = true; |
2 |
26 Feb 07 |
jari |
//DAMClassificationEditor.this.dispose(); |
2 |
26 Feb 07 |
jari |
//e.printStackTrace(); |
2 |
26 Feb 07 |
jari |
928 |
} |
2 |
26 Feb 07 |
jari |
929 |
|
2 |
26 Feb 07 |
jari |
930 |
} |
2 |
26 Feb 07 |
jari |
931 |
|
2 |
26 Feb 07 |
jari |
932 |
|
2 |
26 Feb 07 |
jari |
933 |
public Vector[] getClassification() { |
2 |
26 Feb 07 |
jari |
934 |
Vector indicesVector1 = new Vector(); |
2 |
26 Feb 07 |
jari |
935 |
Vector indicesVector2 = new Vector(); |
2 |
26 Feb 07 |
jari |
936 |
Vector classVector = new Vector(); |
2 |
26 Feb 07 |
jari |
937 |
Vector[] classVectorArray = new Vector[3]; |
2 |
26 Feb 07 |
jari |
938 |
|
2 |
26 Feb 07 |
jari |
939 |
for (int i = 0; i < damTabModel.getRowCount(); i++) { |
2 |
26 Feb 07 |
jari |
940 |
if (((Boolean)(damTabModel.getValueAt(i, numberOfClasses + 1))).booleanValue()) { |
2 |
26 Feb 07 |
jari |
941 |
indicesVector2.add((Integer)(damTabModel.getValueAt(i, 0))); |
2 |
26 Feb 07 |
jari |
942 |
} else { |
2 |
26 Feb 07 |
jari |
943 |
indicesVector1.add((Integer)(damTabModel.getValueAt(i, 0))); |
2 |
26 Feb 07 |
jari |
944 |
classVector.add(new Integer(getClass(i))); |
2 |
26 Feb 07 |
jari |
945 |
} |
2 |
26 Feb 07 |
jari |
946 |
} |
2 |
26 Feb 07 |
jari |
947 |
|
2 |
26 Feb 07 |
jari |
948 |
classVectorArray[0] = indicesVector1; |
2 |
26 Feb 07 |
jari |
949 |
classVectorArray[1] = classVector; |
2 |
26 Feb 07 |
jari |
950 |
classVectorArray[2] = indicesVector2; |
2 |
26 Feb 07 |
jari |
951 |
return classVectorArray; |
2 |
26 Feb 07 |
jari |
952 |
} |
2 |
26 Feb 07 |
jari |
953 |
|
2 |
26 Feb 07 |
jari |
954 |
|
2 |
26 Feb 07 |
jari |
955 |
public boolean isNextPressed() { |
2 |
26 Feb 07 |
jari |
956 |
return nextPressed; |
2 |
26 Feb 07 |
jari |
957 |
} |
2 |
26 Feb 07 |
jari |
958 |
|
2 |
26 Feb 07 |
jari |
959 |
public boolean isCancelPressed() { |
2 |
26 Feb 07 |
jari |
960 |
return cancelPressed; |
2 |
26 Feb 07 |
jari |
961 |
} |
2 |
26 Feb 07 |
jari |
962 |
|
2 |
26 Feb 07 |
jari |
963 |
|
2 |
26 Feb 07 |
jari |
964 |
private int getClass(int row) { |
2 |
26 Feb 07 |
jari |
965 |
int i; |
2 |
26 Feb 07 |
jari |
966 |
for (i = 1; i <= numberOfClasses + 1; i++) { |
2 |
26 Feb 07 |
jari |
967 |
if (((Boolean)(damTabModel.getValueAt(row, i))).booleanValue()) { |
2 |
26 Feb 07 |
jari |
968 |
break; |
2 |
26 Feb 07 |
jari |
969 |
} |
2 |
26 Feb 07 |
jari |
970 |
} |
2 |
26 Feb 07 |
jari |
971 |
|
2 |
26 Feb 07 |
jari |
972 |
return i; |
2 |
26 Feb 07 |
jari |
973 |
} |
2 |
26 Feb 07 |
jari |
974 |
|
2 |
26 Feb 07 |
jari |
975 |
public boolean proceed() { |
2 |
26 Feb 07 |
jari |
976 |
return !(stopHere); |
2 |
26 Feb 07 |
jari |
977 |
} |
2 |
26 Feb 07 |
jari |
978 |
|
2 |
26 Feb 07 |
jari |
979 |
public boolean fileIsIncompatible() { |
2 |
26 Feb 07 |
jari |
980 |
return incompatible; |
2 |
26 Feb 07 |
jari |
981 |
} |
2 |
26 Feb 07 |
jari |
982 |
|
2 |
26 Feb 07 |
jari |
983 |
public void showWarningMessage() { |
2 |
26 Feb 07 |
jari |
984 |
JTextArea area = new JTextArea(); |
2 |
26 Feb 07 |
jari |
985 |
area.append("Proceed with this file?"); |
2 |
26 Feb 07 |
jari |
986 |
area.append("\n"); |
2 |
26 Feb 07 |
jari |
987 |
area.setEditable(false); |
2 |
26 Feb 07 |
jari |
988 |
area.setBackground(Color.gray.brighter()); |
2 |
26 Feb 07 |
jari |
989 |
JOptionPane.showMessageDialog(DAMClassificationEditor.this, area, "Warning", JOptionPane.WARNING_MESSAGE); |
2 |
26 Feb 07 |
jari |
990 |
} |
2 |
26 Feb 07 |
jari |
991 |
|
2 |
26 Feb 07 |
jari |
992 |
private class SortableField implements Comparable { |
2 |
26 Feb 07 |
jari |
993 |
private String field; |
2 |
26 Feb 07 |
jari |
994 |
private int index; |
2 |
26 Feb 07 |
jari |
995 |
|
2 |
26 Feb 07 |
jari |
996 |
SortableField(int index, int column) { |
2 |
26 Feb 07 |
jari |
997 |
this.index = index; |
2 |
26 Feb 07 |
jari |
998 |
this.field = (String)(origData[index][column]); |
2 |
26 Feb 07 |
jari |
//System.out.println("SortableField[" + index + "][" + column + "]: index = " + index + ", field = " + field); |
2 |
26 Feb 07 |
jari |
1000 |
} |
2 |
26 Feb 07 |
jari |
1001 |
|
2 |
26 Feb 07 |
jari |
1002 |
public int compareTo(Object other) { |
2 |
26 Feb 07 |
jari |
1003 |
SortableField otherField = (SortableField)other; |
2 |
26 Feb 07 |
jari |
1004 |
return this.field.compareTo(otherField.getField()); |
2 |
26 Feb 07 |
jari |
1005 |
} |
2 |
26 Feb 07 |
jari |
1006 |
|
2 |
26 Feb 07 |
jari |
1007 |
public int getIndex() { |
2 |
26 Feb 07 |
jari |
1008 |
return this.index; |
2 |
26 Feb 07 |
jari |
1009 |
} |
2 |
26 Feb 07 |
jari |
1010 |
public String getField() { |
2 |
26 Feb 07 |
jari |
1011 |
return this.field; |
2 |
26 Feb 07 |
jari |
1012 |
} |
2 |
26 Feb 07 |
jari |
1013 |
} |
2 |
26 Feb 07 |
jari |
1014 |
|
2 |
26 Feb 07 |
jari |
1015 |
public class AssignListener implements ActionListener { |
2 |
26 Feb 07 |
jari |
1016 |
|
2 |
26 Feb 07 |
jari |
1017 |
public void actionPerformed(ActionEvent evt) { |
2 |
26 Feb 07 |
jari |
1018 |
Object source = evt.getSource(); |
2 |
26 Feb 07 |
jari |
1019 |
|
2 |
26 Feb 07 |
jari |
1020 |
if (source instanceof JMenuItem) { |
2 |
26 Feb 07 |
jari |
1021 |
String key = ((JMenuItem)source).getText(); |
2 |
26 Feb 07 |
jari |
1022 |
int classCol = damTabModel.getColumnIndex(key); |
2 |
26 Feb 07 |
jari |
1023 |
int[] selectedRows = damClassTable.getSelectedRows(); |
2 |
26 Feb 07 |
jari |
1024 |
int[] selectedIndices = new int[selectedRows.length]; |
2 |
26 Feb 07 |
jari |
1025 |
|
2 |
26 Feb 07 |
jari |
1026 |
for (int i = 0; i < selectedRows.length; i++) { |
2 |
26 Feb 07 |
jari |
1027 |
damTabModel.setValueAt(new Boolean(true), selectedRows[i], classCol); |
2 |
26 Feb 07 |
jari |
//int currIndex = ((Integer)(damTabModel.getValueAt(selectedRows[i], 0))).intValue(); |
2 |
26 Feb 07 |
jari |
//origData[currIndex][classCol] = new Boolean(true); |
2 |
26 Feb 07 |
jari |
1030 |
} |
2 |
26 Feb 07 |
jari |
1031 |
} |
2 |
26 Feb 07 |
jari |
1032 |
} |
2 |
26 Feb 07 |
jari |
1033 |
|
2 |
26 Feb 07 |
jari |
1034 |
} |
2 |
26 Feb 07 |
jari |
1035 |
|
2 |
26 Feb 07 |
jari |
1036 |
public class SortListener implements ActionListener { |
2 |
26 Feb 07 |
jari |
1037 |
boolean asc, origOrd; |
2 |
26 Feb 07 |
jari |
1038 |
public SortListener(boolean asc, boolean origOrd) { |
2 |
26 Feb 07 |
jari |
1039 |
this.asc = asc; |
2 |
26 Feb 07 |
jari |
1040 |
this.origOrd = origOrd; |
2 |
26 Feb 07 |
jari |
1041 |
} |
2 |
26 Feb 07 |
jari |
1042 |
|
2 |
26 Feb 07 |
jari |
1043 |
public void actionPerformed(ActionEvent evt) { |
2 |
26 Feb 07 |
jari |
1044 |
Object source = evt.getSource(); |
2 |
26 Feb 07 |
jari |
1045 |
|
2 |
26 Feb 07 |
jari |
1046 |
if (source instanceof JMenuItem) { |
2 |
26 Feb 07 |
jari |
1047 |
String key = ((JMenuItem)source).getText(); |
2 |
26 Feb 07 |
jari |
1048 |
int colToSort = damTabModel.getColumnIndex(key); |
2 |
26 Feb 07 |
jari |
1049 |
sortByColumn(colToSort, asc, origOrd); |
2 |
26 Feb 07 |
jari |
1050 |
} |
2 |
26 Feb 07 |
jari |
1051 |
} |
2 |
26 Feb 07 |
jari |
1052 |
} |
2 |
26 Feb 07 |
jari |
1053 |
|
2 |
26 Feb 07 |
jari |
1054 |
} |