<!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.0</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 Project Sample Module Tutorial</h1>
    
    <p>This tutorial demonstrates how to create a module that adds a sample to the New Project wizard.

       <p><strong class="notes">Note: </strong>This is not the latest version of this
      document. It applies to NetBeans IDE 6.0/6.1 only.
      <a href="../nbm-projectsamples.html">Click here</a> to
      see the most up to date version.

     <p><b>Contents</b></p>
   
      <img  src="../../images/articles/60/netbeans-stamp60-61.gif" class="stamp" width="114" height="114" alt="Content on this page applies to NetBeans IDE 6.1" title="Content on this page applies to NetBeans IDE 6.1"> </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><a href="#building">Building and Installing the Module</a></li>
        <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>
        </ul>
        <li><a href="#tweaking">Tweaking the Module</a></li>
        <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><a href="#panel">Adding a Panel</a>
            <li><a href="#sources">Updating the Sources</a>
        </ul>

       </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">NetBeans IDE</td>
                <td class="tbltd1">version 
                <a href="http://download.netbeans.org/netbeans/6.1/final/">version 6.1</a> or<br>
                version 6.0</td>
            </tr>
            <tr>
                <td class="tbltd1">Java Developer Kit (JDK)</td>
                <td class="tbltd1"><a href="http://java.sun.com/javase/downloads/index.jsp">version 6</a> 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>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>At the end of this tutorial, the New Project wizard will contain a new sample,
    called "My Sample Application":
    
    <p><img border="1" src="../../images/tutorials/mysample/new-project-wizard-60.png" alt="New Project wizard.">
    
    <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.
    
    <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.
    
    <ol>
        <li>Choose File &gt; New Project (Ctrl-Shift-N). Under Categories, select NetBeans Modules. Under projects, 
        select Module Project and click Next.</li>
        <li>In the Name and Location panel, type <tt>AdditionalSamples</tt> in Project Name.
            Change the
            Project Location to any directory on your computer. Leave the Standalone Module radiobutton
        and the Set as Main Project checkbox selected The panel should now look as follows:</p>
        
        <p><img border="1" src="../../images/tutorials/mysample/proj-name-and-location-panel-60.png" alt="Step 1 of wizard.">
        <p>Click Next.
        
        <li>In the Basic Module Configuration panel, replace <tt>yourorghere</tt> in Code Name Base with <tt>myorg</tt>,
            so that the whole code name base is <tt>org.myorg.additionalsamples</tt>.
            The code name base is the unique name of your module.
            Add a space to the default Module Display Name, so that it is changed to <tt>Additional Samples</tt>.
            Leave the location of the localizing bundle and XML layer, so that they will be stored in a
        package with the name <tt>org/myorg/additionalsamples</tt>. The panel should now look as follows:</p>
        
        <p><img border="1" src="../../images/tutorials/mysample/proj-basic-module-configuration-panel-60.png" alt="Step 2 of wizard.">
        
    <li>Click Finish.</ol>
    
    <p> The IDE creates the <tt>Additional Samples</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 align="left"><img border="1" src="../../images/tutorials/mysample/initial-projects-window-60.png" alt="Initial Projects window.">
    
    </ol><p>
    <br />
    
    <!-- ===================================================================================== -->
    <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.
    
    
    <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>
        
        <p><img border="1" src="../../images/tutorials/mysample/select-project-panel-60.png" alt="Select Project panel.">
        
        <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>Click Next.
        
        <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> 
        
        <p><img border="1" src="../../images/tutorials/mysample/name-and-location-panel-60.png" alt="Name and location panel.">
        
    <li>Click Finish.</ol>
    
    <p> The IDE creates the following:
        <ul><li><tt>MySampleApplicationProject.zip.</tt> A ZIP file containing your sample.
            <li><tt>MySampleApplicationDescription.html.</tt> An HTML file for the description
            displayed in the New Project wizard's description field.
            <li><tt>MySampleApplicationPanelVisual.</tt>
            <br><tt>MySampleApplicationWizardIterator.java.</tt>
            <br><tt>MySampleApplicationWizardPanel.java.</tt>
            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.
        </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.</ul>
    
    <p>The Projects window should now look as follows:</p>
    
    <p><img border="1" src="../../images/tutorials/mysample/final-projects-window-60.png" alt="Initial Projects window.">
    
    
    <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"><a name="installing-the-nbm"></a>Installing the NetBeans Module</h3>
        
        <p>In the Projects window, right-click the <tt>Additional Samples</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.</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.
            
            <ol>
        <li>Choose File &gt; New Project (Ctrl-Shift-N).</p>
        
        <p>The New Project wizard opens and displays
        the new project sample:</tt>
        <p align="left"><img border="1" src="../../images/tutorials/mysample/new-project-wizard-60.png" alt="New Project wizard.">
        <li>Select the new project sample and click Next. The wizard panel appears:</p>
        
        <p><img border="1" src="../../images/tutorials/mysample/new-project-wizard2-60.png" alt="New File wizard.">
        <li>Type a name in the project name field. Click Finish.</p>
        <p>The Projects window opens and
        displays the newly created project sample.
        </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.
            
            <ol>
        <li>In the Projects window, right-click the <tt>Additional Samples</tt> project and choose Create NBM.</p>
        
        <p>The NBM file is created and you can view it in the Files window (Ctrl-2):</p>
        <p><img border="1" src="../../images/tutorials/mysample/shareable-nbm-60.png" alt="Shareable NBM.">
        <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>.
        </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.
                    <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>
                <p><img border="1" src="../../images/tutorials/mysample/image-picker-60.png" alt="Picking an image">
                <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.
                
                <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>
                <p><img border="1" src="../../images/tutorials/mysample/image-picker-layers-60.png" alt="New File wizard.">
         
<p>In the case of the above, in other words, for Java SE samples,
 the icon is defined as follows:
 
<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.
                
                </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>
        <p><img border="1" src="../../images/tutorials/mysample/description-change.png" alt="changing the description">
        <li>Change the text, reinstall the module, and notice the changed
         description in the New Project wizard.
        </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:</p>
         <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="https://netbeans.org/download/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>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>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.
        
        <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>
         
         <p>You should find that the iterator is defined as
          follows:

<pre>&lt;attr name="instantiatingIterator" 
    newvalue="org.netbeans.modules.java.examples.J2SESampleProjectIterator"/&gt;</pre>


<li>Having made the change outlined above, reinstall the module
and notice that the sample's wizard panel now looks as follows:</p>
 
<p><img border="1" src="../../images/tutorials/mysample/set-as-main-project.png" alt="set as main project">
    
<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.
      
      </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.</p>
        <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.
        
 <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.
        
        </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><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.
         
        
            
    </div>
    
    
    <br>
    <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>
    <br style="clear:both;" />
    <!-- ======================================================================================== -->
    
    <h2><a name="nextsteps"></a>Next Steps</h2>
    
    <p>For more information about creating and developing NetBeans modules, see the following resources: 
    <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>
    <!-- ======================================================================================== -->
    
    <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>
            
            
            
        </tbody>
    </table>
</body>
</html>
