org.jdesktop.swingbinding.adapters.AbstractButtonAdapterProvider 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 java.awt.event.*;
import java.beans.*;
import org.jdesktop.beansbinding.ext.BeanAdapterProvider;
/**
* @author Shannon Hickey
*/
public final class AbstractButtonAdapterProvider implements BeanAdapterProvider {
private static final String SELECTED_P = "selected";
public static final class Adapter extends BeanAdapterBase {
private AbstractButton button;
private Handler handler;
private boolean cachedSelected;
private Adapter(AbstractButton button) {
super(SELECTED_P);
this.button = button;
}
public boolean isSelected() {
return button.isSelected();
}
public void setSelected(boolean selected) {
button.setSelected(selected);
}
protected void listeningStarted() {
handler = new Handler();
cachedSelected = isSelected();
button.addItemListener(handler);
button.addPropertyChangeListener("model", handler);
}
protected void listeningStopped() {
button.removeItemListener(handler);
button.removePropertyChangeListener("model", handler);
handler = null;
}
private class Handler implements ItemListener, PropertyChangeListener {
private void buttonSelectedChanged() {
boolean oldSelected = cachedSelected;
cachedSelected = isSelected();
firePropertyChange(oldSelected, cachedSelected);
}
public void itemStateChanged(ItemEvent ie) {
buttonSelectedChanged();
}
public void propertyChange(PropertyChangeEvent pe) {
buttonSelectedChanged();
}
}
}
public boolean providesAdapter(Class> type, String property) {
return AbstractButton.class.isAssignableFrom(type) && property.intern() == SELECTED_P;
}
public Object createAdapter(Object source, String property) {
if (!providesAdapter(source.getClass(), property)) {
throw new IllegalArgumentException();
}
return new Adapter((AbstractButton)source);
}
public Class> getAdapterClass(Class> type) {
return AbstractButton.class.isAssignableFrom(type) ?
AbstractButtonAdapterProvider.Adapter.class :
null;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy