@@ -30,7 +30,7 @@ public class SaveAsDialog
3030 * @param title Title
3131 * @param file Suggested file, may be <code>null</code>
3232 * @param filters Filters, may be <code>null</code>
33- * @return
33+ * @return
3434 */
3535 public File promptForFile (final Window window , final String title , final File file , final ExtensionFilter [] filters )
3636 {
@@ -62,35 +62,38 @@ private File doPromptForFile(final Window window, final String title, File file,
6262 File initial_directory ;
6363 final FileChooser dialog = new FileChooser ();
6464 dialog .setTitle (title );
65-
65+
6666 if (!Preferences .default_save_path .isEmpty ()){
6767 initial_directory = new File (Preferences .default_save_path );
6868 dialog .setInitialDirectory (initial_directory );
6969 }
70-
70+
7171 if (file != null )
7272 {
7373 // Dialog will fail if the directory does not exist
74- if (file .exists ())
75- {
76-
77- if (file .isDirectory ())
78- {
79- dialog .setInitialDirectory (file );
80- }
81- else if (null != file .getParentFile () && file .getParentFile ().exists ())
82- {
74+ if (file .exists ())
75+ {
76+ if (file .isDirectory ())
77+ {
78+ dialog .setInitialDirectory (file );
79+ }
80+ else if (null != file .getParentFile () && file .getParentFile ().exists ())
81+ {
8382 dialog .setInitialDirectory (file .getParentFile ());
8483 dialog .setInitialFileName (file .getName ());
85-
86- }
87- }
88-
84+ }
85+ }
86+ // Even if the file does not exist, you could still use the existing parent folder
87+ else if (null != file .getParentFile () && file .getParentFile ().exists ())
88+ {
89+ dialog .setInitialDirectory (file .getParentFile ());
90+ }
91+
8992 }
90-
93+
9194 if (filters != null )
9295 dialog .getExtensionFilters ().addAll (filters );
93-
96+
9497 return doExecuteDialog (window , dialog );
9598 }
9699
0 commit comments