< prev index next >

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

Print this page




 298     }
 299 
 300     // <rdar://problem/4022422> NSPrinterInfo is not correctly set to the selected printer
 301     // from the Java side of CPrinterJob. Has always assumed the default printer was the one we wanted.
 302     if (srcPrintJob == NULL) return;
 303     jobject printerNameObj = JNFCallObjectMethod(env, srcPrintJob, jm_getPrinterName);
 304     if (printerNameObj == NULL) return;
 305     NSString *printerName = JNFJavaToNSString(env, printerNameObj);
 306     if (printerName == nil) return;
 307     NSPrinter *printer = [NSPrinter printerWithName:printerName];
 308     if (printer == nil) return;
 309     [dstPrintInfo setPrinter:printer];
 310 }
 311 
 312 static void nsPrintInfoToJavaPrinterJob(JNIEnv* env, NSPrintInfo* src, jobject dstPrinterJob, jobject dstPageable)
 313 {
 314     static JNF_MEMBER_CACHE(jm_setService, sjc_CPrinterJob, "setPrinterServiceFromNative", "(Ljava/lang/String;)V");
 315     static JNF_MEMBER_CACHE(jm_setCopiesAttribute, sjc_CPrinterJob, "setCopiesAttribute", "(I)V");
 316     static JNF_MEMBER_CACHE(jm_setCollated, sjc_CPrinterJob, "setCollated", "(Z)V");
 317     static JNF_MEMBER_CACHE(jm_setPageRangeAttribute, sjc_CPrinterJob, "setPageRangeAttribute", "(IIZ)V");








 318 
 319     // get the selected printer's name, and set the appropriate PrintService on the Java side
 320     NSString *name = [[src printer] name];
 321     jstring printerName = JNFNSToJavaString(env, name);
 322     JNFCallVoidMethod(env, dstPrinterJob, jm_setService, printerName);
 323 
 324 
 325     NSMutableDictionary* printingDictionary = [src dictionary];
 326 
 327     NSNumber* nsCopies = [printingDictionary objectForKey:NSPrintCopies];
 328     if ([nsCopies respondsToSelector:@selector(integerValue)])
 329     {
 330         JNFCallVoidMethod(env, dstPrinterJob, jm_setCopiesAttribute, [nsCopies integerValue]); // AWT_THREADING Safe (known object)
 331     }
 332 
 333     NSNumber* nsCollated = [printingDictionary objectForKey:NSPrintMustCollate];
 334     if ([nsCollated respondsToSelector:@selector(boolValue)])
 335     {
 336         JNFCallVoidMethod(env, dstPrinterJob, jm_setCollated, [nsCollated boolValue] ? JNI_TRUE : JNI_FALSE); // AWT_THREADING Safe (known object)
 337     }




 298     }
 299 
 300     // <rdar://problem/4022422> NSPrinterInfo is not correctly set to the selected printer
 301     // from the Java side of CPrinterJob. Has always assumed the default printer was the one we wanted.
 302     if (srcPrintJob == NULL) return;
 303     jobject printerNameObj = JNFCallObjectMethod(env, srcPrintJob, jm_getPrinterName);
 304     if (printerNameObj == NULL) return;
 305     NSString *printerName = JNFJavaToNSString(env, printerNameObj);
 306     if (printerName == nil) return;
 307     NSPrinter *printer = [NSPrinter printerWithName:printerName];
 308     if (printer == nil) return;
 309     [dstPrintInfo setPrinter:printer];
 310 }
 311 
 312 static void nsPrintInfoToJavaPrinterJob(JNIEnv* env, NSPrintInfo* src, jobject dstPrinterJob, jobject dstPageable)
 313 {
 314     static JNF_MEMBER_CACHE(jm_setService, sjc_CPrinterJob, "setPrinterServiceFromNative", "(Ljava/lang/String;)V");
 315     static JNF_MEMBER_CACHE(jm_setCopiesAttribute, sjc_CPrinterJob, "setCopiesAttribute", "(I)V");
 316     static JNF_MEMBER_CACHE(jm_setCollated, sjc_CPrinterJob, "setCollated", "(Z)V");
 317     static JNF_MEMBER_CACHE(jm_setPageRangeAttribute, sjc_CPrinterJob, "setPageRangeAttribute", "(IIZ)V");
 318     static JNF_MEMBER_CACHE(jm_setPrintToFile, sjc_CPrinterJob, "setPrintToFile", "(Z)V");
 319 
 320     NSPrintJobDispositionValue jobDisposition = [src jobDisposition];
 321     if (jobDisposition == NSPrintSaveJob) {
 322         JNFCallVoidMethod(env, dstPrinterJob, jm_setPrintToFile, true);
 323     } else {
 324         JNFCallVoidMethod(env, dstPrinterJob, jm_setPrintToFile, false);
 325     }
 326 
 327     // get the selected printer's name, and set the appropriate PrintService on the Java side
 328     NSString *name = [[src printer] name];
 329     jstring printerName = JNFNSToJavaString(env, name);
 330     JNFCallVoidMethod(env, dstPrinterJob, jm_setService, printerName);
 331 
 332 
 333     NSMutableDictionary* printingDictionary = [src dictionary];
 334 
 335     NSNumber* nsCopies = [printingDictionary objectForKey:NSPrintCopies];
 336     if ([nsCopies respondsToSelector:@selector(integerValue)])
 337     {
 338         JNFCallVoidMethod(env, dstPrinterJob, jm_setCopiesAttribute, [nsCopies integerValue]); // AWT_THREADING Safe (known object)
 339     }
 340 
 341     NSNumber* nsCollated = [printingDictionary objectForKey:NSPrintMustCollate];
 342     if ([nsCollated respondsToSelector:@selector(boolValue)])
 343     {
 344         JNFCallVoidMethod(env, dstPrinterJob, jm_setCollated, [nsCollated boolValue] ? JNI_TRUE : JNI_FALSE); // AWT_THREADING Safe (known object)
 345     }


< prev index next >