< 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 >