Add dialog to create missing templates or using default.

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

Branch: refs/heads/master
Commit: 397d29fa98d1c74ac37732b9243d5cc1366fd98e
Parents: c813e76
Author: Arseni Bulatski <ancars...@gmail.com>
Authored: Tue Nov 13 16:27:56 2018 +0300
Committer: Arseni Bulatski <ancars...@gmail.com>
Committed: Tue Nov 13 16:27:56 2018 +0300

----------------------------------------------------------------------
 .../cayenne/modeler/CodeTemplateManager.java    |  12 +-
 .../modeler/dialog/cgen/TemplateDialog.java     |  87 ++++++++++++
 .../modeler/dialog/cgen/TemplateDialogView.java | 136 +++++++++++++++++++
 .../modeler/dialog/pref/PreferenceDialog.java   |  18 ++-
 .../dialog/pref/TemplatePreferences.java        |  37 +++--
 .../editor/cgen/CustomModeController.java       |  44 ++++--
 .../modeler/editor/cgen/CustomModePanel.java    |  17 +--
 7 files changed, 308 insertions(+), 43 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/397d29fa/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 ccb4980..7579d5d 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
@@ -25,6 +25,8 @@ import org.apache.cayenne.modeler.pref.FSPath;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -155,9 +157,10 @@ public class CodeTemplateManager {
        // TODO: andrus, 12/5/2007 - this should also take a "pairs" parameter 
to
        // correctly
        // assign standard templates
-       public String getTemplatePath(String name) {
+       public String getTemplatePath(String name, Path rootPath) {
                Object value = customTemplates.get(name);
                if (value != null) {
+                       value = rootPath.relativize(Paths.get((String)value));
                        return value.toString();
                }
 
@@ -165,9 +168,10 @@ public class CodeTemplateManager {
                return value != null ? value.toString() : null;
        }
 
-       public String getNameByPath(String name) {
-               if(reverseCustomTemplate.containsKey(name)){
-                       return reverseCustomTemplate.get(name);
+       public String getNameByPath(String name, Path rootPath) {
+               String fullPath = rootPath.resolve(Paths.get(name)).toString();
+               if(reverseCustomTemplate.containsKey(fullPath)){
+                       return reverseCustomTemplate.get(fullPath);
                } else {
                        Object value = reverseStandartTemplates.get(name);
                        return value != null ? value.toString() : null;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/397d29fa/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/cgen/TemplateDialog.java
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..bd81368
--- /dev/null
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/cgen/TemplateDialog.java
@@ -0,0 +1,87 @@
+/*****************************************************************
+ *   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
+ *
+ *    http://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.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.util.CayenneController;
+
+import javax.swing.JDialog;
+import javax.swing.SwingUtilities;
+import java.awt.Component;
+import java.awt.Dialog;
+import java.awt.Frame;
+import java.awt.Window;
+
+/**
+ * @since 4.1
+ */
+public class TemplateDialog extends CayenneController {
+
+    protected TemplateDialogView view;
+    private CgenConfiguration cgenConfiguration;
+    private String template;
+    private String superTemplate;
+
+    public TemplateDialog(final CayenneController parent, CgenConfiguration 
cgenConfiguration, String template, String superTemplate) {
+        super(parent);
+        this.cgenConfiguration = cgenConfiguration;
+        this.template = template;
+        this.superTemplate = superTemplate;
+        final Window parentView = parent.getView() instanceof Window
+                ? (Window) parent.getView()
+                : SwingUtilities.getWindowAncestor(parent.getView());
+        this.view = (parentView instanceof Dialog)
+                ? new TemplateDialogView((Dialog) parentView, template, 
superTemplate)
+                : new TemplateDialogView((Frame) parentView, template, 
superTemplate);
+        initListeners();
+    }
+
+    public void startupAction() {
+        view.pack();
+        // show
+        centerView();
+        makeCloseableOnEscape();
+        view.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
+        view.setModal(true);
+        view.setVisible(true);
+    }
+
+    @Override
+    public Component getView() {
+        return view;
+    }
+
+    private void initListeners() {
+        view.getUseDefault().addActionListener(action -> {
+            if(template != null) {
+                
cgenConfiguration.setTemplate(ClassGenerationAction.SUBCLASS_TEMPLATE);
+            }
+            if(superTemplate != null) {
+                
cgenConfiguration.setSuperTemplate(ClassGenerationAction.SUPERCLASS_TEMPLATE);
+            }
+            view.dispose();
+        });
+        view.getAddTemplate().addActionListener(action -> {
+            ((CustomModeController)parent).addTemplateAction(template, 
superTemplate);
+            view.dispose();
+        });
+    }
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/397d29fa/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/cgen/TemplateDialogView.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/cgen/TemplateDialogView.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/cgen/TemplateDialogView.java
new file mode 100644
index 0000000..48a80f9
--- /dev/null
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/cgen/TemplateDialogView.java
@@ -0,0 +1,136 @@
+/*****************************************************************
+ *   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
+ *
+ *    http://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.dialog.cgen;
+
+import com.jgoodies.forms.builder.PanelBuilder;
+import com.jgoodies.forms.layout.CellConstraints;
+import com.jgoodies.forms.layout.FormLayout;
+import org.apache.cayenne.modeler.util.CayenneDialog;
+
+import javax.swing.JButton;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.table.AbstractTableModel;
+import java.awt.BorderLayout;
+import java.awt.Dialog;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.Frame;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @since 4.1
+ */
+public class TemplateDialogView extends CayenneDialog {
+
+    private JTable pathTable;
+    private JButton useDefault;
+    private JButton addTemplate;
+    private List<String> missingPathes;
+
+    public TemplateDialogView(Dialog parent, String templatePath, String 
superTemplatePath) {
+        super(parent);
+        initPathes(templatePath, superTemplatePath);
+        init();
+    }
+
+    public TemplateDialogView(Frame parent, String templatePath, String 
superTemplatePath) {
+        super(parent);
+        initPathes(templatePath, superTemplatePath);
+        init();
+    }
+
+    private void initPathes(String templatePath, String superTemplatePath) {
+        this.missingPathes = new ArrayList<>();
+        if(templatePath != null) {
+            missingPathes.add(templatePath);
+        }
+        if(superTemplatePath != null) {
+            missingPathes.add(superTemplatePath);
+        }
+    }
+
+    private void init() {
+        useDefault = new JButton("Use default");
+        addTemplate = new JButton("Add template");
+
+        pathTable = new JTable();
+        pathTable.setRowHeight(25);
+        pathTable.setRowMargin(3);
+        pathTable.setCellSelectionEnabled(false);
+
+
+        // assemble
+        CellConstraints cc = new CellConstraints();
+        PanelBuilder builder = new PanelBuilder(new 
FormLayout("fill:200dlu:grow", "pref, 3dlu, fill:40dlu:grow"));
+
+        builder.setDefaultDialogBorder();
+
+        builder.addLabel("This templates are missing: ", cc.xy(1, 1));
+        builder.add(new JScrollPane(pathTable), cc.xy(1, 3));
+
+        JPanel buttons = new JPanel(new FlowLayout(FlowLayout.RIGHT));
+        buttons.add(useDefault);
+        buttons.add(addTemplate);
+
+        getContentPane().setLayout(new BorderLayout());
+        getContentPane().add(builder.getPanel(), BorderLayout.CENTER);
+        getContentPane().add(buttons, BorderLayout.SOUTH);
+        pathTable.setModel(new MissingPathTableModel());
+
+        setPreferredSize(new Dimension(450, 350));
+    }
+
+    public JButton getUseDefault() {
+        return useDefault;
+    }
+
+    public JButton getAddTemplate() {
+        return addTemplate;
+    }
+
+    class MissingPathTableModel extends AbstractTableModel {
+
+        public int getRowCount() {
+            return missingPathes.size();
+        }
+
+        public int getColumnCount() {
+            return 1;
+        }
+
+        public Object getValueAt(int row, int col) {
+            return missingPathes.get(row);
+        }
+
+        public boolean isCellEditable(int row, int col) {
+            return false;
+        }
+
+        public String getColumnName(int column) {
+            return " ";
+        }
+
+        public Class getColumnClass(int columnIndex) {
+            return String.class;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/397d29fa/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/PreferenceDialog.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/PreferenceDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/PreferenceDialog.java
index 2e2ab38..677cc5e 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/PreferenceDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/PreferenceDialog.java
@@ -19,6 +19,12 @@
 
 package org.apache.cayenne.modeler.dialog.pref;
 
+import org.apache.cayenne.modeler.util.CayenneController;
+import org.apache.cayenne.pref.PreferenceEditor;
+
+import javax.swing.JDialog;
+import javax.swing.JList;
+import javax.swing.SwingUtilities;
 import java.awt.Component;
 import java.awt.Dialog;
 import java.awt.Frame;
@@ -26,13 +32,6 @@ import java.awt.Window;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.swing.JDialog;
-import javax.swing.JList;
-import javax.swing.SwingUtilities;
-
-import org.apache.cayenne.modeler.util.CayenneController;
-import org.apache.cayenne.pref.PreferenceEditor;
-
 /**
  * A controller for editing Modeler preferences.
  * 
@@ -133,6 +132,11 @@ public class PreferenceDialog extends CayenneController {
         view.setVisible(true);
     }
 
+    public void startupToCreateTemplate(String template, String superTemplate) 
{
+        configure();
+        ((TemplatePreferences) 
detailControllers.get(TEMPLATES_KEY)).addTemplateAction(template, 
superTemplate);
+    }
+
     protected void configure() {
         // init known panels
         registerPanel(GENERAL_KEY, new GeneralPreferences(this));

http://git-wip-us.apache.org/repos/asf/cayenne/blob/397d29fa/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TemplatePreferences.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TemplatePreferences.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TemplatePreferences.java
index e76aa5c..1b29183 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TemplatePreferences.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TemplatePreferences.java
@@ -19,14 +19,6 @@
 
 package org.apache.cayenne.modeler.dialog.pref;
 
-import java.awt.Component;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.prefs.BackingStoreException;
-import java.util.prefs.Preferences;
-
-import javax.swing.table.AbstractTableModel;
-
 import org.apache.cayenne.modeler.CodeTemplateManager;
 import org.apache.cayenne.modeler.pref.FSPath;
 import org.apache.cayenne.modeler.util.CayenneController;
@@ -38,6 +30,14 @@ import org.apache.cayenne.swing.TableBindingBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import javax.swing.table.AbstractTableModel;
+import java.awt.Component;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.prefs.BackingStoreException;
+import java.util.prefs.Preferences;
+
 public class TemplatePreferences extends CayenneController {
 
     protected TemplatePreferencesView view;
@@ -120,9 +120,28 @@ public class TemplatePreferences extends CayenneController 
{
     }
 
     public void addTemplateAction() {
-
         FSPath path = new TemplateCreator(this).startupAction();
+        addToTemplateEntries(path);
+    }
+
+    void addTemplateAction(String templatePath, String superTemplatePath) {
+        if(templatePath != null) {
+            createTemplate(templatePath);
+        }
+        if(superTemplatePath != null) {
+            createTemplate(superTemplatePath);
+        }
+    }
+
+    private void createTemplate(String templatePath) {
+        TemplateCreator templateCreator = new TemplateCreator(this);
+        TemplateCreatorView creatorView = 
(TemplateCreatorView)templateCreator.getView();
+        
creatorView.getTemplateChooser().setFile(Paths.get(templatePath).toFile());
+        FSPath path = templateCreator.startupAction();
+        addToTemplateEntries(path);
+    }
 
+    private void addToTemplateEntries(FSPath path) {
         if (path != null) {
             int len = templateEntries.size();
             templateEntries.add(path);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/397d29fa/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModeController.java
----------------------------------------------------------------------
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
index c591584..a6be13b 100644
--- 
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
@@ -22,12 +22,12 @@ 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.swing.BindingBuilder;
 
-import javax.swing.*;
-import java.awt.*;
-import java.nio.file.Path;
+import javax.swing.DefaultComboBoxModel;
+import java.awt.Component;
 import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -82,22 +82,44 @@ public class CustomModeController extends 
GeneratorController {
         return view;
     }
 
+    public void missTemplateDialog(CgenConfiguration cgenConfiguration, String 
template, String superTemplate) {
+        new TemplateDialog(this, cgenConfiguration, template, 
superTemplate).startupAction();
+        updateComboBoxes();
+    }
+
     public void popPreferencesAction() {
         new 
PreferenceDialog(getApplication().getFrameController()).startupAction(PreferenceDialog.TEMPLATES_KEY);
         updateTemplates();
         updateComboBoxes();
     }
 
-    private void updateComboBoxes() {
-        
view.getSubclassTemplate().setItem(getApplication().getCodeTemplateManager().getNameByPath(
-                getAbsoluteTemplatePath(cgenConfiguration.getTemplate(), 
cgenConfiguration.getRootPath())));
-        
view.getSuperclassTemplate().setItem(getApplication().getCodeTemplateManager().getNameByPath(
-                getAbsoluteTemplatePath(cgenConfiguration.getSuperTemplate(), 
cgenConfiguration.getRootPath())));
-        view.setDisableSuperComboBoxes(view.getPairs().isSelected());
+    public void addTemplateAction(String template, String superTemplate) {
+        new 
PreferenceDialog(getApplication().getFrameController()).startupToCreateTemplate(template,
 superTemplate);
+        updateTemplates();
     }
 
-    private String getAbsoluteTemplatePath(String relTemplatePath, Path 
rootPath) {
-        return rootPath.resolve(Paths.get(relTemplatePath)).toString();
+    private void updateComboBoxes() {
+        String templateName = 
getApplication().getCodeTemplateManager().getNameByPath(
+                cgenConfiguration.getTemplate(), 
cgenConfiguration.getRootPath());
+        String superTemplateName = 
getApplication().getCodeTemplateManager().getNameByPath(
+                cgenConfiguration.getSuperTemplate(), 
cgenConfiguration.getRootPath());
+        String path = 
cgenConfiguration.getRootPath().resolve(Paths.get(cgenConfiguration.getTemplate())).toString();
+        String superPath = 
cgenConfiguration.getRootPath().resolve(Paths.get(cgenConfiguration.getSuperTemplate())).toString();
+        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);
+        }
+        view.setDisableSuperComboBoxes(view.getPairs().isSelected());
     }
 
     private void initListeners(){

http://git-wip-us.apache.org/repos/asf/cayenne/blob/397d29fa/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CustomModePanel.java
----------------------------------------------------------------------
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
index 16c8edf..ea5f1ce 100644
--- 
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
@@ -27,13 +27,10 @@ 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.swing.control.ActionLink;
 import org.apache.cayenne.validation.ValidationException;
 
 import javax.swing.*;
 import java.awt.*;
-import java.nio.file.Path;
-import java.nio.file.Paths;
 
 /**
  * @since 4.1
@@ -49,7 +46,7 @@ public class CustomModePanel extends GeneratorControllerPanel 
{
     private JCheckBox createPropertyNames;
     private JCheckBox pkProperties;
 
-    private ActionLink manageTemplatesLink;
+    private JButton manageTemplatesLink;
 
     CustomModePanel(ProjectController projectController, 
CodeGeneratorControllerBase codeGeneratorControllerBase) {
         super(projectController, codeGeneratorControllerBase);
@@ -58,7 +55,7 @@ public class CustomModePanel extends GeneratorControllerPanel 
{
             @Override
             protected void updateModel(String item) throws ValidationException 
{
                 CgenConfiguration cgenConfiguration = getCgenByDataMap();
-                
cgenConfiguration.setSuperTemplate(getTemplatePath(cgenConfiguration.getRootPath(),
 item));
+                
cgenConfiguration.setSuperTemplate(Application.getInstance().getCodeTemplateManager().getTemplatePath(item,
 cgenConfiguration.getRootPath()));
                 if(!codeGeneratorControllerBase.isInitFromModel()) {
                     projectController.setDirty(true);
                 }
@@ -70,7 +67,7 @@ public class CustomModePanel extends GeneratorControllerPanel 
{
             @Override
             protected void updateModel(String item) throws ValidationException 
{
                 CgenConfiguration cgenConfiguration = getCgenByDataMap();
-                
cgenConfiguration.setTemplate(getTemplatePath(cgenConfiguration.getRootPath(), 
item));
+                
cgenConfiguration.setTemplate(Application.getInstance().getCodeTemplateManager().getTemplatePath(item,
 cgenConfiguration.getRootPath()));
                 if(!codeGeneratorControllerBase.isInitFromModel()) {
                     projectController.setDirty(true);
                 }
@@ -93,7 +90,7 @@ public class CustomModePanel extends GeneratorControllerPanel 
{
 
         this.createPropertyNames = new JCayenneCheckBox();
         this.pkProperties = new JCayenneCheckBox();
-        this.manageTemplatesLink = new ActionLink("Customize Templates...");
+        this.manageTemplatesLink = new JButton("Customize Templates...");
         
this.manageTemplatesLink.setFont(manageTemplatesLink.getFont().deriveFont(10f));
 
         pairs.addChangeListener(e -> {
@@ -144,15 +141,11 @@ public class CustomModePanel extends 
GeneratorControllerPanel {
         add(builder.getPanel(), BorderLayout.CENTER);
     }
 
-    private String getTemplatePath(Path rootPath, String templatePath) {
-        return 
rootPath.relativize(Paths.get(Application.getInstance().getCodeTemplateManager().getTemplatePath(String.valueOf(templatePath)))).toString();
-    }
-
     public void setDisableSuperComboBoxes(boolean val){
         superclassTemplate.getComboBox().setEnabled(val);
     }
 
-    public ActionLink getManageTemplatesLink() {
+    public JButton getManageTemplatesLink() {
         return manageTemplatesLink;
     }
 

Reply via email to