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
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;
|
|
}
|
|
}
|
|
}
|