2 |
26 Feb 07 |
jari |
1 |
/* |
2 |
26 Feb 07 |
jari |
Copyright @ 1999-2006, 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 |
package org.tigr.microarray.mev.cluster.gui.impl.lem; |
2 |
26 Feb 07 |
jari |
6 |
|
2 |
26 Feb 07 |
jari |
7 |
import java.awt.BasicStroke; |
2 |
26 Feb 07 |
jari |
8 |
import java.awt.Color; |
2 |
26 Feb 07 |
jari |
9 |
import java.awt.Component; |
2 |
26 Feb 07 |
jari |
10 |
import java.awt.Dimension; |
2 |
26 Feb 07 |
jari |
11 |
import java.awt.Graphics; |
2 |
26 Feb 07 |
jari |
12 |
import java.awt.Graphics2D; |
2 |
26 Feb 07 |
jari |
13 |
import java.awt.GridBagConstraints; |
2 |
26 Feb 07 |
jari |
14 |
import java.awt.GridBagLayout; |
2 |
26 Feb 07 |
jari |
15 |
import java.awt.Insets; |
2 |
26 Feb 07 |
jari |
16 |
import java.awt.RenderingHints; |
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.MouseAdapter; |
2 |
26 Feb 07 |
jari |
20 |
import java.awt.event.MouseEvent; |
2 |
26 Feb 07 |
jari |
21 |
import java.awt.image.BufferedImage; |
2 |
26 Feb 07 |
jari |
22 |
import java.beans.Expression; |
2 |
26 Feb 07 |
jari |
23 |
import java.util.Hashtable; |
2 |
26 Feb 07 |
jari |
24 |
import java.util.Vector; |
2 |
26 Feb 07 |
jari |
25 |
|
2 |
26 Feb 07 |
jari |
26 |
import javax.swing.ButtonGroup; |
2 |
26 Feb 07 |
jari |
27 |
import javax.swing.JCheckBoxMenuItem; |
2 |
26 Feb 07 |
jari |
28 |
import javax.swing.JColorChooser; |
2 |
26 Feb 07 |
jari |
29 |
import javax.swing.JComponent; |
2 |
26 Feb 07 |
jari |
30 |
import javax.swing.JFrame; |
2 |
26 Feb 07 |
jari |
31 |
import javax.swing.JMenu; |
2 |
26 Feb 07 |
jari |
32 |
import javax.swing.JMenuItem; |
2 |
26 Feb 07 |
jari |
33 |
import javax.swing.JOptionPane; |
2 |
26 Feb 07 |
jari |
34 |
import javax.swing.JPanel; |
2 |
26 Feb 07 |
jari |
35 |
import javax.swing.JPopupMenu; |
2 |
26 Feb 07 |
jari |
36 |
import javax.swing.JRadioButtonMenuItem; |
2 |
26 Feb 07 |
jari |
37 |
import javax.swing.JScrollBar; |
2 |
26 Feb 07 |
jari |
38 |
import javax.swing.JScrollPane; |
2 |
26 Feb 07 |
jari |
39 |
import javax.swing.JSplitPane; |
2 |
26 Feb 07 |
jari |
40 |
import javax.swing.JTable; |
2 |
26 Feb 07 |
jari |
41 |
import javax.swing.table.AbstractTableModel; |
2 |
26 Feb 07 |
jari |
42 |
import javax.swing.table.TableCellRenderer; |
2 |
26 Feb 07 |
jari |
43 |
|
2 |
26 Feb 07 |
jari |
44 |
import org.tigr.microarray.mev.TMEV; |
2 |
26 Feb 07 |
jari |
45 |
import org.tigr.microarray.mev.cluster.gui.Experiment; |
2 |
26 Feb 07 |
jari |
46 |
import org.tigr.microarray.mev.cluster.gui.IData; |
2 |
26 Feb 07 |
jari |
47 |
import org.tigr.microarray.mev.cluster.gui.IDisplayMenu; |
2 |
26 Feb 07 |
jari |
48 |
import org.tigr.microarray.mev.cluster.gui.IFramework; |
2 |
26 Feb 07 |
jari |
49 |
import org.tigr.microarray.mev.cluster.gui.IViewer; |
2 |
26 Feb 07 |
jari |
50 |
|
2 |
26 Feb 07 |
jari |
51 |
/** |
2 |
26 Feb 07 |
jari |
* @author braisted |
2 |
26 Feb 07 |
jari |
53 |
* |
2 |
26 Feb 07 |
jari |
* Class: LinearExpressionGraphViewer Description: Provides a multiple sample |
2 |
26 Feb 07 |
jari |
* expression view that is organized by chromosomal coordinates Each |
2 |
26 Feb 07 |
jari |
* chromosome, if there is more than one, will have a dedicated LEG in which |
2 |
26 Feb 07 |
jari |
* Loci are arranged based on coordinate order. |
2 |
26 Feb 07 |
jari |
58 |
* |
2 |
26 Feb 07 |
jari |
59 |
*/ |
2 |
26 Feb 07 |
jari |
60 |
public class LinearExpressionGraphViewer extends JPanel implements IViewer { |
2 |
26 Feb 07 |
jari |
61 |
|
2 |
26 Feb 07 |
jari |
62 |
private JSplitPane splitPane; |
2 |
26 Feb 07 |
jari |
63 |
private Graph graph; |
2 |
26 Feb 07 |
jari |
64 |
private SampleTable table; |
2 |
26 Feb 07 |
jari |
65 |
private IData idata; |
2 |
26 Feb 07 |
jari |
66 |
private int numberOfSamples; |
2 |
26 Feb 07 |
jari |
67 |
private boolean overlay = false; |
2 |
26 Feb 07 |
jari |
68 |
private IFramework framework; |
2 |
26 Feb 07 |
jari |
69 |
private JPopupMenu popup; |
2 |
26 Feb 07 |
jari |
70 |
private boolean showRefLine = false; |
2 |
26 Feb 07 |
jari |
71 |
private int exptID = 0; |
2 |
26 Feb 07 |
jari |
72 |
|
2 |
26 Feb 07 |
jari |
//EH state-saving additions |
2 |
26 Feb 07 |
jari |
74 |
String chrID; |
2 |
26 Feb 07 |
jari |
75 |
String[] sortedLocusIDs; |
2 |
26 Feb 07 |
jari |
76 |
int[] sortedStartArray, sortedEndArray; |
2 |
26 Feb 07 |
jari |
77 |
Experiment fullExperiment, reducedExperiment; |
2 |
26 Feb 07 |
jari |
78 |
int[][] replicates; |
2 |
26 Feb 07 |
jari |
79 |
String locusIDFieldName; |
2 |
26 Feb 07 |
jari |
80 |
|
2 |
26 Feb 07 |
jari |
81 |
|
2 |
26 Feb 07 |
jari |
82 |
/** |
2 |
26 Feb 07 |
jari |
* Class: LinearExpressionGraphViewer Description: Provides a multiple sample |
2 |
26 Feb 07 |
jari |
* expression view that is organized by chromosomal coordinates Each |
2 |
26 Feb 07 |
jari |
* chromosome, if there is more than one, will have a dedicated LEG in which |
2 |
26 Feb 07 |
jari |
* Loci are arranged based on coordinate order. |
2 |
26 Feb 07 |
jari |
87 |
* |
2 |
26 Feb 07 |
jari |
88 |
* |
2 |
26 Feb 07 |
jari |
* @param fullExperiment |
2 |
26 Feb 07 |
jari |
* The current Experiment from IFramwork |
2 |
26 Feb 07 |
jari |
* @param reducedExperiment |
2 |
26 Feb 07 |
jari |
* The reduced and sorted (by min coord.) Experiment |
2 |
26 Feb 07 |
jari |
* @param sortedLocusIDs |
2 |
26 Feb 07 |
jari |
* Sorted Locus IDs |
2 |
26 Feb 07 |
jari |
* @param sortedStartArray |
2 |
26 Feb 07 |
jari |
* Sorted min coordinates for each loci. |
2 |
26 Feb 07 |
jari |
* @param sortedEndArray |
2 |
26 Feb 07 |
jari |
* Sorted max coordinates for each loci. |
2 |
26 Feb 07 |
jari |
* @param isForward |
2 |
26 Feb 07 |
jari |
* Indicates if a loci is transcribe forward or reverse (rel. to |
2 |
26 Feb 07 |
jari |
* coord. system) |
2 |
26 Feb 07 |
jari |
* @param strata |
2 |
26 Feb 07 |
jari |
* renders loci that overlap as an offset from the main linear |
2 |
26 Feb 07 |
jari |
* map. |
2 |
26 Feb 07 |
jari |
* @param chrID |
2 |
26 Feb 07 |
jari |
* Identifies the chromosome in view. |
2 |
26 Feb 07 |
jari |
107 |
*/ |
2 |
26 Feb 07 |
jari |
108 |
public LinearExpressionGraphViewer(Experiment fullExperiment, |
2 |
26 Feb 07 |
jari |
109 |
Experiment reducedExperiment, String[] sortedLocusIDs, int [] sortedStartArray, |
2 |
26 Feb 07 |
jari |
110 |
int[] sortedEndArray, int [][] replicates, |
2 |
26 Feb 07 |
jari |
111 |
String chrID, String locusIDFieldName) { |
2 |
26 Feb 07 |
jari |
112 |
|
2 |
26 Feb 07 |
jari |
113 |
super(new GridBagLayout()); |
2 |
26 Feb 07 |
jari |
114 |
|
2 |
26 Feb 07 |
jari |
115 |
this.numberOfSamples = fullExperiment.getNumberOfSamples(); |
2 |
26 Feb 07 |
jari |
116 |
splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, graph, table); |
2 |
26 Feb 07 |
jari |
117 |
splitPane.setResizeWeight(1.0); |
2 |
26 Feb 07 |
jari |
118 |
splitPane.setDividerLocation(0.7); |
2 |
26 Feb 07 |
jari |
119 |
|
2 |
26 Feb 07 |
jari |
120 |
Listener listener = new Listener(); |
2 |
26 Feb 07 |
jari |
121 |
popup = contructMenu(listener); |
2 |
26 Feb 07 |
jari |
122 |
|
2 |
26 Feb 07 |
jari |
//EH state-saving |
2 |
26 Feb 07 |
jari |
124 |
this.chrID = chrID; |
2 |
26 Feb 07 |
jari |
125 |
this.sortedLocusIDs = sortedLocusIDs; |
2 |
26 Feb 07 |
jari |
126 |
this.sortedStartArray = sortedStartArray; |
2 |
26 Feb 07 |
jari |
127 |
this.sortedEndArray = sortedEndArray; |
2 |
26 Feb 07 |
jari |
128 |
this.replicates = replicates; |
2 |
26 Feb 07 |
jari |
129 |
this.locusIDFieldName = locusIDFieldName; |
2 |
26 Feb 07 |
jari |
130 |
this.fullExperiment = fullExperiment; |
2 |
26 Feb 07 |
jari |
131 |
this.reducedExperiment = reducedExperiment; |
2 |
26 Feb 07 |
jari |
132 |
} |
2 |
26 Feb 07 |
jari |
133 |
|
2 |
26 Feb 07 |
jari |
134 |
/** |
2 |
26 Feb 07 |
jari |
* @see org.tigr.microarray.mev.cluster.gui.IViewer#getExpression() |
2 |
26 Feb 07 |
jari |
136 |
*/ |
2 |
26 Feb 07 |
jari |
137 |
public Expression getExpression(){ |
2 |
26 Feb 07 |
jari |
138 |
return new Expression(this, this.getClass(), "new", |
2 |
26 Feb 07 |
jari |
139 |
new Object[]{this.fullExperiment, this.reducedExperiment, |
2 |
26 Feb 07 |
jari |
140 |
this.sortedLocusIDs, this.sortedStartArray, |
2 |
26 Feb 07 |
jari |
141 |
this.sortedEndArray, this.replicates, |
2 |
26 Feb 07 |
jari |
142 |
this.chrID, this.locusIDFieldName}); |
2 |
26 Feb 07 |
jari |
143 |
} |
2 |
26 Feb 07 |
jari |
144 |
|
2 |
26 Feb 07 |
jari |
145 |
/** |
2 |
26 Feb 07 |
jari |
* Updates the viewer to display the display mode |
2 |
26 Feb 07 |
jari |
147 |
* |
2 |
26 Feb 07 |
jari |
148 |
*/ |
2 |
26 Feb 07 |
jari |
149 |
private void updateViewerModeView() { |
2 |
26 Feb 07 |
jari |
150 |
this.removeAll(); |
2 |
26 Feb 07 |
jari |
151 |
if(overlay) { |
2 |
26 Feb 07 |
jari |
152 |
add(splitPane, new GridBagConstraints(0,0,1,1,1,1,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,0,0,0), 0,0)); |
2 |
26 Feb 07 |
jari |
153 |
|
2 |
26 Feb 07 |
jari |
//start in connected points view mode to make overlay meaningful |
2 |
26 Feb 07 |
jari |
155 |
graph.getGraphComponent().enableDiscreteValueOverlay(false); |
2 |
26 Feb 07 |
jari |
156 |
graph.getGraphComponent().enableOffsetLinesMode(false); |
2 |
26 Feb 07 |
jari |
157 |
|
2 |
26 Feb 07 |
jari |
158 |
graph.validateView(); |
2 |
26 Feb 07 |
jari |
159 |
splitPane.validate(); |
2 |
26 Feb 07 |
jari |
160 |
splitPane.setDividerLocation(0.7); |
2 |
26 Feb 07 |
jari |
161 |
repaint(); |
2 |
26 Feb 07 |
jari |
162 |
} else { |
2 |
26 Feb 07 |
jari |
163 |
graph.removeGraphComponent(); |
2 |
26 Feb 07 |
jari |
164 |
add(graph.getGraphComponent(), new GridBagConstraints(0,0,1,1,1,1,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,0,0,0), 0,0)); |
2 |
26 Feb 07 |
jari |
165 |
graph.getGraphComponent().refreshGraph(); |
2 |
26 Feb 07 |
jari |
166 |
} |
2 |
26 Feb 07 |
jari |
167 |
} |
2 |
26 Feb 07 |
jari |
168 |
|
2 |
26 Feb 07 |
jari |
169 |
/** |
2 |
26 Feb 07 |
jari |
* Graph customization. |
2 |
26 Feb 07 |
jari |
* Pulls graph properties, constructs customization dialog, directs graph to |
2 |
26 Feb 07 |
jari |
* conform to input values. |
2 |
26 Feb 07 |
jari |
173 |
*/ |
2 |
26 Feb 07 |
jari |
174 |
private void customizeGraph() { |
2 |
26 Feb 07 |
jari |
175 |
Hashtable props = graph.getGraphComponent().getGraphProperties(); |
2 |
26 Feb 07 |
jari |
176 |
|
2 |
26 Feb 07 |
jari |
177 |
GraphScaleCustomizationDialog dialog = new GraphScaleCustomizationDialog((JFrame)framework.getFrame(), true, props); |
2 |
26 Feb 07 |
jari |
178 |
|
2 |
26 Feb 07 |
jari |
179 |
if(dialog.showModal() == JOptionPane.OK_OPTION) { |
2 |
26 Feb 07 |
jari |
180 |
|
2 |
26 Feb 07 |
jari |
//grab the graph component |
2 |
26 Feb 07 |
jari |
182 |
LEMGraphViewer lemGraph = graph.getGraphComponent(); |
2 |
26 Feb 07 |
jari |
183 |
|
2 |
26 Feb 07 |
jari |
//collect settings and forward to graph viewer |
2 |
26 Feb 07 |
jari |
185 |
int yRangeMode = dialog.getYRangeMode(); |
2 |
26 Feb 07 |
jari |
186 |
|
2 |
26 Feb 07 |
jari |
187 |
lemGraph.setYAxisRangeMode(yRangeMode); |
2 |
26 Feb 07 |
jari |
188 |
|
2 |
26 Feb 07 |
jari |
189 |
|
2 |
26 Feb 07 |
jari |
190 |
if(yRangeMode == 1 ) {//GraphScaleCustomizationDialog.YRANGE_OPTION_CUSTOM_RANGE) { |
2 |
26 Feb 07 |
jari |
191 |
lemGraph.setYRange(dialog.getYMin(), dialog.getYMax()); |
2 |
26 Feb 07 |
jari |
192 |
lemGraph.setTicInterval(dialog.getYTicInterval()); |
2 |
26 Feb 07 |
jari |
193 |
} |
2 |
26 Feb 07 |
jari |
194 |
|
2 |
26 Feb 07 |
jari |
195 |
lemGraph.setShowXAxis(dialog.showXAxisLine()); |
2 |
26 Feb 07 |
jari |
196 |
lemGraph.setXAxisStroke(dialog.getXAxisStyle()); |
2 |
26 Feb 07 |
jari |
197 |
lemGraph.setXAxisColor(dialog.getXAxisColor()); |
2 |
26 Feb 07 |
jari |
198 |
lemGraph.setXAxisCrossPoint(dialog.getXAxisCrossPoint()); |
2 |
26 Feb 07 |
jari |
199 |
|
2 |
26 Feb 07 |
jari |
200 |
lemGraph.enableOffsetLinesMode(dialog.isOffsetLinesModeSelected()); |
2 |
26 Feb 07 |
jari |
201 |
lemGraph.setOffsetLinesMidpoint(dialog.getOffsetMidpoint()); |
2 |
26 Feb 07 |
jari |
202 |
|
2 |
26 Feb 07 |
jari |
203 |
lemGraph.setOffsetLinesMin(dialog.getOffsetMin()); |
2 |
26 Feb 07 |
jari |
204 |
lemGraph.setOffsetLinesMax(dialog.getOffsetMax()); |
2 |
26 Feb 07 |
jari |
205 |
lemGraph.enableDiscreteValueOverlay(dialog.getShowOverlay()); |
2 |
26 Feb 07 |
jari |
206 |
|
2 |
26 Feb 07 |
jari |
207 |
lemGraph.refreshGraph(); |
2 |
26 Feb 07 |
jari |
208 |
} |
2 |
26 Feb 07 |
jari |
209 |
|
2 |
26 Feb 07 |
jari |
210 |
} |
2 |
26 Feb 07 |
jari |
211 |
|
2 |
26 Feb 07 |
jari |
212 |
/** |
2 |
26 Feb 07 |
jari |
* Return the graph's content component |
2 |
26 Feb 07 |
jari |
214 |
*/ |
2 |
26 Feb 07 |
jari |
215 |
public JComponent getContentComponent() { |
2 |
26 Feb 07 |
jari |
216 |
return this; |
2 |
26 Feb 07 |
jari |
217 |
} |
2 |
26 Feb 07 |
jari |
218 |
|
2 |
26 Feb 07 |
jari |
219 |
/** |
2 |
26 Feb 07 |
jari |
* returns the header component |
2 |
26 Feb 07 |
jari |
221 |
*/ |
2 |
26 Feb 07 |
jari |
222 |
public JComponent getHeaderComponent() { |
2 |
26 Feb 07 |
jari |
223 |
|
2 |
26 Feb 07 |
jari |
//JB, 5/5/06 state saving requires that graph be created |
2 |
26 Feb 07 |
jari |
//in onSelected but getHeaderComponent() is called first |
2 |
26 Feb 07 |
jari |
//construct graph to provide linked header rather than a new header |
2 |
26 Feb 07 |
jari |
227 |
|
2 |
26 Feb 07 |
jari |
228 |
|
2 |
26 Feb 07 |
jari |
229 |
if(graph == null){ |
2 |
26 Feb 07 |
jari |
230 |
graph = new Graph(fullExperiment, reducedExperiment.getMatrix().A, chrID, sortedLocusIDs, sortedStartArray, sortedEndArray); |
2 |
26 Feb 07 |
jari |
231 |
|
2 |
26 Feb 07 |
jari |
// JB 5/5/06 can't construct table without idata |
2 |
26 Feb 07 |
jari |
// so set graph line and marker colors in onSelected |
2 |
26 Feb 07 |
jari |
// graph.setSampleLineColors(table.lineColorVector); |
2 |
26 Feb 07 |
jari |
// graph.setSampleMarkerColors(table.markerColorVector); |
2 |
26 Feb 07 |
jari |
236 |
graph.getGraphComponent().addMouseListener(new Listener()); |
2 |
26 Feb 07 |
jari |
237 |
graph.getGraphComponent().enableOverlay(overlay); |
2 |
26 Feb 07 |
jari |
238 |
splitPane.setTopComponent(graph); |
2 |
26 Feb 07 |
jari |
239 |
} |
2 |
26 Feb 07 |
jari |
240 |
return graph.getGraphComponent().getHeaderComponent(); |
2 |
26 Feb 07 |
jari |
241 |
} |
2 |
26 Feb 07 |
jari |
242 |
|
2 |
26 Feb 07 |
jari |
243 |
/** |
2 |
26 Feb 07 |
jari |
* Returns the row header component |
2 |
26 Feb 07 |
jari |
245 |
*/ |
2 |
26 Feb 07 |
jari |
246 |
public JComponent getRowHeaderComponent() { |
2 |
26 Feb 07 |
jari |
247 |
return null; |
2 |
26 Feb 07 |
jari |
248 |
} |
2 |
26 Feb 07 |
jari |
249 |
|
2 |
26 Feb 07 |
jari |
250 |
/** |
2 |
26 Feb 07 |
jari |
* Returns the cornoer component |
2 |
26 Feb 07 |
jari |
252 |
*/ |
2 |
26 Feb 07 |
jari |
253 |
public JComponent getCornerComponent(int cornerIndex) { |
2 |
26 Feb 07 |
jari |
254 |
return null; |
2 |
26 Feb 07 |
jari |
255 |
} |
2 |
26 Feb 07 |
jari |
256 |
|
2 |
26 Feb 07 |
jari |
257 |
/** |
2 |
26 Feb 07 |
jari |
* Prepares the viewer for display |
2 |
26 Feb 07 |
jari |
* Framework is MeV's IFramework object |
2 |
26 Feb 07 |
jari |
260 |
*/ |
2 |
26 Feb 07 |
jari |
261 |
public void onSelected(IFramework framework) { |
2 |
26 Feb 07 |
jari |
262 |
this.framework = framework; |
2 |
26 Feb 07 |
jari |
263 |
this.idata = framework.getData(); |
2 |
26 Feb 07 |
jari |
264 |
|
2 |
26 Feb 07 |
jari |
265 |
if(table == null) { |
2 |
26 Feb 07 |
jari |
266 |
table = new SampleTable(); |
2 |
26 Feb 07 |
jari |
//JB: 5/5/06 add to bottom component of split pane |
2 |
26 Feb 07 |
jari |
268 |
splitPane.setBottomComponent(table); |
2 |
26 Feb 07 |
jari |
269 |
} |
2 |
26 Feb 07 |
jari |
270 |
|
2 |
26 Feb 07 |
jari |
271 |
if(graph == null){ |
2 |
26 Feb 07 |
jari |
272 |
graph = new Graph(fullExperiment, reducedExperiment.getMatrix().A, chrID, sortedLocusIDs, sortedStartArray, sortedEndArray); |
2 |
26 Feb 07 |
jari |
273 |
graph.setSampleLineColors(table.lineColorVector); |
2 |
26 Feb 07 |
jari |
274 |
graph.setSampleMarkerColors(table.markerColorVector); |
2 |
26 Feb 07 |
jari |
275 |
graph.getGraphComponent().addMouseListener(new Listener()); |
2 |
26 Feb 07 |
jari |
276 |
graph.getGraphComponent().enableOverlay(overlay); |
2 |
26 Feb 07 |
jari |
//JB: 5/5/06 add to top component of split pane |
2 |
26 Feb 07 |
jari |
278 |
splitPane.setTopComponent(graph); |
2 |
26 Feb 07 |
jari |
279 |
} |
2 |
26 Feb 07 |
jari |
280 |
|
2 |
26 Feb 07 |
jari |
//set these to coordinate |
2 |
26 Feb 07 |
jari |
282 |
graph.setSampleLineColors(table.lineColorVector); |
2 |
26 Feb 07 |
jari |
283 |
graph.setSampleMarkerColors(table.markerColorVector); |
2 |
26 Feb 07 |
jari |
284 |
|
2 |
26 Feb 07 |
jari |
285 |
updateViewerModeView(); |
2 |
26 Feb 07 |
jari |
286 |
graph.onSelected(framework); |
2 |
26 Feb 07 |
jari |
287 |
} |
2 |
26 Feb 07 |
jari |
288 |
|
2 |
26 Feb 07 |
jari |
289 |
|
2 |
26 Feb 07 |
jari |
290 |
/** |
2 |
26 Feb 07 |
jari |
* handles data changes, IViewer interface method |
2 |
26 Feb 07 |
jari |
292 |
*/ |
2 |
26 Feb 07 |
jari |
293 |
public void onDataChanged(IData data) { |
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 |
* handles menu option changes (display menu) |
2 |
26 Feb 07 |
jari |
299 |
*/ |
2 |
26 Feb 07 |
jari |
300 |
public void onMenuChanged(IDisplayMenu menu) { |
2 |
26 Feb 07 |
jari |
301 |
graph.getGraphComponent().onMenuChanged(menu); |
2 |
26 Feb 07 |
jari |
302 |
} |
2 |
26 Feb 07 |
jari |
303 |
|
2 |
26 Feb 07 |
jari |
304 |
/** |
2 |
26 Feb 07 |
jari |
* Handles deselection of the node |
2 |
26 Feb 07 |
jari |
306 |
*/ |
2 |
26 Feb 07 |
jari |
307 |
public void onDeselected() { } |
2 |
26 Feb 07 |
jari |
308 |
|
2 |
26 Feb 07 |
jari |
309 |
/** |
2 |
26 Feb 07 |
jari |
* Handles closing event |
2 |
26 Feb 07 |
jari |
311 |
*/ |
2 |
26 Feb 07 |
jari |
312 |
public void onClosed() { } |
2 |
26 Feb 07 |
jari |
313 |
|
2 |
26 Feb 07 |
jari |
314 |
/** |
2 |
26 Feb 07 |
jari |
* Returns the image, handled in MAV |
2 |
26 Feb 07 |
jari |
316 |
*/ |
2 |
26 Feb 07 |
jari |
317 |
public BufferedImage getImage() { |
2 |
26 Feb 07 |
jari |
318 |
return null; |
2 |
26 Feb 07 |
jari |
319 |
} |
2 |
26 Feb 07 |
jari |
320 |
|
2 |
26 Feb 07 |
jari |
321 |
/** |
2 |
26 Feb 07 |
jari |
* Returns the cluster index object |
2 |
26 Feb 07 |
jari |
323 |
*/ |
2 |
26 Feb 07 |
jari |
324 |
public int[][] getClusters() { |
2 |
26 Feb 07 |
jari |
325 |
return null; |
2 |
26 Feb 07 |
jari |
326 |
} |
2 |
26 Feb 07 |
jari |
327 |
|
2 |
26 Feb 07 |
jari |
328 |
/** |
2 |
26 Feb 07 |
jari |
* returns the experiment |
2 |
26 Feb 07 |
jari |
330 |
*/ |
2 |
26 Feb 07 |
jari |
331 |
public Experiment getExperiment() { |
2 |
26 Feb 07 |
jari |
332 |
return null; |
2 |
26 Feb 07 |
jari |
333 |
} |
2 |
26 Feb 07 |
jari |
334 |
|
2 |
26 Feb 07 |
jari |
335 |
/** |
2 |
26 Feb 07 |
jari |
* Returns the viewer type |
2 |
26 Feb 07 |
jari |
337 |
*/ |
2 |
26 Feb 07 |
jari |
338 |
public int getViewerType() { |
2 |
26 Feb 07 |
jari |
339 |
return 0; |
2 |
26 Feb 07 |
jari |
340 |
} |
2 |
26 Feb 07 |
jari |
341 |
|
2 |
26 Feb 07 |
jari |
342 |
/** |
2 |
26 Feb 07 |
jari |
* Builds the menu |
2 |
26 Feb 07 |
jari |
344 |
* |
2 |
26 Feb 07 |
jari |
* @param listener |
2 |
26 Feb 07 |
jari |
* @return |
2 |
26 Feb 07 |
jari |
347 |
*/ |
2 |
26 Feb 07 |
jari |
348 |
private JPopupMenu contructMenu(Listener listener) { |
2 |
26 Feb 07 |
jari |
349 |
JPopupMenu menu = new JPopupMenu(); |
2 |
26 Feb 07 |
jari |
350 |
|
2 |
26 Feb 07 |
jari |
351 |
JMenu submenu = new JMenu("Viewer Mode"); |
2 |
26 Feb 07 |
jari |
352 |
ButtonGroup bg = new ButtonGroup(); |
2 |
26 Feb 07 |
jari |
353 |
|
2 |
26 Feb 07 |
jari |
354 |
JRadioButtonMenuItem buttonItem = new JRadioButtonMenuItem("Tile Graphs", true); |
2 |
26 Feb 07 |
jari |
355 |
buttonItem.setFocusPainted(false); |
2 |
26 Feb 07 |
jari |
356 |
buttonItem.setActionCommand("tile-mode-command"); |
2 |
26 Feb 07 |
jari |
357 |
buttonItem.addActionListener(listener); |
2 |
26 Feb 07 |
jari |
358 |
bg.add(buttonItem); |
2 |
26 Feb 07 |
jari |
359 |
submenu.add(buttonItem); |
2 |
26 Feb 07 |
jari |
360 |
|
2 |
26 Feb 07 |
jari |
361 |
buttonItem = new JRadioButtonMenuItem("Overlay Graphs"); |
2 |
26 Feb 07 |
jari |
362 |
buttonItem.setFocusPainted(false); |
2 |
26 Feb 07 |
jari |
363 |
buttonItem.setActionCommand("overlay-mode-command"); |
2 |
26 Feb 07 |
jari |
364 |
buttonItem.addActionListener(listener); |
2 |
26 Feb 07 |
jari |
365 |
bg.add(buttonItem); |
2 |
26 Feb 07 |
jari |
366 |
submenu.add(buttonItem); |
2 |
26 Feb 07 |
jari |
367 |
|
2 |
26 Feb 07 |
jari |
368 |
menu.add(submenu); |
2 |
26 Feb 07 |
jari |
369 |
|
2 |
26 Feb 07 |
jari |
370 |
JMenuItem item = new JMenuItem("Customize Graph"); |
2 |
26 Feb 07 |
jari |
371 |
item.setFocusPainted(false); |
2 |
26 Feb 07 |
jari |
372 |
item.setActionCommand("customize-graph-range-command"); |
2 |
26 Feb 07 |
jari |
373 |
item.addActionListener(listener); |
2 |
26 Feb 07 |
jari |
374 |
menu.addSeparator(); |
2 |
26 Feb 07 |
jari |
375 |
menu.add(item); |
2 |
26 Feb 07 |
jari |
376 |
|
2 |
26 Feb 07 |
jari |
377 |
JCheckBoxMenuItem box = new JCheckBoxMenuItem("Show Locus Reference Line", false); |
2 |
26 Feb 07 |
jari |
378 |
box.setFocusPainted(false); |
2 |
26 Feb 07 |
jari |
379 |
box.setActionCommand("show-reference-line-command"); |
2 |
26 Feb 07 |
jari |
380 |
box.addActionListener(listener); |
2 |
26 Feb 07 |
jari |
381 |
menu.add(box); |
2 |
26 Feb 07 |
jari |
382 |
|
2 |
26 Feb 07 |
jari |
383 |
item = new JMenuItem("Zoom Out (reset X range)"); |
2 |
26 Feb 07 |
jari |
384 |
item.setFocusPainted(false); |
2 |
26 Feb 07 |
jari |
385 |
item.setActionCommand("reset-x-range-command"); |
2 |
26 Feb 07 |
jari |
386 |
item.addActionListener(listener); |
2 |
26 Feb 07 |
jari |
387 |
menu.addSeparator(); |
2 |
26 Feb 07 |
jari |
388 |
menu.add(item); |
2 |
26 Feb 07 |
jari |
389 |
|
2 |
26 Feb 07 |
jari |
390 |
return menu; |
2 |
26 Feb 07 |
jari |
391 |
} |
2 |
26 Feb 07 |
jari |
392 |
|
2 |
26 Feb 07 |
jari |
393 |
/** |
2 |
26 Feb 07 |
jari |
394 |
* |
2 |
26 Feb 07 |
jari |
* @author braisted |
2 |
26 Feb 07 |
jari |
396 |
* |
2 |
26 Feb 07 |
jari |
* The SampleTable object displays the hybs that can be displayed in graphs |
2 |
26 Feb 07 |
jari |
* This class extends JTable and contains a JTable objext. |
2 |
26 Feb 07 |
jari |
399 |
*/ |
2 |
26 Feb 07 |
jari |
400 |
public class SampleTable extends JPanel { |
2 |
26 Feb 07 |
jari |
401 |
|
2 |
26 Feb 07 |
jari |
402 |
protected JTable table; |
2 |
26 Feb 07 |
jari |
403 |
protected SampleTableModel model; |
2 |
26 Feb 07 |
jari |
404 |
protected JScrollPane pane; |
2 |
26 Feb 07 |
jari |
405 |
|
2 |
26 Feb 07 |
jari |
406 |
protected Vector lineColorVector; |
2 |
26 Feb 07 |
jari |
407 |
protected Vector markerColorVector; |
2 |
26 Feb 07 |
jari |
408 |
protected int numberOfLineColors; |
2 |
26 Feb 07 |
jari |
409 |
protected int numberOfMarkerColors; |
2 |
26 Feb 07 |
jari |
410 |
private int ROW_HEIGHT = 20; |
2 |
26 Feb 07 |
jari |
411 |
private int VISIBLE_ROWS = 8; |
2 |
26 Feb 07 |
jari |
412 |
|
2 |
26 Feb 07 |
jari |
413 |
public SampleTable() { |
2 |
26 Feb 07 |
jari |
414 |
super(new GridBagLayout()); |
2 |
26 Feb 07 |
jari |
415 |
|
2 |
26 Feb 07 |
jari |
//default line colors |
2 |
26 Feb 07 |
jari |
417 |
lineColorVector = new Vector(); |
2 |
26 Feb 07 |
jari |
418 |
lineColorVector.add(Color.lightGray); |
2 |
26 Feb 07 |
jari |
419 |
lineColorVector.add(Color.pink); |
2 |
26 Feb 07 |
jari |
420 |
lineColorVector.add(new Color(108,108,255)); //darker lavender |
2 |
26 Feb 07 |
jari |
421 |
lineColorVector.add(new Color(128,180,128)); //sage green |
2 |
26 Feb 07 |
jari |
422 |
lineColorVector.add(new Color(201,70,20)); //burnt sienna |
2 |
26 Feb 07 |
jari |
423 |
lineColorVector.add(new Color(77,140,149)); //dark green-blue |
2 |
26 Feb 07 |
jari |
424 |
lineColorVector.add(new Color(173,52,131)); //dark magenta |
2 |
26 Feb 07 |
jari |
425 |
numberOfLineColors = lineColorVector.size(); |
2 |
26 Feb 07 |
jari |
426 |
|
2 |
26 Feb 07 |
jari |
//default marker colors |
2 |
26 Feb 07 |
jari |
428 |
markerColorVector = new Vector(); |
2 |
26 Feb 07 |
jari |
429 |
markerColorVector.add(Color.blue); |
2 |
26 Feb 07 |
jari |
430 |
markerColorVector.add(Color.black); |
2 |
26 Feb 07 |
jari |
431 |
markerColorVector.add(new Color(92, 74, 145)); |
2 |
26 Feb 07 |
jari |
432 |
markerColorVector.add(Color.gray); |
2 |
26 Feb 07 |
jari |
433 |
markerColorVector.add(new Color(7,120,67)); |
2 |
26 Feb 07 |
jari |
434 |
numberOfMarkerColors = markerColorVector.size(); |
2 |
26 Feb 07 |
jari |
435 |
|
2 |
26 Feb 07 |
jari |
//get sample names |
2 |
26 Feb 07 |
jari |
437 |
Vector headerNames = idata.getSampleAnnotationFieldNames(); |
2 |
26 Feb 07 |
jari |
438 |
int numSampleAnnFields = headerNames.size(); |
2 |
26 Feb 07 |
jari |
//append additional columns |
2 |
26 Feb 07 |
jari |
440 |
headerNames.add("Key"); |
2 |
26 Feb 07 |
jari |
441 |
headerNames.add("Line Color"); |
2 |
26 Feb 07 |
jari |
442 |
headerNames.add("Marker Color"); |
2 |
26 Feb 07 |
jari |
443 |
|
2 |
26 Feb 07 |
jari |
444 |
Object [][] data = new Object[numberOfSamples][headerNames.size()]; |
2 |
26 Feb 07 |
jari |
445 |
|
2 |
26 Feb 07 |
jari |
//construct new vectors for line and marker colors |
2 |
26 Feb 07 |
jari |
447 |
Vector newLineColorVector = new Vector(); |
2 |
26 Feb 07 |
jari |
448 |
Vector newMarkerColorVector = new Vector(); |
2 |
26 Feb 07 |
jari |
449 |
|
2 |
26 Feb 07 |
jari |
450 |
table = new JTable(); //just a temp to get default sel. background |
2 |
26 Feb 07 |
jari |
451 |
|
2 |
26 Feb 07 |
jari |
452 |
for(int i = 0; i < data.length; i++) { |
2 |
26 Feb 07 |
jari |
453 |
for(int j = 0; j < data[0].length; j++) { |
2 |
26 Feb 07 |
jari |
454 |
if(j < numSampleAnnFields) |
2 |
26 Feb 07 |
jari |
455 |
data[i][j] = idata.getSampleAnnotation(i, (String)headerNames.get(j)); |
2 |
26 Feb 07 |
jari |
456 |
else { |
2 |
26 Feb 07 |
jari |
457 |
if(j == data[0].length-2) { |
2 |
26 Feb 07 |
jari |
458 |
data [i][j] = (Color)lineColorVector.get(i%numberOfLineColors); |
2 |
26 Feb 07 |
jari |
459 |
newLineColorVector.add(data[i][j]); |
2 |
26 Feb 07 |
jari |
460 |
} else if(j == data[0].length-1) { |
2 |
26 Feb 07 |
jari |
461 |
data [i][j] = (Color)markerColorVector.get(i%numberOfMarkerColors); |
2 |
26 Feb 07 |
jari |
462 |
newMarkerColorVector.add(data[i][j]); |
2 |
26 Feb 07 |
jari |
463 |
} else if(j == data[0].length-3) { |
2 |
26 Feb 07 |
jari |
464 |
data [i][j] = new LinePreview((Color)markerColorVector.get(i%numberOfMarkerColors), (Color)lineColorVector.get(i%numberOfLineColors), table.getSelectionBackground()); |
2 |
26 Feb 07 |
jari |
465 |
} |
2 |
26 Feb 07 |
jari |
466 |
} |
2 |
26 Feb 07 |
jari |
467 |
} |
2 |
26 Feb 07 |
jari |
468 |
} |
2 |
26 Feb 07 |
jari |
469 |
|
2 |
26 Feb 07 |
jari |
//assign vectors reflecting current table |
2 |
26 Feb 07 |
jari |
471 |
lineColorVector = newLineColorVector; |
2 |
26 Feb 07 |
jari |
472 |
markerColorVector = newMarkerColorVector; |
2 |
26 Feb 07 |
jari |
473 |
|
2 |
26 Feb 07 |
jari |
474 |
model = new SampleTableModel(data, headerNames); |
2 |
26 Feb 07 |
jari |
475 |
table = new JTable(model); |
2 |
26 Feb 07 |
jari |
476 |
|
2 |
26 Feb 07 |
jari |
477 |
table.setRowHeight(20); |
2 |
26 Feb 07 |
jari |
478 |
LEGTableCellRenderer renderer = new LEGTableCellRenderer(); |
2 |
26 Feb 07 |
jari |
479 |
table.setDefaultRenderer(Color.class, renderer); |
2 |
26 Feb 07 |
jari |
480 |
table.setDefaultRenderer(LinePreview.class, renderer); |
2 |
26 Feb 07 |
jari |
481 |
|
2 |
26 Feb 07 |
jari |
482 |
table.addMouseListener(new TableListener()); |
2 |
26 Feb 07 |
jari |
483 |
|
2 |
26 Feb 07 |
jari |
484 |
pane = new JScrollPane(table); |
2 |
26 Feb 07 |
jari |
485 |
pane.setColumnHeaderView(table.getTableHeader()); |
2 |
26 Feb 07 |
jari |
486 |
|
2 |
26 Feb 07 |
jari |
487 |
add(pane, new GridBagConstraints(0,0,1,1,1,1,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,0,0,0),0,0)); |
2 |
26 Feb 07 |
jari |
488 |
|
2 |
26 Feb 07 |
jari |
489 |
table.getSelectionModel().setSelectionInterval(0,0); |
2 |
26 Feb 07 |
jari |
490 |
Dimension dim = new Dimension(400, Math.min(VISIBLE_ROWS*ROW_HEIGHT, data.length*ROW_HEIGHT)); |
2 |
26 Feb 07 |
jari |
491 |
|
2 |
26 Feb 07 |
jari |
492 |
setPreferredSize(dim); |
2 |
26 Feb 07 |
jari |
493 |
setSize(dim); |
2 |
26 Feb 07 |
jari |
494 |
} |
2 |
26 Feb 07 |
jari |
495 |
|
2 |
26 Feb 07 |
jari |
496 |
/** |
2 |
26 Feb 07 |
jari |
* handles mouse events such as table row selection and graph display |
2 |
26 Feb 07 |
jari |
498 |
*/ |
2 |
26 Feb 07 |
jari |
499 |
public void processMouseEvent(MouseEvent me) { |
2 |
26 Feb 07 |
jari |
500 |
if(me.isPopupTrigger()) |
2 |
26 Feb 07 |
jari |
501 |
return; |
2 |
26 Feb 07 |
jari |
502 |
|
2 |
26 Feb 07 |
jari |
503 |
int row = table.getSelectedRow(); |
2 |
26 Feb 07 |
jari |
504 |
int col = table.getSelectedColumn(); |
2 |
26 Feb 07 |
jari |
505 |
|
2 |
26 Feb 07 |
jari |
506 |
if(col >= table.getColumnCount()-2) { |
2 |
26 Feb 07 |
jari |
507 |
Color color = JColorChooser.showDialog(LinearExpressionGraphViewer.this, "Color Selection", (Color)(table.getValueAt(row,col))); |
2 |
26 Feb 07 |
jari |
508 |
if(color != null) { |
2 |
26 Feb 07 |
jari |
509 |
table.setValueAt(color, row, col); |
2 |
26 Feb 07 |
jari |
510 |
getPreviewPanel(row).setColors(getLineColor(row), getMarkerColor(col)); |
2 |
26 Feb 07 |
jari |
511 |
if(col == table.getColumnCount()-2) { |
2 |
26 Feb 07 |
jari |
//update the vector |
2 |
26 Feb 07 |
jari |
513 |
lineColorVector.setElementAt(color, row); |
2 |
26 Feb 07 |
jari |
//update the graph |
2 |
26 Feb 07 |
jari |
515 |
graph.setSampleLineColors(lineColorVector); |
2 |
26 Feb 07 |
jari |
516 |
} else { |
2 |
26 Feb 07 |
jari |
//update the vector |
2 |
26 Feb 07 |
jari |
518 |
markerColorVector.setElementAt(color, row); |
2 |
26 Feb 07 |
jari |
//update the graph |
2 |
26 Feb 07 |
jari |
520 |
graph.setSampleMarkerColors(markerColorVector); |
2 |
26 Feb 07 |
jari |
521 |
} |
2 |
26 Feb 07 |
jari |
//repaint updated color scheme |
2 |
26 Feb 07 |
jari |
523 |
graph.getGraphComponent().repaint(); |
2 |
26 Feb 07 |
jari |
524 |
} |
2 |
26 Feb 07 |
jari |
525 |
table.repaint(); |
2 |
26 Feb 07 |
jari |
526 |
} |
2 |
26 Feb 07 |
jari |
527 |
} |
2 |
26 Feb 07 |
jari |
528 |
|
2 |
26 Feb 07 |
jari |
529 |
/** |
2 |
26 Feb 07 |
jari |
* Returns the line color for a particular row |
2 |
26 Feb 07 |
jari |
* @param row row index |
2 |
26 Feb 07 |
jari |
* @return line color |
2 |
26 Feb 07 |
jari |
533 |
*/ |
2 |
26 Feb 07 |
jari |
534 |
private Color getLineColor(int row) { |
2 |
26 Feb 07 |
jari |
535 |
return (Color)(table.getValueAt(row, table.getColumnCount()-2)); |
2 |
26 Feb 07 |
jari |
536 |
} |
2 |
26 Feb 07 |
jari |
537 |
|
2 |
26 Feb 07 |
jari |
538 |
/** |
2 |
26 Feb 07 |
jari |
* Returns the marker color for a particular row |
2 |
26 Feb 07 |
jari |
* @param row row index |
2 |
26 Feb 07 |
jari |
* @return marker color |
2 |
26 Feb 07 |
jari |
542 |
*/ |
2 |
26 Feb 07 |
jari |
543 |
private Color getMarkerColor(int row) { |
2 |
26 Feb 07 |
jari |
544 |
return (Color)(table.getValueAt(row, table.getColumnCount()-1)); |
2 |
26 Feb 07 |
jari |
545 |
} |
2 |
26 Feb 07 |
jari |
546 |
|
2 |
26 Feb 07 |
jari |
547 |
/** |
2 |
26 Feb 07 |
jari |
* Returns the <code>LinePreview</code> for the given row |
2 |
26 Feb 07 |
jari |
* @param row row index |
2 |
26 Feb 07 |
jari |
* @return line style preview object |
2 |
26 Feb 07 |
jari |
551 |
*/ |
2 |
26 Feb 07 |
jari |
552 |
private LinePreview getPreviewPanel(int row) { |
2 |
26 Feb 07 |
jari |
553 |
return ((LinePreview)(table.getValueAt(row, table.getColumnCount()-3))); |
2 |
26 Feb 07 |
jari |
554 |
} |
2 |
26 Feb 07 |
jari |
555 |
|
2 |
26 Feb 07 |
jari |
556 |
/** |
2 |
26 Feb 07 |
jari |
* Returns the selected rows in the table |
2 |
26 Feb 07 |
jari |
* @return row indices |
2 |
26 Feb 07 |
jari |
559 |
*/ |
2 |
26 Feb 07 |
jari |
560 |
public int [] getSelectedRows() { |
2 |
26 Feb 07 |
jari |
561 |
return table.getSelectedRows(); |
2 |
26 Feb 07 |
jari |
562 |
} |
2 |
26 Feb 07 |
jari |
563 |
|
2 |
26 Feb 07 |
jari |
564 |
/** |
2 |
26 Feb 07 |
jari |
* sets the row selection |
2 |
26 Feb 07 |
jari |
* @param start first row index |
2 |
26 Feb 07 |
jari |
* @param end last row index |
2 |
26 Feb 07 |
jari |
568 |
*/ |
2 |
26 Feb 07 |
jari |
569 |
public void setSelectedRows(int start, int end) { |
2 |
26 Feb 07 |
jari |
570 |
table.getSelectionModel().setSelectionInterval(start, end); |
2 |
26 Feb 07 |
jari |
571 |
table.repaint(); |
2 |
26 Feb 07 |
jari |
572 |
} |
2 |
26 Feb 07 |
jari |
573 |
|
2 |
26 Feb 07 |
jari |
574 |
/** |
2 |
26 Feb 07 |
jari |
575 |
* |
2 |
26 Feb 07 |
jari |
* @author braisted |
2 |
26 Feb 07 |
jari |
577 |
* |
2 |
26 Feb 07 |
jari |
* Custom table model. Holds and delivers table data. |
2 |
26 Feb 07 |
jari |
579 |
*/ |
2 |
26 Feb 07 |
jari |
580 |
public class SampleTableModel extends AbstractTableModel { |
2 |
26 Feb 07 |
jari |
581 |
|
2 |
26 Feb 07 |
jari |
//data |
2 |
26 Feb 07 |
jari |
583 |
private Object [][] data; |
2 |
26 Feb 07 |
jari |
//header names |
2 |
26 Feb 07 |
jari |
585 |
private Vector headerNames; |
2 |
26 Feb 07 |
jari |
586 |
|
2 |
26 Feb 07 |
jari |
587 |
/** |
2 |
26 Feb 07 |
jari |
* Constructor |
2 |
26 Feb 07 |
jari |
* @param data table data |
2 |
26 Feb 07 |
jari |
* @param header header names |
2 |
26 Feb 07 |
jari |
591 |
*/ |
2 |
26 Feb 07 |
jari |
592 |
public SampleTableModel(Object data [][], Vector header) { |
2 |
26 Feb 07 |
jari |
593 |
super(); |
2 |
26 Feb 07 |
jari |
594 |
this.data = data; |
2 |
26 Feb 07 |
jari |
595 |
this.headerNames = header; |
2 |
26 Feb 07 |
jari |
596 |
} |
2 |
26 Feb 07 |
jari |
597 |
|
2 |
26 Feb 07 |
jari |
598 |
/** |
2 |
26 Feb 07 |
jari |
* Returns the number of columns |
2 |
26 Feb 07 |
jari |
600 |
*/ |
2 |
26 Feb 07 |
jari |
601 |
public int getColumnCount() { |
2 |
26 Feb 07 |
jari |
602 |
if(data.length == 0) |
2 |
26 Feb 07 |
jari |
603 |
return 0; |
2 |
26 Feb 07 |
jari |
604 |
else |
2 |
26 Feb 07 |
jari |
605 |
return data[0].length; |
2 |
26 Feb 07 |
jari |
606 |
} |
2 |
26 Feb 07 |
jari |
607 |
|
2 |
26 Feb 07 |
jari |
608 |
/** |
2 |
26 Feb 07 |
jari |
* Returns the row count |
2 |
26 Feb 07 |
jari |
610 |
*/ |
2 |
26 Feb 07 |
jari |
611 |
public int getRowCount() { |
2 |
26 Feb 07 |
jari |
612 |
return data.length; |
2 |
26 Feb 07 |
jari |
613 |
} |
2 |
26 Feb 07 |
jari |
614 |
|
2 |
26 Feb 07 |
jari |
615 |
/** |
2 |
26 Feb 07 |
jari |
* Returns the column name for col (column index) |
2 |
26 Feb 07 |
jari |
617 |
*/ |
2 |
26 Feb 07 |
jari |
618 |
public String getColumnName(int col) { |
2 |
26 Feb 07 |
jari |
619 |
return (String)(headerNames.get(col)); |
2 |
26 Feb 07 |
jari |
620 |
} |
2 |
26 Feb 07 |
jari |
621 |
|
2 |
26 Feb 07 |
jari |
622 |
/** |
2 |
26 Feb 07 |
jari |
* Returns the value at the specified location |
2 |
26 Feb 07 |
jari |
624 |
*/ |
2 |
26 Feb 07 |
jari |
625 |
public Object getValueAt(int rowIndex, int columnIndex) { |
2 |
26 Feb 07 |
jari |
626 |
return data[rowIndex][columnIndex]; |
2 |
26 Feb 07 |
jari |
627 |
} |
2 |
26 Feb 07 |
jari |
628 |
|
2 |
26 Feb 07 |
jari |
629 |
/** |
2 |
26 Feb 07 |
jari |
* Sets the value at the specified location |
2 |
26 Feb 07 |
jari |
631 |
*/ |
2 |
26 Feb 07 |
jari |
632 |
public void setValueAt(Object obj, int row, int col) { |
2 |
26 Feb 07 |
jari |
633 |
data[row][col] = obj; |
2 |
26 Feb 07 |
jari |
634 |
} |
2 |
26 Feb 07 |
jari |
635 |
|
2 |
26 Feb 07 |
jari |
636 |
/** |
2 |
26 Feb 07 |
jari |
* Returns true if the cell at row, col is editable |
2 |
26 Feb 07 |
jari |
* (Color columns) |
2 |
26 Feb 07 |
jari |
639 |
*/ |
2 |
26 Feb 07 |
jari |
640 |
public boolean isCellEditable(int row, int col) { |
2 |
26 Feb 07 |
jari |
//last two color columns are editable |
2 |
26 Feb 07 |
jari |
642 |
return (col >= table.getColumnCount()-2); |
2 |
26 Feb 07 |
jari |
643 |
} |
2 |
26 Feb 07 |
jari |
644 |
|
2 |
26 Feb 07 |
jari |
645 |
/** |
2 |
26 Feb 07 |
jari |
* Returns the class of the specified column |
2 |
26 Feb 07 |
jari |
647 |
*/ |
2 |
26 Feb 07 |
jari |
648 |
public Class getColumnClass(int col) { |
2 |
26 Feb 07 |
jari |
649 |
if(col == headerNames.size()-3) |
2 |
26 Feb 07 |
jari |
650 |
return LinePreview.class; |
2 |
26 Feb 07 |
jari |
651 |
if(col >= headerNames.size()-2) |
2 |
26 Feb 07 |
jari |
652 |
return Color.class; |
2 |
26 Feb 07 |
jari |
653 |
return String.class; |
2 |
26 Feb 07 |
jari |
654 |
} |
2 |
26 Feb 07 |
jari |
655 |
|
2 |
26 Feb 07 |
jari |
656 |
} |
2 |
26 Feb 07 |
jari |
657 |
|
2 |
26 Feb 07 |
jari |
658 |
/** |
2 |
26 Feb 07 |
jari |
659 |
* |
2 |
26 Feb 07 |
jari |
* @author braisted |
2 |
26 Feb 07 |
jari |
661 |
* |
2 |
26 Feb 07 |
jari |
* Custom renderer for the table that can show Strings or line previews |
2 |
26 Feb 07 |
jari |
663 |
*/ |
2 |
26 Feb 07 |
jari |
664 |
public class LEGTableCellRenderer implements TableCellRenderer { |
2 |
26 Feb 07 |
jari |
665 |
|
2 |
26 Feb 07 |
jari |
666 |
private JPanel panel; |
2 |
26 Feb 07 |
jari |
667 |
|
2 |
26 Feb 07 |
jari |
668 |
/** |
2 |
26 Feb 07 |
jari |
* Constructs a renderer |
2 |
26 Feb 07 |
jari |
670 |
*/ |
2 |
26 Feb 07 |
jari |
671 |
public LEGTableCellRenderer() { |
2 |
26 Feb 07 |
jari |
672 |
panel = new JPanel(); |
2 |
26 Feb 07 |
jari |
673 |
} |
2 |
26 Feb 07 |
jari |
674 |
|
2 |
26 Feb 07 |
jari |
675 |
/** |
2 |
26 Feb 07 |
jari |
* Retruns the renderer component, see TableCellRenderer for details |
2 |
26 Feb 07 |
jari |
677 |
*/ |
2 |
26 Feb 07 |
jari |
678 |
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { |
2 |
26 Feb 07 |
jari |
679 |
|
2 |
26 Feb 07 |
jari |
//if it's a preview, set it selected, return value |
2 |
26 Feb 07 |
jari |
681 |
if(value instanceof LinePreview) { |
2 |
26 Feb 07 |
jari |
682 |
((LinePreview)value).setSelected(isSelected); |
2 |
26 Feb 07 |
jari |
683 |
return (LinePreview)value; |
2 |
26 Feb 07 |
jari |
684 |
} |
2 |
26 Feb 07 |
jari |
685 |
|
2 |
26 Feb 07 |
jari |
//if it's a color return it |
2 |
26 Feb 07 |
jari |
687 |
if(value instanceof Color) { |
2 |
26 Feb 07 |
jari |
688 |
panel.setBackground((Color)value); |
2 |
26 Feb 07 |
jari |
689 |
return panel; |
2 |
26 Feb 07 |
jari |
690 |
} |
2 |
26 Feb 07 |
jari |
691 |
|
2 |
26 Feb 07 |
jari |
//else return null (String cells handle themselves) |
2 |
26 Feb 07 |
jari |
693 |
return null; |
2 |
26 Feb 07 |
jari |
694 |
} |
2 |
26 Feb 07 |
jari |
695 |
} |
2 |
26 Feb 07 |
jari |
696 |
|
2 |
26 Feb 07 |
jari |
697 |
|
2 |
26 Feb 07 |
jari |
698 |
/** |
2 |
26 Feb 07 |
jari |
699 |
* |
2 |
26 Feb 07 |
jari |
* @author braisted |
2 |
26 Feb 07 |
jari |
701 |
* |
2 |
26 Feb 07 |
jari |
* LinePreview class extends JPanel and render the line and marker colors |
2 |
26 Feb 07 |
jari |
703 |
* |
2 |
26 Feb 07 |
jari |
704 |
*/ |
2 |
26 Feb 07 |
jari |
705 |
public class LinePreview extends JPanel { |
2 |
26 Feb 07 |
jari |
706 |
private Color markerColor; |
2 |
26 Feb 07 |
jari |
707 |
private Color lineColor; |
2 |
26 Feb 07 |
jari |
708 |
private Color backgroundColor; |
2 |
26 Feb 07 |
jari |
709 |
private Color selectedBackgroundColor; |
2 |
26 Feb 07 |
jari |
710 |
private int x1, x2, y; |
2 |
26 Feb 07 |
jari |
711 |
private boolean selected; |
2 |
26 Feb 07 |
jari |
712 |
|
2 |
26 Feb 07 |
jari |
713 |
/** |
2 |
26 Feb 07 |
jari |
* Constructs a LinePreview |
2 |
26 Feb 07 |
jari |
* @param marker marker color |
2 |
26 Feb 07 |
jari |
* @param line line color |
2 |
26 Feb 07 |
jari |
* @param selBackgroundColor background color |
2 |
26 Feb 07 |
jari |
718 |
*/ |
2 |
26 Feb 07 |
jari |
719 |
public LinePreview(Color marker, Color line, Color selBackgroundColor) { |
2 |
26 Feb 07 |
jari |
720 |
super(); |
2 |
26 Feb 07 |
jari |
721 |
markerColor = marker; |
2 |
26 Feb 07 |
jari |
722 |
lineColor = line; |
2 |
26 Feb 07 |
jari |
723 |
setBackground(Color.white); |
2 |
26 Feb 07 |
jari |
724 |
backgroundColor = Color.white; |
2 |
26 Feb 07 |
jari |
725 |
selectedBackgroundColor = selBackgroundColor; |
2 |
26 Feb 07 |
jari |
726 |
this.setPreferredSize(new Dimension(90, 25)); |
2 |
26 Feb 07 |
jari |
727 |
x1 = 10; |
2 |
26 Feb 07 |
jari |
728 |
x2 = 10; |
2 |
26 Feb 07 |
jari |
729 |
y = 10; |
2 |
26 Feb 07 |
jari |
730 |
} |
2 |
26 Feb 07 |
jari |
731 |
|
2 |
26 Feb 07 |
jari |
732 |
/** |
2 |
26 Feb 07 |
jari |
* Sets marker color |
2 |
26 Feb 07 |
jari |
* @param color marker color |
2 |
26 Feb 07 |
jari |
735 |
*/ |
2 |
26 Feb 07 |
jari |
736 |
public void setMarkerColor(Color color) { |
2 |
26 Feb 07 |
jari |
737 |
markerColor = color; |
2 |
26 Feb 07 |
jari |
738 |
} |
2 |
26 Feb 07 |
jari |
739 |
|
2 |
26 Feb 07 |
jari |
740 |
/** |
2 |
26 Feb 07 |
jari |
* Sets line color |
2 |
26 Feb 07 |
jari |
* @param color line color |
2 |
26 Feb 07 |
jari |
743 |
*/ |
2 |
26 Feb 07 |
jari |
744 |
public void setLineColor(Color color) { |
2 |
26 Feb 07 |
jari |
745 |
lineColor = color; |
2 |
26 Feb 07 |
jari |
746 |
} |
2 |
26 Feb 07 |
jari |
747 |
|
2 |
26 Feb 07 |
jari |
748 |
/** |
2 |
26 Feb 07 |
jari |
* Sets line and marker color |
2 |
26 Feb 07 |
jari |
* @param c1 line color |
2 |
26 Feb 07 |
jari |
* @param c2 marker color |
2 |
26 Feb 07 |
jari |
752 |
*/ |
2 |
26 Feb 07 |
jari |
753 |
public void setColors(Color c1, Color c2) { |
2 |
26 Feb 07 |
jari |
754 |
lineColor = c1; |
2 |
26 Feb 07 |
jari |
755 |
markerColor = c2; |
2 |
26 Feb 07 |
jari |
756 |
} |
2 |
26 Feb 07 |
jari |
757 |
|
2 |
26 Feb 07 |
jari |
758 |
/** |
2 |
26 Feb 07 |
jari |
* Sets the selected field |
2 |
26 Feb 07 |
jari |
* @param selected true if preview is selected |
2 |
26 Feb 07 |
jari |
761 |
*/ |
2 |
26 Feb 07 |
jari |
762 |
public void setSelected(boolean selected) { |
2 |
26 Feb 07 |
jari |
763 |
this.selected = selected; |
2 |
26 Feb 07 |
jari |
764 |
} |
2 |
26 Feb 07 |
jari |
765 |
|
2 |
26 Feb 07 |
jari |
766 |
/** |
2 |
26 Feb 07 |
jari |
* Renders the line preview |
2 |
26 Feb 07 |
jari |
768 |
*/ |
2 |
26 Feb 07 |
jari |
769 |
public void paint(Graphics g) { |
2 |
26 Feb 07 |
jari |
770 |
if(!selected) |
2 |
26 Feb 07 |
jari |
771 |
setBackground(backgroundColor); |
2 |
26 Feb 07 |
jari |
772 |
else |
2 |
26 Feb 07 |
jari |
773 |
setBackground(selectedBackgroundColor); |
2 |
26 Feb 07 |
jari |
774 |
|
2 |
26 Feb 07 |
jari |
775 |
|
2 |
26 Feb 07 |
jari |
776 |
super.paint(g); |
2 |
26 Feb 07 |
jari |
777 |
Graphics2D g2 = (Graphics2D)g; |
2 |
26 Feb 07 |
jari |
778 |
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); |
2 |
26 Feb 07 |
jari |
779 |
Dimension dim = this.getSize(); |
2 |
26 Feb 07 |
jari |
780 |
|
2 |
26 Feb 07 |
jari |
781 |
g.setColor(lineColor); |
2 |
26 Feb 07 |
jari |
782 |
g.drawLine(x1, y, dim.width-x2, y); |
2 |
26 Feb 07 |
jari |
783 |
g.drawLine(x1, y+1, dim.width-x2, y+1); |
2 |
26 Feb 07 |
jari |
784 |
|
2 |
26 Feb 07 |
jari |
785 |
g.setColor(markerColor); |
2 |
26 Feb 07 |
jari |
786 |
g.fillOval(x1, y-1, 4,4); |
2 |
26 Feb 07 |
jari |
787 |
g.fillOval(dim.width - x2, y-1, 4, 4); |
2 |
26 Feb 07 |
jari |
788 |
} |
2 |
26 Feb 07 |
jari |
789 |
|
2 |
26 Feb 07 |
jari |
790 |
} |
2 |
26 Feb 07 |
jari |
791 |
} |
2 |
26 Feb 07 |
jari |
792 |
|
2 |
26 Feb 07 |
jari |
793 |
/** |
2 |
26 Feb 07 |
jari |
794 |
* |
2 |
26 Feb 07 |
jari |
* @author braisted |
2 |
26 Feb 07 |
jari |
796 |
* |
2 |
26 Feb 07 |
jari |
* The Graph class contains the LEMGraphViewer which actually displays the graph |
2 |
26 Feb 07 |
jari |
* this JPanel extention serves as a conatainer that can be embedded into the viewer. |
2 |
26 Feb 07 |
jari |
799 |
*/ |
2 |
26 Feb 07 |
jari |
800 |
public class Graph extends JPanel { |
2 |
26 Feb 07 |
jari |
801 |
private LEMGraphViewer graph; |
2 |
26 Feb 07 |
jari |
802 |
private JScrollBar horizGraphBar; |
2 |
26 Feb 07 |
jari |
803 |
private boolean compressX; |
2 |
26 Feb 07 |
jari |
804 |
JScrollPane pane; |
2 |
26 Feb 07 |
jari |
805 |
|
2 |
26 Feb 07 |
jari |
806 |
/** |
2 |
26 Feb 07 |
jari |
* Constructs the Graph object |
2 |
26 Feb 07 |
jari |
* @param fullExp the full experiment |
2 |
26 Feb 07 |
jari |
* @param data expression data |
2 |
26 Feb 07 |
jari |
* @param title graph's title |
2 |
26 Feb 07 |
jari |
* @param locusNames list of locus names |
2 |
26 Feb 07 |
jari |
* @param start start coordinates |
2 |
26 Feb 07 |
jari |
* @param end end coordinates |
2 |
26 Feb 07 |
jari |
814 |
*/ |
2 |
26 Feb 07 |
jari |
815 |
public Graph(Experiment fullExp, float [][] data, String title, String [] locusNames, int [] start, int [] end) { |
2 |
26 Feb 07 |
jari |
816 |
super(new GridBagLayout()); |
2 |
26 Feb 07 |
jari |
817 |
setBackground(Color.white); |
2 |
26 Feb 07 |
jari |
818 |
|
2 |
26 Feb 07 |
jari |
819 |
Hashtable initProps = getInitialProperties(); |
2 |
26 Feb 07 |
jari |
820 |
|
2 |
26 Feb 07 |
jari |
821 |
graph = new LEMGraphViewer(fullExp, data, title, initProps, locusNames, start, end); |
2 |
26 Feb 07 |
jari |
822 |
pane = new JScrollPane(graph); |
2 |
26 Feb 07 |
jari |
823 |
|
2 |
26 Feb 07 |
jari |
824 |
add(pane, new GridBagConstraints(0,0,1,1,1,1,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,0,0,0),0,0)); |
2 |
26 Feb 07 |
jari |
825 |
|
2 |
26 Feb 07 |
jari |
826 |
int indices [] = new int[]{0}; |
2 |
26 Feb 07 |
jari |
827 |
|
2 |
26 Feb 07 |
jari |
828 |
setGraphsToDisplay(indices); |
2 |
26 Feb 07 |
jari |
829 |
setBackground(Color.green); |
2 |
26 Feb 07 |
jari |
830 |
} |
2 |
26 Feb 07 |
jari |
831 |
|
2 |
26 Feb 07 |
jari |
832 |
/** |
2 |
26 Feb 07 |
jari |
* Builds the initial properties for the viewer |
2 |
26 Feb 07 |
jari |
* @return hashtable of properties |
2 |
26 Feb 07 |
jari |
835 |
*/ |
2 |
26 Feb 07 |
jari |
836 |
private Hashtable getInitialProperties() { |
2 |
26 Feb 07 |
jari |
837 |
Hashtable props = new Hashtable(); |
2 |
26 Feb 07 |
jari |
838 |
|
2 |
26 Feb 07 |
jari |
839 |
props.put("is-overlay-mode", new Boolean(false)); |
2 |
26 Feb 07 |
jari |
840 |
props.put("y-range-mode", new Integer(GraphScaleCustomizationDialog.YRANGE_OPTION_DISPLAY_MENU)); |
2 |
26 Feb 07 |
jari |
841 |
props.put("y-axis-symetry", new Boolean(false)); |
2 |
26 Feb 07 |
jari |
842 |
|
2 |
26 Feb 07 |
jari |
843 |
props.put("show-x-axis", new Boolean(true)); |
2 |
26 Feb 07 |
jari |
844 |
props.put("x-axis-color", Color.lightGray); |
2 |
26 Feb 07 |
jari |
845 |
props.put("x-axis-stroke", new BasicStroke(1f)); |
2 |
26 Feb 07 |
jari |
846 |
|
2 |
26 Feb 07 |
jari |
847 |
props.put("offset-lines-mode", new Boolean(true)); |
2 |
26 Feb 07 |
jari |
848 |
props.put("offset-graph-midpoint", new Float(0f)); |
2 |
26 Feb 07 |
jari |
849 |
|
2 |
26 Feb 07 |
jari |
850 |
props.put("offset-graph-min", new Float(0f)); |
2 |
26 Feb 07 |
jari |
851 |
props.put("offset-graph-max", new Float(0f)); |
2 |
26 Feb 07 |
jari |
852 |
props.put("show-discrete-overlay", new Boolean(false)); |
2 |
26 Feb 07 |
jari |
853 |
|
2 |
26 Feb 07 |
jari |
854 |
return props; |
2 |
26 Feb 07 |
jari |
855 |
} |
2 |
26 Feb 07 |
jari |
856 |
|
2 |
26 Feb 07 |
jari |
857 |
/** |
2 |
26 Feb 07 |
jari |
* Sets the sample line colors |
2 |
26 Feb 07 |
jari |
* @param lineColors line colors |
2 |
26 Feb 07 |
jari |
860 |
*/ |
2 |
26 Feb 07 |
jari |
861 |
public void setSampleLineColors(Vector lineColors) { |
2 |
26 Feb 07 |
jari |
862 |
graph.setSampleLineColors(lineColors); |
2 |
26 Feb 07 |
jari |
863 |
} |
2 |
26 Feb 07 |
jari |
864 |
|
2 |
26 Feb 07 |
jari |
865 |
/** |
2 |
26 Feb 07 |
jari |
* Sets the marker colors |
2 |
26 Feb 07 |
jari |
* @param markerColors |
2 |
26 Feb 07 |
jari |
868 |
*/ |
2 |
26 Feb 07 |
jari |
869 |
public void setSampleMarkerColors(Vector markerColors) { |
2 |
26 Feb 07 |
jari |
870 |
graph.setSampleMarkerColors(markerColors); |
2 |
26 Feb 07 |
jari |
871 |
} |
2 |
26 Feb 07 |
jari |
872 |
|
2 |
26 Feb 07 |
jari |
873 |
/** |
2 |
26 Feb 07 |
jari |
* sets the graphs to display |
2 |
26 Feb 07 |
jari |
* @param selectedGraphs list of graph indices |
2 |
26 Feb 07 |
jari |
876 |
*/ |
2 |
26 Feb 07 |
jari |
877 |
public void setGraphsToDisplay(int [] selectedGraphs) { |
2 |
26 Feb 07 |
jari |
878 |
graph.setGraphsToDisplay(selectedGraphs); |
2 |
26 Feb 07 |
jari |
879 |
} |
2 |
26 Feb 07 |
jari |
880 |
|
2 |
26 Feb 07 |
jari |
881 |
/** |
2 |
26 Feb 07 |
jari |
* IViewer helper to pass on the LEMGraphViewer |
2 |
26 Feb 07 |
jari |
* @param framework |
2 |
26 Feb 07 |
jari |
884 |
*/ |
2 |
26 Feb 07 |
jari |
885 |
public void onSelected(IFramework framework) { |
2 |
26 Feb 07 |
jari |
886 |
graph.onSelected(framework); |
2 |
26 Feb 07 |
jari |
887 |
} |
2 |
26 Feb 07 |
jari |
888 |
|
2 |
26 Feb 07 |
jari |
889 |
/** |
2 |
26 Feb 07 |
jari |
* returns the graph component |
2 |
26 Feb 07 |
jari |
* @return LEMGraphViewer conponent |
2 |
26 Feb 07 |
jari |
892 |
*/ |
2 |
26 Feb 07 |
jari |
893 |
public LEMGraphViewer getGraphComponent() { |
2 |
26 Feb 07 |
jari |
894 |
return graph; |
2 |
26 Feb 07 |
jari |
895 |
} |
2 |
26 Feb 07 |
jari |
896 |
|
2 |
26 Feb 07 |
jari |
897 |
/** |
2 |
26 Feb 07 |
jari |
* Validates the viewer, following resizing |
2 |
26 Feb 07 |
jari |
899 |
*/ |
2 |
26 Feb 07 |
jari |
900 |
public void validateView() { |
2 |
26 Feb 07 |
jari |
901 |
pane.setViewportView(graph); |
2 |
26 Feb 07 |
jari |
902 |
validate(); |
2 |
26 Feb 07 |
jari |
903 |
} |
2 |
26 Feb 07 |
jari |
904 |
|
2 |
26 Feb 07 |
jari |
905 |
/** |
2 |
26 Feb 07 |
jari |
* Removes the current graph component |
2 |
26 Feb 07 |
jari |
907 |
* |
2 |
26 Feb 07 |
jari |
* often used during state changes |
2 |
26 Feb 07 |
jari |
909 |
*/ |
2 |
26 Feb 07 |
jari |
910 |
public void removeGraphComponent() { |
2 |
26 Feb 07 |
jari |
911 |
pane.remove(graph); |
2 |
26 Feb 07 |
jari |
912 |
} |
2 |
26 Feb 07 |
jari |
913 |
|
2 |
26 Feb 07 |
jari |
914 |
} |
2 |
26 Feb 07 |
jari |
915 |
|
2 |
26 Feb 07 |
jari |
916 |
|
2 |
26 Feb 07 |
jari |
917 |
/** |
2 |
26 Feb 07 |
jari |
918 |
* |
2 |
26 Feb 07 |
jari |
* @author braisted |
2 |
26 Feb 07 |
jari |
920 |
* |
2 |
26 Feb 07 |
jari |
* Listens to table events, updates viewer list to display |
2 |
26 Feb 07 |
jari |
922 |
*/ |
2 |
26 Feb 07 |
jari |
923 |
public class TableListener extends MouseAdapter{ |
2 |
26 Feb 07 |
jari |
924 |
public void mouseReleased(MouseEvent me) { |
2 |
26 Feb 07 |
jari |
925 |
graph.setGraphsToDisplay(table.getSelectedRows()); |
2 |
26 Feb 07 |
jari |
926 |
table.processMouseEvent(me); |
2 |
26 Feb 07 |
jari |
927 |
} |
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 |
* @author braisted |
2 |
26 Feb 07 |
jari |
934 |
* |
2 |
26 Feb 07 |
jari |
* Menu listener |
2 |
26 Feb 07 |
jari |
936 |
*/ |
2 |
26 Feb 07 |
jari |
937 |
public class Listener extends MouseAdapter implements ActionListener { |
2 |
26 Feb 07 |
jari |
938 |
|
2 |
26 Feb 07 |
jari |
939 |
public void actionPerformed(ActionEvent ae) { |
2 |
26 Feb 07 |
jari |
940 |
String command = ae.getActionCommand(); |
2 |
26 Feb 07 |
jari |
941 |
|
2 |
26 Feb 07 |
jari |
942 |
if(command.equals("overlay-mode-command")) { |
2 |
26 Feb 07 |
jari |
943 |
overlay = true; |
2 |
26 Feb 07 |
jari |
944 |
graph.getGraphComponent().enableOverlay(overlay); |
2 |
26 Feb 07 |
jari |
945 |
splitPane.validate(); |
2 |
26 Feb 07 |
jari |
946 |
table.setSelectedRows(0,0); //select first row |
2 |
26 Feb 07 |
jari |
947 |
graph.setGraphsToDisplay(table.getSelectedRows()); |
2 |
26 Feb 07 |
jari |
948 |
updateViewerModeView(); |
2 |
26 Feb 07 |
jari |
949 |
framework.refreshCurrentViewer(); |
2 |
26 Feb 07 |
jari |
950 |
framework.getFrame().validate(); |
2 |
26 Feb 07 |
jari |
951 |
framework.getFrame().repaint(); |
2 |
26 Feb 07 |
jari |
952 |
} else if(command.equals("tile-mode-command")) { |
2 |
26 Feb 07 |
jari |
953 |
overlay = false; |
2 |
26 Feb 07 |
jari |
954 |
graph.getGraphComponent().enableOverlay(overlay); |
2 |
26 Feb 07 |
jari |
955 |
updateViewerModeView(); |
2 |
26 Feb 07 |
jari |
956 |
framework.refreshCurrentViewer(); |
2 |
26 Feb 07 |
jari |
957 |
framework.getFrame().validate(); |
2 |
26 Feb 07 |
jari |
958 |
framework.getFrame().repaint(); |
2 |
26 Feb 07 |
jari |
959 |
} else if(command.equals("customize-graph-range-command")) { |
2 |
26 Feb 07 |
jari |
960 |
customizeGraph(); |
2 |
26 Feb 07 |
jari |
961 |
} else if(command.equals("show-reference-line-command")) { |
2 |
26 Feb 07 |
jari |
962 |
showRefLine = !showRefLine; |
2 |
26 Feb 07 |
jari |
963 |
graph.getGraphComponent().toggleReferenceLine(); |
2 |
26 Feb 07 |
jari |
964 |
} else if(command.equals("reset-x-range-command")) { |
2 |
26 Feb 07 |
jari |
965 |
graph.getGraphComponent().resetXRange(); |
2 |
26 Feb 07 |
jari |
966 |
} |
2 |
26 Feb 07 |
jari |
967 |
} |
2 |
26 Feb 07 |
jari |
968 |
|
2 |
26 Feb 07 |
jari |
969 |
public void mouseReleased(MouseEvent me) { |
2 |
26 Feb 07 |
jari |
970 |
if(me.isPopupTrigger()) { |
2 |
26 Feb 07 |
jari |
971 |
popup.show(graph.getGraphComponent(), me.getX(), me.getY()); |
2 |
26 Feb 07 |
jari |
972 |
return; |
2 |
26 Feb 07 |
jari |
973 |
} |
2 |
26 Feb 07 |
jari |
974 |
|
2 |
26 Feb 07 |
jari |
975 |
int column = table.getSelectedRows()[0]; |
2 |
26 Feb 07 |
jari |
976 |
|
2 |
26 Feb 07 |
jari |
977 |
} |
2 |
26 Feb 07 |
jari |
978 |
|
2 |
26 Feb 07 |
jari |
979 |
public void mousePressed(MouseEvent me) { |
2 |
26 Feb 07 |
jari |
980 |
if(me.isPopupTrigger()) |
2 |
26 Feb 07 |
jari |
981 |
popup.show(graph.getGraphComponent(), me.getX(), me.getY()); |
2 |
26 Feb 07 |
jari |
982 |
} |
2 |
26 Feb 07 |
jari |
983 |
} |
2 |
26 Feb 07 |
jari |
984 |
|
2 |
26 Feb 07 |
jari |
985 |
|
2 |
26 Feb 07 |
jari |
986 |
/** |
2 |
26 Feb 07 |
jari |
* @see org.tigr.microarray.mev.cluster.gui.IViewer#setExperiment(org.tigr.microarray.mev.cluster.gui.Experiment) |
2 |
26 Feb 07 |
jari |
988 |
*/ |
2 |
26 Feb 07 |
jari |
989 |
public void setExperiment(Experiment e) { |
2 |
26 Feb 07 |
jari |
990 |
|
2 |
26 Feb 07 |
jari |
991 |
} |
2 |
26 Feb 07 |
jari |
992 |
|
2 |
26 Feb 07 |
jari |
993 |
|
2 |
26 Feb 07 |
jari |
994 |
|
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 |
997 |
*/ |
2 |
26 Feb 07 |
jari |
998 |
public int getExperimentID() { |
2 |
26 Feb 07 |
jari |
999 |
return this.exptID; |
2 |
26 Feb 07 |
jari |
1000 |
} |
2 |
26 Feb 07 |
jari |
1001 |
|
2 |
26 Feb 07 |
jari |
1002 |
|
2 |
26 Feb 07 |
jari |
1003 |
|
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 |
1006 |
*/ |
2 |
26 Feb 07 |
jari |
1007 |
public void setExperimentID(int id) { |
2 |
26 Feb 07 |
jari |
1008 |
this.exptID = id; |
2 |
26 Feb 07 |
jari |
1009 |
} |
2 |
26 Feb 07 |
jari |
1010 |
|
2 |
26 Feb 07 |
jari |
1011 |
|
2 |
26 Feb 07 |
jari |
1012 |
|
2 |
26 Feb 07 |
jari |
1013 |
} |