blob: 0a99eea35fc4fd9e1709675860ed1102e73d6e86 [file] [log] [blame]
<!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>
<title>Writing POV-Ray Support for NetBeans IV&#8212;Providing Project Templates</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="geertjan.wielenga@oracle.com"/>
<meta name="indexed" content="y"/>
<meta name="description"
content="NetBeans POV-Ray Support Tutorial Part IV&#8212;Providing custom project templates"/>
<!-- Copyright (c) 2006 Sun Microsystems, Inc. All rights reserved. -->
<!-- Use is subject to license terms.-->
</head>
<body>
<h1>Writing POV-Ray Support for NetBeans IV&#8212;Providing Project Templates</h1>
<p>This is a continuation of the tutorial for building a POV-Ray rendering application on
the NetBeans Platform. If you have not read the <a href="nbm-povray-1.html">first</a>,
<a href="nbm-povray-2.html">second</a>, and <a href="nbm-povray-3.html">third</a>
parts of this tutorial, you may want to start there.</p>
<h2 class="tutorial"><a name="setup"></a>Project Templates</h2>
<p>We left off with a module that let us open POV-Ray projects, and basic
support for POV-Ray files, but no way to create a new POV-Ray project.</p>
<p>So the first step is to add the ability to use the New Project Wizard
to create POV-Ray projects. The IDE gives you the ability to embed a project
in a module as a ZIP file, and add the necessarily configuration and code
to make it available from the New Project wizard and unpack it in a
directory of the user's choice. We will make use of that functionality
to create our project templates.</p>
<p>First we need to <i>have</i> a project to zip up, so we will create that
by hand. You can do this in NetBeans, just by creating the appropriate
folders and files.</p>
<div class="indent">
<ol>
<li>First create a new package in the Povray Projects project,
<code>org.netbeans.examples.modules.povproject.templates</code>. This
will simply help us keep the sources more organized.</li>
<li>Switch to the Files window in the IDE and find the root folder for
the Povray Projects project.</li>
<li>Create the following directory structure underneath that directory:
<p></p>
<ul>
<li><code><b>templates/</b></code>&#8212;a root directory for our template projects
<ul>
<li><code><b>EmptyPovrayProject/</b></code>&#8212;Base directory for an empty project
<ul>
<li><code><b>images/</b></code></li>
<li><code><b>pvproject/</b></code>
<ul>
<li><code>project.properties</code></li>
</ul></li>
<li><code><b>scenes/</b> </code>
<ul>
<li><code>EmptyPovrayProject.pov</code></li>
</ul></li>
</ul></li>
<li><code><b>SamplePovrayProject/</b></code>&#8212;Base directory for an project with sample .pov files
<ul>
<li><code><b>images/</b></code></li>
<li><code><b>pvproject/</b></code>
<ul>
<li><code>project.properties</code></li>
</ul></li>
<li><code><b>scenes/</b> </code>
<ul>
<li><code>SamplePovrayProject.pov</code></li>
</ul></li>
</ul></li>
</ul></li>
</ul></li>
</ol>
</div>
<p>In the Files window, you should now see the following:</p>
<p><img alt="" src="../../images/tutorials/povray/71/ch4/pic-1.png"/></p>
<p>We should have some content for the sample POV-Ray project's file. You
can copy and paste the initial content into the
<code>SamplePovrayProject.pov</code> from here:</p>
<pre class="examplecode">// This is a simple red sphere
// first, the camera position
camera {
location <2,5,-10>
look_at <0,0,0>
}
// now, some light
light_source {
<0,-10,0>
color rgb <1,1,1>
}
// the sphere
sphere {
<0,0,0>, 5
pigment { color rgb <1,0,0> }
}</pre>
<p class="tips"> A POV-Ray file that will render a NetBeans logo <a href="../images/tutorials/povray/71/ch4/sample.pov">can
be found here</a>!</p>
<p>Now we are ready to add our sample projects&#8212;but here we have to cheat
just a little: the IDE will only package up a sample project that it has
open, and in our development IDE we don't have support for POV-Ray projects,
so our hand-created projects won't be recognized. <i>But</i>, we already
have a module that provides support for POV-Ray projects available. So we
will cheat just a little bit and use that to fool it into embedding our
new POV-Ray projects in our module:</p>
<div class="indent">
<ol>
<li><p>Right-click the Povray Project and choose Create NBM:</p>
<p><img alt="" src="../../images/tutorials/povray/71/ch4/pic-2.png"/></p>
</li>
<li><p>Switch to the Files window (Ctrl-2), where you should see
the NBM file that has been created:</p>
<p><img alt="" src="../../images/tutorials/povray/71/ch4/pic-3.png"/></p>
<p class="tips">An NBM (<b>N</b>et<b>B</b>eans <b>M</b>odule) file is the
deployment unit of a module. It contains the JAR, together
with some metadata needed for installing the JAR and
activating it in an application.</p>
</li>
<li><p>In the IDE, go to Tools | Plugins in the main menu. In the Downloaded
tab, browse to the NBM file that you created in the previous step.</p>
<p><img alt="" src="../../images/tutorials/povray/71/ch4/pic-4.png"/></p>
<p>Click Install and then click through all the dialogs, saying Yes
and OK everywhere, and in the end you will have installed the
POV-Ray project support into the development IDE.
</p>
</li>
<li><p>Open <code>templates/EmptyPovrayProject</code>
and <code>templates/SamplePovrayProject</code> into the IDE, which
is now possible because the IDE now supports POV-Ray projects:</p>
<p><img alt="" src="../../images/tutorials/povray/71/ch4/pic-5.png"/></p>
</li>
<li><p>Right-click the Povray Projects module and choose New &gt; Other.
In the Module Development category, choose the Project Template
wizard, as shown below:</p>
<p><img alt="" src="../../images/tutorials/povray/71/ch4/pic-6.png"/></p>
<p>Press Enter or click Next.</p>
</li>
<li><p>On the next page of the wizard, select EmptyPovrayProject from the
combo box&#8212;this is what we will package up.</p>
<p><img alt="" src="../../images/tutorials/povray/71/ch4/pic-7.png"/></p>
<p>Click Next or press Enter.</p>
</li>
<li><p>Now you are prompted for a name. Enter &quot;EmptyPovrayProject&quot;
for the Template Name, and &quot;Empty Povray Project&quot; for the
display name. Type "POVRay" as the category. Select the "templates"
package for storing the new project template.</p>
<p><img alt="" src="../../images/tutorials/povray/71/ch4/pic-8.png"/></p>
<p>Click Finish or press Enter.</li>
<li><p>Now repeat the above steps, from 5 to 7, for <code>templates/SamplePovrayProject</code>,
calling it Sample Povray Project and choosing the sample package,
that is, the <tt>templates</tt> package, for storing the template:
<p><img alt="" src="../../images/tutorials/povray/71/ch4/pic-9.png"/></p>
</li>
</ol>
</div>
<p>The above steps created a number of files on disk&#8212;as shown below:</p>
<p><img alt="" src="../../images/tutorials/povray/71/ch4/pic-10.png"/></p>
<p>There are two new
ZIP files in our module that are zipped copies of the projects. The other
files provide wizard functionality for instantiating our two projects
from the New Project wizard.</p>
<p>Run the application, go to File | New Project, and you will see the
two templates ready to be used:</p>
<p><img alt="" src="../../images/tutorials/povray/71/ch4/pic-11.png"/></p>
<p>Complete the wizard and you will have a new POV-Ray project ready
to be developed further.</p>
<h2 class="tutorial"><a name="build-script"></a>Modifying the Build Script</h2>
<p>Our initial sample projects are probably not in their final form, so it would
be nice to have the build script automatically rebuild the zip files of the
sample projects whenever we build the Povray Projects module&#8212;that way we can
simply modify the samples at will, and whenever we do a build they will be
up-to-date. So we'll make a few changes to the build script:</p>
<p>Add the following targets to the Ant build script in the Povray Projects module:</p>
<pre class="examplecode">&lt;target name="netbeans" depends="package-samples,projectized-common.netbeans"/&gt;
&lt;target name="package-samples"&gt;
&lt;delete file="${basedir}/src/org/netbeans/examples/modules/povproject/templates/EmptyPovrayProjectProject.zip"/&gt;
&lt;delete file="${basedir}/src/org/netbeans/examples/modules/povproject/templates/SamplePovrayProjectProject.zip"/&gt;
&lt;zip compress="9" basedir="src/org/netbeans/examples/modules/povproject/templates/EmptyPovrayProject"
zipfile="${basedir}/src/org/netbeans/examples/modules/povproject/templates/EmptyPovrayProjectProject.zip"/&gt;
&lt;zip compress="9" basedir="src/org/netbeans/examples/modules/povproject/templates/SamplePovrayProject"
zipfile="${basedir}/src/org/netbeans/examples/modules/povproject/templates/SamplePovrayProjectProject.zip"/&gt;
&lt;/target&gt;</pre>
<p class="tips">If we were using a version control system such as CVS to store our source code, now
would be a good time to mark the two ZIPs as ignored
(add them to <code>.cvsignore</code>
or equivalent), since they will be recreated whenever you build the project.</p>
<h2 class="tutorial"><a name="setup"></a>Next Steps</h2>
<p>In the <a href="nbm-povray-5.html">next section</a> we will create the API needed for communication
between our two current modules.</p>
</body>
</html>