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.AlphaComposite; |
2 |
26 Feb 07 |
jari |
8 |
import java.awt.Color; |
2 |
26 Feb 07 |
jari |
9 |
import java.awt.Composite; |
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.FontMetrics; |
2 |
26 Feb 07 |
jari |
13 |
import java.awt.Graphics; |
2 |
26 Feb 07 |
jari |
14 |
import java.awt.Graphics2D; |
2 |
26 Feb 07 |
jari |
15 |
import java.awt.Insets; |
2 |
26 Feb 07 |
jari |
16 |
|
2 |
26 Feb 07 |
jari |
17 |
import javax.swing.JPanel; |
2 |
26 Feb 07 |
jari |
18 |
|
2 |
26 Feb 07 |
jari |
19 |
/** |
2 |
26 Feb 07 |
jari |
* @author braisted |
2 |
26 Feb 07 |
jari |
21 |
* |
2 |
26 Feb 07 |
jari |
* Header to indicate zoom location and level of the graph viewer |
2 |
26 Feb 07 |
jari |
23 |
*/ |
2 |
26 Feb 07 |
jari |
24 |
public class LEMGraphHeader extends JPanel { |
2 |
26 Feb 07 |
jari |
25 |
|
2 |
26 Feb 07 |
jari |
26 |
private float leftLimit, rightLimit; |
2 |
26 Feb 07 |
jari |
27 |
private String title; |
2 |
26 Feb 07 |
jari |
28 |
private int h, w, thinBarH, thickBarH, goalPostW; |
2 |
26 Feb 07 |
jari |
29 |
private FontMetrics fm; |
2 |
26 Feb 07 |
jari |
30 |
private Insets insets; |
2 |
26 Feb 07 |
jari |
31 |
|
2 |
26 Feb 07 |
jari |
32 |
public LEMGraphHeader() { |
2 |
26 Feb 07 |
jari |
33 |
super(); |
2 |
26 Feb 07 |
jari |
34 |
setOpaque(true); |
2 |
26 Feb 07 |
jari |
35 |
setBackground(Color.white); |
2 |
26 Feb 07 |
jari |
36 |
|
2 |
26 Feb 07 |
jari |
37 |
title = "Current Viewer Range"; |
2 |
26 Feb 07 |
jari |
38 |
leftLimit = 0f; |
2 |
26 Feb 07 |
jari |
39 |
rightLimit = 1f; |
2 |
26 Feb 07 |
jari |
40 |
Font font = this.getFont(); |
2 |
26 Feb 07 |
jari |
41 |
thinBarH = 3; |
2 |
26 Feb 07 |
jari |
42 |
thickBarH = 10; |
2 |
26 Feb 07 |
jari |
43 |
goalPostW = 3; |
2 |
26 Feb 07 |
jari |
44 |
insets = new Insets(10,40,10,40); |
2 |
26 Feb 07 |
jari |
45 |
|
2 |
26 Feb 07 |
jari |
46 |
if(font != null) { |
2 |
26 Feb 07 |
jari |
47 |
w = 50; |
2 |
26 Feb 07 |
jari |
48 |
fm = this.getFontMetrics(font); |
2 |
26 Feb 07 |
jari |
49 |
h = fm.getHeight() + insets.top + insets.bottom + thickBarH; |
2 |
26 Feb 07 |
jari |
50 |
setPreferredSize(new Dimension(w, h)); |
2 |
26 Feb 07 |
jari |
51 |
} |
2 |
26 Feb 07 |
jari |
52 |
|
2 |
26 Feb 07 |
jari |
53 |
} |
2 |
26 Feb 07 |
jari |
54 |
|
2 |
26 Feb 07 |
jari |
55 |
/** |
2 |
26 Feb 07 |
jari |
* sets the range limits (0-1 range allowed on each) |
2 |
26 Feb 07 |
jari |
* @param left left limit |
2 |
26 Feb 07 |
jari |
* @param right right limit |
2 |
26 Feb 07 |
jari |
59 |
*/ |
2 |
26 Feb 07 |
jari |
60 |
public void setLimits(float left, float right) { |
2 |
26 Feb 07 |
jari |
61 |
this.leftLimit = left; |
2 |
26 Feb 07 |
jari |
62 |
this.rightLimit = right; |
2 |
26 Feb 07 |
jari |
63 |
repaint(); |
2 |
26 Feb 07 |
jari |
64 |
} |
2 |
26 Feb 07 |
jari |
65 |
|
2 |
26 Feb 07 |
jari |
66 |
/** |
2 |
26 Feb 07 |
jari |
* Resets limit to full |
2 |
26 Feb 07 |
jari |
68 |
*/ |
2 |
26 Feb 07 |
jari |
69 |
public void resetLimits() { |
2 |
26 Feb 07 |
jari |
70 |
this.leftLimit = 0f; |
2 |
26 Feb 07 |
jari |
71 |
this.rightLimit = 1f; |
2 |
26 Feb 07 |
jari |
72 |
repaint(); |
2 |
26 Feb 07 |
jari |
73 |
} |
2 |
26 Feb 07 |
jari |
74 |
|
2 |
26 Feb 07 |
jari |
75 |
/** |
2 |
26 Feb 07 |
jari |
* Renders header panel |
2 |
26 Feb 07 |
jari |
77 |
*/ |
2 |
26 Feb 07 |
jari |
78 |
public void paint(Graphics g) { |
2 |
26 Feb 07 |
jari |
79 |
super.paint(g); |
2 |
26 Feb 07 |
jari |
80 |
Graphics2D g2 = (Graphics2D)g; |
2 |
26 Feb 07 |
jari |
81 |
|
2 |
26 Feb 07 |
jari |
82 |
if(fm == null) |
2 |
26 Feb 07 |
jari |
83 |
fm = g2.getFontMetrics(); |
2 |
26 Feb 07 |
jari |
84 |
|
2 |
26 Feb 07 |
jari |
85 |
h = getHeight(); |
2 |
26 Feb 07 |
jari |
86 |
w = getWidth(); |
2 |
26 Feb 07 |
jari |
87 |
|
2 |
26 Feb 07 |
jari |
88 |
g2.setColor(Color.blue); |
2 |
26 Feb 07 |
jari |
89 |
|
2 |
26 Feb 07 |
jari |
//goal posts |
2 |
26 Feb 07 |
jari |
91 |
g2.fillRect(insets.left, insets.top, goalPostW, h-insets.top-insets.bottom); |
2 |
26 Feb 07 |
jari |
92 |
g2.fillRect(w-insets.right, insets.top, goalPostW, h-insets.top-insets.bottom); |
2 |
26 Feb 07 |
jari |
93 |
|
2 |
26 Feb 07 |
jari |
//crossbar |
2 |
26 Feb 07 |
jari |
95 |
g2.fillRect(insets.left, h/2-thinBarH/2, w-insets.left-insets.right, thinBarH); |
2 |
26 Feb 07 |
jari |
96 |
|
2 |
26 Feb 07 |
jari |
//set thick background |
2 |
26 Feb 07 |
jari |
98 |
g2.setColor(Color.gray); |
2 |
26 Feb 07 |
jari |
99 |
Composite origComposite = g2.getComposite(); |
2 |
26 Feb 07 |
jari |
100 |
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f)); |
2 |
26 Feb 07 |
jari |
101 |
|
2 |
26 Feb 07 |
jari |
//thickBar |
2 |
26 Feb 07 |
jari |
103 |
g2.fillRect(insets.left + (int)(((float)(w-insets.left-insets.right))*leftLimit), |
2 |
26 Feb 07 |
jari |
104 |
h/2-thickBarH/2, (int)( ((float)(w-insets.left-insets.right))*(rightLimit-leftLimit)), thickBarH); |
2 |
26 Feb 07 |
jari |
105 |
|
2 |
26 Feb 07 |
jari |
106 |
g2.setComposite(origComposite); |
2 |
26 Feb 07 |
jari |
107 |
g2.setColor(Color.blue); |
2 |
26 Feb 07 |
jari |
108 |
|
2 |
26 Feb 07 |
jari |
109 |
g2.drawRect(insets.left + (int)(((float)(w-insets.left-insets.right))*leftLimit), |
2 |
26 Feb 07 |
jari |
110 |
h/2-thickBarH/2, (int)( ((float)(w-insets.left-insets.right))*(rightLimit-leftLimit)), thickBarH); |
2 |
26 Feb 07 |
jari |
111 |
|
2 |
26 Feb 07 |
jari |
112 |
} |
2 |
26 Feb 07 |
jari |
113 |
|
2 |
26 Feb 07 |
jari |
114 |
} |