Rev 94 |
Go to most recent revision |
Blame |
Compare with Previous |
Last modification |
View Log
| Download
| RSS feed
/*
* TaskPropertiesDialog.java - task properties dialog
*
* Copyright (c) 2008 Lukas Jelinek, http://www.aiken.cz
*
* ==========================================================================
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License Version 2 as
* published by the Free Software Foundation.
*
* This program 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 this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* ==========================================================================
*/
package cz.aiken.util.lwtt;
import javax.swing.JOptionPane;
/**
* Task properties dialog class.
*
* This class allows to set various properties of a task. Currently only
* price per hour can be set.
*
* @author luk
*/
public class TaskPropetiesDialog
extends javax.
swing.
JDialog {
/** A return status code - returned if Cancel button has been pressed */
public static final int RET_CANCEL =
0;
/** A return status code - returned if OK button has been pressed */
public static final int RET_OK =
1;
private double price =
1;
/** Creates a new TaskPropetiesDialog.
* @param parent parent object for this dialog
* @param modal modal dialog yes/no
*/
public TaskPropetiesDialog
(java.
awt.
Frame parent,
boolean modal
) {
super(parent, modal
);
initComponents
();
priceText.
setText(Double.
toString(price
));
}
/**
* Returns the "return status" of this dialog - one of RET_OK or RET_CANCEL.
*
* @return return status
*/
public int getReturnStatus
() {
return returnStatus
;
}
/**
* Sets the price per hour.
*
* @param price new price per hour
*/
public void setPrice
(double price
) {
this.
price = price
;
priceText.
setText(Double.
toString(price
));
}
/**
* Returns the price per hour.
*
* @return price per hour
*/
public double getPrice
() {
return price
;
}
/** 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.
*/
@
SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents
() {
okButton =
new javax.
swing.
JButton();
cancelButton =
new javax.
swing.
JButton();
priceLabel =
new javax.
swing.
JLabel();
priceText =
new javax.
swing.
JTextField();
setTitle
("Properties");
setLocationByPlatform
(true);
setResizable
(false);
addWindowListener
(new java.
awt.
event.
WindowAdapter() {
public void windowClosing
(java.
awt.
event.
WindowEvent evt
) {
closeDialog
(evt
);
}
});
okButton.
setText("OK");
okButton.
addActionListener(new java.
awt.
event.
ActionListener() {
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) {
okButtonActionPerformed
(evt
);
}
});
cancelButton.
setText("Cancel");
cancelButton.
addActionListener(new java.
awt.
event.
ActionListener() {
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) {
cancelButtonActionPerformed
(evt
);
}
});
priceLabel.
setText("Price per hour");
priceText.
setHorizontalAlignment(javax.
swing.
JTextField.
RIGHT);
javax.
swing.
GroupLayout layout =
new javax.
swing.
GroupLayout(getContentPane
());
getContentPane
().
setLayout(layout
);
layout.
setHorizontalGroup(
layout.
createParallelGroup(javax.
swing.
GroupLayout.
Alignment.
LEADING)
.
addGroup(layout.
createSequentialGroup()
.
addContainerGap()
.
addGroup(layout.
createParallelGroup(javax.
swing.
GroupLayout.
Alignment.
LEADING)
.
addGroup(javax.
swing.
GroupLayout.
Alignment.
TRAILING, layout.
createSequentialGroup()
.
addComponent(okButton, javax.
swing.
GroupLayout.
PREFERRED_SIZE,
67, javax.
swing.
GroupLayout.
PREFERRED_SIZE)
.
addPreferredGap(javax.
swing.
LayoutStyle.
ComponentPlacement.
RELATED)
.
addComponent(cancelButton
))
.
addGroup(layout.
createSequentialGroup()
.
addComponent(priceLabel
)
.
addPreferredGap(javax.
swing.
LayoutStyle.
ComponentPlacement.
RELATED)
.
addComponent(priceText, javax.
swing.
GroupLayout.
DEFAULT_SIZE,
69,
Short.
MAX_VALUE)))
.
addContainerGap())
);
layout.
linkSize(javax.
swing.
SwingConstants.
HORIZONTAL,
new java.
awt.
Component[] {cancelButton, okButton
});
layout.
setVerticalGroup(
layout.
createParallelGroup(javax.
swing.
GroupLayout.
Alignment.
LEADING)
.
addGroup(javax.
swing.
GroupLayout.
Alignment.
TRAILING, layout.
createSequentialGroup()
.
addContainerGap()
.
addGroup(layout.
createParallelGroup(javax.
swing.
GroupLayout.
Alignment.
BASELINE)
.
addComponent(priceLabel
)
.
addComponent(priceText, javax.
swing.
GroupLayout.
PREFERRED_SIZE, javax.
swing.
GroupLayout.
DEFAULT_SIZE, javax.
swing.
GroupLayout.
PREFERRED_SIZE))
.
addPreferredGap(javax.
swing.
LayoutStyle.
ComponentPlacement.
RELATED,
22,
Short.
MAX_VALUE)
.
addGroup(layout.
createParallelGroup(javax.
swing.
GroupLayout.
Alignment.
BASELINE)
.
addComponent(cancelButton
)
.
addComponent(okButton
))
.
addContainerGap())
);
pack
();
}// </editor-fold>//GEN-END:initComponents
private void okButtonActionPerformed
(java.
awt.
event.
ActionEvent evt
) {//GEN-FIRST:event_okButtonActionPerformed
try {
double p =
Double.
parseDouble(priceText.
getText());
if (p
< 0)
throw new NumberFormatException("price value must not be negative");
price = p
;
doClose
(RET_OK
);
} catch (NumberFormatException ex
) {
JOptionPane.
showMessageDialog(this,
"Price per hour has invalid format.\nPlease use a non-negative number.",
"Invalid format",
JOptionPane.
ERROR_MESSAGE);
}
}//GEN-LAST:event_okButtonActionPerformed
private void cancelButtonActionPerformed
(java.
awt.
event.
ActionEvent evt
) {//GEN-FIRST:event_cancelButtonActionPerformed
doClose
(RET_CANCEL
);
}//GEN-LAST:event_cancelButtonActionPerformed
/** Closes the dialog */
private void closeDialog
(java.
awt.
event.
WindowEvent evt
) {//GEN-FIRST:event_closeDialog
doClose
(RET_CANCEL
);
}//GEN-LAST:event_closeDialog
private void doClose
(int retStatus
) {
returnStatus = retStatus
;
setVisible
(false);
dispose
();
}
/**
* This method is only for testing purposes.
*
* @param args the command line arguments
*/
public static void main
(String args
[]) {
java.
awt.
EventQueue.
invokeLater(new Runnable() {
public void run
() {
TaskPropetiesDialog dialog =
new TaskPropetiesDialog
(new javax.
swing.
JFrame(),
true);
dialog.
addWindowListener(new java.
awt.
event.
WindowAdapter() {
@
Override
public void windowClosing
(java.
awt.
event.
WindowEvent e
) {
System.
exit(0);
}
});
dialog.
setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.
swing.
JButton cancelButton
;
private javax.
swing.
JButton okButton
;
private javax.
swing.
JLabel priceLabel
;
private javax.
swing.
JTextField priceText
;
// End of variables declaration//GEN-END:variables
private int returnStatus = RET_CANCEL
;
}