<!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 6.5</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 module containing 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&#8212;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>Contents</b></p>
   
   <p><img src="../images/articles/69/netbeans-stamp7-8-9.png" class="stamp" width="114" height="114" alt="Content on this page applies to NetBeans IDE 6.5, 6.7, 6.8" title="Content on this page applies to NetBeans IDE 6.5, 6.7, 6.8"/></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 6.7 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<br/>version 5</td>
            </tr>
        </tbody>
    </table>
    

 <p class="tips">Optionally, for troubleshooting purposes, you can <a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=3755">download the
         completed sample</a> and inspect the sources.</p>

 <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">&lt;#assign licenseFirst = "/*"&gt;
&lt;#assign licensePrefix = " * "&gt;
&lt;#assign licenseLast = " */"&gt;
&lt;#include "../Licenses/license-${project.license}.txt"&gt;

&lt;#if package?? && package != ""&gt;
package ${package};

&lt;/#if&gt;
/**
 *
 * @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>

<ol>
    <li>Choose File &gt; 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. Leave the Standalone Module option
        and Set as Main Project checkbox selected. Click Next.</li>
    <li>In the Basic Module Configuration panel, type <tt>org.myorg.additionalfiletemplates</tt>
        in Code Name Base.</li>
    <li>Select "Generate XML Layer". Leave the
        locations of both the localizing bundle and the XML layer file
        so that they will be stored in a package with
        the name <tt>org/myorg/additionalfiletemplates</tt>. Click Finish.</li>
</ol>

    <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). For example, the Projects window should now look as follows:</p>

    <p><img border="1" src="../images/tutorials/filetemplates/initial-projects-window-60.png" alt="Initial Projects window."/></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>
        
        <ol>
<li>Right-click the <tt>AdditionalFileTemplates</tt> node and choose New &gt; Other.
    In the New File wizard, under Categories, choose Other and under File Types, choose HTML. Click Next.</li>
            <li>Type <tt>HTML</tt>
            in File Name. Click Browse and browse to <tt>src/org/myorg/additionalfiletemplates</tt>. Click Select Folder. Click Finish.

            <p>A new HTML file, called <tt>HTML.html</tt>,
            opens in the Source Editor, containing the standard
            HTML file's content shown below:</p>

              <pre class="examplecode">&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;

&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
     TODO write content
  &lt;/body&gt;
&lt;/html&gt;</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 scroll to the end, to "User Configuration Properties".
 The <tt>user.properties</tt> file within that node can be used to
 set the above values, to override those provided by the system. Typically,
 however, they will not do this, because the default values of the above
 variables will do the job fine.</p>

<p>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">&lt;#assign licenseFirst = "/*"&gt;
&lt;#assign licensePrefix = " * "&gt;
&lt;#assign licenseLast = " */"&gt;
&lt;#include "../Licenses/license-${project.license}.txt"&gt;

&lt;#if package?? && package != ""&gt;
package ${package};

