< prev index next >

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

Print this page
rev 54094 : 8257853: Remove dependencies on JNF's JNI utility functions in AWT and 2D code
rev 54096 : 8259651: [macOS] Replace JNF_COCOA_ENTER/EXIT macros
rev 54097 : 8259869: [macOS] Remove desktop module dependencies on JNF Reference APIs
rev 54098 : 8260616: Removing remaining JNF dependencies in the java.desktop module
8259729: Missed JNFInstanceOf -> IsInstanceOf conversion

*** 23,36 **** * questions. */ #import <sys/stat.h> #import <Cocoa/Cocoa.h> - #import <JavaNativeFoundation/JavaNativeFoundation.h> - #import "CFileDialog.h" #import "ThreadUtilities.h" #import "java_awt_FileDialog.h" #import "sun_lwawt_macosx_CFileDialog.h" @implementation CFileDialog --- 23,36 ---- * questions. */ #import <sys/stat.h> #import <Cocoa/Cocoa.h> #import "ThreadUtilities.h" + #import "JNIUtilities.h" + #import "CFileDialog.h" #import "java_awt_FileDialog.h" #import "sun_lwawt_macosx_CFileDialog.h" @implementation CFileDialog
*** 46,56 **** canChooseDirectories:(BOOL)inChooseDirectories withEnv:(JNIEnv*)env; { if (self = [super init]) { fHasFileFilter = inHasFilter; ! fFileDialog = JNFNewGlobalRef(env, inDialog); fDirectory = inPath; [fDirectory retain]; fFile = inFile; [fFile retain]; fTitle = inTitle; --- 46,56 ---- canChooseDirectories:(BOOL)inChooseDirectories withEnv:(JNIEnv*)env; { if (self = [super init]) { fHasFileFilter = inHasFilter; ! fFileDialog = (*env)->NewGlobalRef(env, inDialog); fDirectory = inPath; [fDirectory retain]; fFile = inFile; [fFile retain]; fTitle = inTitle;
*** 66,76 **** } -(void) disposer { if (fFileDialog != NULL) { JNIEnv *env = [ThreadUtilities getJNIEnvUncached]; ! JNFDeleteGlobalRef(env, fFileDialog); fFileDialog = NULL; } } -(void) dealloc { --- 66,76 ---- } -(void) disposer { if (fFileDialog != NULL) { JNIEnv *env = [ThreadUtilities getJNIEnvUncached]; ! (*env)->DeleteGlobalRef(env, fFileDialog); fFileDialog = NULL; } } -(void) dealloc {
*** 140,154 **** [self disposer]; } - (BOOL) askFilenameFilter:(NSString *)filename { JNIEnv *env = [ThreadUtilities getJNIEnv]; ! jstring jString = JNFNormalizedJavaStringForPath(env, filename); ! static JNF_CLASS_CACHE(jc_CFileDialog, "sun/lwawt/macosx/CFileDialog"); ! static JNF_MEMBER_CACHE(jm_queryFF, jc_CFileDialog, "queryFilenameFilter", "(Ljava/lang/String;)Z"); ! BOOL returnValue = JNFCallBooleanMethod(env, fFileDialog, jm_queryFF, jString); // AWT_THREADING Safe (AWTRunLoopMode) (*env)->DeleteLocalRef(env, jString); return returnValue; } --- 140,155 ---- [self disposer]; } - (BOOL) askFilenameFilter:(NSString *)filename { JNIEnv *env = [ThreadUtilities getJNIEnv]; ! jstring jString = NormalizedPathJavaStringFromNSString(env, filename); ! DECLARE_CLASS_RETURN(jc_CFileDialog, "sun/lwawt/macosx/CFileDialog", NO); ! DECLARE_METHOD_RETURN(jm_queryFF, jc_CFileDialog, "queryFilenameFilter", "(Ljava/lang/String;)Z", NO); ! BOOL returnValue = (*env)->CallBooleanMethod(env, fFileDialog, jm_queryFF, jString); ! CHECK_EXCEPTION(); (*env)->DeleteLocalRef(env, jString); return returnValue; }
*** 194,238 **** jboolean navigateApps, jboolean chooseDirectories, jboolean hasFilter, jstring directory, jstring file) { jobjectArray returnValue = NULL; ! JNF_COCOA_ENTER(env); ! NSString *dialogTitle = JNFJavaToNSString(env, title); if ([dialogTitle length] == 0) { dialogTitle = @" "; } CFileDialog *dialogDelegate = [[CFileDialog alloc] initWithFilter:hasFilter fileDialog:peer title:dialogTitle ! directory:JNFJavaToNSString(env, directory) ! file:JNFJavaToNSString(env, file) mode:mode multipleMode:multipleMode shouldNavigate:navigateApps canChooseDirectories:chooseDirectories withEnv:env]; ! [JNFRunLoop performOnMainThread:@selector(safeSaveOrLoad) on:dialogDelegate withObject:nil waitUntilDone:YES]; if ([dialogDelegate userClickedOK]) { NSArray *urls = [dialogDelegate URLs]; jsize count = [urls count]; ! static JNF_CLASS_CACHE(jc_String, "java/lang/String"); ! returnValue = JNFNewObjectArray(env, &jc_String, count); [urls enumerateObjectsUsingBlock:^(id url, NSUInteger index, BOOL *stop) { ! jstring filename = JNFNormalizedJavaStringForPath(env, [url path]); (*env)->SetObjectArrayElement(env, returnValue, index, filename); (*env)->DeleteLocalRef(env, filename); }]; } [dialogDelegate release]; ! JNF_COCOA_EXIT(env); return returnValue; } --- 195,239 ---- jboolean navigateApps, jboolean chooseDirectories, jboolean hasFilter, jstring directory, jstring file) { jobjectArray returnValue = NULL; ! JNI_COCOA_ENTER(env); ! NSString *dialogTitle = JavaStringToNSString(env, title); if ([dialogTitle length] == 0) { dialogTitle = @" "; } CFileDialog *dialogDelegate = [[CFileDialog alloc] initWithFilter:hasFilter fileDialog:peer title:dialogTitle ! directory:JavaStringToNSString(env, directory) ! file:JavaStringToNSString(env, file) mode:mode multipleMode:multipleMode shouldNavigate:navigateApps canChooseDirectories:chooseDirectories withEnv:env]; ! [ThreadUtilities performOnMainThread:@selector(safeSaveOrLoad) on:dialogDelegate withObject:nil waitUntilDone:YES]; if ([dialogDelegate userClickedOK]) { NSArray *urls = [dialogDelegate URLs]; jsize count = [urls count]; ! DECLARE_CLASS_RETURN(jc_String, "java/lang/String", NULL); ! returnValue = (*env)->NewObjectArray(env, count, jc_String, NULL); [urls enumerateObjectsUsingBlock:^(id url, NSUInteger index, BOOL *stop) { ! jstring filename = NormalizedPathJavaStringFromNSString(env, [url path]); (*env)->SetObjectArrayElement(env, returnValue, index, filename); (*env)->DeleteLocalRef(env, filename); }]; } [dialogDelegate release]; ! JNI_COCOA_EXIT(env); return returnValue; }
< prev index next >