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


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




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


< prev index next >