Package cn.edu.pku.sei.capriceui

Source Code of cn.edu.pku.sei.capriceui.CapriceButtonGroup

package cn.edu.pku.sei.capriceui;

import javax.swing.*;
import javax.swing.event.SwingPropertyChangeSupport;
import java.beans.PropertyChangeListener;

/**
* User: zhangwei
* Date: 2003-4-10
* Time: 11:18:33
*/

public class CapriceButtonGroup extends ButtonGroup {

    protected AbstractButton invisibleButton = null;

    protected SwingPropertyChangeSupport changeSupport = null;

    public CapriceButtonGroup() {
        super();
    }

    public void setInvisibleButton(AbstractButton button) {
        if (button == null)
            return;

        if (invisibleButton != null) {
            remove(invisibleButton);
        }

        button.setVisible(false);
        button.setSelected(true);
        this.add(button);

        invisibleButton = button;
        setSelected(invisibleButton.getModel(), true);
    }

    public void setSelected(ButtonModel m, boolean b) {
        if (m == invisibleButton.getModel()){
            super.setSelected(m, b);
            return;
        }

        if (m.isSelected() == b){
            //System.out.println("CapriceButtonGroup: m.isSelected() == b.");
            return;
        }

        ButtonModel oldSelection = getSelection();

        if ((m == oldSelection) && (!b)) {
            super.setSelected(invisibleButton.getModel(), true);
            firePropertyChange(CapriceConstants.BUTTON_UNSELECTED, m, null);
        } else if ((m == oldSelection) && (b)) {
           //a bug caused by jdk1.4
           return;
        }

        if (!b) return;

        super.setSelected(m, b);

        if (oldSelection == invisibleButton.getModel()) {
            firePropertyChange(CapriceConstants.BUTTON_SELECTED, null, m);
        } else {
            firePropertyChange(CapriceConstants.BUTTON_TRANSFERRED, oldSelection, m);
        }

    }

    protected void firePropertyChange(String propertyName, ButtonModel unselected, ButtonModel selected) {
        //System.out.println("CapriceButtonGroup: " + propertyName);

        if (changeSupport == null || (unselected != null && selected != null && unselected.equals(selected))) {
            return;
        }
        changeSupport.firePropertyChange(propertyName, unselected, selected);
    }

    public synchronized void addPropertyChangeListener(PropertyChangeListener listener) {
        if (changeSupport == null) {
            changeSupport = new SwingPropertyChangeSupport(this);
        }
        changeSupport.addPropertyChangeListener(listener);
    }

    public synchronized void removePropertyChangeListener(PropertyChangeListener listener) {
        if (changeSupport == null) {
            return;
        }
        changeSupport.removePropertyChangeListener(listener);
    }

}
TOP

Related Classes of cn.edu.pku.sei.capriceui.CapriceButtonGroup

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.