<!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 Project Sample 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 creating project samples."/>
    <!--      Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. -->
    <!--     Use is subject to license terms.-->
</head>
<body>
    <h1>NetBeans Project Sample Module Tutorial</h1>
    
    <p>This tutorial demonstrates how to create a module that adds a sample
    to the New Project wizard. The sample could function either as an example
    to the user or as a new project template that provides the basic files needed to
    get started working on a technology of some kind.</p>

       <p><strong class="notes">Note: </strong>This document is for the 6.7 release of the NetBeans Platform and beyond. If you
    are using an earlier version, see <a href="60/nbm-projectsamples.html">the 6.0/6.1 version
    of this document</a>.</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="#into">Introduction to Project Samples</a></li>
        <li><a href="#creatingthemoduleproject">Creating the Module Project</a></li>
        <li><a href="#creatingandgettingtoknowthemainfiles">Bundling the Sample Application</a></li>
        <li><a href="#building">Building and Installing the Module</a>
        <ul>
            <li><a href="#installing-the-nbm">Installing the NetBeans Module</a></li>
            <li><a href="#using-the-nbm">Using the NetBeans Module</a></li>
            <li><a href="#creating-the-nbm">Creating a Shareable Module Binary</a></li>
        </ul></li>
        <li><a href="#tweaking">Tweaking the Module</a>
        <ul>
            <li><a href="#icon">Changing the Icon</a></li>
            <li><a href="#category">Changing the Category</a></li>
            <li><a href="#description">Changing the Description</a></li>
            <li><a href="#iterator">Changing the Iterator</a></li>
            <li><a href="#panel">Adding a Panel</a></li>
            <li><a href="#sources">Updating the Sources</a></li>
        </ul></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>

    <h2><a name="intro"></a>Introduction to Project Samples</h2>

<p>Using two wizards in the IDE&#8212;the New Module Project wizard and the
    New Project Template wizard&#8212;you can very easily create a module that
    contains your technology's project samples. No coding of any kind is needed in
    order to do this. The wizards do all the work for you. In fact, if you find yourself
    doing any coding at all, you are possibly doing something wrong. Coding should only
    be necessary in a small set of corner cases.</p>
    <p>When you complete this tutorial, you will have a module that contains
    your samples. The intended users of your samples
    can then simply use the Plugin Manager to install the module. As a result, the samples
    will appear in the New Project wizard.</p>
    
    <p>At the end of this tutorial, the New Project wizard will contain a new sample,
    called "My Sample Application":</p>
    
    <p><img alt="" src="../images/tutorials/mysample/new-project-wizard-60.png" alt="New Project wizard."/></p>
    
    <p>In addition to showing how to create a module containing a sample,
    you will be instructed on some ancillary topics, such as how to change
    the icon and description in the New Project wizard, and how to regenerate
    the sample after modifying its sources.</p>
    
    <h2 class="tutorial"><a name="creatingthemoduleproject"></a>Creating the Module Project</h2>
    
    <p>We begin by working through the New Module Project
    wizard. At the end of it, we will have a basic
    source structure, with some default files, that
    every NetBeans module requires.</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>AdditionalSamples</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.additionalsamples</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/additionalsamples</tt>. Click Finish.</li>
</ol>
    
    <p> The IDE creates the <tt>AdditionalSamples</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="creatingandgettingtoknowthemainfiles"></a>Bundling the Sample Application</h2>
    <p>Now that we have a module project, which gives us our source structure,
    we simply run through another wizard that will bundle our sample. You simply
    need to select it in the wizard and then the wizard will
    generate all the required classes and registration
    details for you.</p>
    
    
    <ol>
        
        <li>Right-click the project node and 
            choose New &gt; Other. Under Categories, select NetBeans Module Development. Under Projects, 
        select Project Template. Click Next.</li>
        <li>In the Select Project panel, select the project that you want to bundle as a sample, as shown below.
        
        <p><img alt="" src="../images/tutorials/mysample/select-project-panel-60.png" alt="Select Project panel."/></p>
        
        <p><b class="notes">Note:</b> Only projects that
        are open in the IDE are shown in
        the Project drop-down above. To bundle
        an external project as a sample, use the
        Browse button to locate it in your
        filesystem.</p>
        
        <p>Click Next.</p></li>
        
        <li>In the Name and Location panel, type <tt>MySampleApplication</tt> as the template name,
        type <tt>My Sample Application</tt> as the display name, and select Samples|General in the Category drop-down, as shown below:
        
        <p><img alt="" src="../images/tutorials/mysample/name-and-location-panel-60.png" alt="Name and location panel."/></p></li>
        
    <li>Click Finish.</li></ol>
    
    <p> The IDE creates the following:</p>
        <ul><li><tt>MySampleApplicationProject.zip.</tt> A ZIP file containing your sample.</li>
            <li><tt>MySampleApplicationDescription.html.</tt> An HTML file for the description
            displayed in the New Project wizard's description field.</li>
            <li><tt>MySampleApplicationPanelVisual.</tt>
            <br><tt>MySampleApplicationWizardIterator.java.</tt></br>
            <br><tt>MySampleApplicationWizardPanel.java.</tt></br>
            A <tt>JPanel</tt>, with a supporting wizard class, and an iterator
            used in the New Project wizard to create the sample. You do not need
            to understand how these work, unless you want to. Later in this tutorial,
            these classes are discussed, although they are not necessary to understand
            in most scenarios involving the creation of project samples.</li>
        </ul>
    <p>In addition, the IDE registers the sample in the XML layer file and adds
    localization strings to the <tt>Bundle.properties</tt> file.</p>
    
    <p>The Projects window should now look as follows:</p>
    
    <p><img alt="" src="../images/tutorials/mysample/final-projects-window-60.png" alt="Initial Projects window."/></p>
    
    
        <!-- ======================================================================================= -->
            
        <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"><a name="installing-the-nbm"></a>Installing the NetBeans Module</h3>
        
        <p>In the Projects window, right-click the <tt>AdditionalSamples</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"><a name="using-the-nbm"></a>Using the NetBeans Module</h3>
        
        <p>In this section, we take on the role of the user of our sample. After a user
            installs our module, they typically take the steps outlined below.</p>
            
            <ol>
        <li>Choose File &gt; New Project (Ctrl-Shift-N).
        
        <p>The New Project wizard opens and displays
        the new project sample:</p>
        <p><img alt="" src="../images/tutorials/mysample/new-project-wizard-60.png" alt="New Project wizard."/></p></li>
        <li>Select the new project sample and click Next. The wizard panel appears:
        <p><img alt="" src="../images/tutorials/mysample/new-project-wizard2-60.png" alt="New File wizard."/></p></li>
        <li>Type a name in the project name field. Click Finish.
        <p>The Projects window opens and
        displays the newly created project sample.</p></li>
        </ol>
        <h3 class="tutorial"><a name="creating-the-nbm"></a>Creating a Shareable Module Binary</h3>
        
        <p>To make our sample available to our users, we need to create an NBM file, which
            is a binary NetBeans module file, containing our sample, together with supporting
            files such as the <tt>layer.xml</tt> file.</p>
        <ol>
        <li>In the Projects window, right-click the <tt>AdditionalSamples</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 alt="" src="../images/tutorials/mysample/shareable-nbm-60.png" alt="Shareable NBM."/></p></li>
        <li>Make it available to others via, for example, e-mail. Or create your own NetBeans
        Update Center and publish it there. Or publish it in the <a href="http://plugins.netbeans.org/PluginPortal/">NetBeans Plugin Portal</a>.</li>
        </ol>
    
     </div>
    
    <!-- ======================================================================================= -->
            
    <h2><a name="tweaking"></a>Tweaking the Sample</h2>
    
    <p>In this section, we perform some typical tasks
        that you might want to perform after completing
        the New Project Template wizard, in order to finetune
        your sample. For example, you might want to change the
    sample's icon, description, and similar items.</p>
      <div class="indent">
        <h3 class="tutorial"><a name="icon"></a>Changing the Icon</h3>
                <p>First, we change the default icon, after looking at how
                    the icon is defined for other samples.</p>
                    <ol>
                    <li>When you expand the Important Files node, and then
                    the XML Layer node, a node is found, representing the sample's
                    registration in the <tt>layer.xml</tt> file. By right-clicking
                    the node, you can choose Pick Icon, which lets you choose an
                icon to replace that which is provided by default:
                <p><img alt="" src="../images/tutorials/mysample/image-picker-60.png" alt="Picking an image"/></p></li>
                <li>Choose a new icon. When you do so,
                the <tt>layer.xml</tt> file reflects your new choice:
      <pre class=examplecode>&lt;folder name="Templates"&gt;
    &lt;folder name="Project"&gt;
        &lt;folder name="Samples"&gt;
            &lt;folder name="Standard"&gt;
                &lt;file name="MySampleApplicationProject.zip" 
                                url="MySampleApplicationProject.zip"&gt;
                    <b>&lt;attr name="SystemFileSystem.icon" 
                                urlvalue="nbresloc:/org/myorg/additionalsamples/new_icon.png"/&gt;</b>
                    &lt;attr name="SystemFileSystem.localizingBundle" 
                                stringvalue="org.myorg.additionalsamples.Bundle"/&gt;
                    &lt;attr name="instantiatingIterator" 
                                methodvalue="org.myorg.additionalsamples.
                                MySampleApplicationWizardIterator.createIterator"/&gt;
                    &lt;attr name="instantiatingWizardURL" 
                                urlvalue="nbresloc:/org/myorg/additionalsamples/
                                MySampleApplicationDescription.html"/&gt;
                    &lt;attr name="template" boolvalue="true"/&gt;
                &lt;/file&gt;
            &lt;/folder&gt;
        &lt;/folder&gt;
    &lt;/folder&gt;
