This is an automated email from the ASF dual-hosted git repository. asf-gitbox-commits pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit 4d2fd3cae74a2170c9fb2cebfb0389664be03188 Author: Andrus Adamchik <[email protected]> AuthorDate: Mon May 25 10:54:15 2026 -0400 CAY-2948 Modeler: use native FileDialog on Mac cleanup of the binding API --- .../cayenne/modeler/platform/mac/MacFileChooser.java | 19 +++++++++++-------- .../modeler/pref/adapters/FileChooserPrefs.java | 5 +---- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/mac/MacFileChooser.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/mac/MacFileChooser.java index f6c16f3e4..3faf7d3ee 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/mac/MacFileChooser.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/mac/MacFileChooser.java @@ -47,15 +47,12 @@ public class MacFileChooser implements CMFileChooser { @Override public File openFile(File initialDir, FileFilter filter) { - return showOpen(toFilenameFilter(filter), - fd -> { - if (initialDir != null) fd.setDirectory(initialDir.getAbsolutePath()); - }); + return showOpen(toFilenameFilter(filter), initialDir, fd -> {}); } @Override public File openFile(FileChooserPrefs prefs, FileFilter filter) { - return showOpen(toFilenameFilter(filter), prefs::bind); + return showOpen(toFilenameFilter(filter), prefs.getDir(), prefs::bind); } @Override @@ -72,7 +69,7 @@ public class MacFileChooser implements CMFileChooser { @Override public File saveFile(FileChooserPrefs prefs, String defaultName) { - return showSave(prefs::bind, defaultName); + return showSave(prefs.getDir(), prefs::bind, defaultName); } @Override @@ -81,8 +78,11 @@ public class MacFileChooser implements CMFileChooser { return SwingFileChooser.showOpenDir(parent, title, initialDir, c -> {}); } - private File showOpen(FilenameFilter fnFilter, Consumer<FileDialog> init) { + private File showOpen(FilenameFilter fnFilter, File startDir, Consumer<FileDialog> init) { FileDialog fd = new FileDialog(parent, title != null ? title : "", FileDialog.LOAD); + if (startDir != null) { + fd.setDirectory(startDir.getAbsolutePath()); + } init.accept(fd); if (fnFilter != null) { fd.setFilenameFilter(fnFilter); @@ -92,8 +92,11 @@ public class MacFileChooser implements CMFileChooser { return file != null ? new File(fd.getDirectory(), file) : null; } - private File showSave(Consumer<FileDialog> init, String defaultName) { + private File showSave(File startDir, Consumer<FileDialog> init, String defaultName) { FileDialog fd = new FileDialog(parent, title != null ? title : "", FileDialog.SAVE); + if (startDir != null) { + fd.setDirectory(startDir.getAbsolutePath()); + } init.accept(fd); if (defaultName != null) { fd.setFile(defaultName); diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/adapters/FileChooserPrefs.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/adapters/FileChooserPrefs.java index 7ed1e143a..0b8f39e03 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/adapters/FileChooserPrefs.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/adapters/FileChooserPrefs.java @@ -47,10 +47,7 @@ public final class FileChooserPrefs extends PrefsAdapter { } public void bind(FileDialog dialog) { - File startDir = getDir(); - if (startDir != null) { - dialog.setDirectory(startDir.getAbsolutePath()); - } + // start directory already set by the caller — just attach the save listener dialog.addComponentListener(new ComponentAdapter() { @Override public void componentHidden(ComponentEvent e) {
