code: //==============================================================================
  //	
  //	Copyright (c) 2002-
  //	Authors:
  //	* Andrew Hinton <ug60axh@cs.bham.ac.uk> (University of Birmingham)
  //	* Dave Parker <david.parker@comlab.ox.ac.uk> (University of Oxford, formerly University of Birmingham)
  //	
  //------------------------------------------------------------------------------
  //	
  //	This file is part of PRISM.
  //	
  //	PRISM is free software; you can redistribute it and/or modify
  //	it under the terms of the GNU General Public License as published by
  //	the Free Software Foundation; either version 2 of the License, or
  //	(at your option) any later version.
  //	
  //	PRISM is distributed in the hope that it will be useful,
  //	but WITHOUT ANY WARRANTY; without even the implied warranty of
  //	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  //	GNU General Public License for more details.
  //	
  //	You should have received a copy of the GNU General Public License
  //	along with PRISM; if not, write to the Free Software Foundation,
  //	Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  //	
  //==============================================================================
  
  package userinterface.model;
  import javax.swing.*;
  import userinterface.*;
  
  public class GUITransientTime extends javax.swing.JDialog
  {
  	public static final int OK = 0;
  	public static final int CANCELLED = 1;
  	
  	static double time = 0.0;
  	static boolean first = true;
  	
  	private boolean cancelled = true;
  
  	/** Call this static method to construct a new GUITransientTime to get a time value. */
  	public static int requestTime(GUIPrism parent)
  	{
  		return new GUITransientTime(parent).requestTime();
  	}
  
  	public int requestTime()
  	{
  		show();
  		return cancelled ? CANCELLED : OK;
  	}
  
  	public static double getTime()
  	{
  		return time;
  	}
  
      /** Creates new form GUITransientTime */
      public GUITransientTime(java.awt.Frame parent) {
          super(parent, "Define time", true);
          initComponents();
          this.getRootPane().setDefaultButton(okayButton);
  		setLocationRelativeTo(getParent()); // centre
  		if (!first) timeField.setText(""+time);
      }
      
      /** This method is called from within the constructor to
       * initialize the form.
       * WARNING: Do NOT modify this code. The content of this method is
       * always regenerated by the Form Editor.
       */
      private void initComponents() {//GEN-BEGIN:initComponents
          java.awt.GridBagConstraints gridBagConstraints;
  
          jPanel1 = new javax.swing.JPanel();
          jPanel2 = new javax.swing.JPanel();
          jPanel3 = new javax.swing.JPanel();
          jPanel4 = new javax.swing.JPanel();
          jPanel5 = new javax.swing.JPanel();
          jLabel1 = new javax.swing.JLabel();
          timeField = new javax.swing.JTextField();
          jPanel6 = new javax.swing.JPanel();
          okayButton = new javax.swing.JButton();
          cancelButton = new javax.swing.JButton();
  
          setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
          jPanel1.setLayout(new java.awt.GridBagLayout());
  
          gridBagConstraints = new java.awt.GridBagConstraints();
          gridBagConstraints.gridx = 0;
          gridBagConstraints.gridy = 0;
          jPanel1.add(jPanel2, gridBagConstraints);
  
          gridBagConstraints = new java.awt.GridBagConstraints();
          gridBagConstraints.gridx = 2;
          gridBagConstraints.gridy = 0;
          jPanel1.add(jPanel3, gridBagConstraints);
  
          gridBagConstraints = new java.awt.GridBagConstraints();
          gridBagConstraints.gridx = 0;
          gridBagConstraints.gridy = 2;
          jPanel1.add(jPanel4, gridBagConstraints);
  
          gridBagConstraints = new java.awt.GridBagConstraints();
          gridBagConstraints.gridx = 0;
          gridBagConstraints.gridy = 4;
          jPanel1.add(jPanel5, gridBagConstraints);
  
          jLabel1.setText("Please specify a time for which to compute transient probabilities:");
          gridBagConstraints = new java.awt.GridBagConstraints();
          gridBagConstraints.gridx = 1;
          gridBagConstraints.gridy = 1;
          gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
          jPanel1.add(jLabel1, gridBagConstraints);
  
          timeField.setColumns(10);
          gridBagConstraints = new java.awt.GridBagConstraints();
          gridBagConstraints.gridx = 1;
          gridBagConstraints.gridy = 3;
          jPanel1.add(timeField, gridBagConstraints);
  
          getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
  
          jPanel6.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));
  
          okayButton.setText("Okay");
          okayButton.addActionListener(new java.awt.event.ActionListener() {
              public void actionPerformed(java.awt.event.ActionEvent evt) {
                  okayButtonActionPerformed(evt);
              }
          });
  
          jPanel6.add(okayButton);
  
          cancelButton.setText("Cancel");
          cancelButton.addActionListener(new java.awt.event.ActionListener() {
              public void actionPerformed(java.awt.event.ActionEvent evt) {
                  cancelButtonActionPerformed(evt);
              }
          });
  
          jPanel6.add(cancelButton);
  
          getContentPane().add(jPanel6, java.awt.BorderLayout.SOUTH);
          
          
          pack();
      }//GEN-END:initComponents
  
      private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed
  		dispose();
      }//GEN-LAST:event_cancelButtonActionPerformed
  
      private void okayButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okayButtonActionPerformed
  		double d = 0.0;
  		try {
  			d = Double.parseDouble(timeField.getText());
  			if (d < 0) throw new NumberFormatException();
  		}
  		catch (NumberFormatException e) {
  			JOptionPane.showMessageDialog(this, "Error: Invalid time value.", "Error", JOptionPane.ERROR_MESSAGE);
  			return;
  		}
  		time = d;
  		first = false;
  		cancelled = false;
  		dispose();
      }//GEN-LAST:event_okayButtonActionPerformed
      
      // Variables declaration - do not modify//GEN-BEGIN:variables
      private javax.swing.JButton cancelButton;
      private javax.swing.JLabel jLabel1;
      private javax.swing.JPanel jPanel1;
      private javax.swing.JPanel jPanel2;
      private javax.swing.JPanel jPanel3;
      private javax.swing.JPanel jPanel4;
      private javax.swing.JPanel jPanel5;
      private javax.swing.JPanel jPanel6;
      private javax.swing.JButton okayButton;
      private javax.swing.JTextField timeField;
      // End of variables declaration//GEN-END:variables
  }
  