&lt;/folder&gt;</pre>          

<p>You can also manually change the icon, by adding it to your module,
                and changing its name in the <tt>layer.xml</tt> file
                shown above.</p></li>
                
                <li>In the <tt>&lt;this layer in context&gt;</tt> node, visible
                 in the screenshot above, you can
                    see the other samples available to your platform. When you
                    do so, you can choose Open Layer File(s), which opens a node's
                    <tt>layer.xml</tt> file which, in this case, is useful in
                ascertaining how other samples' icons are defined:
        <p><img alt="" src="../images/tutorials/mysample/image-picker-layers-60.png" alt="New File wizard."/></p>
         
<p>In the case of the above, in other words, for Java SE samples,
    the icon is defined as follows:</p>
 
<pre>&lt;attr name="SystemFileSystem.icon" 
    urlvalue="nbresloc:/org/netbeans/modules/java/examples/resources/j2seProject.gif"/&gt;</pre>

                <p>If you add the line above to your <tt>layer.xml</tt> file,
                your sample will have the same icon as the other samples
                in the New Project wizard's Samples|General category.</p></li>
                
                </ol>
        
   
            <h3 class="tutorial"><a name="category"></a>Changing the Category</h3>
            <p>When we used the New Project Template wizard, we assigned the
         sample to a category. Afterwards, we can put it in a different category,
         either via the user interface shown in the previous screenshot or manually
            in the <tt>layer.xml</tt> file.</p>
            
                        
                
            <h3 class="tutorial"><a name="description"></a>Changing the Description</h3>
            <p>Next, we change the sample's description, which is shown
                in the New Project wizard. As with the icon, a default
                description is provided when you create a module containing
            a sample. However, you can easily change that description.</p>
            <ol>
        <li>Open the file shown below and notice the default text shown in the editor:
        <p><img alt="" src="../images/tutorials/mysample/description-change.png" alt="changing the description"/></p></li>
        <li>Change the text, reinstall the module, and notice the changed
            description in the New Project wizard.</li>
        </ol>
        
            <h3 class="tutorial"><a name="iterator"></a>Changing the Iterator</h3>
            <p>The New Project Template wizard creates a very basic
         wizard that the user will work through when getting the
         sample from the New Project wizard. The wizard is basic
         in the sense that it consists of one panel and that the
         panel contains the absolute bare minimum in terms of
         Swing components. In this section, we look at an easy yet
         powerful way of changing the single panel, without
         touching the panel itself.</p>
            <ol>
        <li>Open the <tt>layer.xml</tt> file and notice the highlighted line below:
         <pre class=examplecode>&lt;folder name="Templates"&gt;
    &lt;folder name="Project"&gt;
        &lt;folder name="Samples"&gt;
            &lt;folder name="Standard"&gt;
                &lt;file name="MySampleApplicationProject.zip" 
                            url="MySampleApplicationProject.zip"&gt;
                    &lt;attr name="SystemFileSystem.icon" 
                            urlvalue="nbresloc:/org/myorg/additionalsamples/new_icon.png"/&gt;
                    &lt;attr name="SystemFileSystem.localizingBundle" 
                            stringvalue="org.myorg.additionalsamples.Bundle"/&gt;
                    <b>&lt;attr name="instantiatingIterator" 
                            methodvalue="org.myorg.additionalsamples.
                            MySampleApplicationWizardIterator.createIterator"/&gt;</b>
                    &lt;attr name="instantiatingWizardURL" 
                            urlvalue="nbresloc:/org/myorg/additionalsamples/
                            MySampleApplicationDescription.html"/&gt;
                    &lt;attr name="template" boolvalue="true"/&gt;
                &lt;/file&gt;
            &lt;/folder&gt;
        &lt;/folder&gt;
    &lt;/folder&gt;
