mirror of
https://github.com/JetBrains/JetBrainsRuntime.git
synced 2025-12-06 09:29:38 +01:00
JBR-4111 [JBR17] Make possible to select files and directories independently
Implemented apple.awt.fileDialogForFiles property
(cherry picked from commit 67ea24d06e)
This commit is contained in:
@@ -68,6 +68,7 @@ class CFileDialog implements FileDialogPeer {
|
||||
try {
|
||||
boolean navigateApps = !Boolean.getBoolean("apple.awt.use-file-dialog-packages");
|
||||
boolean chooseDirectories = Boolean.getBoolean("apple.awt.fileDialogForDirectories");
|
||||
boolean chooseFiles = Boolean.getBoolean("apple.awt.fileDialogForFiles");
|
||||
|
||||
int dialogMode = target.getMode();
|
||||
String title = target.getTitle();
|
||||
@@ -80,6 +81,7 @@ class CFileDialog implements FileDialogPeer {
|
||||
target.isMultipleMode(),
|
||||
navigateApps,
|
||||
chooseDirectories,
|
||||
chooseFiles,
|
||||
target.getFilenameFilter() != null,
|
||||
target.getDirectory(),
|
||||
target.getFile());
|
||||
@@ -173,8 +175,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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user