6 * under the terms of the GNU General Public License version 2 only, as
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 <JavaNativeFoundation/JavaNativeFoundation.h>
27 #import "ThreadUtilities.h"
28 #import "sun_lwawt_macosx_CWrapper_NSWindow.h"
29
30 /*
31 * Class: sun_lwawt_macosx_CWrapper$NSWindow
32 * Method: makeKeyAndOrderFront
33 * Signature: (J)V
34 */
35 JNIEXPORT void JNICALL
36 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_makeKeyAndOrderFront
37 (JNIEnv *env, jclass cls, jlong windowPtr)
38 {
39 JNF_COCOA_ENTER(env);
40
41 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
42 [ThreadUtilities performOnMainThread:@selector(makeKeyAndOrderFront:)
43 on:window
44 withObject:nil
45 waitUntilDone:NO];
46
47 JNF_COCOA_EXIT(env);
48 }
49
50 /*
51 * Class: sun_lwawt_macosx_CWrapper$NSWindow
52 * Method: makeKeyWindow
53 * Signature: (J)V
54 */
55 JNIEXPORT void JNICALL
56 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_makeKeyWindow
57 (JNIEnv *env, jclass cls, jlong windowPtr)
58 {
59 JNF_COCOA_ENTER(env);
60
61 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
62 [ThreadUtilities performOnMainThread:@selector(makeKeyWindow)
63 on:window
64 withObject:nil
65 waitUntilDone:NO];
66
67 JNF_COCOA_EXIT(env);
68 }
69
70 /*
71 * Class: sun_lwawt_macosx_CWrapper$NSWindow
72 * Method: makeMainWindow
73 * Signature: (J)V
74 */
75 JNIEXPORT void JNICALL
76 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_makeMainWindow
77 (JNIEnv *env, jclass cls, jlong windowPtr)
78 {
79 JNF_COCOA_ENTER(env);
80
81 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
82 [ThreadUtilities performOnMainThread:@selector(makeMainWindow)
83 on:window
84 withObject:nil
85 waitUntilDone:NO];
86
87 JNF_COCOA_EXIT(env);
88 }
89
90 /*
91 * Class: sun_lwawt_macosx_CWrapper$NSWindow
92 * Method: canBecomeMainWindow
93 * Signature: (J)V
94 */
95 JNIEXPORT jboolean JNICALL
96 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_canBecomeMainWindow
97 (JNIEnv *env, jclass cls, jlong windowPtr)
98 {
99 __block jboolean canBecomeMainWindow = JNI_FALSE;
100
101 JNF_COCOA_ENTER(env);
102
103 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
104 [ThreadUtilities performOnMainThreadWaiting:YES block:^(){
105 canBecomeMainWindow = [window canBecomeMainWindow];
106 }];
107
108 JNF_COCOA_EXIT(env);
109
110 return canBecomeMainWindow;
111 }
112
113 /*
114 * Class: sun_lwawt_macosx_CWrapper$NSWindow
115 * Method: isKeyWindow
116 * Signature: (J)Z
117 */
118 JNIEXPORT jboolean JNICALL
119 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_isKeyWindow
120 (JNIEnv *env, jclass cls, jlong windowPtr)
121 {
122 __block jboolean isKeyWindow = JNI_FALSE;
123
124 JNF_COCOA_ENTER(env);
125
126 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
127 [ThreadUtilities performOnMainThreadWaiting:YES block:^(){
128 isKeyWindow = [window isKeyWindow];
129 }];
130
131 JNF_COCOA_EXIT(env);
132
133 return isKeyWindow;
134 }
135
136 /*
137 * Class: sun_lwawt_macosx_CWrapper$NSWindow
138 * Method: orderFront
139 * Signature: (J)V
140 */
141 JNIEXPORT void JNICALL
142 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_orderFront
143 (JNIEnv *env, jclass cls, jlong windowPtr)
144 {
145 JNF_COCOA_ENTER(env);
146
147 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
148 [ThreadUtilities performOnMainThread:@selector(orderFront:)
149 on:window
150 withObject:window
151 waitUntilDone:NO];
152
153 JNF_COCOA_EXIT(env);
154 }
155
156 /*
157 * Class: sun_lwawt_macosx_CWrapper$NSWindow
158 * Method: orderOut
159 * Signature: (J)V
160 */
161 JNIEXPORT void JNICALL
162 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_orderOut
163 (JNIEnv *env, jclass cls, jlong windowPtr)
164 {
165 JNF_COCOA_ENTER(env);
166
167 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
168 [ThreadUtilities performOnMainThread:@selector(orderOut:)
169 on:window
170 withObject:window
171 waitUntilDone:NO];
172
173 JNF_COCOA_EXIT(env);
174 }
175
176 /*
177 * Class: sun_lwawt_macosx_CWrapper$NSWindow
178 * Method: close
179 * Signature: (J)V
180 */
181 JNIEXPORT void JNICALL
182 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_close
183 (JNIEnv *env, jclass cls, jlong windowPtr)
184 {
185 JNF_COCOA_ENTER(env);
186 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
187 [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
188 [window close];
189 }];
190 JNF_COCOA_EXIT(env);
191 }
192
193 /*
194 * Class: sun_lwawt_macosx_CWrapper$NSWindow
195 * Method: orderFrontRegardless
196 * Signature: (J)V
197 */
198 JNIEXPORT void JNICALL
199 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_orderFrontRegardless
200 (JNIEnv *env, jclass cls, jlong windowPtr)
201 {
202 JNF_COCOA_ENTER(env);
203
204 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
205 [ThreadUtilities performOnMainThread:@selector(orderFrontRegardless)
206 on:window
207 withObject:nil
208 waitUntilDone:NO];
209
210 JNF_COCOA_EXIT(env);
211 }
212
213 /*
214 * Class: sun_lwawt_macosx_CWrapper$NSWindow
215 * Method: orderWindow
216 * Signature: (JIJ)V
217 */
218 JNIEXPORT void JNICALL
219 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_orderWindow
220 (JNIEnv *env, jclass cls, jlong windowPtr, jint order, jlong relativeToPtr)
221 {
222 JNF_COCOA_ENTER(env);
223
224 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
225 NSWindow *relativeTo = (NSWindow *)jlong_to_ptr(relativeToPtr);
226 [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
227 [window orderWindow:(NSWindowOrderingMode)order relativeTo:[relativeTo windowNumber]];
228 }];
229
230 JNF_COCOA_EXIT(env);
231 }
232
233 // Used for CWrapper.NSWindow.setLevel() (and level() which isn't implemented yet)
234 static NSInteger LEVELS[sun_lwawt_macosx_CWrapper_NSWindow_MAX_WINDOW_LEVELS];
235 static void initLevels()
236 {
237 static dispatch_once_t pred;
238
239 dispatch_once(&pred, ^{
240 LEVELS[sun_lwawt_macosx_CWrapper_NSWindow_NSNormalWindowLevel] = NSNormalWindowLevel;
241 LEVELS[sun_lwawt_macosx_CWrapper_NSWindow_NSFloatingWindowLevel] = NSFloatingWindowLevel;
242 LEVELS[sun_lwawt_macosx_CWrapper_NSWindow_NSPopUpMenuWindowLevel] = NSPopUpMenuWindowLevel;
243 });
244 }
245
246 /*
247 * Class: sun_lwawt_macosx_CWrapper$NSWindow
248 * Method: setLevel
249 * Signature: (JI)V
250 */
251 JNIEXPORT void JNICALL
252 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_setLevel
253 (JNIEnv *env, jclass cls, jlong windowPtr, jint level)
254 {
255 JNF_COCOA_ENTER(env);
256
257 if (level >= 0 && level < sun_lwawt_macosx_CWrapper_NSWindow_MAX_WINDOW_LEVELS) {
258 initLevels();
259
260 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
261 [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
262 [window setLevel: LEVELS[level]];
263 }];
264 } else {
265 [JNFException raise:env as:kIllegalArgumentException reason:"unknown level"];
266 }
267
268 JNF_COCOA_EXIT(env);
269 }
270
271 /*
272 * Class: sun_lwawt_macosx_CWrapper$NSWindow
273 * Method: addChildWindow
274 * Signature: (JJI)V
275 */
276 JNIEXPORT void JNICALL
277 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_addChildWindow
278 (JNIEnv *env, jclass cls, jlong parentPtr, jlong childPtr, jint order)
279 {
280 JNF_COCOA_ENTER(env);
281
282 NSWindow *parent = (NSWindow *)jlong_to_ptr(parentPtr);
283 NSWindow *child = (NSWindow *)jlong_to_ptr(childPtr);
284 [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
285 [parent addChildWindow:child ordered:order];
286 }];
287
288 JNF_COCOA_EXIT(env);
289 }
290
291 /*
292 * Class: sun_lwawt_macosx_CWrapper$NSWindow
293 * Method: removeChildWindow
294 * Signature: (JJ)V
295 */
296 JNIEXPORT void JNICALL
297 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_removeChildWindow
298 (JNIEnv *env, jclass cls, jlong parentPtr, jlong childPtr)
299 {
300 JNF_COCOA_ENTER(env);
301
302 NSWindow *parent = (NSWindow *)jlong_to_ptr(parentPtr);
303 NSWindow *child = (NSWindow *)jlong_to_ptr(childPtr);
304 [ThreadUtilities performOnMainThread:@selector(removeChildWindow:)
305 on:parent
306 withObject:child
307 waitUntilDone:NO];
308
309 JNF_COCOA_EXIT(env);
310 }
311
312 /*
313 * Class: sun_lwawt_macosx_CWrapper$NSWindow
314 * Method: setAlphaValue
315 * Signature: (JF)V
316 */
317 JNIEXPORT void JNICALL
318 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_setAlphaValue
319 (JNIEnv *env, jclass cls, jlong windowPtr, jfloat alpha)
320 {
321 JNF_COCOA_ENTER(env);
322
323 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
324 [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
325 [window setAlphaValue:(CGFloat)alpha];
326 }];
327
328 JNF_COCOA_EXIT(env);
329 }
330
331 /*
332 * Class: sun_lwawt_macosx_CWrapper$NSWindow
333 * Method: setOpaque
334 * Signature: (Z)V
335 */
336 JNIEXPORT void JNICALL
337 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_setOpaque
338 (JNIEnv *env, jclass cls, jlong windowPtr, jboolean opaque)
339 {
340 JNF_COCOA_ENTER(env);
341
342 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
343 [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
344 [window setOpaque:(BOOL)opaque];
345 }];
346
347 JNF_COCOA_EXIT(env);
348 }
349
350 /*
351 * Class: sun_lwawt_macosx_CWrapper$NSWindow
352 * Method: setBackgroundColor
353 * Signature: (J)V
354 */
355 JNIEXPORT void JNICALL
356 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_setBackgroundColor
357 (JNIEnv *env, jclass cls, jlong windowPtr, jint rgb)
358 {
359 JNF_COCOA_ENTER(env);
360
361 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
362 CGFloat alpha = (((rgb >> 24) & 0xff) / 255.0);
363 CGFloat red = (((rgb >> 16) & 0xff) / 255.0);
364 CGFloat green = (((rgb >> 8) & 0xff) / 255.0);
365 CGFloat blue = (((rgb >> 0) & 0xff) / 255.0);
366 NSColor *color = [NSColor colorWithCalibratedRed:red green:green blue:blue
367 alpha:alpha];
368 [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
369 [window setBackgroundColor:color];
370 }];
371
372 JNF_COCOA_EXIT(env);
373 }
374
375 /*
376 * Class: sun_lwawt_macosx_CWrapper$NSWindow
377 * Method: miniaturize
378 * Signature: (J)V
379 */
380 JNIEXPORT void JNICALL
381 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_miniaturize
382 (JNIEnv *env, jclass cls, jlong windowPtr)
383 {
384 JNF_COCOA_ENTER(env);
385
386 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
387 [ThreadUtilities performOnMainThread:@selector(miniaturize:)
388 on:window
389 withObject:nil
390 waitUntilDone:NO];
391
392 JNF_COCOA_EXIT(env);
393 }
394
395 /*
396 * Class: sun_lwawt_macosx_CWrapper$NSWindow
397 * Method: deminiaturize
398 * Signature: (J)V
399 */
400 JNIEXPORT void JNICALL
401 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_deminiaturize
402 (JNIEnv *env, jclass cls, jlong windowPtr)
403 {
404 JNF_COCOA_ENTER(env);
405
406 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
407 [ThreadUtilities performOnMainThread:@selector(deminiaturize:)
408 on:window
409 withObject:nil
410 waitUntilDone:NO];
411
412 JNF_COCOA_EXIT(env);
413 }
414
415 /*
416 * Class: sun_lwawt_macosx_CWrapper$NSWindow
417 * Method: isZoomed
418 * Signature: (J)Z
419 */
420 JNIEXPORT jboolean JNICALL
421 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_isZoomed
422 (JNIEnv *env, jclass cls, jlong windowPtr)
423 {
424 __block jboolean isZoomed = JNI_FALSE;
425
426 JNF_COCOA_ENTER(env);
427
428 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
429 [ThreadUtilities performOnMainThreadWaiting:YES block:^(){
430 isZoomed = [window isZoomed];
431 }];
432
433 JNF_COCOA_EXIT(env);
434
435 return isZoomed;
436 }
437
438 /*
439 * Class: sun_lwawt_macosx_CWrapper$NSWindow
440 * Method: zoom
441 * Signature: (J)V
442 */
443 JNIEXPORT void JNICALL
444 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_zoom
445 (JNIEnv *env, jclass cls, jlong windowPtr)
446 {
447 JNF_COCOA_ENTER(env);
448
449 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
450 [ThreadUtilities performOnMainThread:@selector(zoom:)
451 on:window
452 withObject:nil
453 waitUntilDone:NO];
454
455 JNF_COCOA_EXIT(env);
456 }
457
458 /*
459 * Class: sun_lwawt_macosx_CWrapper$NSWindow
460 * Method: makeFirstResponder
461 * Signature: (JJ)V
462 */
463 JNIEXPORT void JNICALL
464 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_makeFirstResponder
465 (JNIEnv *env, jclass cls, jlong windowPtr, jlong responderPtr)
466 {
467 JNF_COCOA_ENTER(env);
468
469 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
470 NSResponder *responder = (NSResponder *)jlong_to_ptr(responderPtr);
471 [ThreadUtilities performOnMainThread:@selector(makeFirstResponder:)
472 on:window
473 withObject:responder
474 waitUntilDone:NO];
475
476 JNF_COCOA_EXIT(env);
477 }
478
479 /*
480 * Class: sun_lwawt_macosx_CWrapper$NSView
481 * Method: addSubview
482 * Signature: (JJ)V
483 */
484 JNIEXPORT void JNICALL
485 Java_sun_lwawt_macosx_CWrapper_00024NSView_addSubview
486 (JNIEnv *env, jclass cls, jlong viewPtr, jlong subviewPtr)
487 {
488 JNF_COCOA_ENTER(env);
489
490 NSView *view = (NSView *)jlong_to_ptr(viewPtr);
491 NSView *subview = (NSView *)jlong_to_ptr(subviewPtr);
492 [ThreadUtilities performOnMainThreadWaiting:YES block:^(){
493 [view addSubview:subview];
494 }];
495
496 JNF_COCOA_EXIT(env);
497 }
498
499 /*
500 * Class: sun_lwawt_macosx_CWrapper$NSView
501 * Method: removeFromSuperview
502 * Signature: (J)V
503 */
504 JNIEXPORT void JNICALL
505 Java_sun_lwawt_macosx_CWrapper_00024NSView_removeFromSuperview
506 (JNIEnv *env, jclass cls, jlong viewPtr)
507 {
508 JNF_COCOA_ENTER(env);
509
510 NSView *view = (NSView *)jlong_to_ptr(viewPtr);
511 [ThreadUtilities performOnMainThread:@selector(removeFromSuperview)
512 on:view
513 withObject:nil
514 waitUntilDone:NO];
515
516 JNF_COCOA_EXIT(env);
517 }
518
519 /*
520 * Class: sun_lwawt_macosx_CWrapper$NSView
521 * Method: setFrame
522 * Signature: (JIIII)V
523 */
524 JNIEXPORT void JNICALL
525 Java_sun_lwawt_macosx_CWrapper_00024NSView_setFrame
526 (JNIEnv *env, jclass cls, jlong viewPtr, jint x, jint y, jint w, jint h)
527 {
528 JNF_COCOA_ENTER(env);
529
530 NSView *view = (NSView *)jlong_to_ptr(viewPtr);
531 [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
532 [view setFrame:NSMakeRect(x, y, w, h)];
533 }];
534
535 JNF_COCOA_EXIT(env);
536 }
537
538 /*
539 * Class: sun_lwawt_macosx_CWrapper$NSView
540 * Method: window
541 * Signature: (J)J
542 */
543 JNIEXPORT jlong JNICALL
544 Java_sun_lwawt_macosx_CWrapper_00024NSView_window
545 (JNIEnv *env, jclass cls, jlong viewPtr)
546 {
547 __block jlong windowPtr = 0L;
548
549 JNF_COCOA_ENTER(env);
550
551 NSView *view = (NSView *)jlong_to_ptr(viewPtr);
552 [ThreadUtilities performOnMainThreadWaiting:YES block:^(){
553 windowPtr = ptr_to_jlong([view window]);
554 }];
555
556 JNF_COCOA_EXIT(env);
557
558 return windowPtr;
559 }
560
561 /*
562 * Class: sun_lwawt_macosx_CWrapper$NSView
563 * Method: setHidden
564 * Signature: (JZ)V
565 */
566 JNIEXPORT void JNICALL
567 Java_sun_lwawt_macosx_CWrapper_00024NSView_setHidden
568 (JNIEnv *env, jclass cls, jlong viewPtr, jboolean toHide)
569 {
570 JNF_COCOA_ENTER(env);
571
572 NSView *view = (NSView *)jlong_to_ptr(viewPtr);
573 [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
574 [view setHidden:(BOOL)toHide];
575 }];
576
577 JNF_COCOA_EXIT(env);
578 }
579
580 /*
581 * Class: sun_lwawt_macosx_CWrapper$NSView
582 * Method: setToolTip
583 * Signature: (JLjava/lang/String;)V
584 */
585 JNIEXPORT void JNICALL
586 Java_sun_lwawt_macosx_CWrapper_00024NSView_setToolTip
587 (JNIEnv *env, jclass cls, jlong viewPtr, jstring msg)
588 {
589
590 JNF_COCOA_ENTER(env);
591
592 NSView *view = (NSView *)jlong_to_ptr(viewPtr);
593 NSString* s = JNFJavaToNSString(env, msg);
594 [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
595 [view setToolTip: s];
596 }];
597
598 JNF_COCOA_EXIT(env);
599 }
|
6 * under the terms of the GNU General Public License version 2 only, as
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 "JNIUtilities.h"
27
28 #import "ThreadUtilities.h"
29 #import "sun_lwawt_macosx_CWrapper_NSWindow.h"
30
31 /*
32 * Class: sun_lwawt_macosx_CWrapper$NSWindow
33 * Method: makeKeyAndOrderFront
34 * Signature: (J)V
35 */
36 JNIEXPORT void JNICALL
37 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_makeKeyAndOrderFront
38 (JNIEnv *env, jclass cls, jlong windowPtr)
39 {
40 JNI_COCOA_ENTER(env);
41
42 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
43 [ThreadUtilities performOnMainThread:@selector(makeKeyAndOrderFront:)
44 on:window
45 withObject:nil
46 waitUntilDone:NO];
47
48 JNI_COCOA_EXIT(env);
49 }
50
51 /*
52 * Class: sun_lwawt_macosx_CWrapper$NSWindow
53 * Method: makeKeyWindow
54 * Signature: (J)V
55 */
56 JNIEXPORT void JNICALL
57 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_makeKeyWindow
58 (JNIEnv *env, jclass cls, jlong windowPtr)
59 {
60 JNI_COCOA_ENTER(env);
61
62 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
63 [ThreadUtilities performOnMainThread:@selector(makeKeyWindow)
64 on:window
65 withObject:nil
66 waitUntilDone:NO];
67
68 JNI_COCOA_EXIT(env);
69 }
70
71 /*
72 * Class: sun_lwawt_macosx_CWrapper$NSWindow
73 * Method: makeMainWindow
74 * Signature: (J)V
75 */
76 JNIEXPORT void JNICALL
77 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_makeMainWindow
78 (JNIEnv *env, jclass cls, jlong windowPtr)
79 {
80 JNI_COCOA_ENTER(env);
81
82 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
83 [ThreadUtilities performOnMainThread:@selector(makeMainWindow)
84 on:window
85 withObject:nil
86 waitUntilDone:NO];
87
88 JNI_COCOA_EXIT(env);
89 }
90
91 /*
92 * Class: sun_lwawt_macosx_CWrapper$NSWindow
93 * Method: canBecomeMainWindow
94 * Signature: (J)V
95 */
96 JNIEXPORT jboolean JNICALL
97 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_canBecomeMainWindow
98 (JNIEnv *env, jclass cls, jlong windowPtr)
99 {
100 __block jboolean canBecomeMainWindow = JNI_FALSE;
101
102 JNI_COCOA_ENTER(env);
103
104 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
105 [ThreadUtilities performOnMainThreadWaiting:YES block:^(){
106 canBecomeMainWindow = [window canBecomeMainWindow];
107 }];
108
109 JNI_COCOA_EXIT(env);
110
111 return canBecomeMainWindow;
112 }
113
114 /*
115 * Class: sun_lwawt_macosx_CWrapper$NSWindow
116 * Method: isKeyWindow
117 * Signature: (J)Z
118 */
119 JNIEXPORT jboolean JNICALL
120 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_isKeyWindow
121 (JNIEnv *env, jclass cls, jlong windowPtr)
122 {
123 __block jboolean isKeyWindow = JNI_FALSE;
124
125 JNI_COCOA_ENTER(env);
126
127 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
128 [ThreadUtilities performOnMainThreadWaiting:YES block:^(){
129 isKeyWindow = [window isKeyWindow];
130 }];
131
132 JNI_COCOA_EXIT(env);
133
134 return isKeyWindow;
135 }
136
137 /*
138 * Class: sun_lwawt_macosx_CWrapper$NSWindow
139 * Method: orderFront
140 * Signature: (J)V
141 */
142 JNIEXPORT void JNICALL
143 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_orderFront
144 (JNIEnv *env, jclass cls, jlong windowPtr)
145 {
146 JNI_COCOA_ENTER(env);
147
148 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
149 [ThreadUtilities performOnMainThread:@selector(orderFront:)
150 on:window
151 withObject:window
152 waitUntilDone:NO];
153
154 JNI_COCOA_EXIT(env);
155 }
156
157 /*
158 * Class: sun_lwawt_macosx_CWrapper$NSWindow
159 * Method: orderOut
160 * Signature: (J)V
161 */
162 JNIEXPORT void JNICALL
163 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_orderOut
164 (JNIEnv *env, jclass cls, jlong windowPtr)
165 {
166 JNI_COCOA_ENTER(env);
167
168 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
169 [ThreadUtilities performOnMainThread:@selector(orderOut:)
170 on:window
171 withObject:window
172 waitUntilDone:NO];
173
174 JNI_COCOA_EXIT(env);
175 }
176
177 /*
178 * Class: sun_lwawt_macosx_CWrapper$NSWindow
179 * Method: close
180 * Signature: (J)V
181 */
182 JNIEXPORT void JNICALL
183 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_close
184 (JNIEnv *env, jclass cls, jlong windowPtr)
185 {
186 JNI_COCOA_ENTER(env);
187 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
188 [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
189 [window close];
190 }];
191 JNI_COCOA_EXIT(env);
192 }
193
194 /*
195 * Class: sun_lwawt_macosx_CWrapper$NSWindow
196 * Method: orderFrontRegardless
197 * Signature: (J)V
198 */
199 JNIEXPORT void JNICALL
200 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_orderFrontRegardless
201 (JNIEnv *env, jclass cls, jlong windowPtr)
202 {
203 JNI_COCOA_ENTER(env);
204
205 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
206 [ThreadUtilities performOnMainThread:@selector(orderFrontRegardless)
207 on:window
208 withObject:nil
209 waitUntilDone:NO];
210
211 JNI_COCOA_EXIT(env);
212 }
213
214 /*
215 * Class: sun_lwawt_macosx_CWrapper$NSWindow
216 * Method: orderWindow
217 * Signature: (JIJ)V
218 */
219 JNIEXPORT void JNICALL
220 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_orderWindow
221 (JNIEnv *env, jclass cls, jlong windowPtr, jint order, jlong relativeToPtr)
222 {
223 JNI_COCOA_ENTER(env);
224
225 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
226 NSWindow *relativeTo = (NSWindow *)jlong_to_ptr(relativeToPtr);
227 [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
228 [window orderWindow:(NSWindowOrderingMode)order relativeTo:[relativeTo windowNumber]];
229 }];
230
231 JNI_COCOA_EXIT(env);
232 }
233
234 // Used for CWrapper.NSWindow.setLevel() (and level() which isn't implemented yet)
235 static NSInteger LEVELS[sun_lwawt_macosx_CWrapper_NSWindow_MAX_WINDOW_LEVELS];
236 static void initLevels()
237 {
238 static dispatch_once_t pred;
239
240 dispatch_once(&pred, ^{
241 LEVELS[sun_lwawt_macosx_CWrapper_NSWindow_NSNormalWindowLevel] = NSNormalWindowLevel;
242 LEVELS[sun_lwawt_macosx_CWrapper_NSWindow_NSFloatingWindowLevel] = NSFloatingWindowLevel;
243 LEVELS[sun_lwawt_macosx_CWrapper_NSWindow_NSPopUpMenuWindowLevel] = NSPopUpMenuWindowLevel;
244 });
245 }
246
247 /*
248 * Class: sun_lwawt_macosx_CWrapper$NSWindow
249 * Method: setLevel
250 * Signature: (JI)V
251 */
252 JNIEXPORT void JNICALL
253 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_setLevel
254 (JNIEnv *env, jclass cls, jlong windowPtr, jint level)
255 {
256 JNI_COCOA_ENTER(env);
257
258 if (level >= 0 && level < sun_lwawt_macosx_CWrapper_NSWindow_MAX_WINDOW_LEVELS) {
259 initLevels();
260
261 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
262 [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
263 [window setLevel: LEVELS[level]];
264 }];
265 } else {
266 JNU_ThrowIllegalArgumentException(env, "unknown level");
267 }
268
269 JNI_COCOA_EXIT(env);
270 }
271
272 /*
273 * Class: sun_lwawt_macosx_CWrapper$NSWindow
274 * Method: addChildWindow
275 * Signature: (JJI)V
276 */
277 JNIEXPORT void JNICALL
278 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_addChildWindow
279 (JNIEnv *env, jclass cls, jlong parentPtr, jlong childPtr, jint order)
280 {
281 JNI_COCOA_ENTER(env);
282
283 NSWindow *parent = (NSWindow *)jlong_to_ptr(parentPtr);
284 NSWindow *child = (NSWindow *)jlong_to_ptr(childPtr);
285 [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
286 [parent addChildWindow:child ordered:order];
287 }];
288
289 JNI_COCOA_EXIT(env);
290 }
291
292 /*
293 * Class: sun_lwawt_macosx_CWrapper$NSWindow
294 * Method: removeChildWindow
295 * Signature: (JJ)V
296 */
297 JNIEXPORT void JNICALL
298 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_removeChildWindow
299 (JNIEnv *env, jclass cls, jlong parentPtr, jlong childPtr)
300 {
301 JNI_COCOA_ENTER(env);
302
303 NSWindow *parent = (NSWindow *)jlong_to_ptr(parentPtr);
304 NSWindow *child = (NSWindow *)jlong_to_ptr(childPtr);
305 [ThreadUtilities performOnMainThread:@selector(removeChildWindow:)
306 on:parent
307 withObject:child
308 waitUntilDone:NO];
309
310 JNI_COCOA_EXIT(env);
311 }
312
313 /*
314 * Class: sun_lwawt_macosx_CWrapper$NSWindow
315 * Method: setAlphaValue
316 * Signature: (JF)V
317 */
318 JNIEXPORT void JNICALL
319 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_setAlphaValue
320 (JNIEnv *env, jclass cls, jlong windowPtr, jfloat alpha)
321 {
322 JNI_COCOA_ENTER(env);
323
324 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
325 [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
326 [window setAlphaValue:(CGFloat)alpha];
327 }];
328
329 JNI_COCOA_EXIT(env);
330 }
331
332 /*
333 * Class: sun_lwawt_macosx_CWrapper$NSWindow
334 * Method: setOpaque
335 * Signature: (Z)V
336 */
337 JNIEXPORT void JNICALL
338 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_setOpaque
339 (JNIEnv *env, jclass cls, jlong windowPtr, jboolean opaque)
340 {
341 JNI_COCOA_ENTER(env);
342
343 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
344 [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
345 [window setOpaque:(BOOL)opaque];
346 }];
347
348 JNI_COCOA_EXIT(env);
349 }
350
351 /*
352 * Class: sun_lwawt_macosx_CWrapper$NSWindow
353 * Method: setBackgroundColor
354 * Signature: (J)V
355 */
356 JNIEXPORT void JNICALL
357 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_setBackgroundColor
358 (JNIEnv *env, jclass cls, jlong windowPtr, jint rgb)
359 {
360 JNI_COCOA_ENTER(env);
361
362 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
363 CGFloat alpha = (((rgb >> 24) & 0xff) / 255.0);
364 CGFloat red = (((rgb >> 16) & 0xff) / 255.0);
365 CGFloat green = (((rgb >> 8) & 0xff) / 255.0);
366 CGFloat blue = (((rgb >> 0) & 0xff) / 255.0);
367 NSColor *color = [NSColor colorWithCalibratedRed:red green:green blue:blue
368 alpha:alpha];
369 [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
370 [window setBackgroundColor:color];
371 }];
372
373 JNI_COCOA_EXIT(env);
374 }
375
376 /*
377 * Class: sun_lwawt_macosx_CWrapper$NSWindow
378 * Method: miniaturize
379 * Signature: (J)V
380 */
381 JNIEXPORT void JNICALL
382 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_miniaturize
383 (JNIEnv *env, jclass cls, jlong windowPtr)
384 {
385 JNI_COCOA_ENTER(env);
386
387 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
388 [ThreadUtilities performOnMainThread:@selector(miniaturize:)
389 on:window
390 withObject:nil
391 waitUntilDone:NO];
392
393 JNI_COCOA_EXIT(env);
394 }
395
396 /*
397 * Class: sun_lwawt_macosx_CWrapper$NSWindow
398 * Method: deminiaturize
399 * Signature: (J)V
400 */
401 JNIEXPORT void JNICALL
402 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_deminiaturize
403 (JNIEnv *env, jclass cls, jlong windowPtr)
404 {
405 JNI_COCOA_ENTER(env);
406
407 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
408 [ThreadUtilities performOnMainThread:@selector(deminiaturize:)
409 on:window
410 withObject:nil
411 waitUntilDone:NO];
412
413 JNI_COCOA_EXIT(env);
414 }
415
416 /*
417 * Class: sun_lwawt_macosx_CWrapper$NSWindow
418 * Method: isZoomed
419 * Signature: (J)Z
420 */
421 JNIEXPORT jboolean JNICALL
422 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_isZoomed
423 (JNIEnv *env, jclass cls, jlong windowPtr)
424 {
425 __block jboolean isZoomed = JNI_FALSE;
426
427 JNI_COCOA_ENTER(env);
428
429 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
430 [ThreadUtilities performOnMainThreadWaiting:YES block:^(){
431 isZoomed = [window isZoomed];
432 }];
433
434 JNI_COCOA_EXIT(env);
435
436 return isZoomed;
437 }
438
439 /*
440 * Class: sun_lwawt_macosx_CWrapper$NSWindow
441 * Method: zoom
442 * Signature: (J)V
443 */
444 JNIEXPORT void JNICALL
445 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_zoom
446 (JNIEnv *env, jclass cls, jlong windowPtr)
447 {
448 JNI_COCOA_ENTER(env);
449
450 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
451 [ThreadUtilities performOnMainThread:@selector(zoom:)
452 on:window
453 withObject:nil
454 waitUntilDone:NO];
455
456 JNI_COCOA_EXIT(env);
457 }
458
459 /*
460 * Class: sun_lwawt_macosx_CWrapper$NSWindow
461 * Method: makeFirstResponder
462 * Signature: (JJ)V
463 */
464 JNIEXPORT void JNICALL
465 Java_sun_lwawt_macosx_CWrapper_00024NSWindow_makeFirstResponder
466 (JNIEnv *env, jclass cls, jlong windowPtr, jlong responderPtr)
467 {
468 JNI_COCOA_ENTER(env);
469
470 NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
471 NSResponder *responder = (NSResponder *)jlong_to_ptr(responderPtr);
472 [ThreadUtilities performOnMainThread:@selector(makeFirstResponder:)
473 on:window
474 withObject:responder
475 waitUntilDone:NO];
476
477 JNI_COCOA_EXIT(env);
478 }
479
480 /*
481 * Class: sun_lwawt_macosx_CWrapper$NSView
482 * Method: addSubview
483 * Signature: (JJ)V
484 */
485 JNIEXPORT void JNICALL
486 Java_sun_lwawt_macosx_CWrapper_00024NSView_addSubview
487 (JNIEnv *env, jclass cls, jlong viewPtr, jlong subviewPtr)
488 {
489 JNI_COCOA_ENTER(env);
490
491 NSView *view = (NSView *)jlong_to_ptr(viewPtr);
492 NSView *subview = (NSView *)jlong_to_ptr(subviewPtr);
493 [ThreadUtilities performOnMainThreadWaiting:YES block:^(){
494 [view addSubview:subview];
495 }];
496
497 JNI_COCOA_EXIT(env);
498 }
499
500 /*
501 * Class: sun_lwawt_macosx_CWrapper$NSView
502 * Method: removeFromSuperview
503 * Signature: (J)V
504 */
505 JNIEXPORT void JNICALL
506 Java_sun_lwawt_macosx_CWrapper_00024NSView_removeFromSuperview
507 (JNIEnv *env, jclass cls, jlong viewPtr)
508 {
509 JNI_COCOA_ENTER(env);
510
511 NSView *view = (NSView *)jlong_to_ptr(viewPtr);
512 [ThreadUtilities performOnMainThread:@selector(removeFromSuperview)
513 on:view
514 withObject:nil
515 waitUntilDone:NO];
516
517 JNI_COCOA_EXIT(env);
518 }
519
520 /*
521 * Class: sun_lwawt_macosx_CWrapper$NSView
522 * Method: setFrame
523 * Signature: (JIIII)V
524 */
525 JNIEXPORT void JNICALL
526 Java_sun_lwawt_macosx_CWrapper_00024NSView_setFrame
527 (JNIEnv *env, jclass cls, jlong viewPtr, jint x, jint y, jint w, jint h)
528 {
529 JNI_COCOA_ENTER(env);
530
531 NSView *view = (NSView *)jlong_to_ptr(viewPtr);
532 [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
533 [view setFrame:NSMakeRect(x, y, w, h)];
534 }];
535
536 JNI_COCOA_EXIT(env);
537 }
538
539 /*
540 * Class: sun_lwawt_macosx_CWrapper$NSView
541 * Method: window
542 * Signature: (J)J
543 */
544 JNIEXPORT jlong JNICALL
545 Java_sun_lwawt_macosx_CWrapper_00024NSView_window
546 (JNIEnv *env, jclass cls, jlong viewPtr)
547 {
548 __block jlong windowPtr = 0L;
549
550 JNI_COCOA_ENTER(env);
551
552 NSView *view = (NSView *)jlong_to_ptr(viewPtr);
553 [ThreadUtilities performOnMainThreadWaiting:YES block:^(){
554 windowPtr = ptr_to_jlong([view window]);
555 }];
556
557 JNI_COCOA_EXIT(env);
558
559 return windowPtr;
560 }
561
562 /*
563 * Class: sun_lwawt_macosx_CWrapper$NSView
564 * Method: setHidden
565 * Signature: (JZ)V
566 */
567 JNIEXPORT void JNICALL
568 Java_sun_lwawt_macosx_CWrapper_00024NSView_setHidden
569 (JNIEnv *env, jclass cls, jlong viewPtr, jboolean toHide)
570 {
571 JNI_COCOA_ENTER(env);
572
573 NSView *view = (NSView *)jlong_to_ptr(viewPtr);
574 [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
575 [view setHidden:(BOOL)toHide];
576 }];
577
578 JNI_COCOA_EXIT(env);
579 }
580
581 /*
582 * Class: sun_lwawt_macosx_CWrapper$NSView
583 * Method: setToolTip
584 * Signature: (JLjava/lang/String;)V
585 */
586 JNIEXPORT void JNICALL
587 Java_sun_lwawt_macosx_CWrapper_00024NSView_setToolTip
588 (JNIEnv *env, jclass cls, jlong viewPtr, jstring msg)
589 {
590
591 JNI_COCOA_ENTER(env);
592
593 NSView *view = (NSView *)jlong_to_ptr(viewPtr);
594 NSString* s = JavaStringToNSString(env, msg);
595 [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
596 [view setToolTip: s];
597 }];
598
599 JNI_COCOA_EXIT(env);
600 }
|