| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | |
| <html xmlns="http://www.w3.org/1999/xhtml"> | |
| <head> | |
| <!-- -*- xhtml -*- --> | |
| <title>NetBeans File Template Module Tutorial for NetBeans Platform 7.1</title> | |
| <link rel="stylesheet" type="text/css" href="https://netbeans.org/netbeans.css"/> | |
| <meta name="AUDIENCE" content="NBUSER"/> | |
| <meta name="TYPE" content="ARTICLE"/> | |
| <meta name="EXPIRES" content="N"/> | |
| <meta name="developer" content="gwielenga@netbeans.org"/> | |
| <meta name="indexed" content="y"/> | |
| <meta name="description" | |
| content="A short guide to using the Nodes API."/> | |
| <!-- Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. --> | |
| <!-- Use is subject to license terms.--> | |
| </head> | |
| <body> | |
| <h1>NetBeans File Template Module Tutorial</h1> | |
| <p>This tutorial demonstrates how to create a NetBeans module providing file templates. Once your users have installed | |
| the module in the IDE, the file templates are available to them in the New File wizard. Sharing file templates is easy once you have a module that | |
| contains them—the IDE lets you create a binary that you can make available to others, who can then install it through the | |
| Plugin Manager.</p> | |
| <p>A file template consists of a template file, an HTML description file, and an icon. The HTML description file | |
| displays information about the template in the New File wizard. The icon identifies the template and | |
| distinguishes it from other templates in the New File wizard. In this tutorial, | |
| you create a new file template by copying the content of an existing file template into an empty file. | |
| Then, once you have set up a description file for the New File wizard and a distinguishing icon, you | |
| register the template, the HTML description file, and the icon in the NetBeans configuration file, that is, | |
| in the <tt>layer.xml</tt> file.</p> | |
| <p><b class="notes">Note:</b> This document uses NetBeans IDE 7.1 and NetBeans Platform 7.1. If you | |
| are using an earlier version, see <a href="71/nbm-filetemplates.html">the previous version | |
| of this document</a>.</p> | |
| <p><b>Contents</b></p> | |
| <p><img src="../../images/articles/71/netbeans-stamp.png" class="stamp" width="114" height="114" alt="Content on this page applies to NetBeans IDE 7.1" title="Content on this page applies to NetBeans IDE 7.1"/></p> | |
| <ul class="toc"> | |
| <li><a href="#freemarker">Introduction to FreeMarker</a></li> | |
| <li><a href="#creatingthemoduleproject">Creating the Module Project</a></li> | |
| <li><a href="#creatingandgettingtoknowthemainfiles">Creating the File Template</a> | |
| <ul> | |
| <li><a href="#creating-the-template-file">Creating the Template File</a></li> | |
| <li><a href="#creating-the-description-file">Creating the Description File</a></li> | |
| <li><a href="#getting-an-icon">Getting an Icon</a></li> | |
| </ul></li> | |
| <li><a href="#registering">Registering the File Template</a></li> | |
| <!-- <li><a href="#multiview">Creating & Registering a MultiView File Template</a></li>--> | |
| <li><a href="#building">Building and Installing the Module</a></li> | |
| <li><a href="#additional">Providing Additional Variables</a></li> | |
| <li><a href="#license">Providing a Project License</a></li> | |
| </ul> | |
| <p><b>To follow this tutorial, you need the software and resources listed in the following | |
| table.</b></p> | |
| <table> | |
| <tbody> | |
| <tr> | |
| <th class="tblheader" scope="col">Software or Resource</th> | |
| <th class="tblheader" scope="col">Version Required</th> | |
| </tr> | |
| <tr> | |
| <td class="tbltd1"><a href="https://netbeans.org/downloads/index.html">NetBeans IDE</a></td> | |
| <td class="tbltd1">version 7.1 or above</td> | |
| </tr> | |
| <tr> | |
| <td class="tbltd1"><a href="http://java.sun.com/javase/downloads/index.jsp">Java Developer Kit (JDK)</a></td> | |
| <td class="tbltd1">version 6 or above</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h2 class="tutorial"><a name="freemarker"></a>Introduction to FreeMarker</h2> | |
| <p>Since NetBeans IDE 6.0, you have been able to optionally use the <a href="http://freemarker.org/">FreeMarker</a> | |
| template language to define your file templates. Several of the templates that are bundled | |
| with the IDE are defined in this way. For example, the Java class template is defined as | |
| follows:</p> | |
| <pre class="examplecode"><#assign licenseFirst = "/*"> | |
| <#assign licensePrefix = " * "> | |
| <#assign licenseLast = " */"> | |
| <#include "../Licenses/license-${project.license}.txt"> | |
| <#if package?? && package != ""> | |
| package ${package}; | |
| </#if> | |
| /** | |
| * | |
| * @author ${user} | |
| */ | |
| public class ${name} { | |
| }</pre> | |
| <p>The benefit of using FreeMarker can be seen in the template above, that is, you can | |
| add <i>logic</i> to your templates, via <i>directives</i> such as | |
| if/elseif/else and loop constructs. For a full description of FreeMarker template | |
| language, see the <a href="http://freemarker.org/docs/index.html">FreeMarker Manual</a>, | |
| in particular, the <a href="http://freemarker.org/docs/dgui_template_directives.html">Directives</a> | |
| chapter. In | |
| this tutorial, you will be shown, among other things, the steps you need to take to incorporate FreeMarker | |
| into your file templates.</p> | |
| <!-- ===================================================================================== --> | |
| <h2 class="tutorial"><a name="creatingthemoduleproject"></a>Creating the Module Project</h2> | |
| <p>We begin by going through the New Module Project wizard, | |
| which will create a source structure, with all the minimum | |
| requirements, for our new module.</p> | |
| <div class="indent"> | |
| <ol> | |
| <li>Choose File > New Project (Ctrl+Shift+N). Under Categories, select NetBeans Modules. | |
| Under Projects, select Module. Click Next.</li> | |
| <li>In the Name and Location panel, type <tt>AdditionalFileTemplates</tt> in the Project Name field. | |
| Change the Project Location to any directory on your computer. Click Next.</li> | |
| <li>In the Basic Module Configuration panel, type <tt>org.myorg.additionalfiletemplates</tt> | |
| in Code Name Base. Click Finish.</li> | |
| </ol> | |
| </div> | |
| <p> The IDE creates the <tt>AdditionalFileTemplates</tt> | |
| project. The project contains all of your sources and | |
| project metadata, such as the project's Ant build script. The project | |
| opens in the IDE. You can view its logical structure in the Projects window (Ctrl-1) and its | |
| file structure in the Files window (Ctrl-2).</p> | |
| <!-- ===================================================================================== --> | |
| <h2><a name="creating-the-file-template"></a>Creating the File Template</h2> | |
| <p>A file template consists of a template file, an HTML description file, and an icon. An easy way to | |
| create a new file template is to copy the content of an existing file template into an empty file. | |
| Then, once you have set up a description file for the New File wizard and a distinguishing icon, you | |
| are ready to register the template in the <tt>layer.xml</tt> file.</p> | |
| <div class="indent"> | |
| <h3 class="tutorial">Creating the Template File</h3><a name="creating-the-template-file"></a> | |
| <p>The template file defines the content that the template will generate for the user.</p> | |
| <div class="indent"> | |
| <ol> | |
| <li>Right-click the <tt>AdditionalFileTemplates</tt> node and choose New > Other. | |
| In the New File wizard, under Categories, choose Other and under File Types, choose HTML. Click Next.</li> | |
| <li><p>Type <tt>HTML</tt> | |
| in File Name. Click Browse and browse to <tt>src/org/myorg/additionalfiletemplates</tt>. Click Select Folder. | |
| Click Finish. A new HTML file, named <tt>HTML.html</tt>, | |
| opens in the Source Editor, containing the standard | |
| HTML file's content shown below:</p> | |
| <pre class="examplecode"><!DOCTYPE html> | |
| <html> | |
| <head> | |
| <title></title> | |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> | |
| </head> | |
| <body> | |
| TODO write content | |
| </body> | |
| </html></pre></li> | |
| <li>Change the HTML file according to your needs. You can add the following predefined variables, if needed: | |
| <ul> | |
| <li>${date} inserts the current date, in this format: Feb 16, 2008</li> | |
| <li>${encoding} inserts the default encoding, such as: UTF-8</li> | |
| <li>${name} inserts the name of the file.</li> | |
| <li>${nameAndExt} inserts the name of the file, together with its extension.</li> | |
| <li>${package} inserts the name of the package where the file is created.</li> | |
| <li>${time} inserts the current time, in this format: 7:37:58 PM</li> | |
| <li>${user} inserts the user name.</li> | |
| </ul> | |
| <p><b class="notes">Note:</b> Your users will be able to set values for these | |
| variables in the Template Manager, which is under the Tools menu. | |
| There, they will click the Settings button and a file named | |
| <tt>user.properties</tt> will open in the Source Editor. In this file, | |
| users can set the above values, to override those provided by default. Typically, | |
| however, they will not do this, because the default values of the above | |
| variables will do the job fine.</p> | |
| <p class="tips"> In addition to the predefined variables, you can provide additional variables to your users, | |
| via your module. This is explained later in this tutorial. The full | |
| list of FreeMarker directives can also be used to add logic to the template:</p> | |
| <ul> | |
| <li>#assign</li> | |
| <li>#else</li> | |
| <li>#elseif</li> | |
| <li>#end</li> | |
| <li>#foreach</li> | |
| <li>#if</li> | |
| <li>#include</li> | |
| <li>#list</li> | |
| <li>#macro</li> | |
| <li>#parse</li> | |
| <li>#set</li> | |
| <li>#stop</li> | |
| </ul> | |
| <p>As an example, look at the definition of the Java class template:</p> | |
| <pre class="examplecode"><#assign licenseFirst = "/*"> | |
| <#assign licensePrefix = " * "> | |
| <#assign licenseLast = " */"> | |
| <#include "../Licenses/license-${project.license}.txt"> | |
| <#if package?? && package != ""> | |
| package ${package}; | |
| </#if> | |
| /** | |
| * | |
| * @author ${user} | |
| */ | |
| public class ${name} { | |
| }</pre> | |
| <p>For information on the #assign directive, see <a href="#license">Providing a Project License</a>. | |
| For a full description of FreeMarker template | |
| language, see the <a href="http://freemarker.org/docs/index.html">FreeMarker Manual</a>, | |
| in particular, the <a href="http://freemarker.org/docs/dgui_template_directives.html">Directives</a> | |
| chapter. | |
| </p></li> | |
| </ol> | |
| </div> | |
| <h3 class="tutorial"><a name="creating-the-description-file"></a>Creating the Description File</h3> | |
| <p>The description file is an HTML file displayed in the New File dialog for the template.</p> | |
| <div class="indent"> | |
| <ol> | |
| <li>Right-click the <tt>org.myorg.additionalfiletemplates</tt> node and choose New > Other. | |
| Under Categories, choose Other. Under File Types, choose HTML File. Click Next. Type <tt>Description</tt> | |
| in File Name. Click Browse and browse to <tt>src/org/myorg/additionalfiletemplates</tt>. Click Select Folder. | |
| Click Finish. An empty HTML file opens in the Source Editor and its node appears in the Projects window.</p></li> | |
| <li>Type "<tt>Creates a new HTML file.</tt>" (without the quotation marks) | |
| between the <tt><body></tt> tags, so | |
| that the file looks as follows: | |
| <pre class="examplecode"><!DOCTYPE html> | |
| <html> | |
| <head> | |
| <title></title> | |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> | |
| </head> | |
| <body> | |
| Creates a new HTML file. | |
| </body> | |
| </html></pre></li> | |
| </ol> | |
| </div> | |
| <h3 class="tutorial"><a name="getting-an-icon"></a>Getting an Icon</h3> | |
| <p>The icon accompanies the file template in the New File wizard. It identifies it | |
| and distinguishes it from other file templates. The icon must have a dimension of 16x16 pixels.</p> | |
| <div class="indent"> | |
| <ol> | |
| <li>Name the icon, for example, <tt>icon.png</tt>. Below, the name "Datasource.gif" is used.</li> | |
| <li>Paste it in the <tt>org.myorg.additionalfiletemplates</tt> package.</li> | |
| </ol> | |
| </div> | |
| </div> | |
| <!-- ===================================================================================== --> | |
| <h2><a name="registering"></a>Registering the File Template</h2> | |
| <p>Once you have defined the file template, the description file, and the icon, | |
| you register them in the NetBeans virtual filesystem. | |
| The <tt>layer.xml</tt> file | |
| is made for this purpose. The file is automatically created and populated via | |
| the @TemplateRegistration annotation used in the steps below.</p> | |
| <div class="indent"> | |
| <ol> | |
| <li>Right-click the module in the Projects window, choose Properties, | |
| and use the Libraries tab to add dependencies on Datasystems API | |
| and Utilities API.</li> | |
| <li><p>Create a new Java class named <tt>package-info.java</tt> and define its content as | |
| follows:</p> | |
| <pre class="examplecode">@TemplateRegistration( | |
| folder = "Other", | |
| iconBase="org/myorg/additionalfiletemplates/Datasource.gif", | |
| displayName = "#HTMLtemplate_displayName", | |
| content = "HTML.html", | |
| description = "Description.html", | |
| scriptEngine="freemarker") | |
| @Messages(value = "HTMLtemplate_displayName=Empty HTML file") | |
| package org.myorg.additionalfiletemplates; | |
| import org.netbeans.api.templates.TemplateRegistration; | |
| import org.openide.util.NbBundle.Messages; | |
| </pre></li> | |
| <li><p>Make sure that the structure of the module is as follows:</p> | |
| <p><img src="../../images/tutorials/filetemplates/71/module-structure.png" alt="New File wizard."></img></p></li> | |
| </li> | |
| </ol> | |
| </div> | |
| <!-- ======================================================================================= --> | |
| <!-- | |
| <h2><a name="multiview"></a>Creating & Registering a MultiView File Template</h2> | |
| <p>In this section, you learn how to create a template that will | |
| produce a file that can be used in the "Matisse" GUI Builder.</p> | |
| <p><b>Note:</b> For troubleshooting purposes, <a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=14239">download</a> | |
| the related plugin which provides the module described in this section.</p> | |
| <div class="indent"> | |
| <ol> | |
| <li>In the IDE, create the file that you want to turn into a file template. | |
| For example, create a JPanel Form from the New File wizard in the IDE.</li> | |
| <li>Outside the IDE, in your file system, you will find two files that, together, | |
| consitute the file you created in the IDE. Copy the content of the two files | |
| into empty files in your module. For example, in your module, | |
| create a file named "NewJPanel_form" | |
| and another file named "NewJPanel_java". Then copy the content of the two | |
| files from outside the IDE into your two files in your module.</li> | |
| <li>In your module, create an HTML file for the description text to be displayed | |
| in the New File wizard. For example, create a file named "MyJPanel.html" | |
| containing the file template descroption.</li> | |
| <li>In the layer.xml file, register the files described | |
| above as follows, | |
| instead of the approach taken in the previous section: | |
| <pre class="examplecode"><folder name="Templates"> | |
| <folder name="Java"> | |
| <file name="MyDemoJPanel.java" url="NewJPanel_java"> | |
| <attr name="SystemFileSystem.localizingBundle" stringvalue="org.netbeans.modules.form.resources.Bundle"/> | |
| <attr name="position" intvalue="200"/> | |
| <attr name="template" boolvalue="true"/> | |
| <attr name="instantiatingWizardURL" urlvalue="nbresloc:/org/demo/jpaneltemplate/MyJPanel.html"/> | |
| <attr name="SystemFileSystem.icon" urlvalue="nbresloc:/org/netbeans/modules/form/resources/palette/frame_16.png"/> | |
| <attr name="SystemFileSystem.icon32" urlvalue="nbresloc:/org/netbeans/modules/form/resources/palette/frame_32.png"/> | |
| <attr name="instantiatingIterator" methodvalue="org.netbeans.modules.form.wizard.TemplateWizardIterator.create"/> | |
| <attr name="javax.script.ScriptEngine" stringvalue="freemarker"/> | |
| <attr name="templateCategory" stringvalue="java-forms"/> | |
| </file> | |
| <file name="MyDemoJPanel.form" url="NewJPanel_form"> | |
| <attr name="template" boolvalue="true"/> | |
| </file> | |
| </folder> | |
| </folder></pre> | |
| </li> | |
| </ol> | |
| </div> | |
| --> | |
| <!-- ======================================================================================= --> | |
| <h2><a name="building"></a>Building and Installing the Module</h2> | |
| <p>The IDE uses an Ant build script to build and install your module. The build script is created for you | |
| when you create the module project.</p> | |
| <div class="indent"> | |
| <ol> | |
| <li>In the Projects window, right-click the project and choose Run. | |
| The module is built and installed in a new | |
| instance of the development IDE. </li> | |
| <li>Choose File > New Project (Ctrl-Shift-N) and create a new project.</li> | |
| <li><p>Right-click the project and choose New > Other. The New File dialog opens and displays | |
| the new file template. It should look something like this, although | |
| your icon will probably be different:</p> | |
| <p><img src="../../images/tutorials/filetemplates/71/new-file.png" alt="New File wizard."></img></p></li> | |
| <li>Select the new file template and complete the wizard. When you click Finish, the Source Editor | |
| displays the newly created template.</li> | |
| </ol> | |
| </div> | |
| <!-- ===================================================================================== --> | |
| <h2><a name="additional"></a>Providing Additional Variables</h2> | |
| <p>As discussed earlier, you can supplement | |
| predefined variables such as ${user} and ${time}, with your own. For example, | |
| you can define your template like this, if you want to pass in a variable | |
| representing a list of names:</p> | |
| <pre class="examplecode"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> | |
| <html> | |
| <head> | |
| <title></title> | |
| </head> | |
| <body> | |
| <#list names as oneName> | |
| <b>${oneName}</b> | |
| </#list> | |
| </body> | |
| </html></pre> | |
| <p>Above, the FreeMarker #list directive iterates through a variable called "names", | |
| with each instance being called "oneName". Each value of the iteration is then | |
| printed in the file, between bold tags. The value of "names" could come from a variety | |
| of places, typically from a wizard panel, where the user, in this case, would | |
| have selected a set of names from a list.</p> | |
| <p>To enable the above, that is, to iterate through | |
| a new variable, see | |
| <a href="http://netbeans.dzone.com/news/freemarker-netbeans-ide-60-first-scenario">FreeMarker in NetBeans IDE 6.0: First Scenario</a> | |
| and then see the discussion of <tt>DataObject.createFromTemplate(df, targetName, hashMap)</tt> in | |
| <a href="http://blogs.oracle.com/geertjan/entry/freemarker_baked_into_netbeans_ide1">this blog entry</a>.</p> | |
| <!-- ===================================================================================== --> | |
| <h2><a name="license"></a>Providing a Project License</h2> | |
| <p>One point that has not been discussed yet relates to the FreeMarker #assign directive, | |
| which is only relevant if you are interested in enabling the user to generate a project license when | |
| the file is created. To cater to your user's licensing needs, you can provide licensing | |
| directives in the file template. Then all files within the user's project will be created with | |
| the licensing directives that you have provided. </p> | |
| <p>To make sense of this, take the following steps:</p> | |
| <div class="indent"> | |
| <ol> | |
| <li>Go to the Tools menu. Choose Templates. Open the Java | Java Class template | |
| in the editor: | |
| <p><img alt="" src="http://blogs.oracle.com/geertjan/resource/freemarker-in-nb-2.png"/></p></li> | |
| <li>The template above, and the ramifications of defining it | |
| in FreeMarker, have been discussed above. However, let's look | |
| specifically at the first four lines: | |
| <pre><#assign licenseFirst = "/*"> | |
| <#assign licensePrefix = " * "> | |
| <#assign licenseLast = " */"> | |
| <#include "../Licenses/license-${project.license}.txt"></pre> | |
| <p>These four lines have to do with <i>licensing</i>. The last line | |
| determines the license that will be used, per project. The first | |
| three determine the characters in front of and behind each line in the | |
| license. Above are the four lines for Java source files. Here is | |
| the same set of definitions that you will find at the start of the Properties file template:</p> | |
| <pre><#assign licensePrefix = "# "> | |
| <#include "../Licenses/license-${project.license}.txt"></pre> | |
| <p>The first line tells us that each line in the license will be prefixed | |
| with a "# ", instead of with a "*", which is the prefix for Java source | |
| files (with "/*" for the first line and " */" for the last line). To verify | |
| this, create a Java source file and then create a Properties file. | |
| You will see a license in both cases. However, the characters prefixing | |
| and postfixing each line is different, because of the above definitions.</p></li> | |
| <li>Next, let's look at the license itself. Notice this line in the templates above: | |
| <pre><#include "../Licenses/license-${project.license}.txt"></pre> | |
| <p>In particular, notice this part:</p> | |
| <pre>${project.license}</pre> | |
| <p>Put that, as a key, in your application's <tt>nbproject/project.properties</tt> file. | |
| Now add a value. For example:</p> | |
| <pre>project.license=apache</pre> | |
| <p>Now look in the Template Manager again, in the Licenses folder. You see | |
| some templates there. Create a new one called "<tt>license-apache.txt</tt>". | |
| For now, you can just copy an existing one and paste it in the same category | |
| in the Template Manager. Then, next time that you create a file that is defined | |
| by a FreeMarker template that includes this line:</p> | |
| <pre><#include "../Licenses/license-${project.license}.txt"></pre> | |
| <p>...you will have the specified license embedded within the newly created file.</p></li> | |
| </ol> | |
| </div> | |
| <p>In summary, since NetBeans IDE 6.0, you are able to let the user define, per project, the license that | |
| each of its files should display. Plus, imagine if the user needs to create a new | |
| project with a different license. Assuming the user has a set of licenses defined | |
| in the Template Manager, using a new license is as simple as adding that one | |
| key/value pair to the <tt>nbproject/project.properties</tt> file. That was not | |
| possible before but, thanks to FreeMarker support, | |
| is possible now. For further reading about licensing, especially the comments at the end of it, | |
| see <a href="http://blogs.oracle.com/geertjan/date/20071126">this blog entry</a>.</p> | |
| <p></p> | |
| <div class="feedback-box"><a href="https://netbeans.org/about/contact_form.html?to=3&subject=Feedback:%20NetBeans%20File%20Template%20Module%20Tutorial">Send Us Your Feedback</a></div> | |
| <!-- ======================================================================================== --> | |
| <h2><a name="nextsteps"></a>Next Steps</h2> | |
| <p>For more information about creating and developing NetBeans Module, see the following resources:</p> | |
| <ul> | |
| <li><a href="https://netbeans.org/kb/trails/platform.html">Other Related Tutorials</a></li> | |
| <li><a href="https://netbeans.org/download/dev/javadoc/">NetBeans API Javadoc</a></li> | |
| </ul> | |
| <!-- ======================================================================================== | |
| <h2><a name="version"></a>Versioning </h2> | |
| <p> | |
| <table width="76%" border="1"> | |
| <tbody> | |
| <tr> | |
| <td> | |
| <div align="left"><b>Version</b></div> | |
| </td> | |
| <td> | |
| <div align="left"><b>Date</b></div> | |
| </td> | |
| <td> | |
| <div align="left"><b>Changes</b></div> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td> | |
| 1 | |
| </td> | |
| <td> | |
| 26 June 2005 | |
| </td> | |
| <td> | |
| Initial version | |
| </td> | |
| </tr> | |
| <tr> | |
| <td> | |
| 2 | |
| </td> | |
| <td> | |
| 28 June 2005 | |
| </td> | |
| <td> | |
| <ul> | |
| <li>Added bold tags to descriptor file to show that Description box displays HTML tags | |
| <li>Ordering attributes added | |
| <li>Display names moved to Bundle.properties | |
| <li>Screenshot in "Using the NetBeans Plug-in" changed | |
| <li>Added ".template" as extension to the "BrandedJavaClass" file, because the <tt>layer.xml</tt> | |
| looks for a file called "BrandedJavaClass.template". Also changed the screenshot of the Projects window | |
| at the end of the "Creating the File Template" section to reflect the ".template" extension. | |
| </td> | |
| </tr> | |
| <tr> | |
| <td> | |
| 3 | |
| </td> | |
| <td> | |
| 2 October 2005 | |
| </td> | |
| <td> | |
| <ul> | |
| <li>Went through the whole tutorial with the latest build. Made several changes, | |
| mainly because the Templates replaces the Options window for templates. | |
| <li>Added new 2nd and 3rd paragraphs to the introduction, to explain that this | |
| tutorial isn't necessary if you're creating a new file type. | |
| </td> | |
| </tr> | |
| <tr> | |
| <td> | |
| 4 | |
| </td> | |
| <td> | |
| 3 October 2005 | |
| </td> | |
| <td> | |
| <ul> | |
| <li>Changed templateWizard[Iterator|URL] in layer.xml to instantiating[Iterator|WizardURL] | |
| because templateWizard[Iterator|URL] is going to be deprecated.</ul> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td> | |
| 5 | |
| </td> | |
| <td> | |
| 16 March 2006 | |
| </td> | |
| <td> | |
| <ul> | |
| <li>Went through whole tutorial and tweaked line spacing a little bit, everything works fine still. | |
| <li>Need to replace screenshots because icons are a bit different. | |
| <li>Need to add icon to the doc, not just refer to the location. | |
| <li>Need to show how multiple file templates can be created simultaneously | |
| from the New File wizard. </ul> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td> | |
| 6 | |
| </td> | |
| <td> | |
| 12 September 2006 | |
| </td> | |
| <td> | |
| <ul> | |
| <li>Went through whole tutorial in NetBeans IDE 5.5 Beta 2. | |
| <li>No problems, worked exactly as described. | |
| <li>Updated some screenshots. | |
| <li>Fixed indentations in code. </ul> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td> | |
| 7 | |
| </td> | |
| <td> | |
| 9 June 2007 | |
| </td> | |
| <td> | |
| Started updating to NetBeans 6. | |
| </td> | |
| </tr> | |
| <tr> | |
| <td> | |
| 8 | |
| </td> | |
| <td> | |
| 16 February 2008 | |
| </td> | |
| <td> | |
| Started migrating the info from <a href="http://blogs.oracle.com/geertjan/entry/freemarker_baked_into_netbeans_ide1">this blog entry</a>, | |
| <a href="http://blogs.oracle.com/geertjan/entry/freemarker_baked_into_netbeans_ide2">this blog entry</a>, and | |
| <a href="http://blogs.oracle.com/geertjan/date/20071126">this blog entry</a>, and | |
| <a href="http://netbeans.dzone.com/news/freemarker-netbeans-ide-60-first-scenario">this article</a> | |
| into this tutorial. | |
| </td> | |
| </tr> | |
| <tr> | |
| <td> | |
| 9 | |
| </td> | |
| <td> | |
| 15 April 2008 | |
| </td> | |
| <td> | |
| Updated the styles (badge, table of contents, required software table) | |
| to the new format. | |
| </td> | |
| </tr> | |
| <tr> | |
| <td> | |
| 10 | |
| </td> | |
| <td> | |
| 31 October 2008 | |
| </td> | |
| <td> | |
| Updated to 6.5 (badge, version numbers, requirement table). | |
| </td> | |
| </tr> | |
| <tr> | |
| <td> | |
| 11 | |
| </td> | |
| <td> | |
| 16 February 2010 | |
| </td> | |
| <td> | |
| - Went through and made sure all tags were correct, etc, | |
| using the HTML editor error marks as guidance. | |
| - Added the section "Creating & Registering a MultiView File Template" | |
| </td> | |
| </tr> | |
| <tr> | |
| <td> | |
| 12 | |
| </td> | |
| <td> | |
| 20 November 2011 | |
| </td> | |
| <td> | |
| Updated for 7.1, with @TemplateRegistration. | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| --> | |
| </body> | |
| </html> |