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 ae9a0e9b8549c4e32e3988845059d9dab162a345
Author: Andrus Adamchik <[email protected]>
AuthorDate: Tue May 5 18:08:01 2026 -0400

    Modeler cleanup
    
    unify dialog opening API
---
 .../apache/cayenne/modeler/toolkit/AppDialog.java  | 12 ++++++
 .../ui/action/CreateRelationshipAction.java        |  4 +-
 .../modeler/ui/action/DBConnectionAwareAction.java |  3 +-
 .../modeler/ui/action/GenerateDBAction.java        |  2 +-
 .../cayenne/modeler/ui/action/MigrateAction.java   |  6 +--
 .../cayenne/modeler/ui/action/ValidateAction.java  | 22 +++++-----
 .../autorelationship/InferRelationshipsDialog.java |  8 ----
 .../modeler/ui/datasource/DataSourceDialog.java    | 21 +++------
 .../ui/dbactionoptions/DbActionOptionsDialog.java  |  6 ---
 .../modeler/ui/dbgen/DBGeneratorOptionsDialog.java | 11 +----
 .../modeler/ui/dbmerge/MergerOptionsDialog.java    |  8 ----
 .../ui/dbrelationship/DbRelationshipDialog.java    | 19 +-------
 .../cayenne/modeler/ui/errors/ErrorDialog.java     |  7 +--
 .../modeler/ui/errors/ErrorsController.java        |  2 +-
 .../apache/cayenne/modeler/ui/find/FindDialog.java | 11 -----
 .../preferences/classpath/ClasspathPrefsPanel.java |  2 +-
 .../classpath/maven/MavenDependencyDialog.java     |  3 --
 .../creator/DBConnectorCreatorDialog.java          |  7 +--
 .../duplicator/DBConnectorDuplicatorDialog.java    |  7 +--
 .../templateeditor/TemplateEditorFindDialog.java   |  8 ----
 .../editor/datamap/dbimport/DefaultPopUpMenu.java  |  9 +---
 .../dbimport/ReverseEngineeringTreePanel.java      |  1 -
 .../datamap/defaults/DefaultsUpdateDialog.java     |  8 ----
 .../datamap/main/locking/LockingUpdateDialog.java  |  7 ---
 .../dbentity/properties/DbRelationshipPanel.java   |  2 +-
 .../objentity/attrinfo/ObjAttributeInfoDialog.java |  8 ----
 .../objentity/properties/ObjAttributePanel.java    |  2 +-
 .../objentity/properties/ObjRelationshipPanel.java |  2 +-
 .../relinfo/ObjRelationshipInfoDialog.java         | 10 +----
 .../ui/project/querytype/QueryTypeDialog.java      |  8 ----
 .../project/validator/ProjectValidatorDialog.java  | 50 ++++++----------------
 .../modeler/ui/validation/ValidationDialog.java    |  8 ----
 32 files changed, 65 insertions(+), 219 deletions(-)

diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/AppDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/AppDialog.java
index 5a14ec237..c641aafe0 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/AppDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/AppDialog.java
@@ -90,6 +90,18 @@ public abstract class AppDialog extends JDialog {
         getRootPane().registerKeyboardAction(closeAction, escReleased, 
JComponent.WHEN_IN_FOCUSED_WINDOW);
     }
 
+    /**
+     * Standard dialog launch: pack, set dispose-on-close, center on owner, 
wire ESC, show.
+     * Blocks until the dialog is closed for modal dialogs.
+     */
+    public void open() {
+        pack();
+        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+        centerOnOwner();
+        makeCloseableOnEscape();
+        setVisible(true);
+    }
+
     /**
      * Logs the error and shows a modal error dialog anchored on this dialog.
      */
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateRelationshipAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateRelationshipAction.java
index 41fa83776..7fb3c57b3 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateRelationshipAction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateRelationshipAction.java
@@ -87,7 +87,7 @@ public class CreateRelationshipAction extends 
ModelerAbstractAction {
 
             new ObjRelationshipInfoDialog(getProjectSession(), app.getFrame())
                     .createRelationship(objEnt)
-                    .startupAction();
+                    .open();
 
         } else {
             DbEntity dbEnt = getProjectSession().getSelectedDbEntity();
@@ -95,7 +95,7 @@ public class CreateRelationshipAction extends 
ModelerAbstractAction {
 
                 new DbRelationshipDialog(getProjectSession(), app.getFrame())
                         .createNewRelationship(dbEnt)
-                        .startUp();
+                        .open();
             }
         }
     }
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/DBConnectionAwareAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/DBConnectionAwareAction.java
index 6ce606299..c86f64bc6 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/DBConnectionAwareAction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/DBConnectionAwareAction.java
@@ -55,7 +55,8 @@ public abstract class DBConnectionAwareAction extends 
ModelerAbstractAction {
                 getProjectSession(),
                 app.getFrame(),
                 title);