&lt;/#if&gt;
/**
 *
 * @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>


        <h3 class="tutorial"><a name="creating-the-description-file"></a>Creating the Description File</h3>

        <ol>
            <li>Right-click the <tt>org.myorg.additionalfiletemplates</tt> node and choose New &gt; 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.

            <p>An empty HTML file opens in the Source Editor and its node appears in the Projects window.</p></li>

            <li>Type "<tt>Creates new HTML file</tt>" (without the quotation marks)
            between the <tt>&lt;body&gt;</tt> tags, so
            that the file looks as follows:

            <pre class="examplecode">&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;
&lt;html&gt;
   &lt;head&gt;
      &lt;title&gt;&lt;/title&gt;
   &lt;/head&gt;
   &lt;body&gt;
      Creates new HTML file.
   &lt;/body&gt;
&lt;/html&gt;</pre></li>

        </ol>

        <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>
        
        <p>Name the icon <tt>icon.png</tt> and add it to the <tt>org.myorg.additionalfiletemplates</tt> package.</p>

        <p>The Projects window should now look as follows:</p>

        <p align="left"><img border="1" src="../images/tutorials/filetemplates/final-projects-window-60.png" alt="Final Projects window."></img></p>

    </div>

    <!-- ===================================================================================== -->

    <h2><a name="registering"></a>Registering the File Template</h2>
    <p>Once you have created the file template, you must register it in the NetBeans System Filesystem. The <tt>layer.xml</tt> file
    is made for this purpose.</p>

    <ol><li>Add the following entry between the <tt>&lt;filesystem&gt;</tt> tags in the <tt>layer.xml</tt> file:

<pre class="examplecode">&lt;folder name="Templates"&gt;
        
        &lt;folder name="Other"&gt;
            
            &lt;attr name="SystemFileSystem.localizingBundle" stringvalue="org.myorg.additionalfiletemplates.Bundle"/&gt;
            &lt;file name="MyHTML.html" url="HTML.html"&gt;
                &lt;attr name="template" boolvalue="true"/&gt;
                &lt;attr name="SystemFileSystem.localizingBundle" stringvalue="org.myorg.additionalfiletemplates.Bundle"/&gt;
                &lt;attr name="SystemFileSystem.icon" urlvalue="nbresloc:/org/myorg/additionalfiletemplates/icon.png"/&gt;
                &lt;attr name="templateWizardURL" urlvalue="nbresloc:/org/myorg/additionalfiletemplates/Description.html"/&gt;
                <b>&lt;!--Use this line only if your template makes use of the FreeMarker template language:--&gt;</b>
                &lt;attr name="javax.script.ScriptEngine" stringvalue="freemarker"/&gt;
            &lt;/file&gt;
            
        &lt;/folder&gt;
        
&lt;/folder&gt;</pre></li>

        <li>Add the display name to the <tt>Bundle.properties</tt> file:

            <pre class="examplecode">Templates/Other/MyHTML.html=My HTML File</pre></li>

    </ol>


    <!-- ======================================================================================= -->

    <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">&lt;folder name="Templates"&gt;
    &lt;folder name="Java"&gt;
        &lt;file name="MyDemoJPanel.java" url="NewJPanel_java"&gt;
            &lt;attr name="SystemFileSystem.localizingBundle" stringvalue="org.netbeans.modules.form.resources.Bundle"/&gt;
            &lt;attr name="position" intvalue="200"/&gt;
            &lt;attr name="template" boolvalue="true"/&gt;
            &lt;attr name="instantiatingWizardURL" urlvalue="nbresloc:/org/demo/jpaneltemplate/MyJPanel.html"/&gt;
            &lt;attr name="SystemFileSystem.icon" urlvalue="nbresloc:/org/netbeans/modules/form/resources/palette/frame_16.png"/&gt;
            &lt;attr name="SystemFileSystem.icon32" urlvalue="nbresloc:/org/netbeans/modules/form/resources/palette/frame_32.png"/&gt;
            &lt;attr name="instantiatingIterator" methodvalue="org.netbeans.modules.form.wizard.TemplateWizardIterator.create"/&gt;
            &lt;attr name="javax.script.ScriptEngine" stringvalue="freemarker"/&gt;
            &lt;attr name="templateCategory" stringvalue="java-forms"/&gt;
        &lt;/file&gt;
        &lt;file name="MyDemoJPanel.form" url="NewJPanel_form"&gt;
            &lt;attr name="template" boolvalue="true"/&gt;
        &lt;/file&gt;
    &lt;/folder&gt;
&lt;/folder&gt;</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">

        <h3 class="tutorial">Installing the NetBeans Module</h3>

            <p>In the Projects window, right-click the <tt>Additional File Templates</tt> project and choose Install/Reload
            in Target Platform. </p>
            <p>The module is built and installed in the target IDE or Platform. The target IDE or Platform opens so that you
            can try out your new module. The default target IDE or Platform is the
            installation used by the current instance of the development IDE. </p>
            <p><b class="notes">Note:</b> When you run your module, you will be using
                a temporary test user directory, not the development IDE's user directory. </p>

        <h3 class="tutorial">Using the NetBeans Module</h3>

        <ol>
            <li>Choose File &gt; New Project (Ctrl-Shift-N) and create a new project.</li>
            <li>Right-click the project and choose New &gt; Other. The New File wizard opens and displays
            the new category with its new file type. It should look something like this, although your icon will probably be different:
            <p><img src="../images/tutorials/filetemplates/new-file-wizard-60.png" alt="New File wizard."></img></p></li>
            <li>Select the new file type, click Next, and create a new file. When you click Finish, the Source Editor
                should display the newly created template.</li>
        </ol>

        <h3 class="tutorial">Creating a Shareable Module Binary</h3>

        <ol>
            <li>In the Projects window, right-click the <tt>Additional File Templates</tt> project and choose Create NBM.

                <p>The NBM file is created and you can view it in the Files window (Ctrl-2):</p>
                <p><img src="../images/tutorials/filetemplates/shareable-nbm-60.png" alt="Shareable NBM."/></p></li>
                    <li>Make it available to others via, for example, e-mail.</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">&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;

&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
  
        &lt;#list names as oneName&gt;
            &lt;b&gt${oneName}&lt;/b&gt
        &lt;/#list&gt;

  &lt;/body&gt;
&lt;/html&gt;</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>

<ol>
<li>Go to the Tools menu. Choose Templates. Open the Java | Java Class template 
in the editor:
<p><img src="http://blogs.oracle.com/geertjan/resource/freemarker-in-nb-2.png" border="1"/></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>&lt;#assign licenseFirst = "/*"&gt;
&lt;#assign licensePrefix = " * "&gt;
&lt;#assign licenseLast = " */"&gt;
&lt;#include "../Licenses/license-${project.license}.txt"&gt;</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>&lt;#assign licensePrefix = "# "&gt;
&lt;#include "../Licenses/license-${project.license}.txt"&gt;</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>&lt;#include "../Licenses/license-${project.license}.txt"&gt;</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>&lt;#include "../Licenses/license-${project.license}.txt"&gt;</pre>

<p>...you will have the specified license embedded within the newly created file.</p></li>

</ol>

<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&amp;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>
  
<hr></hr>
    
    <!-- ======================================================================================== 


<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>
        </tbody>
    </table>
    -->
    </body>
</html>
