RunNumberPanel.java
Upload User: rhdiban
Upload Date: 2013-08-09
Package Size: 15085k
Code Size: 5k
Category:

Windows Develop

Development Platform:

Java

  1. /*
  2.  *    This program is free software; you can redistribute it and/or modify
  3.  *    it under the terms of the GNU General Public License as published by
  4.  *    the Free Software Foundation; either version 2 of the License, or
  5.  *    (at your option) any later version.
  6.  *
  7.  *    This program is distributed in the hope that it will be useful,
  8.  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  9.  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  10.  *    GNU General Public License for more details.
  11.  *
  12.  *    You should have received a copy of the GNU General Public License
  13.  *    along with this program; if not, write to the Free Software
  14.  *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  15.  */
  16. /*
  17.  *    RunNumberPanel.java
  18.  *    Copyright (C) 1999 Len Trigg
  19.  *
  20.  */
  21. package weka.gui.experiment;
  22. import weka.experiment.Experiment;
  23. import java.awt.Component;
  24. import java.awt.BorderLayout;
  25. import java.awt.GridLayout;
  26. import java.awt.FlowLayout;
  27. import java.awt.event.ActionEvent;
  28. import java.awt.event.ActionListener;
  29. import java.awt.event.KeyAdapter;
  30. import java.awt.event.KeyEvent;
  31. import java.awt.event.FocusAdapter;
  32. import java.awt.event.FocusEvent;
  33. import java.awt.event.WindowAdapter;
  34. import java.awt.event.WindowEvent;
  35. import javax.swing.JPanel;
  36. import javax.swing.JLabel;
  37. import javax.swing.JFrame;
  38. import javax.swing.SwingConstants;
  39. import javax.swing.JTextField;
  40. import javax.swing.BorderFactory;
  41. import javax.swing.DefaultListModel;
  42. import javax.swing.JScrollPane;
  43. import javax.swing.JButton;
  44. import javax.swing.Box;
  45. import javax.swing.BoxLayout;
  46. /** 
  47.  * This panel controls configuration of lower and upper run numbers
  48.  * in an experiment.
  49.  *
  50.  * @author Len Trigg (trigg@cs.waikato.ac.nz)
  51.  * @version $Revision: 1.4 $
  52.  */
  53. public class RunNumberPanel extends JPanel {
  54.   /** Configures the lower run number */
  55.   protected JTextField m_LowerText = new JTextField("1");
  56.   /** Configures the upper run number */
  57.   protected JTextField m_UpperText = new JTextField("10");
  58.   /** The experiment being configured */
  59.   protected Experiment m_Exp;
  60.   
  61.   /**
  62.    * Creates the panel with no initial experiment.
  63.    */
  64.   public RunNumberPanel() {
  65.     
  66.     // Updates occur to the values in exp whenever enter is pressed
  67.     // or the component loses focus
  68.     m_LowerText.addKeyListener(new KeyAdapter() {
  69.       public void keyReleased(KeyEvent e) {
  70. m_Exp.setRunLower(getLower());
  71.       }
  72.     });
  73.     m_LowerText.addFocusListener(new FocusAdapter() {
  74.       public void focusLost(FocusEvent e) {
  75. m_Exp.setRunLower(getLower());
  76.       }
  77.     });
  78.     m_UpperText.addKeyListener(new KeyAdapter() {
  79.       public void keyReleased(KeyEvent e) {
  80. m_Exp.setRunUpper(getUpper());
  81.       }
  82.     });
  83.     m_UpperText.addFocusListener(new FocusAdapter() {
  84.       public void focusLost(FocusEvent e) {
  85. m_Exp.setRunUpper(getUpper());
  86.       }
  87.     });
  88.     m_LowerText.setEnabled(false);
  89.     m_UpperText.setEnabled(false);
  90.     // Set the GUI layout
  91.     setLayout(new GridLayout(1,2));
  92.     setBorder(BorderFactory.createTitledBorder("Runs"));
  93.     Box b1 = new Box(BoxLayout.X_AXIS);
  94.     b1.add(Box.createHorizontalStrut(10));
  95.     b1.add(new JLabel("From:", SwingConstants.RIGHT));
  96.     b1.add(Box.createHorizontalStrut(5));
  97.     b1.add(m_LowerText);
  98.     add(b1);
  99.     Box b2 = new Box(BoxLayout.X_AXIS);
  100.     b2.add(Box.createHorizontalStrut(10));
  101.     b2.add(new JLabel("To:", SwingConstants.RIGHT));
  102.     b2.add(Box.createHorizontalStrut(5));
  103.     b2.add(m_UpperText);
  104.     add(b2);
  105.   }
  106.   /**
  107.    * Creates the panel with the supplied initial experiment.
  108.    *
  109.    * @param exp a value of type 'Experiment'
  110.    */
  111.   public RunNumberPanel(Experiment exp) {
  112.     this();
  113.     setExperiment(exp);
  114.   }
  115.   /**
  116.    * Sets the experiment to be configured.
  117.    *
  118.    * @param exp a value of type 'Experiment'
  119.    */
  120.   public void setExperiment(Experiment exp) {
  121.     
  122.     m_Exp = exp;
  123.     m_LowerText.setText("" + m_Exp.getRunLower());
  124.     m_UpperText.setText("" + m_Exp.getRunUpper());
  125.     m_LowerText.setEnabled(true);
  126.     m_UpperText.setEnabled(true);
  127.   }
  128.   
  129.   /**
  130.    * Gets the current lower run number.
  131.    *
  132.    * @return the lower run number.
  133.    */
  134.   public int getLower() {
  135.     int result = 1;
  136.     try {
  137.       result = Integer.parseInt(m_LowerText.getText());
  138.     } catch (Exception ex) {
  139.     }
  140.     return Math.max(1, result);
  141.   }
  142.   
  143.   /**
  144.    * Gets the current upper run number.
  145.    *
  146.    * @return the upper run number.
  147.    */
  148.   public int getUpper() {
  149.     int result = 1;
  150.     try {
  151.       result = Integer.parseInt(m_UpperText.getText());
  152.     } catch (Exception ex) {
  153.     }
  154.     return Math.max(1, result);
  155.   }
  156.   
  157.   /**
  158.    * Tests out the panel from the command line.
  159.    *
  160.    * @param args ignored.
  161.    */
  162.   public static void main(String [] args) {
  163.     try {
  164.       final JFrame jf = new JFrame("Dataset List Editor");
  165.       jf.getContentPane().setLayout(new BorderLayout());
  166.       jf.getContentPane().add(new RunNumberPanel(new Experiment()),
  167.       BorderLayout.CENTER);
  168.       jf.addWindowListener(new WindowAdapter() {
  169. public void windowClosing(WindowEvent e) {
  170.   jf.dispose();
  171.   System.exit(0);
  172. }
  173.       });
  174.       jf.pack();
  175.       jf.setVisible(true);
  176.     } catch (Exception ex) {
  177.       ex.printStackTrace();
  178.       System.err.println(ex.getMessage());
  179.     }
  180.   }
  181. }