package org.limewire.ui.swing.components;
import javax.swing.Action;
import org.jdesktop.swingx.JXButton;
/**
* Simple class to extend a JXButton with selectability based on
* its Action. Code ported from {@link IconButton}.
*/
public class SelectableJXButton extends JXButton {
public SelectableJXButton(Action action) {
super(action);
}
@Override
protected void actionPropertyChanged(Action action, String propertyName) {
super.actionPropertyChanged(action, propertyName);
if (propertyName == Action.SELECTED_KEY && hasSelectedKey(action)) {
setSelectedFromAction(action);
}
}
/** Sets the selected state of the button from the action. */
private void setSelectedFromAction(Action a) {
boolean selected = false;
if (a != null) {
selected = Boolean.TRUE.equals(a.getValue(Action.SELECTED_KEY));
}
if (selected != isSelected()) {
setSelected(selected);
}
}
private static boolean hasSelectedKey(Action a) {
return (a != null && a.getValue(Action.SELECTED_KEY) != null);
}
}