<!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 alt="" 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><img  alt="" 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  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>&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>
