Clover coverage report - baseCode - 0.2.5
Coverage timestamp: Tue Apr 12 2005 11:31:58 EDT
file stats: LOC: 174   Methods: 9
NCLOC: 109   Classes: 3
30 day Evaluation Version distributed via the Maven Jar Repository. Clover is not free. You have 30 days to evaluate it. Please visit http://www.thecortex.net/clover to obtain a licensed version of Clover
 
 Source file Conditionals Statements Methods TOTAL
JGradientBar.java 0% 0% 0% 0%
coverage
 1   
 package baseCode.gui;
 2   
 
 3   
 import java.awt.Color;
 4   
 import java.awt.Dimension;
 5   
 import java.awt.FlowLayout;
 6   
 import java.awt.Font;
 7   
 import java.awt.GradientPaint;
 8   
 import java.awt.Graphics;
 9   
 import java.awt.Graphics2D;
 10   
 import java.text.DecimalFormat;
 11   
 
 12   
 import javax.swing.JLabel;
 13   
 import javax.swing.JPanel;
 14   
 import javax.swing.SwingConstants;
 15   
 
 16   
 /**
 17   
  * A GUI legend component that displays a color map as a color gradient from min to max, traversing all the colors in
 18   
  * the color map.
 19   
  * 
 20   
  * @author Will Braynen
 21   
  * @version $Id: JGradientBar.java,v 1.8 2004/07/27 03:18:58 pavlidis Exp $
 22   
  */
 23   
 public class JGradientBar extends JPanel {
 24   
 
 25   
    protected JNumberLabel m_min;
 26   
    protected JNumberLabel m_max;
 27   
    protected JGradientLabel m_gradient;
 28   
    protected final static Color[] EMPTY = {
 29   
          Color.GRAY, Color.GRAY
 30   
    };
 31   
 
 32   
    /** Creates a new instance of JGradientBar */
 33  0
    public JGradientBar() {
 34   
 
 35   
       //      setOpaque( true );
 36   
       //      setBackground( Color.lightGray );
 37   
 
 38  0
       m_gradient = new JGradientLabel( EMPTY );
 39  0
       m_min = new JNumberLabel();
 40  0
       m_max = new JNumberLabel();
 41  0
       m_min.setHorizontalAlignment( SwingConstants.RIGHT );
 42  0
       m_max.setHorizontalAlignment( SwingConstants.LEFT );
 43   
 
 44  0
       Font font = getFont().deriveFont( Font.BOLD, 13.0f );
 45  0
       m_min.setFont( font );
 46  0
       m_max.setFont( font );
 47   
 
 48  0
       setLayout( new FlowLayout( FlowLayout.LEADING ) );
 49  0
       add( m_min );
 50  0
       add( m_gradient );
 51  0
       add( m_max );
 52   
    } // end constructor
 53   
 
 54  0
    public void setColorMap( Color[] colorMap ) {
 55  0
       m_gradient.m_colorMap = colorMap;
 56   
    } // end setColorMap
 57   
 
 58  0
    public void setLabels( double min, double max ) {
 59  0
       m_min.setText( min );
 60  0
       m_max.setText( max );
 61   
    } // end setLabels
 62   
 
 63   
 } // end class JGradientBar
 64   
 
 65   
 class JNumberLabel extends JLabel {
 66   
 
 67   
    protected static final DecimalFormat m_scientificNotation = new DecimalFormat(
 68   
          "0.##E0" );
 69   
    protected static final DecimalFormat m_regular = new DecimalFormat();
 70   
    protected static final int MINIMUM_WIDTH = 100;
 71   
    protected static final int WIDTH = 40;
 72   
 
 73  0
    public JNumberLabel() {
 74  0
       super();
 75  0
       init();
 76   
    }
 77   
 
 78  0
    public JNumberLabel( double number ) {
 79  0
       this();
 80  0
       m_regular.setMaximumFractionDigits( 3 );
 81  0
       setText( number );
 82   
    }
 83   
 
 84  0
    protected void init() {
 85   
       //      setOpaque( true );
 86   
       //      setBackground( Color.lightGray );
 87  0
       Dimension d = new Dimension( WIDTH, JGradientLabel.HEIGHT );
 88  0
       setSize( d );
 89  0
       setPreferredSize( d );
 90   
    }
 91   
 
 92  0
    public void setText( double number ) {
 93   
 
 94   
       // Only very small numbers (except for zero) as well as very large numbers
 95   
       // should be displayed in scientific notation
 96  0
       String text;
 97  0
       if ( ( number != 0 && Math.abs( number ) < 0.01 )
 98   
             || Math.abs( number ) > 999 ) {
 99  0
          text = m_scientificNotation.format( number );
 100   
       } else {
 101  0
          text = m_regular.format( number );
 102   
       }
 103   
 
 104  0
       super.setText( text );
 105   
    }
 106   
 }
 107   
 
 108   
 class JGradientLabel extends JLabel {
 109   
 
 110   
    // fields
 111   
    protected static final int WIDTH = 100;
 112   
    protected static final int HEIGHT = 20;
 113   
    protected Color[] m_colorMap;
 114   
 
 115   
    /**
 116   
     * Creates a new instance of JGradientLabel
 117   
     * 
 118   
     * @param colorMap Color[]
 119   
     */
 120  0
    public JGradientLabel( Color[] colorMap ) {
 121   
 
 122   
       // colorMap should contain at least two colors
 123  0
       if ( 0 == colorMap.length ) {
 124   
 
 125   
          // if there are no colors, default to grey for both colors
 126   
 
 127  0
          colorMap = new Color[2];
 128  0
          colorMap[0] = colorMap[1] = Color.LIGHT_GRAY;
 129  0
       } else if ( 1 == colorMap.length ) {
 130   
 
 131   
          // if there is only one color, make the second color the same
 132  0
          Color color = colorMap[0];
 133  0
          colorMap = new Color[2];
 134  0
          colorMap[0] = colorMap[1] = color;
 135   
       }
 136   
 
 137  0
       m_colorMap = colorMap;
 138   
 
 139  0
       Dimension d = new Dimension( WIDTH, HEIGHT );
 140  0
       setSize( d );
 141  0
       setPreferredSize( d );
 142   
    } // end constructor
 143   
 
 144  0
    protected void paintComponent( Graphics g ) {
 145   
 
 146  0
       Graphics2D g2 = ( Graphics2D ) g;
 147   
 
 148  0
       final int width = getWidth();
 149  0
       final int height = getHeight();
 150   
 
 151  0
       int x = 0;
 152  0
       int y = 0;
 153   
 
 154   
       // Go from one color to another, creating a gradient in-between,
 155   
       // painting from left to right on this component
 156  0
       int intervalCount = m_colorMap.length - 1;
 157  0
       int intervalWidth = width / intervalCount;
 158   
 
 159  0
       for ( int i = 0; i < intervalCount; i++ ) {
 160   
 
 161  0
          Color color1 = m_colorMap[i];
 162  0
          Color color2 = m_colorMap[i + 1];
 163   
 
 164  0
          GradientPaint oneColorToAnother = new GradientPaint( x, y, color1, x
 165   
                + intervalWidth, y, color2 );
 166  0
          g2.setPaint( oneColorToAnother );
 167  0
          g2.fillRect( x, y, width, height );
 168   
 
 169   
          // Move to paint the next vertical screen slice of this component
 170  0
          x += ( width / intervalCount );
 171   
       }
 172   
    } // end paintComponent
 173   
 } // end JGradientLabel
 174