1 package org.columba.core.gui.action; 17 18 import java.awt.event.ItemEvent ; 19 import java.awt.event.ItemListener ; 20 import java.beans.PropertyChangeListener ; 21 import java.lang.reflect.Proxy ; 22 23 import javax.swing.Action ; 24 import javax.swing.JCheckBoxMenuItem ; 25 26 import org.columba.core.gui.base.ButtonStateAdapter; 27 import org.columba.core.gui.base.MnemonicSetter; 28 29 30 36 37 public class CCheckBoxMenuItem extends JCheckBoxMenuItem { 38 41 public CCheckBoxMenuItem() { 42 super(); 43 } 44 45 54 public CCheckBoxMenuItem(AbstractSelectableAction action) { 55 super(action); 56 57 MnemonicSetter.setTextWithMnemonic(this, 59 (String ) action.getValue(Action.NAME)); 60 getModel().addItemListener(new ItemListener () { 61 public void itemStateChanged(ItemEvent e) { 62 AbstractSelectableAction a = (AbstractSelectableAction) getAction(); 63 64 if (a != null) { 65 a.setState(e.getStateChange() == ItemEvent.SELECTED); 66 } 67 } 68 }); 69 } 70 71 74 protected PropertyChangeListener createActionPropertyChangeListener( 75 Action a) { 76 return (PropertyChangeListener ) Proxy.newProxyInstance(getClass() 77 .getClassLoader(), 78 new Class [] { PropertyChangeListener .class }, 79 new ButtonStateAdapter(this, 80 super.createActionPropertyChangeListener(a))); 81 } 82 83 86 protected void configurePropertiesFromAction(Action a) { 87 super.configurePropertiesFromAction(a); 88 setSelected(((AbstractSelectableAction) a).getState()); 89 } 90 } 91 | Popular Tags |