org.jdesktop.swingbinding.adapters.AbstractButtonAdapterProvider Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of swixml Show documentation
Show all versions of swixml Show documentation
GUI generating engine for Java applications
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 - 2025 Weber Informatics LLC | Privacy Policy