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) {

Reply via email to