-        if (!connectWizard.startupAction()) {
+        connectWizard.open();
+        if (connectWizard.isCanceled()) {
             return null;
         }
         return connectWizard;
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/GenerateDBAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/GenerateDBAction.java
index 4b1e4fabc..abf42df34 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/GenerateDBAction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/GenerateDBAction.java
@@ -58,6 +58,6 @@ public class GenerateDBAction extends ModelerAbstractAction {
                 getProjectSession(),
                 app.getFrame(),
                 "Generate DB Schema: Options",
-                dataMaps).startupAction();
+                dataMaps).open();
     }
 }
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/MigrateAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/MigrateAction.java
index 3d0769f26..10f753927 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/MigrateAction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/MigrateAction.java
@@ -82,7 +82,7 @@ public class MigrateAction extends DBConnectionAwareAction {
                 app.getFrame(),
                 "Migrate DB Schema: Options",
                 connectWizard.getConnector(),
-                map, selectedCatalog, selectedSchema, 
mergerTokenFactoryProvider).startupAction();
+                map, selectedCatalog, selectedSchema, 
mergerTokenFactoryProvider).open();
     }
 
     protected DbActionOptionsDialog createDialog(Collection<String> catalogs, 
Collection<String> schemas,
@@ -125,13 +125,13 @@ public class MigrateAction extends 
DBConnectionAwareAction {
             return null;
         }
         DbActionOptionsDialog optionsDialog = getStartDialog(catalogs, 
schemas, currentCatalog, currentSchema);
-        optionsDialog.setVisible(true);
+        optionsDialog.open();
         while ((optionsDialog.getChoice() != DbActionOptionsDialog.CANCEL)) {
             if (optionsDialog.getChoice() == DbActionOptionsDialog.SELECT) {
                 return optionsDialog;
             }
             optionsDialog = createDialog(catalogs, schemas, currentCatalog, 
currentSchema, optionsDialog.getChoice());
-            optionsDialog.setVisible(true);
+            optionsDialog.open();
         }
 
         return null;
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ValidateAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ValidateAction.java
index cbf491821..cd6a315dd 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ValidateAction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ValidateAction.java
@@ -45,6 +45,7 @@ public class ValidateAction extends ModelerAbstractAction {
         super("Validate Project", application);
     }
 
+    @Override
     public KeyStroke getAcceleratorKey() {
         return KeyStroke.getKeyStroke(KeyEvent.VK_V,
                 Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx() | 
InputEvent.SHIFT_DOWN_MASK);
@@ -62,10 +63,11 @@ public class ValidateAction extends ModelerAbstractAction {
 
         if (!validationResult.getFailures().isEmpty()) {
             showFailures(validationResult.getFailures());
-        }
-        else {
-            disposeDialog();
-            ProjectValidatorDialog.showOnSuccess(app);
+        } else {
+            if (dialog != null && dialog.isDisplayable()) {
+                dialog.dispose();
+            }
+            JOptionPane.showMessageDialog(app.getFrame(), "Cayenne project is 
valid.");
         }
     }
 
@@ -76,20 +78,16 @@ public class ValidateAction extends ModelerAbstractAction {
      */
     public void showFailures(List<ValidationFailure> failures) {
         if (dialog == null || !dialog.isDisplayable()) {
-            dialog = new ProjectValidatorDialog(getProjectSession(), 
app.getFrame());
+            dialog = new ProjectValidatorDialog(getProjectSession(), 
app.getFrame(), failures);
             dialog.addWindowListener(new WindowAdapter() {
                 @Override
                 public void windowClosed(WindowEvent e) {
                     dialog = null;
                 }
             });
-        }
-        dialog.showOnFailures(failures);
-    }
-
-    private void disposeDialog() {
-        if (dialog != null && dialog.isDisplayable()) {
-            dialog.dispose();
+            dialog.open();
+        } else {
+            dialog.refresh(failures);
         }
     }
 }
\ No newline at end of file
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/autorelationship/InferRelationshipsDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/autorelationship/InferRelationshipsDialog.java
index 24c0a0c9d..c713af586 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/autorelationship/InferRelationshipsDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/autorelationship/InferRelationshipsDialog.java
@@ -105,14 +105,6 @@ public class InferRelationshipsDialog extends 
ProjectDialog {
         initBindings();
     }
 
-    public void open() {
-        // show dialog even on empty DataMap, as custom generation may still 
take advantage of it
-        pack();
-        centerOnOwner();
-        makeCloseableOnEscape();
-        setVisible(true);
-    }
-
     private void initLayout() {
         getRootPane().setDefaultButton(generateButton);
 
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/datasource/DataSourceDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/datasource/DataSourceDialog.java
index 69bac0173..72885a72b 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/datasource/DataSourceDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/datasource/DataSourceDialog.java
@@ -50,8 +50,8 @@ import java.util.Map;
 
 /**
  * Modal dialog for selecting/editing a saved DB Connector and testing the 
resulting
- * connection. Returns true from {@link #startupAction()} when the user chose 
a working
- * connector and clicked Continue, false on Cancel or test failure.
+ * connection. After {@link #open()} returns, call {@link #isCanceled()} to 
check whether
+ * the user confirmed a working connection or cancelled.
  */
 public class DataSourceDialog extends ProjectDialog {
 
@@ -80,14 +80,7 @@ public class DataSourceDialog extends ProjectDialog {
 
         initLayout();
         initBindings();
-    }
 
-    /**
-     * Pops up the dialog, blocks until closed, returns true if the user 
confirmed
-     * a working connection.
-     */
-    public boolean startupAction() {
-        canceled = true;
         refreshDataSources();
         initFavouriteDataSource();
 
@@ -98,13 +91,11 @@ public class DataSourceDialog extends ProjectDialog {
 
         editor.setConnector(connector);
 
-        pack();
-        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
-        centerOnOwner();
-        makeCloseableOnEscape();
-        setVisible(true);
+        this.canceled = true;
+    }
 
-        return !canceled;
+    public boolean isCanceled() {
+        return canceled;
     }
 
     public DBConnector getConnector() {
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbactionoptions/DbActionOptionsDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbactionoptions/DbActionOptionsDialog.java
index 1a8c3a397..51e2573bb 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbactionoptions/DbActionOptionsDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbactionoptions/DbActionOptionsDialog.java
@@ -27,7 +27,6 @@ import org.apache.cayenne.modeler.toolkit.AppDialog;
 import javax.swing.DefaultComboBoxModel;
 import javax.swing.JButton;
 import javax.swing.JComboBox;
-import javax.swing.JDialog;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 import java.awt.BorderLayout;
@@ -54,14 +53,9 @@ public class DbActionOptionsDialog extends AppDialog {
                                  Collection<String> catalogs, 
Collection<String> schemas,
                                  String currentCatalog, String currentSchema) 
throws HeadlessException {
         super(application, owner, title, ModalityType.APPLICATION_MODAL);
-        makeCloseableOnEscape();
         init();
         initController();
         initFromModel(catalogs, schemas, currentCatalog, currentSchema);
-
-        pack();
-        setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
-        centerOnOwner();
     }
 
     protected void init() {
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 7607ccbb0..c107deb5a 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
@@ -149,14 +149,6 @@ public class DBGeneratorOptionsDialog extends 
ProjectDialog {
         sqlPreview.setText(textForSQL);
     }
 
-    public void startupAction() {
-        pack();
-        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
-        centerOnOwner();
-        makeCloseableOnEscape();
-        setVisible(true);
-    }
-
     private void initLayout() {
         getRootPane().setDefaultButton(generateButton);
 
@@ -320,7 +312,8 @@ public class DBGeneratorOptionsDialog extends ProjectDialog 
{
                 session,
                 app.getFrame(),
                 "Generate DB Schema: Connect to Database");
-        if (!connectWizard.startupAction()) {
+        connectWizard.open();
+        if (connectWizard.isCanceled()) {
             return;
         }
 
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 bfc1a8865..8593087ee 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
@@ -137,14 +137,6 @@ public class MergerOptionsDialog extends ProjectDialog {
         sqlPreview.setText(textForSQL);
     }
 
-    public void startupAction() {
-        pack();
-        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
-        centerOnOwner();
-        makeCloseableOnEscape();
-        setVisible(true);
-    }
-
     private void initLayout() {
         getRootPane().setDefaultButton(generateButton);
 
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbrelationship/DbRelationshipDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbrelationship/DbRelationshipDialog.java
index 8456d0ef5..f2e4c0b3d 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbrelationship/DbRelationshipDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbrelationship/DbRelationshipDialog.java
@@ -152,26 +152,10 @@ public class DbRelationshipDialog extends ProjectDialog {
         return this;
     }
 
-    public void startUp() {
-        pack();
-        centerOnOwner();
-        makeCloseableOnEscape();
-        setVisible(true);
-        dispose();
-    }
-
     public Optional<DbRelationship> getRelationship() {
         return cancelPressed ? Optional.empty() : Optional.of(relationship);
     }
 
-    @Override
-    public void setVisible(boolean b) {
-        if (b && cancelPressed) {
-            return;
-        }
-        super.setVisible(b);
-    }
-
     private void initLayout() {
         getRootPane().setDefaultButton(saveButton);
         getContentPane().setLayout(new BorderLayout());
@@ -284,12 +268,11 @@ public class DbRelationshipDialog extends ProjectDialog {
             cancelPressed = false;
             save();
             dispose();
-            setVisible(false);
         });
 
         cancelButton.addActionListener(e -> {
             cancelPressed = true;
-            setVisible(false);
+            dispose();
         });
 
         addWindowListener(new WindowAdapter() {
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/errors/ErrorDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/errors/ErrorDialog.java
index 70256541c..79c9ec311 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/errors/ErrorDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/errors/ErrorDialog.java
@@ -60,8 +60,6 @@ class ErrorDialog extends AppDialog implements ActionListener 
{
                 title,
                 modal ? ModalityType.APPLICATION_MODAL : 
ModalityType.MODELESS);
 
-        makeCloseableOnEscape();
-
         setThrowable(Util.unwindException(throwable));
         setDetailed(detailed);
 
@@ -121,10 +119,6 @@ class ErrorDialog extends AppDialog implements 
ActionListener {
         JButton[] buttons = (showHide != null) ? new JButton[]{close, showHide}
                 : new JButton[]{close};
         pane.add(new CMButtonPanel(buttons), BorderLayout.SOUTH);
-
-        // prepare to display
-        this.pack();
-        this.centerOnOwner();
     }
 
     protected String infoHTML(Application application) {
@@ -183,6 +177,7 @@ class ErrorDialog extends AppDialog implements 
ActionListener {
         }
     }
 
+    @Override
     public void actionPerformed(ActionEvent e) {
         if (e.getSource() == close) {
             this.dispose();
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/errors/ErrorsController.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/errors/ErrorsController.java
index 8c5c8bce6..8bb94a241 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/errors/ErrorsController.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/errors/ErrorsController.java
@@ -16,7 +16,7 @@ public class ErrorsController {
             LOGGER.error("CayenneModeler Error", th);
         }
 
-        new ErrorDialog(application, "CayenneModeler Error", th, true, 
false).setVisible(true);
+        new ErrorDialog(application, "CayenneModeler Error", th, true, 
false).open();
     }
 
     /**
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/find/FindDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/find/FindDialog.java
index 86efad950..8c7e95503 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/find/FindDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/find/FindDialog.java
@@ -67,17 +67,6 @@ public class FindDialog extends AppDialog {
         initBindings();
     }
 
-    /**
-     * Packs, centers on owner, enables ESC to close, and shows the dialog.
-     */
-    public void open() {
-        pack();
-        centerOnOwner();
-        makeCloseableOnEscape();
-        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
-        setVisible(true);
-    }
-
     private void initLayout() {
         table.getColumnModel().getColumn(0).setCellRenderer(new 
IconCellRenderer());
         table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
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 6f4ce1fa1..d690cdb56 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
@@ -104,7 +104,7 @@ public class ClasspathPrefsPanel extends AppPanel {
         addDirButton.addActionListener(e ->
                 chooseClassEntry(null, "Select Java Class Directory.", 
JFileChooser.DIRECTORIES_ONLY));
         addMvnButton.addActionListener(e ->
-                new MavenDependencyDialog(app, 
SwingUtilities.getWindowAncestor(this), this).setVisible(true));
+                new MavenDependencyDialog(app, 
SwingUtilities.getWindowAncestor(this), this).open());
         deleteEntryButton.addActionListener(e -> removeEntryClicked());
 
         DefaultFormBuilder sidebar = new DefaultFormBuilder(
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/preferences/classpath/maven/MavenDependencyDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/preferences/classpath/maven/MavenDependencyDialog.java
index 657bc9b53..41221b45f 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/preferences/classpath/maven/MavenDependencyDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/preferences/classpath/maven/MavenDependencyDialog.java
@@ -76,9 +76,6 @@ public class MavenDependencyDialog extends AppDialog {
 
         initLayout();
         initBindings();
-        pack();
-        centerOnOwner();
-        makeCloseableOnEscape();
     }
 
     private void initLayout() {
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/preferences/dbconnector/creator/DBConnectorCreatorDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/preferences/dbconnector/creator/DBConnectorCreatorDialog.java
index e094b5316..538b406e1 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/preferences/dbconnector/creator/DBConnectorCreatorDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/preferences/dbconnector/creator/DBConnectorCreatorDialog.java
@@ -76,6 +76,7 @@ public class DBConnectorCreatorDialog extends AppDialog {
 
         initLayout();
         initBindings();
+        setResizable(false);
     }
 
     /**
@@ -83,11 +84,7 @@ public class DBConnectorCreatorDialog extends AppDialog {
      * null if the user cancelled.
      */
     public DBConnector startupAction() {
-        pack();
-        setResizable(false);
-        centerOnOwner();
-        makeCloseableOnEscape();
-        setVisible(true);
+        open();
         return createConnector();
     }
 
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/preferences/dbconnector/duplicator/DBConnectorDuplicatorDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/preferences/dbconnector/duplicator/DBConnectorDuplicatorDialog.java
index ec03a898e..d1de2130e 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/preferences/dbconnector/duplicator/DBConnectorDuplicatorDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/preferences/dbconnector/duplicator/DBConnectorDuplicatorDialog.java
@@ -63,6 +63,7 @@ public class DBConnectorDuplicatorDialog extends AppDialog {
 
         initLayout();
         initBindings();
+        setResizable(false);
     }
 
     /**
@@ -70,11 +71,7 @@ public class DBConnectorDuplicatorDialog extends AppDialog {
      * null if the user cancelled.
      */
     public DBConnector startupAction() {
-        pack();
-        setResizable(false);
-        centerOnOwner();
-        makeCloseableOnEscape();
-        setVisible(true);
+        open();
         return createConnector();
     }
 
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/cgen/templateeditor/TemplateEditorFindDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/cgen/templateeditor/TemplateEditorFindDialog.java
index 6633d3340..97e6b7db7 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/cgen/templateeditor/TemplateEditorFindDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/cgen/templateeditor/TemplateEditorFindDialog.java
@@ -68,15 +68,7 @@ public class TemplateEditorFindDialog extends AppDialog {
 
         initLayout();
         initBindings();
-    }
-
-    public void open() {
-        pack();
         setResizable(false);
-        centerOnOwner();
-        makeCloseableOnEscape();
-        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
-        setVisible(true);
     }
 
     protected void initLayout() {
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DefaultPopUpMenu.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DefaultPopUpMenu.java
index b92d626dd..94ff4cfc3 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DefaultPopUpMenu.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DefaultPopUpMenu.java
@@ -22,16 +22,13 @@ package 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport;
 import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.action.DbImportActions;
 import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.tree.DbImportTreeNode;
 
-import javax.swing.JMenuItem;
-import javax.swing.JPopupMenu;
-import javax.swing.JTree;
+import javax.swing.*;
 
 public class DefaultPopUpMenu extends JPopupMenu {
 
     protected JMenuItem delete;
     protected DbImportTreeNode selectedElement;
     protected DbImportTreeNode parentElement;
-    protected JTree tree;
     protected final DbImportActions actions;
 
     public DefaultPopUpMenu(DbImportActions actions) {
@@ -56,8 +53,4 @@ public class DefaultPopUpMenu extends JPopupMenu {
     public void setParentElement(DbImportTreeNode parentElement) {
         this.parentElement = parentElement;
     }
-
-    public void setTree(JTree tree) {
-        this.tree = tree;
-    }
 }
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/ReverseEngineeringTreePanel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/ReverseEngineeringTreePanel.java
index 0e55693c1..26dd92fbb 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/ReverseEngineeringTreePanel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/ReverseEngineeringTreePanel.java
@@ -121,7 +121,6 @@ class ReverseEngineeringTreePanel extends JPanel {
                     if (popupMenu != null) {
                         popupMenu.setSelectedElement(selectedElement);
                         
popupMenu.setParentElement(selectedElement.getParent());
-                        popupMenu.setTree(reverseEngineeringTree);
                         popupMenu.show(e.getComponent(), e.getX(), e.getY());
                     }
                 } else if (reverseEngineeringTree.getSelectionPath() != null) {
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/defaults/DefaultsUpdateDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/defaults/DefaultsUpdateDialog.java
index 75a897a82..537e05514 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/defaults/DefaultsUpdateDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/defaults/DefaultsUpdateDialog.java
@@ -67,14 +67,6 @@ public abstract class DefaultsUpdateDialog extends 
ProjectDialog {
         initBindings();
     }
 
-    public void open() {
-        pack();
-        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
-        centerOnOwner();
-        makeCloseableOnEscape();
-        setVisible(true);
-    }
-
     /**
      * @return true if "update all" radio is selected, false if "don't 
override existing".
      */
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/main/locking/LockingUpdateDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/main/locking/LockingUpdateDialog.java
index f360c673b..218e70e32 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/main/locking/LockingUpdateDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/main/locking/LockingUpdateDialog.java
@@ -77,13 +77,6 @@ public class LockingUpdateDialog extends ProjectDialog {
         initBindings();
     }
 
-    public void open() {
-        pack();
-        centerOnOwner();
-        makeCloseableOnEscape();
-        setVisible(true);
-    }
-
     private void initLayout() {
         CellConstraints cc = new CellConstraints();
         FormLayout layout = new FormLayout(
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/dbentity/properties/DbRelationshipPanel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/dbentity/properties/DbRelationshipPanel.java
index 9a187d687..ca95137d0 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/dbentity/properties/DbRelationshipPanel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/dbentity/properties/DbRelationshipPanel.java
@@ -269,7 +269,7 @@ public class DbRelationshipPanel extends JPanel implements 
DbEntityDisplayListen
         DbRelationship rel = model.getRelationship(row);
         new DbRelationshipDialog(session, session.app().getFrame())
                 .modifyRelationship(rel)
-                .startUp();
+                .open();
     }
 
     private void valueChanged(ListSelectionEvent e) {
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/attrinfo/ObjAttributeInfoDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/attrinfo/ObjAttributeInfoDialog.java
index db2f79e1d..d7725a1f6 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/attrinfo/ObjAttributeInfoDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/attrinfo/ObjAttributeInfoDialog.java
@@ -173,14 +173,6 @@ public class ObjAttributeInfoDialog extends ProjectDialog 
implements TreeSelecti
         return saveButton;
     }
 
-    public void startupAction() {
-        pack();
-        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
-        centerOnOwner();
-        makeCloseableOnEscape();
-        setVisible(true);
-    }
-
     private void initLayout() {
         CellConstraints cc = new CellConstraints();
         PanelBuilder builder = new PanelBuilder(
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/properties/ObjAttributePanel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/properties/ObjAttributePanel.java
index b1e8a0af4..7b8cbcebe 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/properties/ObjAttributePanel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/properties/ObjAttributePanel.java
@@ -434,7 +434,7 @@ public class ObjAttributePanel extends JPanel implements 
ObjEntityDisplayListene
         new ObjAttributeInfoDialog(
                 session,
                 session.app().getFrame(),
-                row, model).startupAction();
+                row, model).open();
 
         // This is required for a table to be updated properly
         table.cancelEditing();
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/properties/ObjRelationshipPanel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/properties/ObjRelationshipPanel.java
index 7b2255c97..297918de0 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/properties/ObjRelationshipPanel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/properties/ObjRelationshipPanel.java
@@ -379,7 +379,7 @@ public class ObjRelationshipPanel extends JPanel implements 
ObjEntityDisplayList
         ObjRelationshipTableModel model = (ObjRelationshipTableModel) 
table.getModel();
         new ObjRelationshipInfoDialog(session, session.app().getFrame())
                 .modifyRelationship(model.getRelationship(row))
-                .startupAction();
+                .open();
 
         // This is required for a table to be updated properly
         table.cancelEditing();
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/relinfo/ObjRelationshipInfoDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/relinfo/ObjRelationshipInfoDialog.java
index 3764caa03..e31d6da9f 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/relinfo/ObjRelationshipInfoDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/relinfo/ObjRelationshipInfoDialog.java
@@ -172,14 +172,6 @@ public class ObjRelationshipInfoDialog extends 
ProjectDialog implements TreeSele
         return this;
     }
 
-    public void startupAction() {
-        pack();
-        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
-        centerOnOwner();
-        makeCloseableOnEscape();
-        setVisible(true);
-    }
-
     private void initLayout() {
         getRootPane().setDefaultButton(saveButton);
         setLayout(new BorderLayout());
@@ -374,7 +366,7 @@ public class ObjRelationshipInfoDialog extends 
ProjectDialog implements TreeSele
 
         DbRelationshipDialog dialog =
                 new DbRelationshipDialog(session, 
this).createNewRelationship(dbEntity);
-        dialog.startUp();
+        dialog.open();
 
         Optional<DbRelationship> dbRelationship = dialog.getRelationship();
         if (dbRelationship.isPresent()) {
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/querytype/QueryTypeDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/querytype/QueryTypeDialog.java
index 9c505ce9a..1054f7141 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/querytype/QueryTypeDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/querytype/QueryTypeDialog.java
@@ -78,14 +78,6 @@ public class QueryTypeDialog extends ProjectDialog {
         initBindings();
     }
 
-    public void open() {
-        pack();
-        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
-        centerOnOwner();
-        makeCloseableOnEscape();
-        setVisible(true);
-    }
-
     /**
      * Fires the standard "query added" notification sequence on the given 
session.
      * Used both internally on Create, and externally by paste handling.
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/validator/ProjectValidatorDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/validator/ProjectValidatorDialog.java
index ea9d9d218..28aedc8b6 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/validator/ProjectValidatorDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/validator/ProjectValidatorDialog.java
@@ -22,36 +22,23 @@ package org.apache.cayenne.modeler.ui.project.validator;
 import com.jgoodies.forms.builder.PanelBuilder;
 import com.jgoodies.forms.layout.CellConstraints;
 import com.jgoodies.forms.layout.FormLayout;
-import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.event.display.TablePopupHandler;
+import org.apache.cayenne.modeler.project.ProjectSession;
 import org.apache.cayenne.modeler.service.action.GlobalActions;
 import org.apache.cayenne.modeler.toolkit.ProjectDialog;
 import org.apache.cayenne.modeler.ui.action.DisableValidationInspectionAction;
 import org.apache.cayenne.modeler.ui.action.ShowValidationOptionAction;
 import org.apache.cayenne.modeler.ui.action.ValidateAction;
-import org.apache.cayenne.modeler.project.ProjectSession;
 import org.apache.cayenne.project.validation.Inspection;
 import org.apache.cayenne.project.validation.ProjectValidationFailure;
 import org.apache.cayenne.validation.ValidationFailure;
 
-import javax.swing.JButton;
-import javax.swing.JFrame;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JPopupMenu;
-import javax.swing.JScrollPane;
-import javax.swing.JTable;
-import javax.swing.ListSelectionModel;
+import javax.swing.*;
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
 import javax.swing.table.AbstractTableModel;
 import javax.swing.table.DefaultTableCellRenderer;
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.FlowLayout;
-import java.awt.Window;
-import java.util.Collections;
+import java.awt.*;
 import java.util.List;
 
 /**
@@ -60,38 +47,29 @@ import java.util.List;
  */
 public class ProjectValidatorDialog extends ProjectDialog {
 
-    public static final Color WARNING_COLOR = new Color(245, 194, 194);
+    private static final Color WARNING_COLOR = new Color(245, 194, 194);
 
     private final JTable problemsTable;
     private final JButton refreshButton;
     private final JButton closeButton;
 
-    private List<ValidationFailure> validationObjects = 
Collections.emptyList();
+    private List<ValidationFailure> validationObjects;
 
-    public ProjectValidatorDialog(ProjectSession session, Window owner) {
+    public ProjectValidatorDialog(ProjectSession session, Window owner, 
List<ValidationFailure> failures) {
         super(session, owner, "Validation Problems", ModalityType.MODELESS);
+        this.validationObjects = failures;
         this.problemsTable = new JTable();
         this.refreshButton = new JButton("Refresh");
         this.closeButton = new JButton("Close");
 
         initLayout();
         initBindings();
-
-        // TODO: use preferences
-        setSize(450, 350);
-        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
-        centerOnOwner();
-        makeCloseableOnEscape();
+        problemsTable.setModel(new ValidatorTableModel());
     }
 
-    public void showOnFailures(List<ValidationFailure> failures) {
+    public void refresh(List<ValidationFailure> failures) {
         validationObjects = failures;
         problemsTable.setModel(new ValidatorTableModel());
-        setVisible(true);
-    }
-
-    public static void showOnSuccess(Application application) {
-        JOptionPane.showMessageDialog(application.getFrame(), "Cayenne project 
is valid.");
     }
 
     private void initLayout() {
@@ -121,16 +99,16 @@ public class ProjectValidatorDialog extends ProjectDialog {
         buttons.add(closeButton);
         buttons.add(refreshButton);
 
+        JPanel content = builder.getPanel();
+        content.setPreferredSize(new Dimension(450, 300));
+
         getContentPane().setLayout(new BorderLayout());
-        getContentPane().add(builder.getPanel(), BorderLayout.CENTER);
+        getContentPane().add(content, BorderLayout.CENTER);
         getContentPane().add(buttons, BorderLayout.SOUTH);
     }
 
     private void initBindings() {
-        closeButton.addActionListener(e -> {
-            setVisible(false);
-            dispose();
-        });
+        closeButton.addActionListener(e -> dispose());
         refreshButton.addActionListener(e ->
                 
app.getActionManager().getAction(ValidateAction.class).actionPerformed(e));
         problemsTable.getSelectionModel().addListSelectionListener(e -> 
fireFailedObjectSelection());
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/validation/ValidationDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/validation/ValidationDialog.java
index d57ed0bc3..fe4e51d6b 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/validation/ValidationDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/validation/ValidationDialog.java
@@ -82,14 +82,6 @@ public class ValidationDialog extends AppDialog {
         initBindings();
     }
 
-    public void open() {
-        pack();
-        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
-        centerOnOwner();
-        makeCloseableOnEscape();
-        setVisible(true);
-    }
-
     private void initLayout() {
         CellConstraints cc = new CellConstraints();
         PanelBuilder builder = new PanelBuilder(new FormLayout(


Reply via email to