+++ /dev/null
-package tim.prune.gui;
-
-import javax.swing.JTextField;
-import javax.swing.event.DocumentEvent;
-import javax.swing.event.DocumentListener;
-import javax.swing.text.AttributeSet;
-import javax.swing.text.BadLocationException;
-import javax.swing.text.PlainDocument;
-
-/**
- * text field for holding a single integer with validation
- */
-public class WholeNumberField extends JTextField
-{
- /**
- * Inner class to act as document for validation
- */
- protected static class WholeNumberDocument extends PlainDocument
- {
- /** Num digits to allow */
- private int _maxDigits = 0;
-
- /**
- * Constructor
- * @param inMaxDigits max digits to allow
- */
- public WholeNumberDocument(int inMaxDigits)
- {
- _maxDigits = inMaxDigits;
- }
-
-
- /**
- * 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
- {
- if (getLength() >= _maxDigits) return;
- char[] source = str.toCharArray();
- char[] result = new char[source.length];
- int j = 0;
- for (int i = 0; i < result.length && j < _maxDigits; i++) {
- if (Character.isDigit(source[i]))
- result[j++] = source[i];
- }
- super.insertString(offs, new String(result, 0, j), a);
- }
- }
-
-
- /**
- * Constructor
- * @param inMaxDigits max digits to allow
- */
- public WholeNumberField(int inMaxDigits)
- {
- super(inMaxDigits);
- setDocument(new WholeNumberDocument(inMaxDigits));
- getDocument().addDocumentListener(new DocumentListener() {
- public void removeUpdate(DocumentEvent arg0) {fireActionPerformed();}
- public void insertUpdate(DocumentEvent arg0) {fireActionPerformed();}
- public void changedUpdate(DocumentEvent arg0) {fireActionPerformed();}
- });
- }
-
- /**
- * @return integer value
- */
- public int getValue()
- {
- return parseValue(getText());
- }
-
- /**
- * @param inValue value to set
- */
- public void setValue(int inValue)
- {
- setText("" + inValue);
- }
-
- /**
- * @param inText text to parse
- * @return value as integer
- */
- private static int parseValue(String inText)
- {
- int value = 0;
- try {
- value = Integer.parseInt(inText);
- }
- catch (NumberFormatException nfe) {}
- if (value < 0) {
- value = 0;
- }
- return value;
- }
-}