mev-4.0.01/source/org/tigr/microarray/mev/cluster/gui/impl/lem/LEMGraphHeader.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2 Copyright @ 1999-2006, The Institute for Genomic Research (TIGR).
2 26 Feb 07 jari 3 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 20  * @author braisted
2 26 Feb 07 jari 21  *
2 26 Feb 07 jari 22  * 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 56    * sets the range limits (0-1 range allowed on each)
2 26 Feb 07 jari 57    * @param left left limit
2 26 Feb 07 jari 58    * @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 67    * 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 76    * 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 90     //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 94     //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 97     //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 102     //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 }