/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.geotools.swing.control;
import java.util.HashSet;
import java.util.Set;
import javax.swing.JTextField;
/**
* Abstract base class for text field controls that work with a simple
* value such as {@code JIntegerField}. Provides methods to add and
* remove listeners for value changes offering a simpler API than
* messing about with Swing {@code KeyListener} and {@code DocumentListener}
* classes.
*
* @author Michael Bedward
* @since 2.6.1
* @source $URL$
* @version $Id$
*/
public abstract class JValueField extends JTextField {
private final Set<ValueChangedListener> listeners;
/**
* Default constructor
*/
public JValueField() {
listeners = new HashSet<ValueChangedListener>();
}
/**
* Register a new listener. If the listener is already registered
* this method does nothing.
*
* @param listener the listener to register
*/
public void addValueChangedListener( ValueChangedListener listener ) {
listeners.add(listener);
}
/**
* Remove the given listener. If the listener is not registered
* this method does nothing.
*
* @param listener the listener to remove
*/
public void removeValueChangedListener( ValueChangedListener listener ) {
listeners.remove(listener);
}
/**
* Notify listeners of a value change
*
* @param ev the event with details of the value change
*/
protected void fireValueChangedEvent( ValueChangedEvent ev ) {
for (ValueChangedListener listener : listeners) {
listener.onValueChanged(ev);
}
}
}