/* ===========================================================
* TradeManager : a application to trade strategies for the Java(tm) platform
* ===========================================================
*
* (C) Copyright 2011-2011, by Simon Allen and Contributors.
*
* Project Info: org.trade
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* This library 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 Lesser General Public
* License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA.
*
* [Java is a trademark or registered trademark of Oracle, Inc.
* in the United States and other countries.]
*
* (C) Copyright 2011-2011, by Simon Allen and Contributors.
*
* Original Author: Simon Allen;
* Contributor(s): -;
*
* Changes
* -------
*
*/
package org.trade.ui.widget;
import java.awt.Component;
import java.awt.Insets;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.JFormattedTextField;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.border.EmptyBorder;
import javax.swing.text.MaskFormatter;
/**
*
* @version $Id: StringField.java,v 1.2 2001/12/28 21:14:55 simon Exp $
* @author Simon Allen
*/
public class StringField extends JFormattedTextField implements FocusListener {
/**
*
*/
private static final long serialVersionUID = -3791332898190722115L;
/**
* Constructor for StringField.
*
* @param mask
* MaskFormatter
* @param validCharacters
* String
* @param placeHolder
* String
*/
public StringField(MaskFormatter mask, String validCharacters, String placeHolder) {
super(mask);
if (null != validCharacters)
((MaskFormatter) this.getFormatter()).setValidCharacters(validCharacters);
if (null != placeHolder)
((MaskFormatter) this.getFormatter()).setPlaceholderCharacter(placeHolder.charAt(0));
this.setHorizontalAlignment(SwingConstants.LEFT);
this.setBorder(new EmptyBorder(new Insets(2, 2, 2, 2)));
this.addFocusListener(this);
}
public StringField() {
super();
this.setHorizontalAlignment(SwingConstants.LEFT);
this.setBorder(new EmptyBorder(new Insets(2, 2, 2, 2)));
}
/**
* Constructor for StringField.
*
* @param columns
* int
*/
public StringField(int columns) {
super();
this.setColumns(columns);
this.setHorizontalAlignment(SwingConstants.LEFT);
this.setBorder(new EmptyBorder(new Insets(2, 2, 2, 2)));
}
/**
* Called when one of the fields gets the focus so that we can select the
* focused field.
*
* @param e
* FocusEvent
* @see java.awt.event.FocusListener#focusGained(FocusEvent)
*/
public void focusGained(FocusEvent e) {
Component c = e.getComponent();
if (c instanceof JFormattedTextField) {
selectItLater(c);
}
}
// Workaround for formatted text field focus side effects.
/**
* Method selectItLater.
*
* @param c
* Component
*/
protected void selectItLater(Component c) {
if (c instanceof JFormattedTextField) {
final JFormattedTextField ftf = (JFormattedTextField) c;
SwingUtilities.invokeLater(new Runnable() {
public void run() {
ftf.selectAll();
}
});
}
}
// Needed for FocusListener interface.
/**
* Method focusLost.
*
* @param e
* FocusEvent
* @see java.awt.event.FocusListener#focusLost(FocusEvent)
*/
public void focusLost(FocusEvent e) {
// ignore
}
}