<!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>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><b>Contents</b></p>
   
       <img  src="../images/articles/65/netbeans-stamp65.gif" class="stamp" width="114" height="114" alt="Content on this page applies to NetBeans IDE 6.5" title="Content on this page applies to NetBeans IDE 6.5"> </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><a href="#creating-the-description-file">Creating the Description File</a>
            <li><a href="#getting-an-icon">Getting an Icon</a>
        </ul></li>
        <li><a href="#registering">Registering the 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.5</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.
   

 <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:

<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.
    


    <!-- ===================================================================================== -->

    <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.

<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>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><img border="1" src="../images/tutorials/filetemplates/initial-projects-window-60.png" alt="Initial Projects window.">

   
    <br />

    <!-- ===================================================================================== -->
    <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.

  
    <div class="indent">
        <p><h3 class="tutorial"><a name="creating-the-template-file"></a>Creating the Template File</h3>
<p>
        
        <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. 
            <p><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>

            <p>A new HTML file, called <tt>HTML.html</tt>,
            opens in the Source Editor, containing the standard
            HTML file's content shown below:

              <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>


            <p><li>Change the HTML file according to your needs. You can add the following predefined variables, if needed:
            
<p><ul>
<li>${date} inserts the current date, in this format: Feb 16, 2008
<li>${encoding} inserts the default encoding, such as: UTF-8
<li>${name} inserts the name of the file.
<li>${nameAndExt} inserts the name of the file, together with its extension.
<li>${package} inserts the name of the package where the file is created.
<li>${time} inserts the current time, in this format: 7:37:58 PM
<li>${user} inserts the user name.
</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>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>#else
<li>#elseif
<li>#end
<li>#foreach
<li>#if
<li>#include
<li>#list
<li>#macro
<li>#parse
<li>#set
<li>#stop
</ul>

<p>As an example, look at the definition of the Java class template:

<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.

        </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>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>

        </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>Name the icon <tt>icon.png</tt> and add it to the <tt>org.myorg.additionalfiletemplates</tt> package.

        <p>The Projects window should now look as follows:

        <p align="left"><img border="1" src="../images/tutorials/filetemplates/final-projects-window-60.png" alt="Final Projects window.">

    </div>
    <br />

    <!-- ===================================================================================== -->

    <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>

        <p><li>Add the display name to the <tt>Bundle.properties</tt> file:

        <p><pre class="examplecode">Templates/Other/MyHTML.html=My HTML File</pre>

    </ol>

    <br />

    <!-- ======================================================================================= -->

    <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><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. 

        <h3 class="tutorial">Using the NetBeans Module</h3>

        <ol>
            <li>Choose File &gt; New Project (Ctrl-Shift-N) and create a new project.
            <p><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>
            <p><img border="1" src="../images/tutorials/filetemplates/new-file-wizard-60.png" alt="New File wizard.">
            <p><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.
        </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><img border="1" src="../images/tutorials/filetemplates/shareable-nbm-60.png" alt="Shareable NBM.">
            <li>Make it available to others via, for example, e-mail.
        </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:
    
     <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>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>.


    <br />
 <!-- ===================================================================================== -->

    <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>To make sense of this, take the following steps:

<ol>
<li>Go to the Tools menu. Choose Templates. Open the Java | Java Class template 
in the editor:
<p><p>
<p><img src="http://blogs.oracle.com/geertjan/resource/freemarker-in-nb-2.png" border="1"/>

<p><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:

<p><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>Next, let's look at the license itself. Notice this line in the templates above:

<p><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:

<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>

...you will have the specified license embedded within the newly created file.

</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>


    <br />

<br>
   <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>
<br style="clear:both;" />
    
 <!-- ======================================================================================== -->

<h2><a name="nextsteps"></a>Next Steps</h2>

<p>For more information about creating and developing NetBeans Module, see the following resources: 
  <ul>
	  <p><li><a href="https://netbeans.org/kb/trails/platform.html">Other Related Tutorials</a></li>
	  <p><li><a href="https://netbeans.org/download/dev/javadoc/">NetBeans API Javadoc</a></li>
  </ul>
  
  <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>
        </tbody>
    </table>
    </body>
</html>
