+++ /dev/null
-package tim.prune.gui;
-
-import java.awt.Dimension;
-
-import javax.swing.JTextField;
-import javax.swing.text.AttributeSet;
-import javax.swing.text.BadLocationException;
-import javax.swing.text.PlainDocument;
-
-/**
- * text field for holding a decimal number with validation
- * - doesn't allow certain characters such as a-z to be entered
- */
-public class DecimalNumberField extends JTextField
-{
- /**
- * Inner class to act as document for validation
- */
- protected static class DecimalNumberDocument extends PlainDocument
- {
- private boolean _allowNegative = false;
-
- /** constructor */
- DecimalNumberDocument(boolean inAllowNegative) {
- _allowNegative = inAllowNegative;
- }
-
- /**
- * Override the insert string method
- * @param offs offset
- * @param str string
- * @param a attributes
- * @throws BadLocationException on insert failure
- */
- public void insertString(int offs, String str, AttributeSet a)
- throws BadLocationException
- {
- char[] source = str.toCharArray();
- char[] result = new char[source.length];
- int j = 0;
- for (int i = 0; i < result.length; i++) {
- if (!Character.isLetter(source[i]) && (_allowNegative || source[i] != '-') && source[i] != ' ') // no letters, no minus sign or space
- result[j++] = source[i];
- }
- super.insertString(offs, new String(result, 0, j), a);
- }
- }
-
-
- /**
- * Constructor
- */
- public DecimalNumberField()
- {
- this(false);
- }
-
- /**
- * Constructor
- * @param inAllowNegative true to allow negative numbers
- */
- public DecimalNumberField(boolean inAllowNegative)
- {
- super(6);
- setDocument(new DecimalNumberDocument(inAllowNegative));
- }
-
- /**
- * @return double value
- */
- public double getValue()
- {
- return parseValue(getText());
- }
-
- /**
- * @param inValue value to set
- */
- public void setValue(double inValue)
- {
- setText("" + inValue);
- }
-
- /**
- * @param inText text to parse
- * @return value as double
- */
- private static double parseValue(String inText)
- {
- double value = 0.0;
- try {
- value = Double.parseDouble(inText);
- }
- catch (NumberFormatException nfe) {}
- if (value < 0) {
- value = 0;
- }
- return value;
- }
-
- /**
- * Put a minimum on the minimum width
- */
- public Dimension getMinimumSize()
- {
- Dimension dim = super.getMinimumSize();
- if (dim.width < 50) dim.width = 50;
- return dim;
- }
-}