This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git


The following commit(s) were added to refs/heads/master by this push:
     new 5b7aad7ba fixed issue with disable Generate btn in new project. Minor 
cleanup.
     new b43b7a451 Merge pull request #553 from Ivan-nikitko/CAY-2786_bugfix
5b7aad7ba is described below

commit 5b7aad7ba694e8f3be5ce1b9c5fa2a0db8f2510a
Author: Ivan Nikitka <70625960+ivan-niki...@users.noreply.github.com>
AuthorDate: Mon Dec 12 14:14:05 2022 +0100

    fixed issue with disable Generate btn in new project. Minor cleanup.
---
 .../editor/cgen/CodeGeneratorController.java       |  5 ++-
 .../editor/cgen/GeneratorControllerPanel.java      | 37 +++++++++++++++++-----
 .../apache/cayenne/modeler/util/TextAdapter.java   |  4 ---
 3 files changed, 31 insertions(+), 15 deletions(-)

diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorController.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorController.java
index d7598ee55..ff18b49f6 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorController.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorController.java
@@ -247,8 +247,7 @@ public class CodeGeneratorController extends 
CayenneController implements ObjEnt
                 "Delete cgenConfiguration",
                 JOptionPane.YES_NO_OPTION
         );
-        // result "0" mean selecting YES
-        if (result == 0) {
+        if (result == JOptionPane.OK_OPTION) {
             if (view.getConfigurationsComboBox().getItemCount() > 1) {
                 cgenConfigList.removeByName(cgenConfiguration.getName());
                 
view.getConfigurationsComboBox().removeItem(view.getConfigurationsComboBox().getSelectedItem());
@@ -262,7 +261,7 @@ public class CodeGeneratorController extends 
CayenneController implements ObjEnt
     }
 
     public void updateGenerateButton(){
-        boolean isOutputPathValid = 
standardModeController.getView().getOutputFolder().isDataValid();
+        boolean isOutputPathValid = 
standardModeController.getView().isDataValid();
         view.getGenerateButton().setEnabled(!selectionModel.isModelEmpty()&& 
isOutputPathValid);
     }
 
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorControllerPanel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorControllerPanel.java
index 184898c36..9e3afc961 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorControllerPanel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorControllerPanel.java
@@ -41,6 +41,9 @@ public class GeneratorControllerPanel extends JPanel {
     protected JButton selectOutputFolder;
     protected ProjectController projectController;
     protected CodeGeneratorController codeGeneratorController;
+    private boolean isDataValid;
+    private final String INVALID_PATH_MSG = "An invalid path has been 
detected. It cannot be saved or used until it is corrected.";
+    private final String NEED_TO_SAVE_PROJECT_MSG= "You should save project to 
use relative path as an output directory.";
 
     public GeneratorControllerPanel(ProjectController projectController, 
CodeGeneratorController codeGeneratorController) {
         this.projectController = projectController;
@@ -54,25 +57,39 @@ public class GeneratorControllerPanel extends JPanel {
                     try {
                         path = Paths.get(text);
                     } catch (InvalidPathException e) {
-                        isDataValid = false;
-                        codeGeneratorController.updateGenerateButton();
-                        throw new ValidationException("An invalid path has 
been detected. It cannot be saved or used until it is corrected.");
+                        updateGenerateButton(false);
+                        throw new ValidationException(INVALID_PATH_MSG);
                     }
                     if (cgenByDataMap.getRootPath() == null && 
!path.isAbsolute()) {
-                        isDataValid = false;
-                        codeGeneratorController.updateGenerateButton();
-                        throw new ValidationException("You should save project 
to use relative path as an output directory.");
+                        updateGenerateButton(false);
+                        throw new 
ValidationException(NEED_TO_SAVE_PROJECT_MSG);
                     }
                     cgenByDataMap.updateOutputPath(path);
-                    isDataValid = true;
-                    codeGeneratorController.updateGenerateButton();
+                    updateGenerateButton(true);
                     checkConfigDirty();
                 }
             }
+
+            @Override
+            public void setText(String text) {
+                super.setText(text);
+                try {
+                    Paths.get(text);
+                } catch (InvalidPathException e) {
+                    updateGenerateButton(false);
+                    throw new ValidationException(INVALID_PATH_MSG);
+                }
+                updateGenerateButton(true);
+            }
         };
         this.selectOutputFolder = new JButton("..");
     }
 
+    private void updateGenerateButton(boolean isDataValid){
+        this.isDataValid = isDataValid;
+        codeGeneratorController.updateGenerateButton();
+    }
+
     public TextAdapter getOutputFolder() {
         return outputFolder;
     }
@@ -88,4 +105,8 @@ public class GeneratorControllerPanel extends JPanel {
     protected CgenConfiguration getCgenConfig() {
         return codeGeneratorController.getCgenConfiguration();
     }
+
+    public boolean isDataValid() {
+        return isDataValid;
+    }
 }
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/TextAdapter.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/TextAdapter.java
index d6fbaecda..53177955d 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/TextAdapter.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/TextAdapter.java
@@ -49,7 +49,6 @@ public abstract class TextAdapter {
     protected UndoableEditListener undoableListener;
 
     protected JTextComponent textComponent;
-    protected boolean isDataValid;
 
     public TextAdapter(JTextField textField) {
         this(textField, true, false, true);
@@ -173,7 +172,4 @@ public abstract class TextAdapter {
         textComponent.setToolTipText(defaultToolTip);
     }
 
-    public boolean isDataValid() {
-        return isDataValid;
-    }
 }

Reply via email to