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 bd21694cb CAY-2756_simplify_cgen_UI new e6da55280 Merge pull request #516 from Ivan-nikitko/CAY-2756_simplify_cgen_UI bd21694cb is described below commit bd21694cb8ea3f956fd368eab31c915dcf75151d Author: Ivan-nikitko <70625960+ivan-niki...@users.noreply.github.com> AuthorDate: Wed Aug 31 13:24:54 2022 +0200 CAY-2756_simplify_cgen_UI --- .../modeler/dialog/cgen/TemplateDialog.java | 4 +- .../editor/cgen/CodeGeneratorController.java | 65 ++--- .../modeler/editor/cgen/CustomModeController.java | 193 -------------- .../modeler/editor/cgen/CustomModePanel.java | 277 --------------------- .../editor/cgen/GeneratorTabController.java | 106 -------- .../editor/cgen/StandardModeController.java | 193 ++++++++++++++ .../modeler/editor/cgen/StandardModePanel.java | 216 +++++++++++++++- 7 files changed, 430 insertions(+), 624 deletions(-) diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/cgen/TemplateDialog.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/cgen/TemplateDialog.java index 8cbd9895c..8a1484284 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/cgen/TemplateDialog.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/cgen/TemplateDialog.java @@ -20,7 +20,7 @@ package org.apache.cayenne.modeler.dialog.cgen; import org.apache.cayenne.gen.CgenConfiguration; import org.apache.cayenne.gen.ClassGenerationAction; -import org.apache.cayenne.modeler.editor.cgen.CustomModeController; +import org.apache.cayenne.modeler.editor.cgen.StandardModeController; import org.apache.cayenne.modeler.util.CayenneController; import javax.swing.JDialog; @@ -80,7 +80,7 @@ public class TemplateDialog extends CayenneController { view.dispose(); }); view.getAddTemplate().addActionListener(action -> { - ((CustomModeController)parent).addTemplateAction(template, superTemplate); + ((StandardModeController)parent).addTemplateAction(template, superTemplate); view.dispose(); }); } 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 46b837915..e8080d9fb 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 @@ -19,21 +19,6 @@ package org.apache.cayenne.modeler.editor.cgen; -import javax.swing.JOptionPane; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.Collection; -import java.util.Comparator; -import java.util.Set; -import java.util.TreeSet; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; -import java.util.function.Predicate; -import java.util.prefs.Preferences; -import java.util.stream.Collectors; - import org.apache.cayenne.configuration.BaseConfigurationNodeVisitor; import org.apache.cayenne.configuration.ConfigurationNode; import org.apache.cayenne.configuration.ConfigurationNodeVisitor; @@ -62,6 +47,21 @@ import org.apache.cayenne.tools.ToolsInjectorBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.swing.JOptionPane; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Collection; +import java.util.Comparator; +import java.util.Set; +import java.util.TreeSet; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; +import java.util.function.Predicate; +import java.util.prefs.Preferences; +import java.util.stream.Collectors; + /** * Main controller for the code generation UI. * @@ -75,18 +75,18 @@ public class CodeGeneratorController extends CayenneController implements ObjEnt protected final SelectionModel selectionModel; protected final CodeGeneratorPane view; protected final ClassesTabController classesSelector; - protected final GeneratorTabController generatorSelector; protected final ConcurrentMap<DataMap, GeneratorController> prevGeneratorController; + private StandardModeController standardModeController; private Object currentClass; private CgenConfiguration cgenConfiguration; private boolean initFromModel; public CodeGeneratorController(ProjectController projectController) { super(projectController); + this.standardModeController = new StandardModeController(this); this.classesSelector = new ClassesTabController(this); - this.generatorSelector = new GeneratorTabController(this); - this.view = new CodeGeneratorPane(generatorSelector.getView(), classesSelector.getView()); + this.view = new CodeGeneratorPane(standardModeController.getView(), classesSelector.getView()); this.prevGeneratorController = new ConcurrentHashMap<>(); this.projectController = projectController; this.classes = new TreeSet<>( @@ -101,26 +101,19 @@ public class CodeGeneratorController extends CayenneController implements ObjEnt public void initFromModel() { initFromModel = true; DataMap dataMap = projectController.getCurrentDataMap(); - prepareClasses(dataMap); createConfiguration(dataMap); - - GeneratorController modeController = prevGeneratorController.get(dataMap); - if (modeController == null) { - if (cgenConfiguration.isDefault()) { - modeController = generatorSelector.getStandartController(); - } else { - modeController = generatorSelector.getCustomModeController(); - } - } - - prevGeneratorController.put(dataMap, modeController); - generatorSelector.setSelectedController(modeController); + configureController(standardModeController); classesSelector.startup(); initFromModel = false; classesSelector.validate(classes); } + void configureController(GeneratorController controller) { + controller.updateConfiguration(cgenConfiguration); + controller.initForm(cgenConfiguration); + } + private void initListeners() { projectController.addObjEntityListener(this); projectController.addEmbeddableListener(this); @@ -134,21 +127,13 @@ public class CodeGeneratorController extends CayenneController implements ObjEnt protected void initBindings() { BindingBuilder builder = new BindingBuilder(getApplication().getBindingFactory(), this); - builder.bindToAction(view.getGenerateButton(), "generateAction()"); - builder.bindToAction(generatorSelector, "generatorSelectedAction()", - GeneratorTabController.GENERATOR_PROPERTY); - generatorSelectedAction(); } public void generatorSelectedAction() { - GeneratorController controller = generatorSelector.getGeneratorController(); classesSelector.validate(classes); - Predicate<ConfigurationNode> predicate = controller != null - ? defaultPredicate - : o -> false; - updateSelection(predicate); + updateSelection(defaultPredicate); classesSelector.classSelectedAction(); } diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModeController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModeController.java deleted file mode 100644 index 97ecb39a6..000000000 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModeController.java +++ /dev/null @@ -1,193 +0,0 @@ -/***************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - ****************************************************************/ - -package org.apache.cayenne.modeler.editor.cgen; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import javax.swing.DefaultComboBoxModel; - -import org.apache.cayenne.gen.CgenConfiguration; -import org.apache.cayenne.gen.ClassGenerationAction; -import org.apache.cayenne.modeler.CodeTemplateManager; -import org.apache.cayenne.modeler.dialog.pref.PreferenceDialog; -import org.apache.cayenne.swing.BindingBuilder; - -/** - * @since 4.1 - * A controller for the custom generation mode. - */ -public class CustomModeController extends GeneratorController { - - protected CustomModePanel view; - - public CustomModeController(CodeGeneratorController parent) { - super(parent); - bind(); - initListeners(); - } - - @Override - protected void createView() { - this.view = new CustomModePanel(getApplication().getFrameController().getProjectController(), getParentController()); - } - - public CustomModePanel getView() { - return view; - } - - private void bind() { - BindingBuilder builder = new BindingBuilder(getApplication().getBindingFactory(), this); - builder.bindToAction(view.getManageTemplatesLink(), "popPreferencesAction()"); - - } - - protected void updateTemplates() { - CodeTemplateManager templateManager = getApplication().getCodeTemplateManager(); - - List<String> customTemplates = new ArrayList<>(templateManager.getCustomTemplates().keySet()); - Collections.sort(customTemplates); - - List<String> superTemplates = new ArrayList<>(templateManager.getDefaultSuperclassTemplates()); - Collections.sort(superTemplates); - superTemplates.addAll(customTemplates); - - List<String> subTemplates = new ArrayList<>(templateManager.getDefaultSubclassTemplates()); - Collections.sort(subTemplates); - subTemplates.addAll(customTemplates); - - List<String> querySuperTemplates = new ArrayList<>(templateManager.getDefaultDataMapSuperclassTemplates()); - Collections.sort(querySuperTemplates); - querySuperTemplates.addAll(customTemplates); - - List<String> queryTemplates = new ArrayList<>(templateManager.getDefaultDataMapTemplates()); - Collections.sort(queryTemplates); - queryTemplates.addAll(customTemplates); - - List<String> embeddableSuperTemplates = new ArrayList<>(templateManager.getDefaultEmbeddableSuperclassTemplates()); - Collections.sort(embeddableSuperTemplates); - embeddableSuperTemplates.addAll(customTemplates); - - List<String> embeddableTemplates = new ArrayList<>(templateManager.getDefaultEmbeddableTemplates()); - Collections.sort(embeddableTemplates); - embeddableTemplates.addAll(customTemplates); - - this.view.getSubclassTemplate().getComboBox().setModel(new DefaultComboBoxModel<>(subTemplates.toArray(new String[0]))); - this.view.getSuperclassTemplate().getComboBox().setModel(new DefaultComboBoxModel<>(superTemplates.toArray(new String[0]))); - this.view.getQueryTemplate().getComboBox().setModel(new DefaultComboBoxModel<>(queryTemplates.toArray(new String[0]))); - this.view.getQuerySuperTemplate().getComboBox().setModel(new DefaultComboBoxModel<>(querySuperTemplates.toArray(new String[0]))); - this.view.getEmbeddableTemplate().getComboBox().setModel(new DefaultComboBoxModel<>(embeddableTemplates.toArray(new String[0]))); - this.view.getEmbeddableSuperTemplate().getComboBox().setModel(new DefaultComboBoxModel<>(embeddableSuperTemplates.toArray(new String[0]))); - } - - public void popPreferencesAction() { - new PreferenceDialog(getApplication().getFrameController()).startupAction(PreferenceDialog.TEMPLATES_KEY); - updateTemplates(); - updateComboBoxes(); - } - - public void addTemplateAction(String template, String superTemplate) { - new PreferenceDialog(getApplication().getFrameController()).startupToCreateTemplate(template, superTemplate); - updateTemplates(); - } - - private void updateComboBoxes() { - String templateName = getApplication().getCodeTemplateManager().getNameByPath( - cgenConfiguration.getTemplate(), cgenConfiguration.getRootPath()); - String superTemplateName = getApplication().getCodeTemplateManager().getNameByPath( - cgenConfiguration.getSuperTemplate(), cgenConfiguration.getRootPath()); - String embeddableTemplateName = getApplication().getCodeTemplateManager().getNameByPath( - cgenConfiguration.getEmbeddableTemplate(), cgenConfiguration.getRootPath()); - String embeddableSuperTemplateName = getApplication().getCodeTemplateManager().getNameByPath( - cgenConfiguration.getEmbeddableSuperTemplate(), cgenConfiguration.getRootPath()); - String queryTemplateName = getApplication().getCodeTemplateManager().getNameByPath( - cgenConfiguration.getDataMapTemplate(), cgenConfiguration.getRootPath()); - String querySuperTemplateName = getApplication().getCodeTemplateManager().getNameByPath( - cgenConfiguration.getDataMapSuperTemplate(), cgenConfiguration.getRootPath()); - - view.getSubclassTemplate().setItem(templateName); - view.getSuperclassTemplate().setItem(superTemplateName); - - view.getEmbeddableTemplate().setItem(embeddableTemplateName); - view.getEmbeddableSuperTemplate().setItem(embeddableSuperTemplateName); - - view.getQueryTemplate().setItem(queryTemplateName); - view.getQuerySuperTemplate().setItem(querySuperTemplateName); - - view.setDisableSuperComboBoxes(view.getPairs().isSelected()); - } - - private void initListeners() { - view.getPairs().addActionListener(val -> { - cgenConfiguration.setMakePairs(view.getPairs().isSelected()); - if (!view.getPairs().isSelected()) { - cgenConfiguration.setTemplate(ClassGenerationAction.SINGLE_CLASS_TEMPLATE); - cgenConfiguration.setEmbeddableTemplate(ClassGenerationAction.EMBEDDABLE_SINGLE_CLASS_TEMPLATE); - cgenConfiguration.setDataMapTemplate(ClassGenerationAction.DATAMAP_SINGLE_CLASS_TEMPLATE); - } else { - cgenConfiguration.setTemplate(ClassGenerationAction.SUBCLASS_TEMPLATE); - cgenConfiguration.setEmbeddableTemplate(ClassGenerationAction.EMBEDDABLE_SUBCLASS_TEMPLATE); - cgenConfiguration.setDataMapTemplate(ClassGenerationAction.DATAMAP_SUBCLASS_TEMPLATE); - } - initForm(cgenConfiguration); - getParentController().checkCgenConfigDirty(); - }); - - view.getOverwrite().addActionListener(val -> { - cgenConfiguration.setOverwrite(view.getOverwrite().isSelected()); - getParentController().checkCgenConfigDirty(); - }); - - view.getCreatePropertyNames().addActionListener(val -> { - cgenConfiguration.setCreatePropertyNames(view.getCreatePropertyNames().isSelected()); - getParentController().checkCgenConfigDirty(); - }); - - view.getUsePackagePath().addActionListener(val -> { - cgenConfiguration.setUsePkgPath(view.getUsePackagePath().isSelected()); - getParentController().checkCgenConfigDirty(); - }); - - view.getPkProperties().addActionListener(val -> { - cgenConfiguration.setCreatePKProperties(view.getPkProperties().isSelected()); - getParentController().checkCgenConfigDirty(); - }); - } - - @Override - public void initForm(CgenConfiguration cgenConfiguration) { - super.initForm(cgenConfiguration); - updateTemplates(); - view.getOutputPattern().setText(cgenConfiguration.getOutputPattern()); - view.getPairs().setSelected(cgenConfiguration.isMakePairs()); - view.getUsePackagePath().setSelected(cgenConfiguration.isUsePkgPath()); - view.getOverwrite().setSelected(cgenConfiguration.isOverwrite()); - view.getCreatePropertyNames().setSelected(cgenConfiguration.isCreatePropertyNames()); - view.getPkProperties().setSelected(cgenConfiguration.isCreatePKProperties()); - view.getSuperPkg().setText(cgenConfiguration.getSuperPkg()); - updateComboBoxes(); - } - - @Override - public void updateConfiguration(CgenConfiguration cgenConfiguration) { - // Do nothing - } -} diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModePanel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModePanel.java deleted file mode 100644 index 598ddad35..000000000 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModePanel.java +++ /dev/null @@ -1,277 +0,0 @@ -/***************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - ****************************************************************/ - -package org.apache.cayenne.modeler.editor.cgen; - -import javax.swing.JButton; -import javax.swing.JCheckBox; -import javax.swing.JComboBox; -import javax.swing.JPanel; -import javax.swing.JTextField; -import java.awt.BorderLayout; -import java.awt.FlowLayout; - -import com.jgoodies.forms.builder.DefaultFormBuilder; -import com.jgoodies.forms.layout.FormLayout; -import org.apache.cayenne.gen.CgenConfiguration; -import org.apache.cayenne.modeler.Application; -import org.apache.cayenne.modeler.ProjectController; -import org.apache.cayenne.modeler.util.ComboBoxAdapter; -import org.apache.cayenne.modeler.util.TextAdapter; -import org.apache.cayenne.swing.components.JCayenneCheckBox; -import org.apache.cayenne.validation.ValidationException; - -/** - * @since 4.1 - */ -public class CustomModePanel extends GeneratorControllerPanel { - - private ComboBoxAdapter<String> subclassTemplate; - private ComboBoxAdapter<String> superclassTemplate; - private ComboBoxAdapter<String> embeddableTemplate; - private ComboBoxAdapter<String> embeddableSuperTemplate; - private ComboBoxAdapter<String> queryTemplate; - private ComboBoxAdapter<String> querySuperTemplate; - private JCheckBox pairs; - private JCheckBox overwrite; - private JCheckBox usePackagePath; - private TextAdapter outputPattern; - private JCheckBox createPropertyNames; - private JCheckBox pkProperties; - private TextAdapter superPkg; - - private JButton manageTemplatesLink; - - CustomModePanel(ProjectController projectController, CodeGeneratorController codeGeneratorControllerBase) { - super(projectController, codeGeneratorControllerBase); - - JComboBox<String> superclassField = new JComboBox<>(); - this.superclassTemplate = new ComboBoxAdapter<>(superclassField) { - @Override - protected void updateModel(String item) throws ValidationException { - CgenConfiguration cgenConfiguration = getCgenConfig(); - cgenConfiguration.setSuperTemplate(Application.getInstance().getCodeTemplateManager().getTemplatePath(item, - cgenConfiguration.getDataMap().getConfigurationSource())); - checkConfigDirty(); - } - }; - - JComboBox<String> subclassField = new JComboBox<>(); - this.subclassTemplate = new ComboBoxAdapter<>(subclassField) { - @Override - protected void updateModel(String item) throws ValidationException { - CgenConfiguration cgenConfiguration = getCgenConfig(); - cgenConfiguration.setTemplate(Application.getInstance().getCodeTemplateManager().getTemplatePath(item, - cgenConfiguration.getDataMap().getConfigurationSource())); - checkConfigDirty(); - } - }; - - JComboBox<String> embeddableField = new JComboBox<>(); - this.embeddableTemplate = new ComboBoxAdapter<>(embeddableField) { - @Override - protected void updateModel(String item) throws ValidationException { - CgenConfiguration cgenConfiguration = getCgenConfig(); - cgenConfiguration.setEmbeddableTemplate(Application.getInstance().getCodeTemplateManager().getTemplatePath(item, - cgenConfiguration.getDataMap().getConfigurationSource())); - checkConfigDirty(); - } - }; - - JComboBox<String> embeddableSuperField = new JComboBox<>(); - this.embeddableSuperTemplate = new ComboBoxAdapter<>(embeddableSuperField) { - @Override - protected void updateModel(String item) throws ValidationException { - CgenConfiguration cgenConfiguration = getCgenConfig(); - cgenConfiguration.setEmbeddableSuperTemplate(Application.getInstance().getCodeTemplateManager().getTemplatePath(item, - cgenConfiguration.getDataMap().getConfigurationSource())); - checkConfigDirty(); - } - }; - - JComboBox<String> queryField = new JComboBox<>(); - this.queryTemplate = new ComboBoxAdapter<>(queryField) { - @Override - protected void updateModel(String item) throws ValidationException { - CgenConfiguration cgenConfiguration = getCgenConfig(); - cgenConfiguration.setDataMapTemplate(Application.getInstance().getCodeTemplateManager().getTemplatePath(item, - cgenConfiguration.getDataMap().getConfigurationSource())); - checkConfigDirty(); - } - }; - - JComboBox<String> querySuperField = new JComboBox<>(); - this.querySuperTemplate = new ComboBoxAdapter<>(querySuperField) { - @Override - protected void updateModel(String item) throws ValidationException { - CgenConfiguration cgenConfiguration = getCgenConfig(); - cgenConfiguration.setDataMapSuperTemplate(Application.getInstance().getCodeTemplateManager().getTemplatePath(item, - cgenConfiguration.getDataMap().getConfigurationSource())); - checkConfigDirty(); - } - }; - - this.pairs = new JCayenneCheckBox(); - this.overwrite = new JCayenneCheckBox(); - this.usePackagePath = new JCayenneCheckBox(); - - JTextField outputPatternField = new JTextField(); - this.outputPattern = new TextAdapter(outputPatternField) { - protected void updateModel(String text) { - getCgenConfig().setOutputPattern(text); - checkConfigDirty(); - } - }; - - JTextField superPkgField = new JTextField(); - this.superPkg = new TextAdapter(superPkgField) { - @Override - protected void updateModel(String text) throws ValidationException { - getCgenConfig().setSuperPkg(text); - checkConfigDirty(); - } - }; - - this.createPropertyNames = new JCayenneCheckBox(); - this.pkProperties = new JCayenneCheckBox(); - this.manageTemplatesLink = new JButton("Customize Templates..."); - this.manageTemplatesLink.setFont(manageTemplatesLink.getFont().deriveFont(10f)); - - pairs.addChangeListener(e -> { - setDisableSuperComboBoxes(pairs.isSelected()); - overwrite.setEnabled(!pairs.isSelected()); - }); - - // assemble - FormLayout layout = new FormLayout( - "right:105dlu, 1dlu, fill:240:grow, 1dlu, left:100dlu, 100dlu", ""); - DefaultFormBuilder builder = new DefaultFormBuilder(layout); - builder.setDefaultDialogBorder(); - - builder.append("Output Directory:", outputFolder.getComponent(), selectOutputFolder); - builder.nextLine(); - - builder.append("Subclass Template:", subclassTemplate.getComboBox()); - builder.nextLine(); - - builder.append("Superclass Template:", superclassTemplate.getComboBox()); - builder.nextLine(); - - builder.append("Embeddable Template:", embeddableTemplate.getComboBox()); - builder.nextLine(); - - builder.append("Embeddable Superclass Template:", embeddableSuperTemplate.getComboBox()); - builder.nextLine(); - - builder.append("DataMap Template:", queryTemplate.getComboBox()); - builder.nextLine(); - - builder.append("DataMap Superclass Template:", querySuperTemplate.getComboBox()); - builder.nextLine(); - - builder.append("Output Pattern:", outputPattern.getComponent()); - builder.nextLine(); - - builder.append("Make Pairs:", pairs); - builder.nextLine(); - - builder.append("Use Package Path:", usePackagePath); - builder.nextLine(); - - builder.append("Overwrite Subclasses:", overwrite); - builder.nextLine(); - - builder.append("Create Property Names:", createPropertyNames); - builder.nextLine(); - - builder.append("Create PK properties:", pkProperties); - builder.nextLine(); - - builder.append("Superclass package:", superPkg.getComponent()); - - setLayout(new BorderLayout()); - add(builder.getPanel(), BorderLayout.CENTER); - - JPanel links = new JPanel(new FlowLayout(FlowLayout.TRAILING)); - links.add(manageTemplatesLink); - add(links, BorderLayout.SOUTH); - } - - public void setDisableSuperComboBoxes(boolean val){ - superclassTemplate.getComboBox().setEnabled(val); - embeddableSuperTemplate.getComboBox().setEnabled(val); - querySuperTemplate.getComboBox().setEnabled(val); - } - - public JButton getManageTemplatesLink() { - return manageTemplatesLink; - } - - public ComboBoxAdapter<String> getSubclassTemplate() { - return subclassTemplate; - } - - public ComboBoxAdapter<String> getSuperclassTemplate() { - return superclassTemplate; - } - - public ComboBoxAdapter<String> getEmbeddableTemplate() { - return embeddableTemplate; - } - - public ComboBoxAdapter<String> getEmbeddableSuperTemplate() { - return embeddableSuperTemplate; - } - - public ComboBoxAdapter<String> getQueryTemplate() { - return queryTemplate; - } - - public ComboBoxAdapter<String> getQuerySuperTemplate() { - return querySuperTemplate; - } - - public JCheckBox getOverwrite() { - return overwrite; - } - - public JCheckBox getPairs() { - return pairs; - } - - public JCheckBox getUsePackagePath() { - return usePackagePath; - } - - public TextAdapter getOutputPattern() { - return outputPattern; - } - - public JCheckBox getCreatePropertyNames() { - return createPropertyNames; - } - - public JCheckBox getPkProperties() { - return pkProperties; - } - - public TextAdapter getSuperPkg() { - return superPkg; - } -} diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorTabController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorTabController.java deleted file mode 100644 index 7f9b39dba..000000000 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorTabController.java +++ /dev/null @@ -1,106 +0,0 @@ -/***************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - ****************************************************************/ - -package org.apache.cayenne.modeler.editor.cgen; - -import org.apache.cayenne.gen.CgenConfiguration; -import org.apache.cayenne.modeler.util.CayenneController; -import org.apache.cayenne.pref.PreferenceDetail; - -import java.awt.Component; -import java.awt.Dimension; -import java.util.HashMap; -import java.util.Map; - -/** - * @since 4.1 - */ -public class GeneratorTabController extends CayenneController { - - private static final String STANDARD_OBJECTS_MODE = "Standard Persistent Objects"; - private static final String ADVANCED_MODE = "Advanced"; - - public static final String GENERATOR_PROPERTY = "generator"; - - private static final String[] GENERATION_MODES = new String[] { - STANDARD_OBJECTS_MODE, ADVANCED_MODE - }; - - protected GeneratorTabPanel view; - protected Map<String, GeneratorController> controllers; - protected PreferenceDetail preferences; - - public GeneratorTabController(CodeGeneratorController parent) { - super(parent); - this.controllers = new HashMap<>(3); - controllers.put(STANDARD_OBJECTS_MODE, new StandardModeController(parent)); - controllers.put(ADVANCED_MODE, new CustomModeController(parent)); - Component[] modePanels = new Component[GENERATION_MODES.length]; - for (int i = 0; i < GENERATION_MODES.length; i++) { - modePanels[i] = controllers.get(GENERATION_MODES[i]).getView(); - } - this.view = new GeneratorTabPanel(GENERATION_MODES, modePanels); - initBindings(); - view.setPreferredSize(new Dimension(550, 480)); - } - - public GeneratorTabPanel getView() { - return view; - } - - protected CodeGeneratorController getParentController() { - return (CodeGeneratorController) getParent(); - } - - public PreferenceDetail getPreferences() { - return preferences; - } - - protected void initBindings() { - view.getGenerationMode().addActionListener(action -> { - String name = (String)view.getGenerationMode().getSelectedItem(); - GeneratorController modeController = getGeneratorController(); - CgenConfiguration cgenConfiguration = getParentController().getCgenConfiguration(); - modeController.updateConfiguration(cgenConfiguration); - controllers.get(name).initForm(cgenConfiguration); - getParentController().getPrevGeneratorController().put(cgenConfiguration.getDataMap(), modeController); - }); - } - - public void setSelectedController(GeneratorController generatorController) { - for(String key : controllers.keySet()) { - if(generatorController.equals(controllers.get(key))) { - getView().getGenerationMode().setSelectedItem(key); - } - } - } - - GeneratorController getGeneratorController() { - String name = (String)view.getGenerationMode().getSelectedItem(); - return controllers.get(name); - } - - GeneratorController getStandartController() { - return controllers.get(STANDARD_OBJECTS_MODE); - } - - GeneratorController getCustomModeController() { - return controllers.get(ADVANCED_MODE); - } -} \ No newline at end of file diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/StandardModeController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/StandardModeController.java index ebf444d88..86ee80fd6 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/StandardModeController.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/StandardModeController.java @@ -21,7 +21,19 @@ package org.apache.cayenne.modeler.editor.cgen; import org.apache.cayenne.gen.CgenConfiguration; import org.apache.cayenne.gen.ClassGenerationAction; +import org.apache.cayenne.modeler.CodeTemplateManager; +import org.apache.cayenne.modeler.dialog.cgen.TemplateDialog; +import org.apache.cayenne.modeler.dialog.pref.PreferenceDialog; import org.apache.cayenne.modeler.pref.DataMapDefaults; +import org.apache.cayenne.swing.BindingBuilder; + +import javax.swing.DefaultComboBoxModel; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.function.Supplier; /** * @since 4.1 @@ -33,8 +45,55 @@ public class StandardModeController extends GeneratorController { public StandardModeController(CodeGeneratorController parent) { super(parent); + bind(); + initListeners(); + } + + private void bind() { + BindingBuilder builder = new BindingBuilder(getApplication().getBindingFactory(), this); + builder.bindToAction(view.getTemplateManagerButton(), "popPreferencesAction()"); + + } + + protected void initListeners() { + this.view.getPairs().addActionListener(val -> { + cgenConfiguration.setMakePairs(view.getPairs().isSelected()); + if (!view.getPairs().isSelected()) { + cgenConfiguration.setTemplate(ClassGenerationAction.SINGLE_CLASS_TEMPLATE); + cgenConfiguration.setEmbeddableTemplate(ClassGenerationAction.EMBEDDABLE_SINGLE_CLASS_TEMPLATE); + cgenConfiguration.setDataMapTemplate(ClassGenerationAction.DATAMAP_SINGLE_CLASS_TEMPLATE); + } else { + cgenConfiguration.setTemplate(ClassGenerationAction.SUBCLASS_TEMPLATE); + cgenConfiguration.setEmbeddableTemplate(ClassGenerationAction.EMBEDDABLE_SUBCLASS_TEMPLATE); + cgenConfiguration.setDataMapTemplate(ClassGenerationAction.DATAMAP_SUBCLASS_TEMPLATE); + } + initForm(cgenConfiguration); + getParentController().checkCgenConfigDirty(); + }); + + view.getOverwrite().addActionListener(val -> { + cgenConfiguration.setOverwrite(view.getOverwrite().isSelected()); + getParentController().checkCgenConfigDirty(); + }); + + view.getCreatePropertyNames().addActionListener(val -> { + cgenConfiguration.setCreatePropertyNames(view.getCreatePropertyNames().isSelected()); + getParentController().checkCgenConfigDirty(); + }); + + view.getUsePackagePath().addActionListener(val -> { + cgenConfiguration.setUsePkgPath(view.getUsePackagePath().isSelected()); + getParentController().checkCgenConfigDirty(); + }); + + view.getPkProperties().addActionListener(val -> { + cgenConfiguration.setCreatePKProperties(view.getPkProperties().isSelected()); + getParentController().checkCgenConfigDirty(); + }); + } + protected void createView() { this.view = new StandardModePanel(getParentController()); } @@ -49,4 +108,138 @@ public class StandardModeController extends GeneratorController { cgenConfiguration.setSuperTemplate(ClassGenerationAction.SUPERCLASS_TEMPLATE); } + + private void updateTemplates() { + + CodeTemplateManager templateManager = getApplication().getCodeTemplateManager(); + + List<String> customTemplates = new ArrayList<>(templateManager.getCustomTemplates().keySet()); + Collections.sort(customTemplates); + + List<String> superTemplates = new ArrayList<>(templateManager.getDefaultSuperclassTemplates()); + Collections.sort(superTemplates); + superTemplates.addAll(customTemplates); + + List<String> subTemplates = new ArrayList<>(templateManager.getDefaultSubclassTemplates()); + Collections.sort(subTemplates); + subTemplates.addAll(customTemplates); + + List<String> dataMapSuperTemplates = new ArrayList<>(templateManager.getDefaultDataMapSuperclassTemplates()); + Collections.sort(dataMapSuperTemplates); + dataMapSuperTemplates.addAll(customTemplates); + + List<String> dataMapTemplates = new ArrayList<>(templateManager.getDefaultDataMapTemplates()); + Collections.sort(dataMapTemplates); + dataMapTemplates.addAll(customTemplates); + + List<String> embeddableSuperTemplates = new ArrayList<>(templateManager.getDefaultEmbeddableSuperclassTemplates()); + Collections.sort(embeddableSuperTemplates); + embeddableSuperTemplates.addAll(customTemplates); + + List<String> embeddableTemplates = new ArrayList<>(templateManager.getDefaultEmbeddableTemplates()); + Collections.sort(embeddableTemplates); + embeddableTemplates.addAll(customTemplates); + + this.view.getSubclassTemplate().getComboBox().setModel(new DefaultComboBoxModel<>(subTemplates.toArray(new String[0]))); + this.view.getSuperclassTemplate().getComboBox().setModel(new DefaultComboBoxModel<>(superTemplates.toArray(new String[0]))); + this.view.getDataMapTemplate().getComboBox().setModel(new DefaultComboBoxModel<>(dataMapTemplates.toArray(new String[0]))); + this.view.getDataMapSuperTemplate().getComboBox().setModel(new DefaultComboBoxModel<>(dataMapSuperTemplates.toArray(new String[0]))); + this.view.getEmbeddableTemplate().getComboBox().setModel(new DefaultComboBoxModel<>(embeddableTemplates.toArray(new String[0]))); + this.view.getEmbeddableSuperTemplate().getComboBox().setModel(new DefaultComboBoxModel<>(embeddableSuperTemplates.toArray(new String[0]))); + } + + @SuppressWarnings("unused") + public void popPreferencesAction() { + new PreferenceDialog(getApplication().getFrameController()).startupAction(PreferenceDialog.TEMPLATES_KEY); + updateTemplates(); + updateComboBoxes(); + } + + private void missTemplateDialog(CgenConfiguration cgenConfiguration, String template, String superTemplate) { + new TemplateDialog(this, cgenConfiguration, template, superTemplate).startupAction(); + updateComboBoxes(); + } + + public void addTemplateAction(String template, String superTemplate) { + new PreferenceDialog(getApplication().getFrameController()).startupToCreateTemplate(template, superTemplate); + updateTemplates(); + } + + private String getTemplateName(Supplier<String> supplier, Path path) { + return getApplication().getCodeTemplateManager().getNameByPath( + supplier.get(), path); + } + + private String getPath(Supplier<String> supplier, Path rootPath) { + if (rootPath != null) { + return rootPath.resolve(Paths.get(supplier.get())).normalize().toString(); + } else { + return (Paths.get(supplier.get()).normalize().toString()); + } + } + + + private void updateComboBoxes() { + Path rootPath = cgenConfiguration.getRootPath(); + + String templateName = getTemplateName(cgenConfiguration::getTemplate, rootPath); + String superTemplateName = getTemplateName(cgenConfiguration::getSuperTemplate, rootPath); + String embeddableTemplateName = getTemplateName(cgenConfiguration::getEmbeddableTemplate, rootPath); + String embeddableSuperTemplateName = getTemplateName(cgenConfiguration::getEmbeddableSuperTemplate, rootPath); + String dataMapTemplateName = getTemplateName(cgenConfiguration::getDataMapTemplate, rootPath); + String dataMapSuperTemplateName = getTemplateName(cgenConfiguration::getDataMapSuperTemplate, rootPath); + + String path = getPath(cgenConfiguration::getTemplate, rootPath); + String superPath = getPath(cgenConfiguration::getSuperTemplate, rootPath); + String embeddableTemplatePath = getPath(cgenConfiguration::getEmbeddableTemplate, rootPath); + String embeddableSuperTemplatePath = getPath(cgenConfiguration::getEmbeddableSuperTemplate, rootPath); + String dataMapTemplatePath = getPath(cgenConfiguration::getDataMapTemplate, rootPath); + String dataMapSuperTemplatePath = getPath(cgenConfiguration::getDataMapSuperTemplate, rootPath); + + if (templateName == null && superTemplateName == null) { + view.getSubclassTemplate().setItem(null); + view.getSuperclassTemplate().setItem(null); + missTemplateDialog(cgenConfiguration, path, superPath); + } else if (templateName == null) { + view.getSubclassTemplate().setItem(null); + missTemplateDialog(cgenConfiguration, path, null); + } else if (superTemplateName == null) { + view.getSuperclassTemplate().setItem(null); + missTemplateDialog(cgenConfiguration, null, superPath); + } else { + view.getSubclassTemplate().setItem(templateName); + view.getSuperclassTemplate().setItem(superTemplateName); + } + + if(embeddableTemplateName == null && embeddableSuperTemplateName == null) { + missTemplateDialog(cgenConfiguration, embeddableTemplatePath, embeddableSuperTemplatePath); + } else if(embeddableTemplateName == null) { + missTemplateDialog(cgenConfiguration, embeddableTemplatePath, null); + } else if(embeddableSuperTemplateName == null) { + missTemplateDialog(cgenConfiguration, null, embeddableSuperTemplatePath); + } + view.getEmbeddableTemplate().setItem(embeddableTemplateName); + view.getEmbeddableSuperTemplate().setItem(embeddableSuperTemplateName); + + if(dataMapTemplateName == null && dataMapSuperTemplateName == null) { + missTemplateDialog(cgenConfiguration, dataMapTemplatePath, dataMapSuperTemplatePath); + } else if(dataMapTemplateName == null) { + missTemplateDialog(cgenConfiguration, dataMapTemplatePath, null); + } else if(dataMapSuperTemplateName == null) { + missTemplateDialog(cgenConfiguration, null, dataMapSuperTemplatePath); + } + view.getDataMapTemplate().setItem(dataMapTemplateName); + view.getDataMapSuperTemplate().setItem(dataMapSuperTemplateName); + + view.setDisableSuperComboBoxes(view.getPairs().isSelected()); + } + + @Override + public void initForm(CgenConfiguration cgenConfiguration) { + super.initForm(cgenConfiguration); + updateTemplates(); + view.getOutputPattern().setText(cgenConfiguration.getOutputPattern()); + updateComboBoxes(); + } + } diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/StandardModePanel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/StandardModePanel.java index f9cf04d51..e40ec3f8c 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/StandardModePanel.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/StandardModePanel.java @@ -19,27 +19,231 @@ package org.apache.cayenne.modeler.editor.cgen; -import com.jgoodies.forms.builder.DefaultFormBuilder; +import com.jgoodies.forms.builder.PanelBuilder; +import com.jgoodies.forms.layout.CellConstraints; import com.jgoodies.forms.layout.FormLayout; +import org.apache.cayenne.gen.CgenConfiguration; import org.apache.cayenne.modeler.Application; +import org.apache.cayenne.modeler.util.ComboBoxAdapter; +import org.apache.cayenne.modeler.util.TextAdapter; +import org.apache.cayenne.swing.components.JCayenneCheckBox; +import org.apache.cayenne.validation.ValidationException; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JComboBox; +import javax.swing.JTextField; import java.awt.BorderLayout; +import java.util.function.BiConsumer; /** * @since 4.1 */ public class StandardModePanel extends GeneratorControllerPanel { + private final JCheckBox pairs; + private final JCheckBox overwrite; + private final JCheckBox usePackagePath; + private final JCheckBox createPropertyNames; + private final JCheckBox pkProperties; + private TextAdapter superPkg; + protected TextAdapter outputPattern; + private ComboBoxAdapter<String> subclassTemplate; + private ComboBoxAdapter<String> superclassTemplate; + private ComboBoxAdapter<String> embeddableTemplate; + private ComboBoxAdapter<String> embeddableSuperTemplate; + private ComboBoxAdapter<String> dataMapTemplate; + private ComboBoxAdapter<String> dataMapSuperTemplate; + private JButton templateManagerButton; + + public StandardModePanel(CodeGeneratorController codeGeneratorController) { super(Application.getInstance().getFrameController().getProjectController(), codeGeneratorController); - FormLayout layout = new FormLayout( - "right:83dlu, 1dlu, fill:240:grow, 1dlu, left:100dlu, 100dlu", ""); + this.codeGeneratorController = codeGeneratorController; + this.pairs = new JCayenneCheckBox(); + this.overwrite = new JCayenneCheckBox(); + this.usePackagePath = new JCayenneCheckBox(); + this.createPropertyNames = new JCayenneCheckBox(); + this.pkProperties = new JCayenneCheckBox(); + this.templateManagerButton = new JButton("Templates manager"); + this.templateManagerButton.setFont(templateManagerButton.getFont().deriveFont(14f)); - DefaultFormBuilder builder = new DefaultFormBuilder(layout); - builder.append("Output Directory:", outputFolder.getComponent(), selectOutputFolder); - builder.nextLine(); + initTextFields(); + initTemplatesSelector(); + buildView(); + } + protected void buildView() { setLayout(new BorderLayout()); + CellConstraints cc = new CellConstraints(); + FormLayout layout = new FormLayout( + "left:10dlu,3dlu, 140dlu, 3dlu, 50dlu, 3dlu, 20dlu", + "p, 3dlu, p, 10dlu, 11*(p, 3dlu),10dlu,9*(p, 3dlu)"); + PanelBuilder builder = new PanelBuilder(layout); + builder.setDefaultDialogBorder(); + builder.addLabel("Output Directory", cc.xyw(1, 1, 3)); + builder.add(outputFolder.getComponent(), cc.xyw(1, 3, 6)); + builder.add(selectOutputFolder, cc.xy(7, 3)); + + // Advanced options panel + builder.addSeparator("Advanced options", cc.xyw(1, 7, 7 )); + + builder.add(pairs, cc.xy(1, 9)); + builder.addLabel("Make Pairs", cc.xy(3, 9)); + + builder.add(usePackagePath, cc.xy(1, 11)); + builder.addLabel("Use Package Path", cc.xy(3, 11)); + + builder.add(overwrite, cc.xy(1, 13)); + builder.addLabel("Overwrite Subclasses", cc.xy(3, 13)); + + builder.add(createPropertyNames, cc.xy(1, 15)); + builder.addLabel("Create Property Names", cc.xy(3, 15)); + + builder.add(pkProperties, cc.xy(1, 17)); + builder.addLabel("Create PK properties", cc.xy(3, 17)); + + builder.addLabel("Output Pattern", cc.xyw(1, 19, 3)); + builder.add(outputPattern.getComponent(), cc.xyw(1, 21, 3)); + + builder.addLabel("Superclass package", cc.xyw(1, 23, 3)); + builder.add(superPkg.getComponent(), cc.xyw(1, 25, 3)); + + //Templates options panel + builder.addSeparator("Templates options", cc.xyw(1, 28, 7 )); + + builder.add(subclassTemplate.getComboBox(), cc.xyw(1, 30,3)); + builder.addLabel("Subclass", cc.xyw(5, 30,3)); + + builder.add(superclassTemplate.getComboBox(), cc.xyw(1, 32,3)); + builder.addLabel("Superclass", cc.xyw(5, 32,3)); + + builder.add(embeddableTemplate.getComboBox(), cc.xyw(1, 34,3)); + builder.addLabel("Embeddable", cc.xyw(5, 34,3)); + + builder.add(embeddableSuperTemplate.getComboBox(), cc.xyw(1, 36,3)); + builder.addLabel("Embeddable Superclass", cc.xyw(5, 36,3)); + + builder.add(dataMapTemplate.getComboBox(), cc.xyw(1, 38,3)); + builder.addLabel("DataMap", cc.xyw(5, 38,3)); + + builder.add(dataMapSuperTemplate.getComboBox(), cc.xyw(1, 40,3)); + builder.addLabel("DataMap Superclass", cc.xyw(5, 40,3)); + + builder.add(templateManagerButton, cc.xyw(1, 44,3)); + add(builder.getPanel(), BorderLayout.CENTER); } + + private void initTextFields(){ + JTextField superPkgField = new JTextField(); + this.superPkg = new TextAdapter(superPkgField) { + @Override + protected void updateModel(String text) throws ValidationException { + getCgenConfig().setSuperPkg(text); + checkConfigDirty(); + } + }; + + JTextField outputPatternField = new JTextField(); + this.outputPattern = new TextAdapter(outputPatternField) { + protected void updateModel(String text) { + getCgenConfig().setOutputPattern(text); + checkConfigDirty(); + } + }; + } + + private void initTemplatesSelector() { + JComboBox<String> subclassField = new JComboBox<>(); + this.subclassTemplate = new StringComboBoxAdapter(subclassField, CgenConfiguration::setTemplate); + JComboBox<String> superclassField = new JComboBox<>(); + this.superclassTemplate = new StringComboBoxAdapter(superclassField, CgenConfiguration::setSuperTemplate); + JComboBox<String> embeddableField = new JComboBox<>(); + this.embeddableTemplate = new StringComboBoxAdapter(embeddableField, CgenConfiguration::setEmbeddableTemplate); + JComboBox<String> embeddableSuperField = new JComboBox<>(); + this.embeddableSuperTemplate = new StringComboBoxAdapter(embeddableSuperField, CgenConfiguration::setEmbeddableSuperTemplate); + JComboBox<String> queryField = new JComboBox<>(); + this.dataMapTemplate = new StringComboBoxAdapter(queryField, CgenConfiguration::setDataMapTemplate); + JComboBox<String> querySuper = new JComboBox<>(); + this.dataMapSuperTemplate = new StringComboBoxAdapter(querySuper, CgenConfiguration::setDataMapSuperTemplate); + } + + class StringComboBoxAdapter extends ComboBoxAdapter<String> { + private final BiConsumer<CgenConfiguration, String> setTemplate; + + public StringComboBoxAdapter(JComboBox<String> subclassField, BiConsumer<CgenConfiguration, String> setter) { + super(subclassField); + this.setTemplate = setter; + } + + @Override + protected void updateModel(String item) throws ValidationException { + CgenConfiguration cgenConfiguration = getCgenConfig(); + String templatePath = Application.getInstance() + .getCodeTemplateManager() + .getTemplatePath(item, cgenConfiguration.getDataMap().getConfigurationSource()); + setTemplate.accept(cgenConfiguration, templatePath); + checkConfigDirty(); + } + } + + public void setDisableSuperComboBoxes(boolean val) { + superclassTemplate.getComboBox().setEnabled(val); + embeddableSuperTemplate.getComboBox().setEnabled(val); + dataMapSuperTemplate.getComboBox().setEnabled(val); + } + + public JCheckBox getPairs() { + return pairs; + } + + public JCheckBox getOverwrite() { + return overwrite; + } + + public JCheckBox getUsePackagePath() { + return usePackagePath; + } + + public JCheckBox getCreatePropertyNames() { + return createPropertyNames; + } + + public JCheckBox getPkProperties() { + return pkProperties; + } + + public TextAdapter getOutputPattern() { + return outputPattern; + } + + public JButton getTemplateManagerButton() { + return templateManagerButton; + } + + public ComboBoxAdapter<String> getSubclassTemplate() { + return subclassTemplate; + } + + public ComboBoxAdapter<String> getSuperclassTemplate() { + return superclassTemplate; + } + + public ComboBoxAdapter<String> getEmbeddableTemplate() { + return embeddableTemplate; + } + + public ComboBoxAdapter<String> getEmbeddableSuperTemplate() { + return embeddableSuperTemplate; + } + + public ComboBoxAdapter<String> getDataMapTemplate() { + return dataMapTemplate; + } + + public ComboBoxAdapter<String> getDataMapSuperTemplate() { + return dataMapSuperTemplate; + } + } \ No newline at end of file