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 9e915e8716d53ccf1ebf35b2e8cd2871653fe51b Author: Andrus Adamchik <[email protected]> AuthorDate: Sun May 24 09:28:46 2026 -0400 CAY-2948 Modeler: use native FileDialog on Mac refactoring FileChooser --- .../org/apache/cayenne/modeler/Application.java | 10 ++-- .../cayenne/modeler/platform/UIInitializer.java | 10 ++-- ...FileChooserFactory.java => MacFileChooser.java} | 69 ++++++++++------------ .../modeler/platform/mac/MacUIInitializer.java | 17 +++++- ...{FileChooserFactory.java => CMFileChooser.java} | 21 +++---- ...ooserFactory.java => CMFileChooserFactory.java} | 22 ++----- ...leChooserFactory.java => SwingFileChooser.java} | 46 ++++++++------- .../modeler/ui/action/ImportDataMapAction.java | 2 +- .../modeler/ui/action/ImportEOModelAction.java | 2 +- .../cayenne/modeler/ui/action/ProjectOpener.java | 11 +--- .../modeler/ui/dbgen/DBGeneratorOptionsDialog.java | 2 +- .../modeler/ui/dbmerge/MergerOptionsDialog.java | 2 +- .../preferences/classpath/ClasspathPrefsPanel.java | 5 +- .../editor/datamap/cgen/CgenConfigPanel.java | 2 +- 14 files changed, 106 insertions(+), 115 deletions(-) diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java index d7542a0d6..0498d786b 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java @@ -31,7 +31,8 @@ import org.apache.cayenne.di.Injector; import org.apache.cayenne.modeler.pref.dbconnector.DBConnectors; import org.apache.cayenne.modeler.log.ModelerLogFactory; import org.apache.cayenne.modeler.platform.UIInitializer; -import org.apache.cayenne.modeler.toolkit.filechooser.FileChooserFactory; +import org.apache.cayenne.modeler.toolkit.filechooser.CMFileChooser; +import org.apache.cayenne.modeler.toolkit.filechooser.CMFileChooserFactory; import org.apache.cayenne.modeler.pref.adapters.ClasspathPrefs; import org.apache.cayenne.modeler.pref.adapters.DBConnectorsPrefs; import org.apache.cayenne.modeler.pref.adapters.GeneralPrefs; @@ -55,6 +56,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.swing.*; +import java.awt.Component; import java.io.File; import java.util.List; import java.util.stream.Collectors; @@ -89,7 +91,7 @@ public class Application { private final Injector injector; private final UIInitializer platformInit; - private final FileChooserFactory fileChooserFactory; + private final CMFileChooserFactory fileChooserFactory; private final ModelerClassLoader classLoader; private final PrefsLocator prefsLocator; private final PrefsManager prefsManager; @@ -142,8 +144,8 @@ public class Application { return injector.getInstance(UpgradeService.class); } - public FileChooserFactory getFileChooserFactory() { - return fileChooserFactory; + public CMFileChooser getFileChooser(Component parent, String title) { + return fileChooserFactory.create(parent, title); } public ConfigurationNodeParentGetter getConfigurationNodeParentGetter() { diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/UIInitializer.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/UIInitializer.java index cc299d637..dcfabd949 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/UIInitializer.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/UIInitializer.java @@ -19,8 +19,8 @@ package org.apache.cayenne.modeler.platform; import org.apache.cayenne.modeler.Application; -import org.apache.cayenne.modeler.toolkit.filechooser.FileChooserFactory; -import org.apache.cayenne.modeler.toolkit.filechooser.JFileChooserFactory; +import org.apache.cayenne.modeler.toolkit.filechooser.CMFileChooserFactory; +import org.apache.cayenne.modeler.toolkit.filechooser.SwingFileChooser; /** * A base callback for platform-specific Modeler initialization. @@ -42,10 +42,10 @@ public interface UIInitializer { } /** - * Returns the platform-appropriate {@link FileChooserFactory}. Defaults to Swing's + * Returns the platform-appropriate {@link CMFileChooserFactory}. Defaults to Swing's * {@code JFileChooser}; overridden on macOS to use the native {@code FileDialog}. */ - default FileChooserFactory fileChooserFactory() { - return new JFileChooserFactory(); + default CMFileChooserFactory fileChooserFactory() { + return SwingFileChooser::new; } } diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/mac/MacFileChooserFactory.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/mac/MacFileChooser.java similarity index 56% rename from modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/mac/MacFileChooserFactory.java rename to modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/mac/MacFileChooser.java index 956efcc24..4913f1a1f 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/mac/MacFileChooserFactory.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/mac/MacFileChooser.java @@ -20,62 +20,65 @@ package org.apache.cayenne.modeler.platform.mac; import org.apache.cayenne.modeler.pref.adapters.FileChooserPrefs; -import org.apache.cayenne.modeler.toolkit.filechooser.FileChooserFactory; +import org.apache.cayenne.modeler.toolkit.filechooser.CMFileChooser; -import javax.swing.SwingUtilities; import javax.swing.filechooser.FileFilter; -import java.awt.Component; import java.awt.FileDialog; import java.awt.Frame; -import java.awt.Window; import java.io.File; import java.io.FilenameFilter; import java.util.function.Consumer; /** - * {@link FileChooserFactory} implementation backed by the native OS {@link FileDialog}. + * {@link CMFileChooser} implementation backed by the native OS {@link FileDialog}. * On macOS this delegates to NSOpenPanel / NSSavePanel, providing Quick Look preview, * Spotlight search, and the standard Finder sidebar. */ -public class MacFileChooserFactory implements FileChooserFactory { +public class MacFileChooser implements CMFileChooser { private static final String DIRS_DIALOG_PROPERTY = "apple.awt.fileDialogForDirectories"; + private final Frame parent; + private final String title; + + public MacFileChooser(Frame parent, String title) { + this.parent = parent; + this.title = title; + } + @Override - public File openFile(Component parent, String title, File initialDir, FileFilter filter) { - return showOpen(toFrame(parent), title, toFilenameFilter(filter), + public File openFile(File initialDir, FileFilter filter) { + return showOpen(toFilenameFilter(filter), fd -> { if (initialDir != null) fd.setDirectory(initialDir.getAbsolutePath()); }); } @Override - public File openFile(Component parent, String title, FileChooserPrefs prefs, FileFilter filter) { - return showOpen(toFrame(parent), title, toFilenameFilter(filter), prefs::bind); + public File openFile(FileChooserPrefs prefs, FileFilter filter) { + return showOpen(toFilenameFilter(filter), prefs::bind); } @Override - public File saveFile(Component parent, String title, FileChooserPrefs prefs, String defaultName) { - return showSave(toFrame(parent), title, prefs::bind, defaultName); + public File openDir(File initialDir) { + return showOpenDir(fd -> { if (initialDir != null) fd.setDirectory(initialDir.getAbsolutePath()); }); } @Override - public File openDir(Component parent, String title, File initialDir) { - return showOpenDir(toFrame(parent), title, - fd -> { if (initialDir != null) fd.setDirectory(initialDir.getAbsolutePath()); }); + public File openDir(FileChooserPrefs prefs) { + return showOpenDir(prefs::bind); } @Override - public File openDir(Component parent, String title, FileChooserPrefs prefs) { - return showOpenDir(toFrame(parent), title, prefs::bind); + public File saveFile(FileChooserPrefs prefs, String defaultName) { + return showSave(prefs::bind, defaultName); } @Override - public File saveDir(Component parent, String title, File initialDir) { - return showOpenDir(toFrame(parent), title, - fd -> { if (initialDir != null) fd.setDirectory(initialDir.getAbsolutePath()); }); + public File saveDir(File initialDir) { + return showOpenDir(fd -> { if (initialDir != null) fd.setDirectory(initialDir.getAbsolutePath()); }); } - private File showOpen(Frame frame, String title, FilenameFilter fnFilter, Consumer<FileDialog> init) { - FileDialog fd = new FileDialog(frame, title != null ? title : "", FileDialog.LOAD); + private File showOpen(FilenameFilter fnFilter, Consumer<FileDialog> init) { + FileDialog fd = new FileDialog(parent, title != null ? title : "", FileDialog.LOAD); init.accept(fd); if (fnFilter != null) { fd.setFilenameFilter(fnFilter); @@ -85,8 +88,8 @@ public class MacFileChooserFactory implements FileChooserFactory { return file != null ? new File(fd.getDirectory(), file) : null; } - private File showSave(Frame frame, String title, Consumer<FileDialog> init, String defaultName) { - FileDialog fd = new FileDialog(frame, title != null ? title : "", FileDialog.SAVE); + private File showSave(Consumer<FileDialog> init, String defaultName) { + FileDialog fd = new FileDialog(parent, title != null ? title : "", FileDialog.SAVE); init.accept(fd); if (defaultName != null) { fd.setFile(defaultName); @@ -96,12 +99,15 @@ public class MacFileChooserFactory implements FileChooserFactory { return file != null ? new File(fd.getDirectory(), file) : null; } - private File showOpenDir(Frame frame, String title, Consumer<FileDialog> init) { + private File showOpenDir(Consumer<FileDialog> init) { // Toggle the property only for the duration of this modal dialog. // FileDialog is EDT-blocking, so no other dialog can run concurrently. System.setProperty(DIRS_DIALOG_PROPERTY, "true"); try { - FileDialog fd = new FileDialog(frame, title != null ? title : "", FileDialog.LOAD); + + // FileDialog.LOAD results in the "Save" button being called "Load". This is unfortunate, but the + // alternative allows the user to override the file name + FileDialog fd = new FileDialog(parent, title != null ? title : "", FileDialog.LOAD); init.accept(fd); fd.setVisible(true); String file = fd.getFile(); @@ -115,15 +121,4 @@ public class MacFileChooserFactory implements FileChooserFactory { private static FilenameFilter toFilenameFilter(FileFilter filter) { return filter != null ? (dir, name) -> filter.accept(new File(dir, name)) : null; } - - private static Frame toFrame(Component c) { - Window w = SwingUtilities.getWindowAncestor(c); - while (w != null) { - if (w instanceof Frame f) { - return f; - } - w = w.getOwner(); - } - return null; - } } diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/mac/MacUIInitializer.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/mac/MacUIInitializer.java index b48796f10..47dcb2631 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/mac/MacUIInitializer.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/mac/MacUIInitializer.java @@ -21,7 +21,7 @@ package org.apache.cayenne.modeler.platform.mac; import org.apache.cayenne.modeler.Application; import org.apache.cayenne.modeler.service.action.GlobalActions; import org.apache.cayenne.modeler.platform.UIInitializer; -import org.apache.cayenne.modeler.toolkit.filechooser.FileChooserFactory; +import org.apache.cayenne.modeler.toolkit.filechooser.CMFileChooserFactory; import org.apache.cayenne.modeler.ui.action.AboutAction; import org.apache.cayenne.modeler.ui.action.ConfigurePreferencesAction; import org.apache.cayenne.modeler.ui.action.ExitAction; @@ -92,8 +92,19 @@ public class MacUIInitializer implements UIInitializer { } @Override - public FileChooserFactory fileChooserFactory() { - return new MacFileChooserFactory(); + public CMFileChooserFactory fileChooserFactory() { + return (parent, title) -> new MacFileChooser(toFrame(parent), title); + } + + private static Frame toFrame(Component c) { + Window w = SwingUtilities.getWindowAncestor(c); + while (w != null) { + if (w instanceof Frame f) { + return f; + } + w = w.getOwner(); + } + return null; } @Override diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/filechooser/FileChooserFactory.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/filechooser/CMFileChooser.java similarity index 62% copy from modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/filechooser/FileChooserFactory.java copy to modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/filechooser/CMFileChooser.java index a0e20b8d5..4ca8db8cd 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/filechooser/FileChooserFactory.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/filechooser/CMFileChooser.java @@ -22,24 +22,25 @@ package org.apache.cayenne.modeler.toolkit.filechooser; import org.apache.cayenne.modeler.pref.adapters.FileChooserPrefs; import javax.swing.filechooser.FileFilter; -import java.awt.Component; import java.io.File; /** - * Platform-specific factory for file and directory chooser dialogs. Implementations may use either a native OS dialog - * or Swing's JFileChooser. + * A file/directory chooser dialog bound to a specific parent component and title. + * Obtained via {@code application.getFileChooser(parent, title)}. + * + * @see CMFileChooserFactory */ -public interface FileChooserFactory { +public interface CMFileChooser { - File openFile(Component parent, String title, File initialDir, FileFilter filter); + File openFile(File initialDir, FileFilter filter); - File openFile(Component parent, String title, FileChooserPrefs prefs, FileFilter filter); + File openFile(FileChooserPrefs prefs, FileFilter filter); - File openDir(Component parent, String title, File initialDir); + File openDir(File initialDir); - File openDir(Component parent, String title, FileChooserPrefs prefs); + File openDir(FileChooserPrefs prefs); - File saveFile(Component parent, String title, FileChooserPrefs prefs, String defaultName); + File saveFile(FileChooserPrefs prefs, String defaultName); - File saveDir(Component parent, String title, File initialDir); + File saveDir(File initialDir); } diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/filechooser/FileChooserFactory.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/filechooser/CMFileChooserFactory.java similarity index 56% rename from modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/filechooser/FileChooserFactory.java rename to modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/filechooser/CMFileChooserFactory.java index a0e20b8d5..0b2af3f69 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/filechooser/FileChooserFactory.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/filechooser/CMFileChooserFactory.java @@ -19,27 +19,13 @@ package org.apache.cayenne.modeler.toolkit.filechooser; -import org.apache.cayenne.modeler.pref.adapters.FileChooserPrefs; - -import javax.swing.filechooser.FileFilter; import java.awt.Component; -import java.io.File; /** - * Platform-specific factory for file and directory chooser dialogs. Implementations may use either a native OS dialog - * or Swing's JFileChooser. + * Platform-specific factory for {@link CMFileChooser} instances. */ -public interface FileChooserFactory { - - File openFile(Component parent, String title, File initialDir, FileFilter filter); - - File openFile(Component parent, String title, FileChooserPrefs prefs, FileFilter filter); - - File openDir(Component parent, String title, File initialDir); - - File openDir(Component parent, String title, FileChooserPrefs prefs); - - File saveFile(Component parent, String title, FileChooserPrefs prefs, String defaultName); +@FunctionalInterface +public interface CMFileChooserFactory { - File saveDir(Component parent, String title, File initialDir); + CMFileChooser create(Component parent, String title); } diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/filechooser/JFileChooserFactory.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/filechooser/SwingFileChooser.java similarity index 65% rename from modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/filechooser/JFileChooserFactory.java rename to modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/filechooser/SwingFileChooser.java index e20b6d618..6aa0890ea 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/filechooser/JFileChooserFactory.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/filechooser/SwingFileChooser.java @@ -28,47 +28,49 @@ import java.io.File; import java.util.function.Consumer; /** - * {@link FileChooserFactory} implementation backed by Swing's {@link JFileChooser}. + * {@link CMFileChooser} implementation backed by Swing's {@link JFileChooser}. */ -public class JFileChooserFactory implements FileChooserFactory { +public class SwingFileChooser implements CMFileChooser { + + private final Component parent; + private final String title; + + public SwingFileChooser(Component parent, String title) { + this.parent = parent; + this.title = title; + } @Override - public File openFile(Component parent, String title, File initialDir, FileFilter filter) { + public File openFile(File initialDir, FileFilter filter) { return showOpen( - parent, - title, JFileChooser.FILES_ONLY, - c -> { - if (initialDir != null) c.setCurrentDirectory(initialDir); - }, + c -> { if (initialDir != null) c.setCurrentDirectory(initialDir); }, filter); } @Override - public File openFile(Component parent, String title, FileChooserPrefs prefs, FileFilter filter) { - return showOpen(parent, title, JFileChooser.FILES_ONLY, prefs::bind, filter); + public File openFile(FileChooserPrefs prefs, FileFilter filter) { + return showOpen(JFileChooser.FILES_ONLY, prefs::bind, filter); } @Override - public File saveFile(Component parent, String title, FileChooserPrefs prefs, String defaultName) { - return showSave(parent, title, prefs::bind, defaultName); + public File openDir(File initialDir) { + return showOpen(JFileChooser.DIRECTORIES_ONLY, + c -> { if (initialDir != null) c.setCurrentDirectory(initialDir); }, null); } @Override - public File openDir(Component parent, String title, File initialDir) { - return showOpen(parent, title, JFileChooser.DIRECTORIES_ONLY, - c -> { - if (initialDir != null) c.setCurrentDirectory(initialDir); - }, null); + public File openDir(FileChooserPrefs prefs) { + return showOpen(JFileChooser.DIRECTORIES_ONLY, prefs::bind, null); } @Override - public File openDir(Component parent, String title, FileChooserPrefs prefs) { - return showOpen(parent, title, JFileChooser.DIRECTORIES_ONLY, prefs::bind, null); + public File saveFile(FileChooserPrefs prefs, String defaultName) { + return showSave(prefs::bind, defaultName); } @Override - public File saveDir(Component parent, String title, File initialDir) { + public File saveDir(File initialDir) { JFileChooser chooser = new JFileChooser(); chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); if (initialDir != null) { @@ -82,7 +84,7 @@ public class JFileChooserFactory implements FileChooserFactory { : null; } - private File showOpen(Component parent, String title, int mode, Consumer<JFileChooser> init, FileFilter filter) { + private File showOpen(int mode, Consumer<JFileChooser> init, FileFilter filter) { JFileChooser chooser = new JFileChooser(); chooser.setFileSelectionMode(mode); init.accept(chooser); @@ -98,7 +100,7 @@ public class JFileChooserFactory implements FileChooserFactory { : null; } - private File showSave(Component parent, String title, Consumer<JFileChooser> init, String defaultName) { + private File showSave(Consumer<JFileChooser> init, String defaultName) { JFileChooser chooser = new JFileChooser(); init.accept(chooser); if (title != null) { diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ImportDataMapAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ImportDataMapAction.java index 0fa29e972..4e6b27c49 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ImportDataMapAction.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ImportDataMapAction.java @@ -99,6 +99,6 @@ public class ImportDataMapAction extends AppAction { protected File selectDataMap(Frame f) { FileChooserPrefs prefs = new FileChooserPrefs(app.getPrefsManager().uiNode("importDataMap/lastDir")); - return app.getFileChooserFactory().openFile(f, "Select DataMap", prefs, FileFilters.getDataMapFilter()); + return app.getFileChooser(f, "Select DataMap").openFile(prefs, FileFilters.getDataMapFilter()); } } diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ImportEOModelAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ImportEOModelAction.java index 356fc9db7..0e5501553 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ImportEOModelAction.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ImportEOModelAction.java @@ -124,7 +124,7 @@ public class ImportEOModelAction extends AppAction { */ protected void importEOModel() { FileChooserPrefs prefs = new FileChooserPrefs(app.getPrefsManager().uiNode("importEOModel/lastDir")); - File selected = app.getFileChooserFactory().openFile(app.getFrame(), "Select EOModel", prefs, eomodelFilter); + File selected = app.getFileChooser(app.getFrame(), "Select EOModel").openFile(prefs, eomodelFilter); if (selected == null) { return; } diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ProjectOpener.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ProjectOpener.java index 08944b23e..a79c6d89b 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ProjectOpener.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ProjectOpener.java @@ -24,7 +24,6 @@ import org.apache.cayenne.configuration.DataChannelDescriptor; import org.apache.cayenne.modeler.Application; import org.apache.cayenne.modeler.pref.adapters.RecentProjectsPrefs; import org.apache.cayenne.modeler.ui.project.overwrite.OverwriteDialog; -import org.apache.cayenne.modeler.toolkit.filechooser.FileChooserFactory; import org.apache.cayenne.modeler.toolkit.filechooser.FileFilters; import org.apache.cayenne.project.Project; import org.slf4j.Logger; @@ -55,11 +54,10 @@ class ProjectOpener { } nameProject.append(".xml"); - FileChooserFactory factory = application.getFileChooserFactory(); File startDir = getDefaultStartDir(application); while (true) { - File selectedDir = factory.saveDir(application.getFrame(), "Select Project Directory", startDir); + File selectedDir = application.getFileChooser(application.getFrame(), "Select Project Directory").saveDir(startDir); if (selectedDir == null) { LOGGER.info("Save canceled."); return null; @@ -86,11 +84,8 @@ class ProjectOpener { * Runs a dialog to open a Cayenne project. */ public File openProjectFile(Application application) { - return application.getFileChooserFactory().openFile( - application.getFrame(), - "Select Project File", - getDefaultStartDir(application), - FileFilters.getApplicationFilter()); + return application.getFileChooser(application.getFrame(), "Select Project File") + .openFile(getDefaultStartDir(application), FileFilters.getApplicationFilter()); } private File getDefaultStartDir(Application application) { diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbgen/DBGeneratorOptionsDialog.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbgen/DBGeneratorOptionsDialog.java index b9915e21e..9e375e572 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbgen/DBGeneratorOptionsDialog.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbgen/DBGeneratorOptionsDialog.java @@ -351,7 +351,7 @@ public class DBGeneratorOptionsDialog extends ProjectDialog { private void storeSQLAction() { FileChooserPrefs prefs = new FileChooserPrefs(app.getPrefsManager().uiNode("dbgen/lastSqlDir")); - File file = app.getFileChooserFactory().saveFile(this, "Save SQL Script", prefs, null); + File file = app.getFileChooser(this, "Save SQL Script").saveFile(prefs, null); if (file != null) { refreshGeneratorAction(); try (FileWriter fw = new FileWriter(file); PrintWriter pw = new PrintWriter(fw)) { diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbmerge/MergerOptionsDialog.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbmerge/MergerOptionsDialog.java index 6b7d75858..233a4d577 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbmerge/MergerOptionsDialog.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbmerge/MergerOptionsDialog.java @@ -359,7 +359,7 @@ public class MergerOptionsDialog extends ProjectDialog { private void storeSQLAction() { FileChooserPrefs prefs = new FileChooserPrefs(app.getPrefsManager().uiNode("merger/lastSqlDir")); - File file = app.getFileChooserFactory().saveFile(this, "Save SQL Script", prefs, null); + File file = app.getFileChooser(this, "Save SQL Script").saveFile(prefs, null); if (file != null) { refreshSQLAction(); try (FileWriter fw = new FileWriter(file); PrintWriter pw = new PrintWriter(fw)) { diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/preferences/classpath/ClasspathPrefsPanel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/preferences/classpath/ClasspathPrefsPanel.java index c8fac46de..df55e66d6 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/preferences/classpath/ClasspathPrefsPanel.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/preferences/classpath/ClasspathPrefsPanel.java @@ -131,14 +131,13 @@ public class ClasspathPrefsPanel extends AppPanel { private void chooseJarEntry() { FileChooserPrefs prefs = new FileChooserPrefs(app.getPrefsManager().uiNode("classpath/lastDir")); - File selected = app.getFileChooserFactory().openFile( - this, "Select JAR File.", prefs, FileFilters.getExtensionFileFilter("jar", "JAR Files")); + File selected = app.getFileChooser(this, "Select JAR File.").openFile(prefs, FileFilters.getExtensionFileFilter("jar", "JAR Files")); entryAdded(selected); } private void chooseDirEntry() { FileChooserPrefs prefs = new FileChooserPrefs(app.getPrefsManager().uiNode("classpath/lastDir")); - File selected = app.getFileChooserFactory().openDir(this, "Select Java Class Directory.", prefs); + File selected = app.getFileChooser(this, "Select Java Class Directory.").openDir(prefs); entryAdded(selected); } diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/cgen/CgenConfigPanel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/cgen/CgenConfigPanel.java index d1dae0295..bb69492f2 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/cgen/CgenConfigPanel.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/cgen/CgenConfigPanel.java @@ -401,7 +401,7 @@ public class CgenConfigPanel extends ProjectPanel { ? new File(currentDir) : CgenOps.baseDir(session).toFile(); - File selected = app.getFileChooserFactory().openDir(this, "Select Output Folder", initialDir); + File selected = app.getFileChooser(this, "Select Output Folder").openDir(initialDir); if (selected != null) { String path = selected.getAbsolutePath(); outputFolder.setText(path);
