package jas.util;
import javax.swing.JSpinner;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
class JSpinnerFieldBinding extends FieldBinding implements ChangeListener
{
JSpinnerFieldBinding(JSpinner field)
{
m_field = field;
field.addChangeListener(this);
}
void set(Object value) throws UnsupportedType
{
if (!m_oldVal.equals(value))
{
m_field.setValue(value);
m_oldVal = value;
}
}
Object get(Class type) throws UnsupportedType
{
Object result = m_field.getValue();
if (type == Float.TYPE && result instanceof Double) return new Float(((Double) result).floatValue());
return result;
}
public void stateChanged(ChangeEvent e)
{
Object x = m_field.getValue();
if (!x.equals(m_oldVal)) setChanged();
notifyObservers();
}
protected void reset()
{
super.reset();
m_oldVal = m_field.getValue();
}
private Object m_oldVal = new Integer(0);
private JSpinner m_field;
}