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