2 |
26 Feb 07 |
jari |
1 |
/* |
2 |
26 Feb 07 |
jari |
* CytoBandsPanel.java |
2 |
26 Feb 07 |
jari |
3 |
* |
2 |
26 Feb 07 |
jari |
* Created on March 18, 2003, 7:02 PM |
2 |
26 Feb 07 |
jari |
5 |
*/ |
2 |
26 Feb 07 |
jari |
6 |
|
2 |
26 Feb 07 |
jari |
7 |
package org.tigr.microarray.mev.cgh.CGHGuiObj.CGHPositionGraph; |
2 |
26 Feb 07 |
jari |
8 |
|
2 |
26 Feb 07 |
jari |
9 |
import java.awt.Color; |
2 |
26 Feb 07 |
jari |
10 |
import java.awt.Dimension; |
2 |
26 Feb 07 |
jari |
11 |
import java.awt.Font; |
2 |
26 Feb 07 |
jari |
12 |
import java.awt.Graphics; |
2 |
26 Feb 07 |
jari |
13 |
import java.awt.Graphics2D; |
2 |
26 Feb 07 |
jari |
14 |
import java.awt.Insets; |
2 |
26 Feb 07 |
jari |
15 |
import java.awt.geom.RoundRectangle2D; |
2 |
26 Feb 07 |
jari |
16 |
|
2 |
26 Feb 07 |
jari |
17 |
import org.tigr.microarray.mev.cgh.CGHDataModel.CytoBandsModel; |
2 |
26 Feb 07 |
jari |
18 |
import org.tigr.microarray.mev.cgh.CGHDataObj.CytoBand; |
2 |
26 Feb 07 |
jari |
19 |
|
2 |
26 Feb 07 |
jari |
20 |
/** |
2 |
26 Feb 07 |
jari |
21 |
* |
2 |
26 Feb 07 |
jari |
* @author Adam Margolin |
2 |
26 Feb 07 |
jari |
* @author Raktim Sinha |
2 |
26 Feb 07 |
jari |
24 |
*/ |
2 |
26 Feb 07 |
jari |
25 |
|
2 |
26 Feb 07 |
jari |
26 |
public class CytoBandsCanvas extends javax.swing.JPanel { |
2 |
26 Feb 07 |
jari |
27 |
|
2 |
26 Feb 07 |
jari |
28 |
private Insets insets; |
2 |
26 Feb 07 |
jari |
29 |
|
2 |
26 Feb 07 |
jari |
30 |
private double unitLength; |
2 |
26 Feb 07 |
jari |
31 |
int rectWidth = 80; |
2 |
26 Feb 07 |
jari |
32 |
|
2 |
26 Feb 07 |
jari |
33 |
int origXOffset = 5; |
2 |
26 Feb 07 |
jari |
34 |
int origYOffset = 5; |
2 |
26 Feb 07 |
jari |
35 |
|
2 |
26 Feb 07 |
jari |
36 |
int rectSpacing = 5; |
2 |
26 Feb 07 |
jari |
37 |
|
2 |
26 Feb 07 |
jari |
38 |
int cytoBandWidth = 60; |
2 |
26 Feb 07 |
jari |
39 |
|
2 |
26 Feb 07 |
jari |
40 |
int fontSize = 12; |
2 |
26 Feb 07 |
jari |
41 |
|
2 |
26 Feb 07 |
jari |
42 |
CytoBandsModel model; |
2 |
26 Feb 07 |
jari |
43 |
|
2 |
26 Feb 07 |
jari |
44 |
int chromosomeIndex = 0; |
2 |
26 Feb 07 |
jari |
45 |
|
2 |
26 Feb 07 |
jari |
46 |
int rulerOffset; |
2 |
26 Feb 07 |
jari |
47 |
int cytoBandsOffset; |
2 |
26 Feb 07 |
jari |
48 |
|
2 |
26 Feb 07 |
jari |
49 |
public CytoBandsCanvas(Insets insets){ |
2 |
26 Feb 07 |
jari |
//this.insets = new Insets(insets.top, 0, insets.bottom, 0); |
2 |
26 Feb 07 |
jari |
51 |
this.insets = insets; |
2 |
26 Feb 07 |
jari |
52 |
rulerOffset = insets.left + 20; |
2 |
26 Feb 07 |
jari |
53 |
cytoBandsOffset = rulerOffset + 10; |
2 |
26 Feb 07 |
jari |
54 |
|
2 |
26 Feb 07 |
jari |
55 |
initComponents(); |
2 |
26 Feb 07 |
jari |
56 |
} |
2 |
26 Feb 07 |
jari |
57 |
|
2 |
26 Feb 07 |
jari |
58 |
private void initComponents(){ |
2 |
26 Feb 07 |
jari |
59 |
setBackground(Color.black); |
2 |
26 Feb 07 |
jari |
//setPreferredSize(new Dimension(cytoBandWidth + insets.left + insets.right, 400)); |
2 |
26 Feb 07 |
jari |
//setMaximumSize(new Dimension(cytoBandWidth + insets.left + insets.right, 10000)); |
2 |
26 Feb 07 |
jari |
62 |
setPreferredSize(new Dimension(cytoBandWidth + cytoBandsOffset + insets.right, 400)); |
2 |
26 Feb 07 |
jari |
63 |
setMaximumSize(new Dimension(cytoBandWidth + cytoBandsOffset + insets.right, 10000)); |
2 |
26 Feb 07 |
jari |
64 |
} |
2 |
26 Feb 07 |
jari |
65 |
|
2 |
26 Feb 07 |
jari |
66 |
|
2 |
26 Feb 07 |
jari |
67 |
public void paint(Graphics g) { |
2 |
26 Feb 07 |
jari |
68 |
super.paint(g); |
2 |
26 Feb 07 |
jari |
69 |
Graphics2D g2 = (Graphics2D)g; |
2 |
26 Feb 07 |
jari |
70 |
|
2 |
26 Feb 07 |
jari |
71 |
Dimension d = getSize(); |
2 |
26 Feb 07 |
jari |
72 |
|
2 |
26 Feb 07 |
jari |
73 |
double width = d.width; |
2 |
26 Feb 07 |
jari |
74 |
double height = d.height; |
2 |
26 Feb 07 |
jari |
//Draw the ruler on the side |
2 |
26 Feb 07 |
jari |
76 |
g2.setPaint(Color.white); |
2 |
26 Feb 07 |
jari |
77 |
|
2 |
26 Feb 07 |
jari |
//int rulerX = (int) origXOffset - 15; |
2 |
26 Feb 07 |
jari |
79 |
|
2 |
26 Feb 07 |
jari |
80 |
|
2 |
26 Feb 07 |
jari |
81 |
g2.drawLine(rulerOffset, insets.top, rulerOffset, (int)height); |
2 |
26 Feb 07 |
jari |
//g2.setFont(new Font("", 0, 12)); |
2 |
26 Feb 07 |
jari |
//g2.drawString("Position x 1,000,000", 5f, 15f); |
2 |
26 Feb 07 |
jari |
84 |
g2.setFont(new Font("", 0, 10)); |
2 |
26 Feb 07 |
jari |
85 |
for(int i = 0; i < model.getMaxPosition(); i+= 10000000){ |
2 |
26 Feb 07 |
jari |
86 |
String pos = i + ""; |
2 |
26 Feb 07 |
jari |
87 |
String trimmedPos; |
2 |
26 Feb 07 |
jari |
88 |
if(pos.length() < 6){ |
2 |
26 Feb 07 |
jari |
89 |
trimmedPos = pos; |
2 |
26 Feb 07 |
jari |
90 |
}else{ |
2 |
26 Feb 07 |
jari |
91 |
trimmedPos = pos.substring(0, pos.length() - 6); |
2 |
26 Feb 07 |
jari |
92 |
} |
2 |
26 Feb 07 |
jari |
93 |
g2.drawString(trimmedPos, insets.left, (int) (insets.top + i * unitLength)); |
2 |
26 Feb 07 |
jari |
94 |
} |
2 |
26 Feb 07 |
jari |
95 |
|
2 |
26 Feb 07 |
jari |
96 |
|
2 |
26 Feb 07 |
jari |
97 |
CytoBand curCytoBand; |
2 |
26 Feb 07 |
jari |
//Rectangle curRect; |
2 |
26 Feb 07 |
jari |
99 |
RoundRectangle2D curRect; |
2 |
26 Feb 07 |
jari |
100 |
for(int bandIndex = 0; bandIndex < model.getNumCytoBands(); bandIndex++){ |
2 |
26 Feb 07 |
jari |
101 |
curCytoBand = model.getCytoBandAt(bandIndex); |
2 |
26 Feb 07 |
jari |
102 |
int bandStart = curCytoBand.getChromStart(); |
2 |
26 Feb 07 |
jari |
103 |
int bandStop = curCytoBand.getChromEnd(); |
2 |
26 Feb 07 |
jari |
104 |
|
2 |
26 Feb 07 |
jari |
105 |
int rectY = (int) (insets.top + bandStart * unitLength); |
2 |
26 Feb 07 |
jari |
106 |
double dRectHeight = (bandStop - bandStart) * unitLength; |
2 |
26 Feb 07 |
jari |
107 |
int rectHeight; |
2 |
26 Feb 07 |
jari |
108 |
if(dRectHeight < 1 && dRectHeight > 0){ |
2 |
26 Feb 07 |
jari |
109 |
rectHeight = 1; |
2 |
26 Feb 07 |
jari |
110 |
}else{ |
2 |
26 Feb 07 |
jari |
111 |
rectHeight = (int)dRectHeight; |
2 |
26 Feb 07 |
jari |
112 |
} |
2 |
26 Feb 07 |
jari |
113 |
|
2 |
26 Feb 07 |
jari |
//curRect = new Rectangle(insets.left, rectY, cytoBandWidth, rectHeight); |
2 |
26 Feb 07 |
jari |
115 |
cytoBandsOffset = rulerOffset + 5; |
2 |
26 Feb 07 |
jari |
//curRect = new RoundRectangle2D.Float((float)insets.left, (float) rectY, (float) cytoBandWidth, (float) rectHeight, |
2 |
26 Feb 07 |
jari |
// 5f,5f); |
2 |
26 Feb 07 |
jari |
118 |
curRect = new RoundRectangle2D.Float(cytoBandsOffset, (float) rectY, (float) cytoBandWidth, (float) rectHeight, |
2 |
26 Feb 07 |
jari |
119 |
5f,5f); |
2 |
26 Feb 07 |
jari |
120 |
|
2 |
26 Feb 07 |
jari |
121 |
Color curCytoColor = model.getDataPointColor(bandIndex); |
2 |
26 Feb 07 |
jari |
122 |
g2.setPaint(curCytoColor); |
2 |
26 Feb 07 |
jari |
123 |
g2.fill(curRect); |
2 |
26 Feb 07 |
jari |
124 |
|
2 |
26 Feb 07 |
jari |
125 |
if(curCytoColor == Color.darkGray){ |
2 |
26 Feb 07 |
jari |
126 |
g2.setColor(Color.white); |
2 |
26 Feb 07 |
jari |
127 |
}else{ |
2 |
26 Feb 07 |
jari |
128 |
g2.setColor(Color.black); |
2 |
26 Feb 07 |
jari |
129 |
} |
2 |
26 Feb 07 |
jari |
130 |
|
2 |
26 Feb 07 |
jari |
131 |
int fontSize = 10; |
2 |
26 Feb 07 |
jari |
132 |
if(rectHeight < fontSize + 1){ |
2 |
26 Feb 07 |
jari |
133 |
fontSize = rectHeight - 1; |
2 |
26 Feb 07 |
jari |
134 |
} |
2 |
26 Feb 07 |
jari |
135 |
|
2 |
26 Feb 07 |
jari |
136 |
int stringY = rectY + (rectHeight / 2) + (fontSize / 2); |
2 |
26 Feb 07 |
jari |
137 |
|
2 |
26 Feb 07 |
jari |
138 |
g2.setFont(new Font("", 0, fontSize)); |
2 |
26 Feb 07 |
jari |
//g2.drawString(curCytoBand.getName(), insets.left, stringY); |
2 |
26 Feb 07 |
jari |
140 |
g2.drawString(curCytoBand.getName(), cytoBandsOffset, stringY); |
2 |
26 Feb 07 |
jari |
141 |
|
2 |
26 Feb 07 |
jari |
142 |
} |
2 |
26 Feb 07 |
jari |
143 |
|
2 |
26 Feb 07 |
jari |
144 |
curCytoBand = null; |
2 |
26 Feb 07 |
jari |
145 |
} |
2 |
26 Feb 07 |
jari |
146 |
|
2 |
26 Feb 07 |
jari |
/** Getter for property model. |
2 |
26 Feb 07 |
jari |
* @return Value of property model. |
2 |
26 Feb 07 |
jari |
149 |
*/ |
2 |
26 Feb 07 |
jari |
150 |
public CytoBandsModel getModel() { |
2 |
26 Feb 07 |
jari |
151 |
return model; |
2 |
26 Feb 07 |
jari |
152 |
} |
2 |
26 Feb 07 |
jari |
153 |
|
2 |
26 Feb 07 |
jari |
/** Setter for property model. |
2 |
26 Feb 07 |
jari |
* @param model New value of property model. |
2 |
26 Feb 07 |
jari |
156 |
*/ |
2 |
26 Feb 07 |
jari |
157 |
public void setModel(CytoBandsModel model) { |
2 |
26 Feb 07 |
jari |
158 |
this.model = model; |
2 |
26 Feb 07 |
jari |
159 |
} |
2 |
26 Feb 07 |
jari |
160 |
|
2 |
26 Feb 07 |
jari |
/** Getter for property chromosomeIndex. |
2 |
26 Feb 07 |
jari |
* @return Value of property chromosomeIndex. |
2 |
26 Feb 07 |
jari |
163 |
*/ |
2 |
26 Feb 07 |
jari |
164 |
public int getChromosomeIndex() { |
2 |
26 Feb 07 |
jari |
165 |
return chromosomeIndex; |
2 |
26 Feb 07 |
jari |
166 |
} |
2 |
26 Feb 07 |
jari |
167 |
|
2 |
26 Feb 07 |
jari |
/** Setter for property chromosomeIndex. |
2 |
26 Feb 07 |
jari |
* @param chromosomeIndex New value of property chromosomeIndex. |
2 |
26 Feb 07 |
jari |
170 |
*/ |
2 |
26 Feb 07 |
jari |
171 |
public void setChromosomeIndex(int chromosomeIndex) { |
2 |
26 Feb 07 |
jari |
172 |
this.chromosomeIndex = chromosomeIndex; |
2 |
26 Feb 07 |
jari |
173 |
} |
2 |
26 Feb 07 |
jari |
174 |
|
2 |
26 Feb 07 |
jari |
175 |
public void onSelected(){ |
2 |
26 Feb 07 |
jari |
176 |
model.setChromosomeIndex(chromosomeIndex); |
2 |
26 Feb 07 |
jari |
177 |
} |
2 |
26 Feb 07 |
jari |
178 |
|
2 |
26 Feb 07 |
jari |
/** Getter for property unitLength. |
2 |
26 Feb 07 |
jari |
* @return Value of property unitLength. |
2 |
26 Feb 07 |
jari |
181 |
*/ |
2 |
26 Feb 07 |
jari |
182 |
public double getUnitLength() { |
2 |
26 Feb 07 |
jari |
183 |
return unitLength; |
2 |
26 Feb 07 |
jari |
184 |
} |
2 |
26 Feb 07 |
jari |
185 |
|
2 |
26 Feb 07 |
jari |
/** Setter for property unitLength. |
2 |
26 Feb 07 |
jari |
* @param unitLength New value of property unitLength. |
2 |
26 Feb 07 |
jari |
188 |
*/ |
2 |
26 Feb 07 |
jari |
189 |
public void setUnitLength(double unitLength) { |
2 |
26 Feb 07 |
jari |
190 |
this.unitLength = unitLength; |
2 |
26 Feb 07 |
jari |
191 |
} |
2 |
26 Feb 07 |
jari |
192 |
|
2 |
26 Feb 07 |
jari |
193 |
} |