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);