src/macosx/classes/sun/lwawt/macosx/CMenuItem.java

Print this page

        

*** 26,46 **** package sun.lwawt.macosx; import sun.awt.SunToolkit; import sun.lwawt.LWToolkit; import java.awt.MenuItem; import java.awt.MenuShortcut; import java.awt.event.*; import java.awt.peer.MenuItemPeer; public class CMenuItem extends CMenuComponent implements MenuItemPeer { public CMenuItem(MenuItem target) { super(target); initialize(target); - } // This way we avoiding invocation of the setters twice protected void initialize(MenuItem target) { if (!isSeparator()) { --- 26,49 ---- package sun.lwawt.macosx; import sun.awt.SunToolkit; import sun.lwawt.LWToolkit; + import java.awt.MenuContainer; import java.awt.MenuItem; import java.awt.MenuShortcut; import java.awt.event.*; import java.awt.peer.MenuItemPeer; + import java.util.concurrent.atomic.AtomicBoolean; public class CMenuItem extends CMenuComponent implements MenuItemPeer { + private final AtomicBoolean enabled = new AtomicBoolean(true); + public CMenuItem(MenuItem target) { super(target); initialize(target); } // This way we avoiding invocation of the setters twice protected void initialize(MenuItem target) { if (!isSeparator()) {
*** 122,135 **** --- 125,148 ---- // @Override public void disable() { setEnabled(false); } + public final boolean isEnabled() { + return enabled.get(); + } + @Override public void setEnabled(boolean b) { + final Object parent = LWToolkit.targetToPeer(getTarget().getParent()); + if (parent instanceof CMenuItem) { + b &= ((CMenuItem) parent).isEnabled(); + } + if (enabled.compareAndSet(!b, b)) { nativeSetEnabled(getModel(), b); } + } private native long nativeCreate(long parentMenu, boolean isSeparator); private native void nativeSetLabel(long modelPtr, String label, char keyChar, int keyCode, int modifiers); private native void nativeSetImage(long modelPtr, long image); private native void nativeSetTooltip(long modelPtr, String text);