org.jdesktop.swingbinding.adapters.JSpinnerAdapterProvider Maven / Gradle / Ivy
The newest version!
/*
* Copyright (C) 2006-2007 Sun Microsystems, Inc. All rights reserved. Use is
* subject to license terms.
*/
package org.jdesktop.swingbinding.adapters;
import javax.swing.*;
import javax.swing.event.*;
import java.beans.*;
import org.jdesktop.beansbinding.ext.BeanAdapterProvider;
/**
* @author Shannon Hickey
*/
public final class JSpinnerAdapterProvider implements BeanAdapterProvider {
private static final String VALUE_P = "value";
public static final class Adapter extends BeanAdapterBase {
private JSpinner spinner;
private Handler handler;
private Object cachedValue;
private Adapter(JSpinner spinner) {
super(VALUE_P);
this.spinner = spinner;
}
public Object getValue() {
return spinner.getValue();
}
public void setValue(Object value) {
spinner.setValue(value);
}
protected void listeningStarted() {
handler = new Handler();
cachedValue = getValue();
spinner.addChangeListener(handler);
spinner.addPropertyChangeListener("model", handler);
}
protected void listeningStopped() {
spinner.removeChangeListener(handler);
spinner.removePropertyChangeListener("model", handler);
handler = null;
}
private class Handler implements ChangeListener, PropertyChangeListener {
private void spinnerValueChanged() {
Object oldValue = cachedValue;
cachedValue = getValue();
firePropertyChange(oldValue, cachedValue);
}
public void stateChanged(ChangeEvent ce) {
spinnerValueChanged();
}
public void propertyChange(PropertyChangeEvent pe) {
spinnerValueChanged();
}
}
}
public boolean providesAdapter(Class> type, String property) {
return JSpinner.class.isAssignableFrom(type) && property == VALUE_P;
}
public Object createAdapter(Object source, String property) {
if (!providesAdapter(source.getClass(), property)) {
throw new IllegalArgumentException();
}
return new Adapter((JSpinner)source);
}
public Class> getAdapterClass(Class> type) {
return JSpinner.class.isAssignableFrom(type) ?
JSpinnerAdapterProvider.Adapter.class :
null;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy