You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

239 lines
7.0 KiB

//==============================================================================
//
// Copyright (c) 2002-
// Authors:
// * Mark Kattenbelt <mark.kattenbelt@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.simulator;
import javax.swing.*;
import java.awt.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import userinterface.*;
public class GUITimeDialog extends JDialog
{
private static final long serialVersionUID = 1L;
//ATTRIBUTES
private double time;
private boolean cancelled;
private static double lastTime = 1.0d;
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel allPanel;
private javax.swing.JPanel bottomPanel;
private javax.swing.JPanel buttonPanel;
private javax.swing.JButton cancelButton;
private javax.swing.JLabel inputLabel;
private javax.swing.JButton okayButton;
private javax.swing.JTextField timeInputField;
private javax.swing.JPanel timeInputPanel;
private javax.swing.JPanel topPanel;
private javax.swing.JLabel warningLabel;
// End of variables declaration//GEN-END:variables
/** Creates new form GUIConstantsPicker */
private GUITimeDialog(GUIPrism parent, GUISimulator simulator)
{
super(parent, "Provide a time", true);
//initialise
initComponents();
this.getRootPane().setDefaultButton(okayButton);
this.time = lastTime;
this.cancelled = false;
this.timeInputField.setText("" + time);
this.warningLabel.setIcon(GUIPrism.getIconFromImage("smallError.png"));
this.warningLabel.setVisible(false);
this.timeInputField.getDocument().addDocumentListener(new DocumentListener()
{
public void changedUpdate(DocumentEvent e)
{
try {
Double.parseDouble(timeInputField.getText());
GUITimeDialog.this.warningLabel.setVisible(false);
GUITimeDialog.this.okayButton.setEnabled(true);
} catch (NumberFormatException nfe) {
GUITimeDialog.this.warningLabel.setVisible(true);
GUITimeDialog.this.okayButton.setEnabled(false);
}
}
public void removeUpdate(DocumentEvent e)
{
changedUpdate(e);
}
public void insertUpdate(DocumentEvent e)
{
changedUpdate(e);
}
});
super.setBounds(new Rectangle(550, 300));
setResizable(true);
setLocationRelativeTo(getParent()); // centre
this.setVisible(true);
}
/** 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.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
private void initComponents()
{
allPanel = new javax.swing.JPanel();
bottomPanel = new javax.swing.JPanel();
warningLabel = new javax.swing.JLabel();
buttonPanel = new javax.swing.JPanel();
okayButton = new javax.swing.JButton();
cancelButton = new javax.swing.JButton();
topPanel = new javax.swing.JPanel();
timeInputPanel = new javax.swing.JPanel();
inputLabel = new javax.swing.JLabel();
timeInputField = new javax.swing.JTextField();
addWindowListener(new java.awt.event.WindowAdapter()
{
public void windowClosing(java.awt.event.WindowEvent evt)
{
closeDialog(evt);
}
});
allPanel.setLayout(new java.awt.BorderLayout());
allPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
bottomPanel.setLayout(new java.awt.BorderLayout());
warningLabel.setText("Please enter a valid positive double");
warningLabel.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 5, 0, 0));
bottomPanel.add(warningLabel, java.awt.BorderLayout.CENTER);
buttonPanel.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);
}
});
buttonPanel.add(okayButton);
cancelButton.setText("Cancel");
cancelButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
cancelButtonActionPerformed(evt);
}
});
buttonPanel.add(cancelButton);
bottomPanel.add(buttonPanel, java.awt.BorderLayout.EAST);
allPanel.add(bottomPanel, java.awt.BorderLayout.SOUTH);
topPanel.setLayout(new java.awt.BorderLayout());
topPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Time spent in state"));
timeInputPanel.setLayout(new java.awt.GridLayout(1, 2, 5, 5));
timeInputPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
inputLabel.setText("Provide a time:");
timeInputPanel.add(inputLabel);
timeInputField.setText("1.0");
timeInputPanel.add(timeInputField);
topPanel.add(timeInputPanel, java.awt.BorderLayout.NORTH);
allPanel.add(topPanel, java.awt.BorderLayout.CENTER);
getContentPane().add(allPanel, java.awt.BorderLayout.CENTER);
}// </editor-fold>//GEN-END:initComponents
private void okayButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_okayButtonActionPerformed
{//GEN-HEADEREND:event_okayButtonActionPerformed
try {
time = Double.parseDouble(timeInputField.getText());
} catch (NumberFormatException nfe) { // Shouldn't happen.
cancelled = true;
}
dispose();
}//GEN-LAST:event_okayButtonActionPerformed
private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_cancelButtonActionPerformed
{//GEN-HEADEREND:event_cancelButtonActionPerformed
cancelled = true;
dispose();
}//GEN-LAST:event_cancelButtonActionPerformed
/** Closes the dialog */
private void closeDialog(java.awt.event.WindowEvent evt)//GEN-FIRST:event_closeDialog
{
setVisible(false);
dispose();
}//GEN-LAST:event_closeDialog
public boolean isCancelled()
{
return cancelled;
}
public double getTime()
{
return time;
}
/** Returns a time, or -1 for cancel. */
public static double askTime(GUIPrism prism, GUISimulator simulator)
{
GUITimeDialog dialog = new GUITimeDialog(prism, simulator);
if (dialog.isCancelled()) {
return -1;
} else {
GUITimeDialog.lastTime = dialog.time;
return dialog.time;
}
}
}