* JFX FileChooser experiments

This commit is contained in:
Reinhard Pointner 2014-07-29 09:50:57 +00:00
parent acc6c74f9d
commit fb3560a16b
1 changed files with 22 additions and 8 deletions

View File

@ -26,9 +26,9 @@ public class UserFiles {
} }
public static List<File> showLoadDialogSelectFiles(boolean folderMode, boolean multiSelection, File defaultFile, ExtensionFileFilter filter, String title, Object parent) { public static List<File> showLoadDialogSelectFiles(boolean folderMode, boolean multiSelection, File defaultFile, ExtensionFileFilter filter, String title, Object parent) {
List<File> files = defaultFileChooser.showLoadDialogSelectFiles(folderMode, multiSelection, getFileChooserDefaultFile(KEY_OPEN, defaultFile), filter, title, parent); List<File> files = defaultFileChooser.showLoadDialogSelectFiles(folderMode, multiSelection, getFileChooserDefaultFile(folderMode ? KEY_OPEN_FOLDER : KEY_OPEN_FILE, defaultFile), filter, title, parent);
if (files.size() > 0) { if (files.size() > 0) {
setFileChooserDefaultFile(KEY_OPEN, files.get(0)); setFileChooserDefaultFile(folderMode ? KEY_OPEN_FOLDER : KEY_OPEN_FILE, files.get(0));
} }
return files; return files;
} }
@ -46,9 +46,10 @@ public class UserFiles {
return folder.size() > 0 ? folder.get(0) : null; return folder.size() > 0 ? folder.get(0) : null;
} }
private static final String PREF_KEY_PREFIX = "file.dialog."; private static final String PREF_KEY_PREFIX = "dialog.";
private static final String KEY_OPEN = "open"; private static final String KEY_OPEN_FILE = "open.file";
private static final String KEY_SAVE = "save"; private static final String KEY_OPEN_FOLDER = "open.folder";
private static final String KEY_SAVE = "save.file";
protected static File getFileChooserDefaultFile(String name, File userValue) { protected static File getFileChooserDefaultFile(String name, File userValue) {
if (userValue != null && userValue.getParentFile() != null) if (userValue != null && userValue.getParentFile() != null)
@ -160,6 +161,22 @@ public class UserFiles {
@Override @Override
public List<File> call() throws Exception { public List<File> call() throws Exception {
// show DirectoryChooser
if (folderMode) {
javafx.stage.DirectoryChooser directoryChooser = new javafx.stage.DirectoryChooser();
directoryChooser.setTitle(title);
if (defaultFile != null) {
directoryChooser.setInitialDirectory(defaultFile);
}
File file = directoryChooser.showDialog(null);
if (file != null)
return singletonList(file);
else
return emptyList();
}
// show FileChooser
javafx.stage.FileChooser fileChooser = new javafx.stage.FileChooser(); javafx.stage.FileChooser fileChooser = new javafx.stage.FileChooser();
fileChooser.setTitle(title); fileChooser.setTitle(title);
if (filter != null) { if (filter != null) {
@ -169,7 +186,6 @@ public class UserFiles {
} }
fileChooser.getExtensionFilters().add(new javafx.stage.FileChooser.ExtensionFilter(filter.toString(), globFilter)); fileChooser.getExtensionFilters().add(new javafx.stage.FileChooser.ExtensionFilter(filter.toString(), globFilter));
} }
if (defaultFile != null) { if (defaultFile != null) {
if (defaultFile.getParentFile() != null) { if (defaultFile.getParentFile() != null) {
fileChooser.setInitialDirectory(defaultFile.getParentFile()); fileChooser.setInitialDirectory(defaultFile.getParentFile());
@ -188,7 +204,6 @@ public class UserFiles {
} }
return emptyList(); return emptyList();
} }
}); });
} }
@ -210,7 +225,6 @@ public class UserFiles {
return fileChooser.showSaveDialog(null); return fileChooser.showSaveDialog(null);
} }
}); });
} }