7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
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 <Cocoa/Cocoa.h>
27 #import <JavaNativeFoundation/JavaNativeFoundation.h>
28
29 #import "AWTWindow.h"
30 #import "AWTView.h"
31 #import "CPopupMenu.h"
32 #import "ThreadUtilities.h"
33 #import "LWCToolkit.h"
34 #import "GeomUtilities.h"
35
36 @implementation CPopupMenu
37
38 - (id) initWithPeer:(jobject)peer {
39 self = [super initWithPeer:peer];
40 if (self == nil) {
41 // TODO: not implemented
42 }
43 return self;
44 }
45
46 - (NSString *)description {
47 return [NSString stringWithFormat:@"CMenuItem[ %@ ]", fMenuItem];
48 }
49
50 @end // implementationCPopupMenu : CMenu
51
52
53 /*
54 * Class: sun_lwawt_macosx_CPopupMenu
55 * Method: nativeCreatePopupMenu
56 * Signature: (JII)J
57 */
58 JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CPopupMenu_nativeCreatePopupMenu
59 (JNIEnv *env, jobject peer) {
60
61 __block CPopupMenu *aCPopupMenu = nil;
62
63 JNF_COCOA_ENTER(env);
64
65 jobject cPeerObjGlobal = JNFNewGlobalRef(env, peer);
66
67 [ThreadUtilities performOnMainThreadWaiting:YES block:^(){
68 aCPopupMenu = [[CPopupMenu alloc] initWithPeer:cPeerObjGlobal];
69 }];
70
71 JNF_COCOA_EXIT(env);
72
73 return ptr_to_jlong(aCPopupMenu);
74 }
75
76 JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPopupMenu_nativeShowPopupMenu
77 (JNIEnv *env, jobject peer, jlong menuPtr, jint x, jint y) {
78
79 JNF_COCOA_ENTER(env);
80
81 CPopupMenu* cPopupMenu = (CPopupMenu*)jlong_to_ptr(menuPtr);
82
83 [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
84 NSPoint loc = ConvertNSScreenPoint(env, NSMakePoint(x, y));
85
86 [[cPopupMenu menu] popUpMenuPositioningItem: nil
87 atLocation: loc
88 inView: nil];
89 }];
90
91 JNF_COCOA_EXIT(env);
92
93 }
94
|
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
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 <Cocoa/Cocoa.h>
27
28 #import "AWTWindow.h"
29 #import "AWTView.h"
30 #import "CPopupMenu.h"
31 #import "ThreadUtilities.h"
32 #import "LWCToolkit.h"
33 #import "GeomUtilities.h"
34
35 @implementation CPopupMenu
36
37 - (id) initWithPeer:(jobject)peer {
38 self = [super initWithPeer:peer];
39 if (self == nil) {
40 // TODO: not implemented
41 }
42 return self;
43 }
44
45 - (NSString *)description {
46 return [NSString stringWithFormat:@"CMenuItem[ %@ ]", fMenuItem];
47 }
48
49 @end // implementationCPopupMenu : CMenu
50
51
52 /*
53 * Class: sun_lwawt_macosx_CPopupMenu
54 * Method: nativeCreatePopupMenu
55 * Signature: (JII)J
56 */
57 JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CPopupMenu_nativeCreatePopupMenu
58 (JNIEnv *env, jobject peer) {
59
60 __block CPopupMenu *aCPopupMenu = nil;
61
62 JNI_COCOA_ENTER(env);
63
64 jobject cPeerObjGlobal = (*env)->NewGlobalRef(env, peer);
65
66 [ThreadUtilities performOnMainThreadWaiting:YES block:^(){
67 aCPopupMenu = [[CPopupMenu alloc] initWithPeer:cPeerObjGlobal];
68 }];
69
70 JNI_COCOA_EXIT(env);
71
72 return ptr_to_jlong(aCPopupMenu);
73 }
74
75 JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPopupMenu_nativeShowPopupMenu
76 (JNIEnv *env, jobject peer, jlong menuPtr, jint x, jint y) {
77
78 JNI_COCOA_ENTER(env);
79
80 CPopupMenu* cPopupMenu = (CPopupMenu*)jlong_to_ptr(menuPtr);
81
82 [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
83 NSPoint loc = ConvertNSScreenPoint(env, NSMakePoint(x, y));
84
85 [[cPopupMenu menu] popUpMenuPositioningItem: nil
86 atLocation: loc
87 inView: nil];
88 }];
89
90 JNI_COCOA_EXIT(env);
91
92 }
93
|