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; } + }