JBR-4111 [JBR17] Make possible to select files and directories independently

Implemented apple.awt.fileDialogForFiles property
This commit is contained in:
Alexey Ushakov
2021-12-03 16:20:36 +01:00
committed by jbrbot
parent 0c569f6046
commit cfe791bef4
3 changed files with 16 additions and 5 deletions

View File

@@ -74,6 +74,9 @@ class CFileDialog implements FileDialogPeer {
@SuppressWarnings("removal")
boolean chooseDirectories = AccessController.doPrivileged(
new GetBooleanAction("apple.awt.fileDialogForDirectories"));
@SuppressWarnings("removal")
boolean chooseFiles = AccessController.doPrivileged(
new GetBooleanAction("apple.awt.fileDialogForFiles"));
int dialogMode = target.getMode();
String title = target.getTitle();
@@ -86,6 +89,7 @@ class CFileDialog implements FileDialogPeer {
target.isMultipleMode(),
navigateApps,
chooseDirectories,
chooseFiles,
target.getFilenameFilter() != null,
target.getDirectory(),
target.getFile());
@@ -179,8 +183,8 @@ class CFileDialog implements FileDialogPeer {
private native String[] nativeRunFileDialog(String title, int mode,
boolean multipleMode, boolean shouldNavigateApps,
boolean canChooseDirectories, boolean hasFilenameFilter,
String directory, String file);
boolean canChooseDirectories, boolean canChooseFiles,
boolean hasFilenameFilter, String directory, String file);
@Override
public void setDirectory(String dir) {

View File

@@ -54,6 +54,9 @@
// Can the dialog choose directories ?
BOOL fChooseDirectories;
// Can the dialog choose directories ?
BOOL fChooseFiles;
// Contains the absolute paths of the selected files as URLs
NSArray *fURLs;
}
@@ -68,6 +71,7 @@
multipleMode:(BOOL)inMultipleMode
shouldNavigate:(BOOL)inNavigateApps
canChooseDirectories:(BOOL)inChooseDirectories
canChooseFiles:(BOOL)inChooseFiles
withEnv:(JNIEnv*)env;
// Invoked from the main thread

View File

@@ -46,6 +46,7 @@
multipleMode:(BOOL)inMultipleMode
shouldNavigate:(BOOL)inNavigateApps
canChooseDirectories:(BOOL)inChooseDirectories
canChooseFiles:(BOOL)inChooseFiles
withEnv:(JNIEnv*)env;
{
if (self = [super init]) {
@@ -61,6 +62,7 @@ canChooseDirectories:(BOOL)inChooseDirectories
fMultipleMode = inMultipleMode;
fNavigateApps = inNavigateApps;
fChooseDirectories = inChooseDirectories;
fChooseFiles = inChooseFiles;
fPanelResult = NSCancelButton;
}
@@ -119,7 +121,7 @@ canChooseDirectories:(BOOL)inChooseDirectories
if (fMode == java_awt_FileDialog_LOAD) {
NSOpenPanel *openPanel = (NSOpenPanel *)thePanel;
[openPanel setAllowsMultipleSelection:fMultipleMode];
[openPanel setCanChooseFiles:!fChooseDirectories];
[openPanel setCanChooseFiles:fChooseFiles];
[openPanel setCanChooseDirectories:fChooseDirectories];
[openPanel setCanCreateDirectories:YES];
}
@@ -247,8 +249,8 @@ canChooseDirectories:(BOOL)inChooseDirectories
JNIEXPORT jobjectArray JNICALL
Java_sun_lwawt_macosx_CFileDialog_nativeRunFileDialog
(JNIEnv *env, jobject peer, jstring title, jint mode, jboolean multipleMode,
jboolean navigateApps, jboolean chooseDirectories, jboolean hasFilter,
jstring directory, jstring file)
jboolean navigateApps, jboolean chooseDirectories, jboolean chooseFiles,
jboolean hasFilter, jstring directory, jstring file)
{
jobjectArray returnValue = NULL;
@@ -267,6 +269,7 @@ JNI_COCOA_ENTER(env);
multipleMode:multipleMode
shouldNavigate:navigateApps
canChooseDirectories:chooseDirectories
canChooseFiles:chooseFiles
withEnv:env];
[ThreadUtilities performOnMainThread:@selector(safeSaveOrLoad)