Skip to content

Commit e68ab6d

Browse files
committed
#2301 use parent folder when creating a new (non existent file)
1 parent 4737515 commit e68ab6d

File tree

1 file changed

+21
-18
lines changed

1 file changed

+21
-18
lines changed

core/ui/src/main/java/org/phoebus/ui/dialog/SaveAsDialog.java

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)