< prev index next >
src/java.desktop/macosx/native/libawt_lwawt/awt/CMenuItem.m
Print this page
rev 54086 : 8240487: Cleanup whitespace in .cc, .hh, .m, and .mm files
*** 131,220 ****
JNF_COCOA_EXIT(env);
}
- (void) setJavaLabel:(NSString *)theLabel shortcut:(NSString *)theKeyEquivalent modifierMask:(jint)modifiers {
!
NSUInteger modifierMask = 0;
!
if (![theKeyEquivalent isEqualToString:@""]) {
// Force the key equivalent to lower case if not using the shift key.
// Otherwise AppKit will draw a Shift glyph in the menu.
if ((modifiers & java_awt_event_KeyEvent_SHIFT_MASK) == 0) {
theKeyEquivalent = [theKeyEquivalent lowercaseString];
}
!
// Hack for the question mark -- SHIFT and / means use the question mark.
if ((modifiers & java_awt_event_KeyEvent_SHIFT_MASK) != 0 &&
[theKeyEquivalent isEqualToString:@"/"])
{
theKeyEquivalent = @"?";
modifiers &= ~java_awt_event_KeyEvent_SHIFT_MASK;
}
!
modifierMask = JavaModifiersToNsKeyModifiers(modifiers, NO);
}
!
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
[fMenuItem setKeyEquivalent:theKeyEquivalent];
[fMenuItem setKeyEquivalentModifierMask:modifierMask];
[fMenuItem setTitle:theLabel];
}];
}
- (void) setJavaImage:(NSImage *)theImage {
!
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
[fMenuItem setImage:theImage];
}];
}
- (void) setJavaToolTipText:(NSString *)theText {
!
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
[fMenuItem setToolTip:theText];
}];
}
- (void)setJavaEnabled:(BOOL) enabled {
!
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
@synchronized(self) {
fIsEnabled = enabled;
!
// Warning: This won't work if the parent menu is disabled.
// See [CMenu syncFromJava]. We still need to call it here so
// the NSMenuItem itself gets properly updated.
[fMenuItem setEnabled:fIsEnabled];
}
}];
}
- (BOOL)isEnabled {
!
BOOL enabled = NO;
@synchronized(self) {
enabled = fIsEnabled;
}
return enabled;
}
- (void)setJavaState:(BOOL)newState {
!
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
[fMenuItem setState:(newState ? NSOnState : NSOffState)];
}];
}
- (void)dealloc {
[fMenuItem setAction:NULL];
[fMenuItem setTarget:nil];
[fMenuItem release];
fMenuItem = nil;
!
[super dealloc];
}
- (void)addNSMenuItemToMenu:(NSMenu *)inMenu {
[inMenu addItem:fMenuItem];
--- 131,220 ----
JNF_COCOA_EXIT(env);
}
- (void) setJavaLabel:(NSString *)theLabel shortcut:(NSString *)theKeyEquivalent modifierMask:(jint)modifiers {
!
NSUInteger modifierMask = 0;
!
if (![theKeyEquivalent isEqualToString:@""]) {
// Force the key equivalent to lower case if not using the shift key.
// Otherwise AppKit will draw a Shift glyph in the menu.
if ((modifiers & java_awt_event_KeyEvent_SHIFT_MASK) == 0) {
theKeyEquivalent = [theKeyEquivalent lowercaseString];
}
!
// Hack for the question mark -- SHIFT and / means use the question mark.
if ((modifiers & java_awt_event_KeyEvent_SHIFT_MASK) != 0 &&
[theKeyEquivalent isEqualToString:@"/"])
{
theKeyEquivalent = @"?";
modifiers &= ~java_awt_event_KeyEvent_SHIFT_MASK;
}
!
modifierMask = JavaModifiersToNsKeyModifiers(modifiers, NO);
}
!
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
[fMenuItem setKeyEquivalent:theKeyEquivalent];
[fMenuItem setKeyEquivalentModifierMask:modifierMask];
[fMenuItem setTitle:theLabel];
}];
}
- (void) setJavaImage:(NSImage *)theImage {
!
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
[fMenuItem setImage:theImage];
}];
}
- (void) setJavaToolTipText:(NSString *)theText {
!
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
[fMenuItem setToolTip:theText];
}];
}
- (void)setJavaEnabled:(BOOL) enabled {
!
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
@synchronized(self) {
fIsEnabled = enabled;
!
// Warning: This won't work if the parent menu is disabled.
// See [CMenu syncFromJava]. We still need to call it here so
// the NSMenuItem itself gets properly updated.
[fMenuItem setEnabled:fIsEnabled];
}
}];
}
- (BOOL)isEnabled {
!
BOOL enabled = NO;
@synchronized(self) {
enabled = fIsEnabled;
}
return enabled;
}
- (void)setJavaState:(BOOL)newState {
!
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
[fMenuItem setState:(newState ? NSOnState : NSOffState)];
}];
}
- (void)dealloc {
[fMenuItem setAction:NULL];
[fMenuItem setTarget:nil];
[fMenuItem release];
fMenuItem = nil;
!
[super dealloc];
}
- (void)addNSMenuItemToMenu:(NSMenu *)inMenu {
[inMenu addItem:fMenuItem];
*** 235,245 ****
@end
/** Convert a Java keycode for SetMenuItemCmd */
static unichar AWTKeyToMacShortcut(jint awtKey, BOOL doShift) {
unichar macKey = 0;
!
if ((awtKey >= java_awt_event_KeyEvent_VK_0 && awtKey <= java_awt_event_KeyEvent_VK_9) ||
(awtKey >= java_awt_event_KeyEvent_VK_A && awtKey <= java_awt_event_KeyEvent_VK_Z))
{
// These ranges are the same in ASCII
macKey = awtKey;
--- 235,245 ----
@end
/** Convert a Java keycode for SetMenuItemCmd */
static unichar AWTKeyToMacShortcut(jint awtKey, BOOL doShift) {
unichar macKey = 0;
!
if ((awtKey >= java_awt_event_KeyEvent_VK_0 && awtKey <= java_awt_event_KeyEvent_VK_9) ||
(awtKey >= java_awt_event_KeyEvent_VK_A && awtKey <= java_awt_event_KeyEvent_VK_Z))
{
// These ranges are the same in ASCII
macKey = awtKey;
*** 252,298 ****
} else {
// Special characters
switch (awtKey) {
case java_awt_event_KeyEvent_VK_BACK_QUOTE : macKey = '`'; break;
case java_awt_event_KeyEvent_VK_QUOTE : macKey = '\''; break;
!
case java_awt_event_KeyEvent_VK_ESCAPE : macKey = 0x1B; break;
case java_awt_event_KeyEvent_VK_SPACE : macKey = ' '; break;
case java_awt_event_KeyEvent_VK_PAGE_UP : macKey = NSPageUpFunctionKey; break;
case java_awt_event_KeyEvent_VK_PAGE_DOWN : macKey = NSPageDownFunctionKey; break;
case java_awt_event_KeyEvent_VK_END : macKey = NSEndFunctionKey; break;
case java_awt_event_KeyEvent_VK_HOME : macKey = NSHomeFunctionKey; break;
!
case java_awt_event_KeyEvent_VK_LEFT : macKey = NSLeftArrowFunctionKey; break;
case java_awt_event_KeyEvent_VK_UP : macKey = NSUpArrowFunctionKey; break;
case java_awt_event_KeyEvent_VK_RIGHT : macKey = NSRightArrowFunctionKey; break;
case java_awt_event_KeyEvent_VK_DOWN : macKey = NSDownArrowFunctionKey; break;
!
case java_awt_event_KeyEvent_VK_COMMA : macKey = ','; break;
!
// Mac OS doesn't distinguish between the two '-' keys...
case java_awt_event_KeyEvent_VK_MINUS :
case java_awt_event_KeyEvent_VK_SUBTRACT : macKey = '-'; break;
!
// or the two '.' keys...
case java_awt_event_KeyEvent_VK_DECIMAL :
case java_awt_event_KeyEvent_VK_PERIOD : macKey = '.'; break;
!
// or the two '/' keys.
case java_awt_event_KeyEvent_VK_DIVIDE :
case java_awt_event_KeyEvent_VK_SLASH : macKey = '/'; break;
!
case java_awt_event_KeyEvent_VK_SEMICOLON : macKey = ';'; break;
case java_awt_event_KeyEvent_VK_EQUALS : macKey = '='; break;
!
case java_awt_event_KeyEvent_VK_OPEN_BRACKET : macKey = '['; break;
case java_awt_event_KeyEvent_VK_BACK_SLASH : macKey = '\\'; break;
case java_awt_event_KeyEvent_VK_CLOSE_BRACKET : macKey = ']'; break;
!
case java_awt_event_KeyEvent_VK_MULTIPLY : macKey = '*'; break;
case java_awt_event_KeyEvent_VK_ADD : macKey = '+'; break;
!
case java_awt_event_KeyEvent_VK_HELP : macKey = NSHelpFunctionKey; break;
case java_awt_event_KeyEvent_VK_TAB : macKey = NSTabCharacter; break;
case java_awt_event_KeyEvent_VK_ENTER : macKey = NSNewlineCharacter; break;
case java_awt_event_KeyEvent_VK_BACK_SPACE : macKey = NSBackspaceCharacter; break;
case java_awt_event_KeyEvent_VK_DELETE : macKey = NSDeleteCharacter; break;
--- 252,298 ----
} else {
// Special characters
switch (awtKey) {
case java_awt_event_KeyEvent_VK_BACK_QUOTE : macKey = '`'; break;
case java_awt_event_KeyEvent_VK_QUOTE : macKey = '\''; break;
!
case java_awt_event_KeyEvent_VK_ESCAPE : macKey = 0x1B; break;
case java_awt_event_KeyEvent_VK_SPACE : macKey = ' '; break;
case java_awt_event_KeyEvent_VK_PAGE_UP : macKey = NSPageUpFunctionKey; break;
case java_awt_event_KeyEvent_VK_PAGE_DOWN : macKey = NSPageDownFunctionKey; break;
case java_awt_event_KeyEvent_VK_END : macKey = NSEndFunctionKey; break;
case java_awt_event_KeyEvent_VK_HOME : macKey = NSHomeFunctionKey; break;
!
case java_awt_event_KeyEvent_VK_LEFT : macKey = NSLeftArrowFunctionKey; break;
case java_awt_event_KeyEvent_VK_UP : macKey = NSUpArrowFunctionKey; break;
case java_awt_event_KeyEvent_VK_RIGHT : macKey = NSRightArrowFunctionKey; break;
case java_awt_event_KeyEvent_VK_DOWN : macKey = NSDownArrowFunctionKey; break;
!
case java_awt_event_KeyEvent_VK_COMMA : macKey = ','; break;
!
// Mac OS doesn't distinguish between the two '-' keys...
case java_awt_event_KeyEvent_VK_MINUS :
case java_awt_event_KeyEvent_VK_SUBTRACT : macKey = '-'; break;
!
// or the two '.' keys...
case java_awt_event_KeyEvent_VK_DECIMAL :
case java_awt_event_KeyEvent_VK_PERIOD : macKey = '.'; break;
!
// or the two '/' keys.
case java_awt_event_KeyEvent_VK_DIVIDE :
case java_awt_event_KeyEvent_VK_SLASH : macKey = '/'; break;
!
case java_awt_event_KeyEvent_VK_SEMICOLON : macKey = ';'; break;
case java_awt_event_KeyEvent_VK_EQUALS : macKey = '='; break;
!
case java_awt_event_KeyEvent_VK_OPEN_BRACKET : macKey = '['; break;
case java_awt_event_KeyEvent_VK_BACK_SLASH : macKey = '\\'; break;
case java_awt_event_KeyEvent_VK_CLOSE_BRACKET : macKey = ']'; break;
!
case java_awt_event_KeyEvent_VK_MULTIPLY : macKey = '*'; break;
case java_awt_event_KeyEvent_VK_ADD : macKey = '+'; break;
!
case java_awt_event_KeyEvent_VK_HELP : macKey = NSHelpFunctionKey; break;
case java_awt_event_KeyEvent_VK_TAB : macKey = NSTabCharacter; break;
case java_awt_event_KeyEvent_VK_ENTER : macKey = NSNewlineCharacter; break;
case java_awt_event_KeyEvent_VK_BACK_SPACE : macKey = NSBackspaceCharacter; break;
case java_awt_event_KeyEvent_VK_DELETE : macKey = NSDeleteCharacter; break;
*** 332,353 ****
{
JNF_COCOA_ENTER(env);
NSString *theLabel = JNFJavaToNSString(env, label);
NSString *theKeyEquivalent = nil;
unichar macKey = shortcutKey;
!
if (macKey == 0) {
macKey = AWTKeyToMacShortcut(shortcutKeyCode, (mods & java_awt_event_KeyEvent_SHIFT_MASK) != 0);
}
!
if (macKey != 0) {
unichar equivalent[1] = {macKey};
theKeyEquivalent = [NSString stringWithCharacters:equivalent length:1];
} else {
theKeyEquivalent = @"";
}
!
[((CMenuItem *)jlong_to_ptr(menuItemObj)) setJavaLabel:theLabel shortcut:theKeyEquivalent modifierMask:mods];
JNF_COCOA_EXIT(env);
}
/*
--- 332,353 ----
{
JNF_COCOA_ENTER(env);
NSString *theLabel = JNFJavaToNSString(env, label);
NSString *theKeyEquivalent = nil;
unichar macKey = shortcutKey;
!
if (macKey == 0) {
macKey = AWTKeyToMacShortcut(shortcutKeyCode, (mods & java_awt_event_KeyEvent_SHIFT_MASK) != 0);
}
!
if (macKey != 0) {
unichar equivalent[1] = {macKey};
theKeyEquivalent = [NSString stringWithCharacters:equivalent length:1];
} else {
theKeyEquivalent = @"";
}
!
[((CMenuItem *)jlong_to_ptr(menuItemObj)) setJavaLabel:theLabel shortcut:theKeyEquivalent modifierMask:mods];
JNF_COCOA_EXIT(env);
}
/*
*** 386,418 ****
*/
JNIEXPORT jlong JNICALL
Java_sun_lwawt_macosx_CMenuItem_nativeCreate
(JNIEnv *env, jobject peer, jlong parentCMenuObj, jboolean isSeparator)
{
!
__block CMenuItem *aCMenuItem = nil;
BOOL asSeparator = (isSeparator == JNI_TRUE) ? YES: NO;
CMenu *parentCMenu = (CMenu *)jlong_to_ptr(parentCMenuObj);
JNF_COCOA_ENTER(env);
!
jobject cPeerObjGlobal = (*env)->NewGlobalRef(env, peer);
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
aCMenuItem = [[CMenuItem alloc] initWithPeer: cPeerObjGlobal
asSeparator: asSeparator];
// the CMenuItem is released in CMenuComponent.dispose()
}];
!
if (aCMenuItem == nil) {
return 0L;
}
!
// and add it to the parent item.
[parentCMenu addJavaMenuItem: aCMenuItem];
!
// setLabel will be called after creation completes.
!
JNF_COCOA_EXIT(env);
return ptr_to_jlong(aCMenuItem);
}
/*
--- 386,418 ----
*/
JNIEXPORT jlong JNICALL
Java_sun_lwawt_macosx_CMenuItem_nativeCreate
(JNIEnv *env, jobject peer, jlong parentCMenuObj, jboolean isSeparator)
{
!
__block CMenuItem *aCMenuItem = nil;
BOOL asSeparator = (isSeparator == JNI_TRUE) ? YES: NO;
CMenu *parentCMenu = (CMenu *)jlong_to_ptr(parentCMenuObj);
JNF_COCOA_ENTER(env);
!
jobject cPeerObjGlobal = (*env)->NewGlobalRef(env, peer);
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
aCMenuItem = [[CMenuItem alloc] initWithPeer: cPeerObjGlobal
asSeparator: asSeparator];
// the CMenuItem is released in CMenuComponent.dispose()
}];
!
if (aCMenuItem == nil) {
return 0L;
}
!
// and add it to the parent item.
[parentCMenu addJavaMenuItem: aCMenuItem];
!
// setLabel will be called after creation completes.
!
JNF_COCOA_EXIT(env);
return ptr_to_jlong(aCMenuItem);
}
/*
< prev index next >