Implement the freemarker scripting support for creating new JSP objects. webapi_public_112441_trunk_merge_2
authorpotingwu@netbeans.org
Mon, 10 Sep 2007 22:09:32 +0000
changeset 15045c93c12c9b1a
parent 1503 ebde0ef194e5
child 1505 7ec7708b6a71
Implement the freemarker scripting support for creating new JSP objects.
visualweb.project.jsf/src/org/netbeans/modules/visualweb/project/jsf/api/ProjectTemplate.java
visualweb.project.jsf/src/org/netbeans/modules/visualweb/project/jsf/resources/layer.xml
visualweb.project.jsf/src/org/netbeans/modules/visualweb/project/jsf/resources/templates/Page.jsp.template
visualweb.project.jsf/src/org/netbeans/modules/visualweb/project/jsf/resources/templates/PageFragment.jspf.template
visualweb.project.jsf/src/org/netbeans/modules/visualweb/project/jsf/ui/PageIterator.java
     1.1 --- a/visualweb.project.jsf/src/org/netbeans/modules/visualweb/project/jsf/api/ProjectTemplate.java	Mon Sep 10 21:29:25 2007 +0000
     1.2 +++ b/visualweb.project.jsf/src/org/netbeans/modules/visualweb/project/jsf/api/ProjectTemplate.java	Mon Sep 10 22:09:32 2007 +0000
     1.3 @@ -25,6 +25,7 @@
     1.4  import java.net.URL;
     1.5  import java.util.Enumeration;
     1.6  import java.util.Properties;
     1.7 +import java.util.Map;
     1.8  import org.netbeans.api.project.Project;
     1.9  import org.openide.ErrorManager;
    1.10  import org.openide.filesystems.FileObject;
    1.11 @@ -52,7 +53,7 @@
    1.12  
    1.13      public abstract void instantiateFile(Project project, Node node, FileObject folder, String j2eeLevel, String pageName) throws IOException;
    1.14  
    1.15 -    protected FileObject instantiateFileTemplate(FileObject folder, String name, String templateName) throws IOException {
    1.16 +    protected FileObject instantiateFileTemplate(FileObject folder, String name, String templateName, Map<String, String> parameters) throws IOException {
    1.17          FileSystem fs = Repository.getDefault().getDefaultFileSystem();
    1.18          FileObject FO = fs.findResource(templateName);
    1.19          if (FO == null) {
    1.20 @@ -76,7 +77,11 @@
    1.21              name = name.substring(0, name.lastIndexOf(ext) - 1);
    1.22          DataObject newDO = null;
    1.23          try {
    1.24 -            newDO = template.createFromTemplate(folderDataObj, name);
    1.25 +            if (parameters != null) {
    1.26 +                newDO = template.createFromTemplate(folderDataObj, name, parameters);
    1.27 +            } else {
    1.28 +                newDO = template.createFromTemplate(folderDataObj, name);
    1.29 +            }
    1.30          } catch (Exception e) {
    1.31              ErrorManager.getDefault().notify(e);
    1.32          }
     2.1 --- a/visualweb.project.jsf/src/org/netbeans/modules/visualweb/project/jsf/resources/layer.xml	Mon Sep 10 21:29:25 2007 +0000
     2.2 +++ b/visualweb.project.jsf/src/org/netbeans/modules/visualweb/project/jsf/resources/layer.xml	Mon Sep 10 22:09:32 2007 +0000
     2.3 @@ -64,6 +64,7 @@
     2.4                  <attr name="templateCategory" stringvalue="web-types"/>
     2.5                  <attr name="templateWizardIterator" methodvalue="org.netbeans.modules.visualweb.project.jsf.ui.PageIterator.createWebFormIterator"/>
     2.6                  <attr name="templateWizardURL" urlvalue="nbresloc:/org/netbeans/modules/visualweb/project/jsf/resources/templates/descriptions/WebFormTemplateHelp.html"/>
     2.7 +                <attr name="javax.script.ScriptEngine" stringvalue="freemarker"/>
     2.8              </file>
     2.9              <file name="Page.java" url="/org/netbeans/modules/visualweb/project/jsf/resources/templates/Page.java.template">
    2.10                  <attr name="SystemFileSystem.localizingBundle" stringvalue="org.netbeans.modules.visualweb.project.jsf.resources.Bundle"/>
    2.11 @@ -79,6 +80,7 @@
    2.12                  <attr name="templateCategory" stringvalue="web-types"/>
    2.13                  <attr name="templateWizardIterator" methodvalue="org.netbeans.modules.visualweb.project.jsf.ui.PageIterator.createWebFormIterator"/>
    2.14                  <attr name="templateWizardURL" urlvalue="nbresloc:/org/netbeans/modules/visualweb/project/jsf/resources/templates/descriptions/WebFormTemplateHelp.html"/>
    2.15 +                <attr name="javax.script.ScriptEngine" stringvalue="freemarker"/>
    2.16              </file>
    2.17              <file name="PageFragment.java" url="/org/netbeans/modules/visualweb/project/jsf/resources/templates/PageFragment.java.template">
    2.18                  <attr name="SystemFileSystem.localizingBundle" stringvalue="org.netbeans.modules.visualweb.project.jsf.resources.Bundle"/>
    2.19 @@ -141,6 +143,7 @@
    2.20                  <attr name="templateCategory" stringvalue="rave-page_1.5"/>
    2.21                  <attr name="templateWizardIterator" methodvalue="org.netbeans.modules.visualweb.project.jsf.ui.PageIterator.createWebFormIterator"/>
    2.22                  <attr name="templateWizardURL" urlvalue="nbresloc:/org/netbeans/modules/visualweb/project/jsf/resources/templates/descriptions/WebFormTemplateHelp.html"/>
    2.23 +                <attr name="javax.script.ScriptEngine" stringvalue="freemarker"/>
    2.24              </file>
    2.25              <file name="Page.java" url="/org/netbeans/modules/visualweb/project/jsf/resources/templates/1_5/Page.java.template">
    2.26                  <attr name="SystemFileSystem.localizingBundle" stringvalue="org.netbeans.modules.visualweb.project.jsf.resources.Bundle"/>
    2.27 @@ -156,6 +159,7 @@
    2.28                  <attr name="templateCategory" stringvalue="rave-page_1.5"/>
    2.29                  <attr name="templateWizardIterator" methodvalue="org.netbeans.modules.visualweb.project.jsf.ui.PageIterator.createWebFormIterator"/>
    2.30                  <attr name="templateWizardURL" urlvalue="nbresloc:/org/netbeans/modules/visualweb/project/jsf/resources/templates/descriptions/WebFormTemplateHelp.html"/>
    2.31 +                <attr name="javax.script.ScriptEngine" stringvalue="freemarker"/>
    2.32              </file>
    2.33              <file name="PageFragment.java" url="/org/netbeans/modules/visualweb/project/jsf/resources/templates/1_5/PageFragment.java.template">
    2.34                  <attr name="SystemFileSystem.localizingBundle" stringvalue="org.netbeans.modules.visualweb.project.jsf.resources.Bundle"/>
     3.1 --- a/visualweb.project.jsf/src/org/netbeans/modules/visualweb/project/jsf/resources/templates/Page.jsp.template	Mon Sep 10 21:29:25 2007 +0000
     3.2 +++ b/visualweb.project.jsf/src/org/netbeans/modules/visualweb/project/jsf/resources/templates/Page.jsp.template	Mon Sep 10 22:09:32 2007 +0000
     3.3 @@ -1,14 +1,15 @@
     3.4 +<#assign pound = '#'>
     3.5  <?xml version="1.0" encoding="UTF-8"?>
     3.6  <jsp:root version="1.2" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:ui="http://www.sun.com/web/ui">
     3.7      <jsp:directive.page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"/>
     3.8      <f:view>
     3.9 -        <ui:page binding="#{__NAME__.page1}" id="page1">
    3.10 -            <ui:html binding="#{__NAME__.html1}" id="html1">
    3.11 -                <ui:head binding="#{__NAME__.head1}" id="head1">
    3.12 -                    <ui:link binding="#{__NAME__.link1}" id="link1" url="/resources/stylesheet.css"/>
    3.13 +        <ui:page binding="${pound}{${folder}${name}.page1}" id="page1">
    3.14 +            <ui:html binding="${pound}{${folder}${name}.html1}" id="html1">
    3.15 +                <ui:head binding="${pound}{${folder}${name}.head1}" id="head1">
    3.16 +                    <ui:link binding="${pound}{${folder}${name}.link1}" id="link1" url="/resources/stylesheet.css"/>
    3.17                  </ui:head>
    3.18 -                <ui:body binding="#{__NAME__.body1}" id="body1" style="-rave-layout: grid">
    3.19 -                    <ui:form binding="#{__NAME__.form1}" id="form1">
    3.20 +                <ui:body binding="${pound}{${folder}${name}.body1}" id="body1" style="-rave-layout: grid">
    3.21 +                    <ui:form binding="${pound}{${folder}${name}.form1}" id="form1">
    3.22                      </ui:form>
    3.23                  </ui:body>
    3.24              </ui:html>
     4.1 --- a/visualweb.project.jsf/src/org/netbeans/modules/visualweb/project/jsf/resources/templates/PageFragment.jspf.template	Mon Sep 10 21:29:25 2007 +0000
     4.2 +++ b/visualweb.project.jsf/src/org/netbeans/modules/visualweb/project/jsf/resources/templates/PageFragment.jspf.template	Mon Sep 10 22:09:32 2007 +0000
     4.3 @@ -1,5 +1,5 @@
     4.4  <?xml version="1.0"?>
     4.5  <div style="-rave-layout: grid; width: 400px; height: 200px" xmlns:f="http://java.sun.com/jsf/core" >
     4.6 -  <f:subview id="__NAME__">
     4.7 +  <f:subview id="${name}">
     4.8    </f:subview>
     4.9  </div>
     5.1 --- a/visualweb.project.jsf/src/org/netbeans/modules/visualweb/project/jsf/ui/PageIterator.java	Mon Sep 10 21:29:25 2007 +0000
     5.2 +++ b/visualweb.project.jsf/src/org/netbeans/modules/visualweb/project/jsf/ui/PageIterator.java	Mon Sep 10 22:09:32 2007 +0000
     5.3 @@ -34,6 +34,7 @@
     5.4  import java.util.NoSuchElementException;
     5.5  import java.util.Set;
     5.6  import java.util.List;
     5.7 +import java.util.HashMap;
     5.8  import javax.swing.JComponent;
     5.9  import javax.swing.event.ChangeListener;
    5.10  
    5.11 @@ -186,7 +187,7 @@
    5.12  
    5.13          // Java EE 5 / JSF 1.2 project needs different template
    5.14          if (J2eeModule.JAVA_EE_5.equals(JsfProjectUtils.getJ2eePlatformVersion(project))) {
    5.15 -            String name = "Templates/Jsf12Apps/" + template.getName() + "." + template.getExt();
    5.16 +            String name = "Templates/Jsf12Apps/" + template.getNameExt(); // NOI18N
    5.17              FileObject fo = Repository.getDefault().getDefaultFileSystem().findResource(name);
    5.18              if (fo != null) {
    5.19                  template = fo;
    5.20 @@ -235,7 +236,26 @@
    5.21                  // Default name.
    5.22                  obj = dTemplate.createFromTemplate(df);
    5.23              } else {
    5.24 -                obj = dTemplate.createFromTemplate(df, targetName);
    5.25 +                if ("Page.jsp".equals(template.getNameExt())) { // NOI18N
    5.26 +                    HashMap<String, String> templateParameters = new HashMap<String, String>();
    5.27 +                    FileObject webDocbase = JsfProjectUtils.getDocumentRoot(project);
    5.28 +                    String folder;
    5.29 +                    if (dir == webDocbase) {
    5.30 +                        folder = "";
    5.31 +                    } else {
    5.32 +                        folder = FileUtil.getRelativePath(webDocbase, dir);
    5.33 +                        if (folder == null) {
    5.34 +                            folder = "";
    5.35 +                        } else {
    5.36 +                            folder = folder.replace('/', '$') + "$";
    5.37 +                        }
    5.38 +                    }
    5.39 +                    templateParameters.put("folder", folder); //NOI18N
    5.40 +
    5.41 +                    obj = dTemplate.createFromTemplate(df, targetName, templateParameters);
    5.42 +                } else {
    5.43 +                    obj = dTemplate.createFromTemplate(df, targetName);
    5.44 +                }
    5.45              }
    5.46          } catch(org.netbeans.modules.visualweb.project.jsf.api.JsfDataObjectException jsfe) {
    5.47              DialogDisplayer.getDefault().notify(new NotifyDescriptor.Message(