CAY-2476 Modeler: Fixed wrong behaviour of code generation dialog

Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/7bd2ca90
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/7bd2ca90
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/7bd2ca90

Branch: refs/heads/STABLE-4.0
Commit: 7bd2ca9002a9ce4747b1983f703eed88bb03f4dc
Parents: f8d8e50
Author: kkomyak <const1...@gmail.com>
Authored: Wed Sep 19 12:21:39 2018 +0300
Committer: Arseni Bulatski <ancars...@gmail.com>
Committed: Tue Sep 25 16:15:01 2018 +0300

----------------------------------------------------------------------
 RELEASE-NOTES.txt                               |  1 +
 .../cayenne/modeler/CodeTemplateManager.java    |  3 ++
 .../dialog/codegen/ClassesTabController.java    | 11 ++++--
 .../dialog/codegen/CodeGeneratorDialog.java     |  2 -
 .../dialog/codegen/CustomModeController.java    | 40 ++++++++++++++++----
 .../modeler/dialog/codegen/CustomModePanel.java | 12 +-----
 6 files changed, 45 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/7bd2ca90/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index f4f8281..6b18383 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -15,6 +15,7 @@ Date:
 Changes/New Features:
 
 CAY-2479 Modeler: update cgen dialog
+CAY-2476 Modeler: Fixed wrong behaviour of code generation dialog
 
 Bug Fixes:
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/7bd2ca90/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CodeTemplateManager.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CodeTemplateManager.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CodeTemplateManager.java
index b914b9b..6b2fe0f 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CodeTemplateManager.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CodeTemplateManager.java
@@ -39,6 +39,7 @@ public class CodeTemplateManager {
 
        public static final String STANDARD_SERVER_SUPERCLASS = "Standard 
Server Superclass";
        public static final String STANDARD_SERVER_SUBCLASS = "Standard Server 
Subclass";
+       public static final String SINGLE_SERVER_CLASS = "Single Server class";
        static final String STANDARD_CLIENT_SUPERCLASS = "Standard Client 
Superclass";
        static final String STANDARD_CLIENT_SUBCLASS = "Standard Client 
Subclass";
 
@@ -64,6 +65,7 @@ public class CodeTemplateManager {
                standardSubclassTemplates = new ArrayList<>(3);
                standardSubclassTemplates.add(STANDARD_SERVER_SUBCLASS);
                standardSubclassTemplates.add(STANDARD_CLIENT_SUBCLASS);
+               standardSubclassTemplates.add(SINGLE_SERVER_CLASS);
 
                updateCustomTemplates(getTemplatePreferences(application));
 
@@ -72,6 +74,7 @@ public class CodeTemplateManager {
                standardTemplates.put(STANDARD_CLIENT_SUPERCLASS, 
ClientClassGenerationAction.SUPERCLASS_TEMPLATE);
                standardTemplates.put(STANDARD_SERVER_SUBCLASS, 
ClassGenerationAction.SUBCLASS_TEMPLATE);
                standardTemplates.put(STANDARD_CLIENT_SUBCLASS, 
ClientClassGenerationAction.SUBCLASS_TEMPLATE);
+               standardTemplates.put(SINGLE_SERVER_CLASS, 
ClassGenerationAction.SINGLE_CLASS_TEMPLATE);
        }
 
        /**

http://git-wip-us.apache.org/repos/asf/cayenne/blob/7bd2ca90/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/ClassesTabController.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/ClassesTabController.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/ClassesTabController.java
index 2191e8c..da83e4d 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/ClassesTabController.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/ClassesTabController.java
@@ -27,13 +27,16 @@ import org.apache.cayenne.swing.ObjectBinding;
 import org.apache.cayenne.swing.TableBindingBuilder;
 import org.apache.commons.collections.Predicate;
 
-import javax.swing.*;
-import java.awt.*;
+import javax.swing.JCheckBox;
+import javax.swing.JLabel;
+import java.awt.Component;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
 import java.util.List;
-import java.util.function.Consumer;
+import java.util.Map;
 
 public class ClassesTabController extends CayenneController {
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/7bd2ca90/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CodeGeneratorDialog.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CodeGeneratorDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CodeGeneratorDialog.java
index 9033052..44e3863 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CodeGeneratorDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CodeGeneratorDialog.java
@@ -37,8 +37,6 @@ import java.awt.Container;
 import java.awt.Dimension;
 import java.awt.FlowLayout;
 
-/**
- */
 public class CodeGeneratorDialog extends JDialog {
 
     protected JTabbedPane tabs;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/7bd2ca90/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModeController.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModeController.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModeController.java
index e94e77a..4d2254f 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModeController.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModeController.java
@@ -29,7 +29,11 @@ import org.apache.cayenne.swing.ObjectBinding;
 import org.apache.cayenne.util.Util;
 
 import javax.swing.DefaultComboBoxModel;
+import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
 import java.awt.Component;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -39,11 +43,13 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.TreeMap;
 
+import static org.apache.cayenne.modeler.CodeTemplateManager.*;
+import static 
org.apache.cayenne.modeler.dialog.pref.PreferenceDialog.TEMPLATES_KEY;
+
 /**
  * A controller for the custom generation mode.
  */
 public class CustomModeController extends GeneratorController {
-
        // correspond to non-public constants on MapClassGenerator.
        private static final String MODE_ENTITY = "entity";
 
@@ -69,11 +75,11 @@ public class CustomModeController extends 
GeneratorController {
                for (Entry<DataMap, DataMapDefaults> entry : entities) {
 
                        if 
(Util.isEmptyString(entry.getValue().getSuperclassTemplate())) {
-                               
entry.getValue().setSuperclassTemplate(CodeTemplateManager.STANDARD_SERVER_SUPERCLASS);
+                               
entry.getValue().setSuperclassTemplate(STANDARD_SERVER_SUPERCLASS);
                        }
 
                        if 
(Util.isEmptyString(entry.getValue().getSubclassTemplate())) {
-                               
entry.getValue().setSubclassTemplate(CodeTemplateManager.STANDARD_SERVER_SUBCLASS);
+                               
entry.getValue().setSubclassTemplate(STANDARD_SERVER_SUBCLASS);
                        }
 
                        if 
(Util.isEmptyString(entry.getValue().getProperty("mode"))) {
@@ -144,11 +150,10 @@ public class CustomModeController extends 
GeneratorController {
 
        protected GeneratorControllerPanel createView() {
                this.view = new CustomModePanel();
-
                return view;
        }
 
-       protected void updateTemplates() {
+       private void updateTemplates() {
                this.templateManager = 
getApplication().getCodeTemplateManager();
 
                List<String> customTemplates = new 
ArrayList<>(templateManager.getCustomTemplates().keySet());
@@ -165,10 +170,27 @@ public class CustomModeController extends 
GeneratorController {
                this.view.getSubclassTemplate().setModel(new 
DefaultComboBoxModel<>(subTemplates.toArray(new String[0])));
                this.view.getSuperclassTemplate().setModel(new 
DefaultComboBoxModel<>(superTemplates.toArray(new String[0])));
 
+               JCheckBox pairs = this.view.getPairs();
+               updateView();
+               pairs.addItemListener(new ItemListener() {
+                       @Override
+                       public void itemStateChanged(ItemEvent e) {
+                               updateView();
+                       }
+               });
+
                superTemplate.updateView();
                subTemplate.updateView();
        }
 
+       private void updateView() {
+               boolean selected = view.getPairs().isSelected();
+               JComboBox<String> subclassTemplate = view.getSubclassTemplate();
+               subclassTemplate.setSelectedItem(selected ? 
STANDARD_SERVER_SUBCLASS : SINGLE_SERVER_CLASS);
+               view.getSuperclassTemplate().setEnabled(selected);
+               view.getOverwrite().setEnabled(!selected);
+       }
+
        public Component getView() {
                return view;
        }
@@ -200,12 +222,16 @@ public class CustomModeController extends 
GeneratorController {
        }
 
        public void popPreferencesAction() {
-               new 
PreferenceDialog(getApplication().getFrameController()).startupAction(PreferenceDialog.TEMPLATES_KEY);
+               new 
PreferenceDialog(getApplication().getFrameController()).startupAction(TEMPLATES_KEY);
                updateTemplates();
        }
 
        @Override
        protected ClassGenerationAction newGenerator() {
-               return new ClassGenerationAction();
+               ClassGenerationAction action = new ClassGenerationAction();
+               getApplication().getInjector().injectMembers(action);
+               return action;
        }
+
+
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/7bd2ca90/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModePanel.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModePanel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModePanel.java
index b951c58..ddaceb2 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModePanel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModePanel.java
@@ -27,8 +27,6 @@ import javax.swing.JCheckBox;
 import javax.swing.JComboBox;
 import javax.swing.JPanel;
 import javax.swing.JTextField;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
 import java.awt.BorderLayout;
 import java.awt.FlowLayout;
 
@@ -56,16 +54,7 @@ public class CustomModePanel extends 
GeneratorControllerPanel {
         this.manageTemplatesLink = new ActionLink("Customize Templates...");
         
manageTemplatesLink.setFont(manageTemplatesLink.getFont().deriveFont(10f));
 
-        pairs.addChangeListener(new ChangeListener() {
-
-            public void stateChanged(ChangeEvent e) {
-                superclassTemplate.setEnabled(pairs.isSelected());
-                overwrite.setEnabled(!pairs.isSelected());
-            }
-        });
-
         // assemble
-
         FormLayout layout = new FormLayout(
                 "right:77dlu, 1dlu, fill:100:grow, 1dlu, left:80dlu, 1dlu", 
"");
         DefaultFormBuilder builder = new DefaultFormBuilder(layout);
@@ -136,4 +125,5 @@ public class CustomModePanel extends 
GeneratorControllerPanel {
     public JCheckBox getCreatePropertyNames() {
         return createPropertyNames;
     }
+
 }

Reply via email to