&lt;/folder&gt;</pre>          

        <p>That line defines an <i>iterator</i>, which is a class
        that implements <tt><a href="http://bits.netbeans.org/dev/javadoc/org-openide-dialogs/org/openide/WizardDescriptor.ProgressInstantiatingIterator.html">WizardDescriptor./*Progress*/InstantiatingIterator</a></tt>.
        The iterator specifies the classes that define the panels
        in the wizard, defines the text of the steps shown
        in the wizard, unzips the ZIP file, and applies the
        user-specified settings in the wizard to the unzipped
        objects in the ZIP file.</p>
        
        <p>The iterator that is found in our <tt>layer.xml</tt> file
        by default makes use of a <tt>JPanel</tt> and wizard class
        that are also created by the New Project template wizard.</p>
        
        <p>In the next step, we change the iterator referenced
        in the <tt>layer.xml</tt> file to the iterator used by
        other samples. When we do so, we will make use of a 
        different iterator, which will result in the panel in
        the wizard showing different content.</p></li>
        
        <li>As shown in step 3 of the section called <a href="#icon">Changing the Icon</a>,
            use the "Open Layer File(s)" menu item to open the layer file
            of one of the other Samples|General category. Replace the
            iterator defined in your <tt>layer.xml</tt> file with the
        iterator defined there.
         
         <p>You should find that the iterator is defined as
          follows:</p>

<pre>&lt;attr name="instantiatingIterator" 
    newvalue="org.netbeans.modules.java.examples.J2SESampleProjectIterator"/&gt;</pre></li>


<li>Having made the change outlined above, reinstall the module
and notice that the sample's wizard panel now looks as follows:
 
<p><img alt="" src="../images/tutorials/mysample/set-as-main-project.png" alt="set as main project"/></p>
    
