mev-4.0.01/source/org/tigr/microarray/mev/cluster/gui/impl/dialogs/Monitor.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2 Copyright @ 1999-2003, 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 /*
2 26 Feb 07 jari 6  * $RCSfile: Monitor.java,v $
2 26 Feb 07 jari 7  * $Revision: 1.4 $
2 26 Feb 07 jari 8  * $Date: 2006/02/23 20:59:50 $
2 26 Feb 07 jari 9  * $Author: caliente $
2 26 Feb 07 jari 10  * $State: Exp $
2 26 Feb 07 jari 11  */
2 26 Feb 07 jari 12 package org.tigr.microarray.mev.cluster.gui.impl.dialogs;
2 26 Feb 07 jari 13
2 26 Feb 07 jari 14 import java.awt.Color;
2 26 Feb 07 jari 15 import java.awt.Dimension;
2 26 Feb 07 jari 16 import java.awt.Frame;
2 26 Feb 07 jari 17 import java.awt.Graphics;
2 26 Feb 07 jari 18 import java.awt.Graphics2D;
2 26 Feb 07 jari 19 import java.awt.RenderingHints;
2 26 Feb 07 jari 20 import java.awt.event.WindowEvent;
2 26 Feb 07 jari 21
2 26 Feb 07 jari 22 import javax.swing.ImageIcon;
2 26 Feb 07 jari 23 import javax.swing.JDialog;
2 26 Feb 07 jari 24 import javax.swing.JLabel;
2 26 Feb 07 jari 25 import javax.swing.JPanel;
2 26 Feb 07 jari 26
2 26 Feb 07 jari 27 import org.tigr.microarray.mev.cluster.gui.impl.GUIFactory;
2 26 Feb 07 jari 28
2 26 Feb 07 jari 29 public class Monitor extends JDialog {
2 26 Feb 07 jari 30     
2 26 Feb 07 jari 31     private JPanel drawingArea;
2 26 Feb 07 jari 32     private int position = 0;
2 26 Feb 07 jari 33     private int stepXFactor = 1;
2 26 Feb 07 jari 34     private double factor;
2 26 Feb 07 jari 35     private int[] values = new int[245];
2 26 Feb 07 jari 36     
2 26 Feb 07 jari 37     /**
2 26 Feb 07 jari 38      * Creates a <code>Monitor</code> with specified parameters.
2 26 Feb 07 jari 39      */
2 26 Feb 07 jari 40     public Monitor(Frame parent, String title, int x, int y, double factor) {
2 26 Feb 07 jari 41   super(parent, title);
2 26 Feb 07 jari 42   this.factor = factor;
2 26 Feb 07 jari 43   enableEvents(WindowEvent.WINDOW_EVENT_MASK);
2 26 Feb 07 jari 44   drawingArea = new JPanel() {
2 26 Feb 07 jari 45       protected void paintComponent(Graphics g) {
2 26 Feb 07 jari 46     super.paintComponent(g);
2 26 Feb 07 jari 47     onPaint(g);
2 26 Feb 07 jari 48       }
2 26 Feb 07 jari 49   };
2 26 Feb 07 jari 50   drawingArea.setPreferredSize(new Dimension(275, 275));
2 26 Feb 07 jari 51   drawingArea.setOpaque(false);
2 26 Feb 07 jari 52   for (int i=1; i<200; i++) {
2 26 Feb 07 jari 53       values[i]=0;
2 26 Feb 07 jari 54   }
2 26 Feb 07 jari 55   getContentPane().add(drawingArea);
2 26 Feb 07 jari 56   ((JPanel)getContentPane()).setOpaque(false);
2 26 Feb 07 jari 57   ImageIcon backgroundImage = GUIFactory.getIcon("monitor.jpg");
2 26 Feb 07 jari 58   JLabel backgoundLabel = new JLabel(backgroundImage);
2 26 Feb 07 jari 59   drawingArea.add(backgoundLabel);
2 26 Feb 07 jari 60   getLayeredPane().add(backgoundLabel, new Integer(Integer.MIN_VALUE));
2 26 Feb 07 jari 61   backgoundLabel.setBounds(0, 0, backgroundImage.getIconWidth(), backgroundImage.getIconHeight());
2 26 Feb 07 jari 62   setLocation(x, y);
2 26 Feb 07 jari 63   pack();
2 26 Feb 07 jari 64     }
2 26 Feb 07 jari 65     
2 26 Feb 07 jari 66     /**
2 26 Feb 07 jari 67      * Updates the dialog view.
2 26 Feb 07 jari 68      */
2 26 Feb 07 jari 69     public void update(double value)  {
2 26 Feb 07 jari 70   int dummy = (int)Math.round(value*factor);
2 26 Feb 07 jari 71   if (dummy > 210) {
2 26 Feb 07 jari 72       dummy = 210;
2 26 Feb 07 jari 73   }
2 26 Feb 07 jari 74   values[position] = 210 - dummy;
2 26 Feb 07 jari 75   position++;
2 26 Feb 07 jari 76   if (position*stepXFactor >= 245) {
2 26 Feb 07 jari 77       position = 0;
2 26 Feb 07 jari 78   }
2 26 Feb 07 jari 79   drawingArea.repaint();
2 26 Feb 07 jari 80     }
2 26 Feb 07 jari 81     
2 26 Feb 07 jari 82     /**
2 26 Feb 07 jari 83      * Sets x step factor.
2 26 Feb 07 jari 84      */
2 26 Feb 07 jari 85     public void setStepXFactor(int stepXFactor) {
2 26 Feb 07 jari 86   this.stepXFactor = stepXFactor;
2 26 Feb 07 jari 87     }
2 26 Feb 07 jari 88     
2 26 Feb 07 jari 89     protected void processWindowEvent(WindowEvent e) {
2 26 Feb 07 jari 90   if (e.getID() == WindowEvent.WINDOW_CLOSING) {
2 26 Feb 07 jari 91       dispose();
2 26 Feb 07 jari 92   }
2 26 Feb 07 jari 93   super.processWindowEvent(e);
2 26 Feb 07 jari 94     }
2 26 Feb 07 jari 95     
2 26 Feb 07 jari 96     /**
2 26 Feb 07 jari 97      * Paints a chart into specified graphics.
2 26 Feb 07 jari 98      */
2 26 Feb 07 jari 99     private void onPaint(Graphics g) {
2 26 Feb 07 jari 100   Graphics2D g2 = (Graphics2D)g;
2 26 Feb 07 jari 101   g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
2 26 Feb 07 jari 102   g2.clipRect(15, 28, 245, 210);
2 26 Feb 07 jari 103   g2.setColor(new Color(118, 243, 254));
2 26 Feb 07 jari 104   for (int i=1; i<position; i++) {
2 26 Feb 07 jari 105       g2.drawLine(15+(i-1)*stepXFactor, 28+values[i-1], 15+i*stepXFactor, 28+values[i]);
2 26 Feb 07 jari 106   }
2 26 Feb 07 jari 107     }
2 26 Feb 07 jari 108     
2 26 Feb 07 jari 109 }