< prev index next >

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

Print this page




 351             NSNumber* nsLastPage = [printingDictionary objectForKey:NSPrintLastPage];
 352             if ([nsLastPage respondsToSelector:@selector(integerValue)])
 353             {
 354                 jLastPage = [nsLastPage integerValue] - 1;
 355             }
 356         }
 357 
 358         JNFCallVoidMethod(env, dstPrinterJob, jm_setPageRange, jFirstPage, jLastPage); // AWT_THREADING Safe (known object)
 359     }
 360 }
 361 
 362 static void javaPrinterJobToNSPrintInfo(JNIEnv* env, jobject srcPrinterJob, jobject srcPageable, NSPrintInfo* dst)
 363 {
 364     AWT_ASSERT_NOT_APPKIT_THREAD;
 365 
 366     static JNF_CLASS_CACHE(jc_Pageable, "java/awt/print/Pageable");
 367     static JNF_MEMBER_CACHE(jm_getCopies, sjc_CPrinterJob, "getCopiesInt", "()I");
 368     static JNF_MEMBER_CACHE(jm_isCollated, sjc_CPrinterJob, "isCollated", "()Z");
 369     static JNF_MEMBER_CACHE(jm_getFromPage, sjc_CPrinterJob, "getFromPageAttrib", "()I");
 370     static JNF_MEMBER_CACHE(jm_getToPage, sjc_CPrinterJob, "getToPageAttrib", "()I");


 371     static JNF_MEMBER_CACHE(jm_getSelectAttrib, sjc_CPrinterJob, "getSelectAttrib", "()I");
 372     static JNF_MEMBER_CACHE(jm_getNumberOfPages, jc_Pageable, "getNumberOfPages", "()I");
 373     static JNF_MEMBER_CACHE(jm_getPageFormat, sjc_CPrinterJob, "getPageFormatFromAttributes", "()Ljava/awt/print/PageFormat;");
 374 
 375     NSMutableDictionary* printingDictionary = [dst dictionary];
 376 
 377     jint copies = JNFCallIntMethod(env, srcPrinterJob, jm_getCopies); // AWT_THREADING Safe (known object)
 378     [printingDictionary setObject:[NSNumber numberWithInteger:copies] forKey:NSPrintCopies];
 379 
 380     jboolean collated = JNFCallBooleanMethod(env, srcPrinterJob, jm_isCollated); // AWT_THREADING Safe (known object)
 381     [printingDictionary setObject:[NSNumber numberWithBool:collated ? YES : NO] forKey:NSPrintMustCollate];
 382     jint jNumPages = JNFCallIntMethod(env, srcPageable, jm_getNumberOfPages); // AWT_THREADING Safe (!appKit)
 383     if (jNumPages != java_awt_print_Pageable_UNKNOWN_NUMBER_OF_PAGES)
 384     {
 385         jint selectID = JNFCallIntMethod(env, srcPrinterJob, jm_getSelectAttrib);


 386         if (selectID ==0) {
 387             [printingDictionary setObject:[NSNumber numberWithBool:YES] forKey:NSPrintAllPages];
 388         } else if (selectID == 2) {
 389             // In Mac 10.7,  Print ALL is deselected if PrintSelection is YES whether
 390             // NSPrintAllPages is YES or NO
 391             [printingDictionary setObject:[NSNumber numberWithBool:NO] forKey:NSPrintAllPages];
 392             [printingDictionary setObject:[NSNumber numberWithBool:YES] forKey:NSPrintSelectionOnly];
 393         } else {






 394             [printingDictionary setObject:[NSNumber numberWithBool:NO] forKey:NSPrintAllPages];



 395         }
 396 
 397         jint fromPage = JNFCallIntMethod(env, srcPrinterJob, jm_getFromPage);
 398         jint toPage = JNFCallIntMethod(env, srcPrinterJob, jm_getToPage);
 399         // setting fromPage and toPage will not be shown in the dialog if printing All pages
 400         [printingDictionary setObject:[NSNumber numberWithInteger:fromPage] forKey:NSPrintFirstPage];
 401         [printingDictionary setObject:[NSNumber numberWithInteger:toPage] forKey:NSPrintLastPage];
 402     }
 403     else
 404     {
 405         [printingDictionary setObject:[NSNumber numberWithBool:YES] forKey:NSPrintAllPages];
 406     }
 407     jobject page = JNFCallObjectMethod(env, srcPrinterJob, jm_getPageFormat); 
 408     if (page != NULL) {
 409         javaPageFormatToNSPrintInfo(env, NULL, page, dst);
 410     }
 411 }
 412 
 413 /*
 414  * Class:     sun_lwawt_macosx_CPrinterJob
 415  * Method:    abortDoc
 416  * Signature: ()V
 417  */
 418 JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPrinterJob_abortDoc
 419   (JNIEnv *env, jobject jthis)
 420 {
 421 JNF_COCOA_ENTER(env);
 422     // This is only called during the printLoop from the printLoop thread
 423     NSPrintOperation* printLoop = [NSPrintOperation currentOperation];
 424     NSPrintInfo* printInfo = [printLoop printInfo];
 425     [printInfo setJobDisposition:NSPrintCancelJob];
 426 JNF_COCOA_EXIT(env);




 351             NSNumber* nsLastPage = [printingDictionary objectForKey:NSPrintLastPage];
 352             if ([nsLastPage respondsToSelector:@selector(integerValue)])
 353             {
 354                 jLastPage = [nsLastPage integerValue] - 1;
 355             }
 356         }
 357 
 358         JNFCallVoidMethod(env, dstPrinterJob, jm_setPageRange, jFirstPage, jLastPage); // AWT_THREADING Safe (known object)
 359     }
 360 }
 361 
 362 static void javaPrinterJobToNSPrintInfo(JNIEnv* env, jobject srcPrinterJob, jobject srcPageable, NSPrintInfo* dst)
 363 {
 364     AWT_ASSERT_NOT_APPKIT_THREAD;
 365 
 366     static JNF_CLASS_CACHE(jc_Pageable, "java/awt/print/Pageable");
 367     static JNF_MEMBER_CACHE(jm_getCopies, sjc_CPrinterJob, "getCopiesInt", "()I");
 368     static JNF_MEMBER_CACHE(jm_isCollated, sjc_CPrinterJob, "isCollated", "()Z");
 369     static JNF_MEMBER_CACHE(jm_getFromPage, sjc_CPrinterJob, "getFromPageAttrib", "()I");
 370     static JNF_MEMBER_CACHE(jm_getToPage, sjc_CPrinterJob, "getToPageAttrib", "()I");
 371     static JNF_MEMBER_CACHE(jm_getMinPage, sjc_CPrinterJob, "getMinPageAttrib", "()I");
 372     static JNF_MEMBER_CACHE(jm_getMaxPage, sjc_CPrinterJob, "getMaxPageAttrib", "()I");
 373     static JNF_MEMBER_CACHE(jm_getSelectAttrib, sjc_CPrinterJob, "getSelectAttrib", "()I");
 374     static JNF_MEMBER_CACHE(jm_getNumberOfPages, jc_Pageable, "getNumberOfPages", "()I");
 375     static JNF_MEMBER_CACHE(jm_getPageFormat, sjc_CPrinterJob, "getPageFormatFromAttributes", "()Ljava/awt/print/PageFormat;");
 376 
 377     NSMutableDictionary* printingDictionary = [dst dictionary];
 378 
 379     jint copies = JNFCallIntMethod(env, srcPrinterJob, jm_getCopies); // AWT_THREADING Safe (known object)
 380     [printingDictionary setObject:[NSNumber numberWithInteger:copies] forKey:NSPrintCopies];
 381 
 382     jboolean collated = JNFCallBooleanMethod(env, srcPrinterJob, jm_isCollated); // AWT_THREADING Safe (known object)
 383     [printingDictionary setObject:[NSNumber numberWithBool:collated ? YES : NO] forKey:NSPrintMustCollate];



 384     jint selectID = JNFCallIntMethod(env, srcPrinterJob, jm_getSelectAttrib);
 385     jint fromPage = JNFCallIntMethod(env, srcPrinterJob, jm_getFromPage);
 386     jint toPage = JNFCallIntMethod(env, srcPrinterJob, jm_getToPage);
 387     if (selectID ==0) {
 388         [printingDictionary setObject:[NSNumber numberWithBool:YES] forKey:NSPrintAllPages];
 389     } else if (selectID == 2) {
 390         // In Mac 10.7,  Print ALL is deselected if PrintSelection is YES whether
 391         // NSPrintAllPages is YES or NO
 392         [printingDictionary setObject:[NSNumber numberWithBool:NO] forKey:NSPrintAllPages];
 393         [printingDictionary setObject:[NSNumber numberWithBool:YES] forKey:NSPrintSelectionOnly];
 394     } else {
 395         jint minPage = JNFCallIntMethod(env, srcPrinterJob, jm_getMinPage);
 396         jint maxPage = JNFCallIntMethod(env, srcPrinterJob, jm_getMaxPage);
 397 
 398         // for PD_SELECTION or PD_NOSELECTION, check from/to page
 399         // to determine which radio button to select
 400         if (fromPage > minPage || toPage < maxPage) {
 401             [printingDictionary setObject:[NSNumber numberWithBool:NO] forKey:NSPrintAllPages];
 402         } else {
 403             [printingDictionary setObject:[NSNumber numberWithBool:YES] forKey:NSPrintAllPages];
 404         }
 405     }
 406 


 407     // setting fromPage and toPage will not be shown in the dialog if printing All pages
 408     [printingDictionary setObject:[NSNumber numberWithInteger:fromPage] forKey:NSPrintFirstPage];
 409     [printingDictionary setObject:[NSNumber numberWithInteger:toPage] forKey:NSPrintLastPage];
 410 




 411     jobject page = JNFCallObjectMethod(env, srcPrinterJob, jm_getPageFormat); 
 412     if (page != NULL) {
 413         javaPageFormatToNSPrintInfo(env, NULL, page, dst);
 414     }
 415 }
 416 
 417 /*
 418  * Class:     sun_lwawt_macosx_CPrinterJob
 419  * Method:    abortDoc
 420  * Signature: ()V
 421  */
 422 JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPrinterJob_abortDoc
 423   (JNIEnv *env, jobject jthis)
 424 {
 425 JNF_COCOA_ENTER(env);
 426     // This is only called during the printLoop from the printLoop thread
 427     NSPrintOperation* printLoop = [NSPrintOperation currentOperation];
 428     NSPrintInfo* printInfo = [printLoop printInfo];
 429     [printInfo setJobDisposition:NSPrintCancelJob];
 430 JNF_COCOA_EXIT(env);


< prev index next >