<p>Compare this panel to the screenshot in step 2
      of <a href="#using-the-nbm">Using the NetBeans Module</a>
      and notice that we now have a new "Set as Main Project"
      checkbox, which we did not have when we were using
      our default iterator. The reason for this is that our
      default iterator made use of a panel that does <i>not</i>
      have that checkbox.</p></li>
      
      </ol>
        
      

            <h3 class="tutorial"><a name="description"></a>Adding a Panel</h3>
            <p>In the previous section, we changed the iterator,
         which resulted in a different panel being shown. Possibly,
         however, there is no existing iterator to cater to your
         specific needs. In this section, we learn how to
         add a new panel to the wizard. We do this by reusing the
         iterator that the New Project Template wizard creates
         for us.</p>
            <ol>
        <li>Use the Wizard wizard to create a new wizard panel
     which, just like the panel created by the New Project Template
        wizard, consists of a <tt>JPanel</tt> and a wizard class.</li>
        <li>Instantiate the new wizard panel in the iterator's 
        <tt>createPanels()</tt> method, as shown here:
        
<pre class=examplecode>private WizardDescriptor.Panel[] createPanels() {
    return new WizardDescriptor.Panel[] {
        <b>//This is the wizard panel, created by the
        //New Project Template wizard:</b>
        new MySampleApplicationWizardPanel()
        <b>//This is the new wizard panel, created by the
        //New Wizard wizard:</b>
        //new MySampleApplicationWizardPanel1()
    };
}</pre>

<p>You only need to add your new wizard panel to the method
 above, and then it will be instantiated when the
 sample's wizard is invoked by the user in the New
 Project wizard.</p></li>
        
 <li>Finally, you need to add a new string
        to the iterator's <tt>createSteps()</tt> method,
        so that your new wizard panel is accompanied
        by a string in the left sidebar of the wizard:
        
<pre class=examplecode>private String[] createSteps() {
    return new String[] {
        NbBundle.getMessage(MySampleApplicationWizardIterator.class, "LBL_CreateProjectStep"),
        <b>NbBundle.getMessage(MySampleApplicationWizardIterator.class, "LBL_CreateProjectStep1")</b>
    };
}</pre> 

<p>You only need to add the line in bold above, and then
    define the key/value pair in the <tt>Bundle.properties</tt> file.</p></li>
        
        </ol>
        
            <h3 class="tutorial"><a name="sources"></a>Updating the Sources</h3>
            <p>When you change the sample's sources, how do you update the module
         that bundles the sample? Do you need to recreate the module project, work
         through the New Project Template wizard again, and then recreate the NBM file?
            No. The only part of the sample module project that is impacted by changes
            in the original sample's sources is the ZIP file. The ZIP file contains the sources,
            and those are the only pieces that are affected when you make changes to the
            original project. Hence, you simply need to recreate the ZIP file. To simplify this,
            if you add the following Ant target to the <tt>build.xml</tt> file of
         the project where you created the sources, you can regenerate the ZIP file from inside the IDE
         and automatically have it copied to the sample module's source structure right away.</p>
 
<pre class=examplecode>&lt;target name="zipme" description="Zip the application to the sample project"&gt;
    &lt;property name="build.classes.dir" location="/home/NetBeansProjects/AdditionalSamples"/&gt;
    &lt;property name="examples" location="${build.classes.dir}/src/org/myorg/additionalsamples/"/&gt;
    &lt;zip basedir="../MySampleApplication" destfile="${examples}/MySampleApplicationProject.zip"&gt;
        &lt;exclude name="**/build/"/&gt;
        &lt;exclude name="**/dist/"/&gt;
        &lt;exclude name="**/nbproject/private/"/&gt;
    &lt;/zip&gt;
