src/macosx/native/com/apple/laf/ScreenMenu.m

Print this page




  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 #import "ScreenMenu.h"
  27 
  28 #import "com_apple_laf_ScreenMenu.h"
  29 #import "java_awt_Event.h"
  30 #import "java_awt_event_KeyEvent.h"
  31 #import "java_awt_event_InputEvent.h"
  32 #import "java_awt_event_MouseEvent.h"
  33 
  34 #import <JavaNativeFoundation/JavaNativeFoundation.h>
  35 #import <JavaRuntimeSupport/JavaRuntimeSupport.h>
  36 
  37 #import "ThreadUtilities.h"
  38 #import "CMenuBar.h"
  39 




  40 
  41 static JNF_CLASS_CACHE(sjc_ScreenMenu, "com/apple/laf/ScreenMenu");
  42 
  43 static jint ns2awtModifiers(NSUInteger keyMods) {
  44     jint result = 0;
  45     if (keyMods & NSShiftKeyMask)        result |= java_awt_Event_SHIFT_MASK;
  46     if (keyMods & NSControlKeyMask)        result |= java_awt_Event_CTRL_MASK;
  47     if (keyMods & NSAlternateKeyMask)    result |= java_awt_Event_ALT_MASK;
  48     if (keyMods & NSCommandKeyMask)        result |= java_awt_Event_META_MASK;
  49     return result;
  50 }
  51 
  52 static jint ns2awtMouseButton(NSInteger mouseButton) {
  53     switch (mouseButton) {
  54         case 1: return java_awt_event_InputEvent_BUTTON1_MASK;
  55         case 2: return java_awt_event_InputEvent_BUTTON2_MASK;
  56         case 3: return java_awt_event_InputEvent_BUTTON3_MASK;
  57     }
  58     return 0;
  59 }


  80 @synthesize javaObjectWrapper;
  81 
  82 - (id)initFromMenu:(NSMenu *)aMenu javaObj:(JNFJObjectWrapper *)obj
  83 {
  84     self = [super init];
  85     if (self) {
  86         self.nsmenu = aMenu;
  87         self.javaObjectWrapper = obj;
  88     }
  89     return self;
  90 }
  91 
  92 - (NSMenu *)menu {
  93     return self.nsmenu;
  94 }
  95 
  96 - (void)menuWillOpen:(NSMenu *)menu
  97 {
  98     if (self.javaObjectWrapper == nil) {
  99 #ifdef DEBUG
 100         NSLog(@"_javaObject is NULL: (%s - %s : %d)", __FILE__, __FUNCTION__, __LINE__);
 101 #endif
 102         return;
 103     }
 104 
 105     JNIEnv *env = [ThreadUtilities getJNIEnv];
 106 JNF_COCOA_ENTER(env);
 107     //NSLog(@"menuWillOpen %@", [menu title]);
 108     static JNF_MEMBER_CACHE(jm_ScreenMenu_invokeOpenLater, sjc_ScreenMenu, "invokeOpenLater", "()V");
 109     JNFCallVoidMethod(env, [self.javaObjectWrapper jObject], jm_ScreenMenu_invokeOpenLater); // AWT_THREADING Safe (AWTRunLoopMode)
 110 JNF_COCOA_EXIT(env);
 111 
 112 }
 113 
 114 - (void)menuDidClose:(NSMenu *)menu
 115 {
 116     if (self.javaObjectWrapper == nil) {
 117 #ifdef DEBUG
 118         NSLog(@"_javaObject is NULL: (%s - %s : %d)", __FILE__, __FUNCTION__, __LINE__);
 119 #endif
 120         return;
 121     }
 122 
 123     JNIEnv *env = [ThreadUtilities getJNIEnv];
 124 JNF_COCOA_ENTER(env);
 125     //NSLog(@"menuDidClose %@", [menu title]);
 126     static JNF_MEMBER_CACHE(jm_ScreenMenu_invokeMenuClosing, sjc_ScreenMenu, "invokeMenuClosing", "()V");
 127     JNFCallVoidMethod(env, [self.javaObjectWrapper jObject], jm_ScreenMenu_invokeMenuClosing); // AWT_THREADING Safe (AWTRunLoopMode)
 128 JNF_COCOA_EXIT(env);
 129 }
 130 
 131 
 132 - (void)handleJavaMenuItemTargetedAtIndex:(NSUInteger)menuIndex rect:(NSRect)rect
 133 {
 134     if (self.javaObjectWrapper == nil) {
 135 #ifdef DEBUG
 136         NSLog(@"_javaObject is NULL: (%s - %s : %d)", __FILE__, __FUNCTION__, __LINE__);
 137 #endif
 138         return;
 139     }
 140 
 141     JNIEnv *env = [ThreadUtilities getJNIEnv];
 142 JNF_COCOA_ENTER(env);
 143     // Send that to Java so we can test which item was hit.
 144     static JNF_MEMBER_CACHE(jm_ScreenMenu_updateSelectedItem, sjc_ScreenMenu, "handleItemTargeted", "(IIIII)V");
 145     JNFCallVoidMethod(env, [self.javaObjectWrapper jObject], jm_ScreenMenu_updateSelectedItem, menuIndex,
 146                     NSMinY(rect), NSMinX(rect), NSMaxY(rect), NSMaxX(rect)); // AWT_THREADING Safe (AWTRunLoopMode)
 147 
 148 JNF_COCOA_EXIT(env);
 149 }
 150 
 151 
 152 // Called from event handler callback
 153 - (void)handleJavaMouseEvent:(NSEvent *)event
 154 {
 155     NSInteger kind = [event type];
 156     jint javaKind = 0;




  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 #import "ScreenMenu.h"
  27 
  28 #import "com_apple_laf_ScreenMenu.h"
  29 #import "java_awt_Event.h"
  30 #import "java_awt_event_KeyEvent.h"
  31 #import "java_awt_event_InputEvent.h"
  32 #import "java_awt_event_MouseEvent.h"
  33 
  34 #import <JavaNativeFoundation/JavaNativeFoundation.h>
  35 #import <JavaRuntimeSupport/JavaRuntimeSupport.h>
  36 
  37 #import "ThreadUtilities.h"
  38 #import "CMenuBar.h"
  39 
  40 /* Use THIS_FILE when it is available. */
  41 #ifndef THIS_FILE
  42     #define THIS_FILE __FILE__     
  43 #endif 
  44  
  45 static JNF_CLASS_CACHE(sjc_ScreenMenu, "com/apple/laf/ScreenMenu");
  46 
  47 static jint ns2awtModifiers(NSUInteger keyMods) {
  48     jint result = 0;
  49     if (keyMods & NSShiftKeyMask)        result |= java_awt_Event_SHIFT_MASK;
  50     if (keyMods & NSControlKeyMask)        result |= java_awt_Event_CTRL_MASK;
  51     if (keyMods & NSAlternateKeyMask)    result |= java_awt_Event_ALT_MASK;
  52     if (keyMods & NSCommandKeyMask)        result |= java_awt_Event_META_MASK;
  53     return result;
  54 }
  55 
  56 static jint ns2awtMouseButton(NSInteger mouseButton) {
  57     switch (mouseButton) {
  58         case 1: return java_awt_event_InputEvent_BUTTON1_MASK;
  59         case 2: return java_awt_event_InputEvent_BUTTON2_MASK;
  60         case 3: return java_awt_event_InputEvent_BUTTON3_MASK;
  61     }
  62     return 0;
  63 }


  84 @synthesize javaObjectWrapper;
  85 
  86 - (id)initFromMenu:(NSMenu *)aMenu javaObj:(JNFJObjectWrapper *)obj
  87 {
  88     self = [super init];
  89     if (self) {
  90         self.nsmenu = aMenu;
  91         self.javaObjectWrapper = obj;
  92     }
  93     return self;
  94 }
  95 
  96 - (NSMenu *)menu {
  97     return self.nsmenu;
  98 }
  99 
 100 - (void)menuWillOpen:(NSMenu *)menu
 101 {
 102     if (self.javaObjectWrapper == nil) {
 103 #ifdef DEBUG
 104         NSLog(@"_javaObject is NULL: (%s - %s : %d)", THIS_FILE, __FUNCTION__, __LINE__);
 105 #endif
 106         return;
 107     }
 108 
 109     JNIEnv *env = [ThreadUtilities getJNIEnv];
 110 JNF_COCOA_ENTER(env);
 111     //NSLog(@"menuWillOpen %@", [menu title]);
 112     static JNF_MEMBER_CACHE(jm_ScreenMenu_invokeOpenLater, sjc_ScreenMenu, "invokeOpenLater", "()V");
 113     JNFCallVoidMethod(env, [self.javaObjectWrapper jObject], jm_ScreenMenu_invokeOpenLater); // AWT_THREADING Safe (AWTRunLoopMode)
 114 JNF_COCOA_EXIT(env);
 115 
 116 }
 117 
 118 - (void)menuDidClose:(NSMenu *)menu
 119 {
 120     if (self.javaObjectWrapper == nil) {
 121 #ifdef DEBUG
 122         NSLog(@"_javaObject is NULL: (%s - %s : %d)", THIS_FILE, __FUNCTION__, __LINE__);
 123 #endif
 124         return;
 125     }
 126 
 127     JNIEnv *env = [ThreadUtilities getJNIEnv];
 128 JNF_COCOA_ENTER(env);
 129     //NSLog(@"menuDidClose %@", [menu title]);
 130     static JNF_MEMBER_CACHE(jm_ScreenMenu_invokeMenuClosing, sjc_ScreenMenu, "invokeMenuClosing", "()V");
 131     JNFCallVoidMethod(env, [self.javaObjectWrapper jObject], jm_ScreenMenu_invokeMenuClosing); // AWT_THREADING Safe (AWTRunLoopMode)
 132 JNF_COCOA_EXIT(env);
 133 }
 134 
 135 
 136 - (void)handleJavaMenuItemTargetedAtIndex:(NSUInteger)menuIndex rect:(NSRect)rect
 137 {
 138     if (self.javaObjectWrapper == nil) {
 139 #ifdef DEBUG
 140         NSLog(@"_javaObject is NULL: (%s - %s : %d)", THIS_FILE, __FUNCTION__, __LINE__);
 141 #endif
 142         return;
 143     }
 144 
 145     JNIEnv *env = [ThreadUtilities getJNIEnv];
 146 JNF_COCOA_ENTER(env);
 147     // Send that to Java so we can test which item was hit.
 148     static JNF_MEMBER_CACHE(jm_ScreenMenu_updateSelectedItem, sjc_ScreenMenu, "handleItemTargeted", "(IIIII)V");
 149     JNFCallVoidMethod(env, [self.javaObjectWrapper jObject], jm_ScreenMenu_updateSelectedItem, menuIndex,
 150                     NSMinY(rect), NSMinX(rect), NSMaxY(rect), NSMaxX(rect)); // AWT_THREADING Safe (AWTRunLoopMode)
 151 
 152 JNF_COCOA_EXIT(env);
 153 }
 154 
 155 
 156 // Called from event handler callback
 157 - (void)handleJavaMouseEvent:(NSEvent *)event
 158 {
 159     NSInteger kind = [event type];
 160     jint javaKind = 0;