< prev index next >

src/java.desktop/macosx/native/libawt_lwawt/awt/CWrapper.m

Print this page
rev 54096 : 8259651: [macOS] Replace JNF_COCOA_ENTER/EXIT macros
rev 54098 : 8260616: Removing remaining JNF dependencies in the java.desktop module
8259729: Missed JNFInstanceOf -> IsInstanceOf conversion


   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 }
< prev index next >