&lt;/target&gt;</pre>

        <p>In the above Ant target, the <tt>build.classes.dir</tt> property points to the location
        of your sample module project, which is probably different in your scenario than is
        indicated above. </p>
        
        <p><b class="notes">Note:</b> We exclude some folders from the ZIP file, because these are
        not needed in the sample module project and, in fact, would cause problems if they were
        not excluded.</p>
            
    </div>
    
    <div class="feedback-box"><a href="https://netbeans.org/about/contact_form.html?to=3&amp;subject=Feedback:%20Project%20Sample%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 modules, see the following resources:</p>
    <ul>
        <li><a href="https://netbeans.org/kb/trails/platform.html">Other Related Tutorials</a></li>
        <li><a href="http://bits.netbeans.org/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>
                    9 July 2005
                </td>
                <td>
                    Initial version
                </td>
            </tr>
            <tr>
                <td>
                    2
                </td>
                <td>
                    10 July 2005
                </td>
                <td>
                    <ul><li>Added the <tt>org.netbeans.modules.java.examples.J2SESampleProjectIterator</tt> wizard
                    as an alternative -- less strict than the web wizard.
                    <li>Expanded the Ant script that zips the project sample, so that it now excludes
                    build, dist, and nbproject/private folders.      
                </td>
            </tr>
            <tr>
                <td>
                    3
                </td>
                <td>
                    23 August 2005
                </td>
                <td>
                    <ul><li>Completely rewrote the tutorial, because of the Project Template wizard.
                    <li>Questions: 
                    <ul><li>What's the Category drop-down for? Select the category
                        in the New Project wizard where the sample will be registered, but
                        not implemented yet. 
                    <li>Layer file indicates that no Bundle file exists, but it does.</ul>
                    <li>To do: 
                    <ul><li>Add details on each of the created files (currently there's only a sentence,
                        this should be expanded).
                        <li>Explain relationship between generated files and resulting project template wizard.
                        <li>Add some post-processing customization steps (e.g., how to put the sample in a 
                        different category in the New Project wizard).
                        <li>Add introductory sentences to each section.
                    <li>Info about XML layer file to be added.</ul>
                </td>
            </tr>
            <tr>
                <td>
                    4
                </td>
                <td>
                    1 October 2005
                </td>
                <td><ul>
                        <li>Worked through the tutorial with today's build and tweaked here and there.
                        <ul>	      <li>No major changes (except, used the Category to put the sample in a category).
                            <li>Created <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=65595">http://netbeans.org/bugzilla/show_bug.cgi?id=65595</a>.
                        </ul>
                        <li>To do: 
                        <ul><li>Add details on each of the created files (currently there's only a sentence,
                            this should be expanded).
                            <li>Explain relationship between generated files and resulting project template wizard.
                            <li>Add some post-processing customization steps (e.g., how to put the sample in a 
                            different category in the New Project wizard).
                            <li>Add introductory sentences to each section.
                    <li>Info about XML layer file to be added.</ul></ul>
                </td>
            </tr>
            <tr>
                <td>
                    5
                </td>
                <td>
                    8 June 2007
                </td>
                <td>Began updating to 6.0. Everything works,
                    just changed screenshots (which were still
                    from 5.0 in some cases, where icons were
                    different), removed references
                    to 5.x, replaced with 6.0, neatened things
                    up here and there.
                    <p>To do:
                    <ul>
                        <li>How to change the icon
                        <li>How to change the description
                        <li>How to change the category
                        <li>How to change the name
                        <li>How to regenerate the sample ZIP
                        <li>How and why to use the panel
                        <li>How to bundle external JARs and <tt>javadoc</tt>
                        <li>Multiple samples in same module
                        <li>Intro sentences in sections
                        <li>Better intro, with New Project wizard
                        screeshot, in the tutorial's introduction
                    </ul>    
                </td>
            </tr>
            <tr>
                <td>
                    6
                </td>
                <td>
                    April 2008
                </td>
                <td>Began and completed updating updating to 6.1, 
                 only new styles needed. In the meantime,
                    most of the above items have been added.                
                     <p>To do:
                    <ul>
                        <li>Multiple samples in same module
                        <li>Discuss existing sample modules in the NetBeans
                        sources and how things have been done, and why.
                    </ul>    
                    </td>
            </tr>
            <tr>
                <td>
                    7
                </td>
                <td>
                    1 November 2008
                </td>
                <td>Fixed for 6.5, badge, table. To do: same as above.</td>
            </tr>
            <tr>
                <td>
                    8
                </td>
                <td>
                    July 2010
                </td>
                <td>Fixed for 6.9, badge, table. To do: same as above.</td>
                <td>Fixed error marks.</td>
            </tr>
        </tbody>
    </table>-->
</body>
</html>
