<!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>What's New in NetBeans Platform 6.7?</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="Overview of new features in NetBeans Platform 6.7"/>
    </head>
    <body>
        <h1>What's New in NetBeans Platform 6.7?</h1>

<p>An overview of changes relating to
    <a href="https://platform.netbeans.org/">NetBeans Platform 6.7</a>, which is the
 Swing framework that underpins applications such as NetBeans IDE. (<a href="https://platform.netbeans.org/whatsnew/65.html">Click here</a> for the 6.5
 version of this document.)</p>

<h3>New & Changed Features</h3>

<ul>
    <li><b>Annotations.</b> Several items that you were required
         to register in the <tt>layer.xml</tt> file can now
         be registered via annotations instead. Below is the list
         of annotations introduced in NetBeans Platform 6.7:
<ul>
<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=153655">@AntBasedProjectRegistration</a> (see <a href="http://blogs.sun.com/geertjan/entry/antbasedprojectregistration">related blog entry</a>)</li>
<li><a href="http://bits.netbeans.org/dev/javadoc/org-netbeans-modules-settings/apichanges.html#convertor.propertyannotation">@ConvertAsProperties</a> (see <a href="http://eppleton.sharedhost.de/blog/?p=619">related blog entry</a>)</li>
<li><a href="http://bits.netbeans.org/dev/javadoc/org-netbeans-modules-editor-lib2/apichanges.html#added-editoractionregistration">@EditorActionRegistration</a></li>
<li><a href="http://bits.netbeans.org/dev/javadoc/org-netbeans-modules-projectapi/apichanges.html#ProjectServiceProvider">@LookupMerger.Registration</a></li>
<li><a href="http://bits.netbeans.org/dev/javadoc/org-netbeans-modules-projectapi/apichanges.html#lookupprovider-ann">@LookupProvider.Registration</a></li>
<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=153015">@NodeFactory.Registration</a> (see <a href="http://blogs.sun.com/geertjan/entry/nodefactory_registration">related blog entry</a>)</li>
<li><a href="http://bits.netbeans.org/dev/javadoc/org-netbeans-modules-projectapi/apichanges.html#ProjectServiceProvider">@ProjectServiceProvider</a></li>
<li><a href="http://bits.netbeans.org/dev/javadoc/org-openide-util/apichanges.html#ServiceProvider">@ServiceProvider</a> (see <a href="http://blogs.sun.com/geertjan/entry/org_openide_util_lookup_serviceprovider">related blog entry</a>)</li>
<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=161286">@ServicesTabNodeRegistration</a> (see <a href="http://blogs.sun.com/geertjan/entry/servicestabnoderegistration">related blog entry</a>)</li>
</ul>

<p>Where possible, you are recommended to use annotations instead
     of <tt>layer.xml</tt> registrations. Future releases of the
     NetBeans Platform will include additional annotations.</p></li>

    <li><b>Suite chaining.</b> NetBeans Platform applications can now
        include modules that belong to other NetBeans Platform applications.
        As a result you can, for example, create a suite of modules that are
        common to all your applications, which can then reuse them. (See
        <a href="http://blogs.sun.com/geertjan/entry/sharing_code_between_different_netbeans">related blog entry</a>.)</li>
        
    <li><b>Automatic resolution of excluded modules.</b>
         Warnings about excluded modules that the application depends upon
         can now be resolved automatically in the Project Properties
         dialog of the NetBeans Platform application project type.</li>

    <li><b>Declarative MIME type resolution.</b>
        Traditionally, the NetBeans Platform recognizes files based on their
        file extension or, in the case of XML files, by their root element.
        However, sometimes you may need to read the content of a file,
        via <tt>findMIMEType(FileObject)</tt> to properly determine a MIME type,
        such as in the case of PHP files.
        From NetBeans Platform 6.7, it is easier to resolve MIME types, <a href="http://bits.netbeans.org/dev/javadoc/org-openide-filesystems/org/openide/filesystems/doc-files/HOWTO-MIME.html">as described here</a>.
        As a result, the MIME type resolver for PHP files is now <a href="http://hg.netbeans.org/main/file/tip/php.project/src/org/netbeans/modules/php/project/resources/php-project-mime-resolver.xml">as follows</a>.
        For details, see <a href="http://wiki.netbeans.org/DevFaqMIMEResolver">"How can I create declarative MIMEResolver and add new file type?"</a></li>
        
    <li><b>More control over <tt>TopComponents</tt>.</b> Per <tt>TopComponent</tt>,
        you can specify whether features such as maximizing, docking, and closing
        are supported. In NetBeans Platform 6.5, you were able to do this for the whole
        window system; now, you can do so per <tt>TopComponent</tt>, too.</li>

    <li><b>Improved Update Center support.</b> Licenses in
             the AutoUpdate catalog have been removed, based on <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=149071">issue 149071</a>.
             Though this enhancement is not directly visible to users,
             it  makes the plugin catalogs reload much faster and consume far
             less memory than before.</li>

    <li><b>Improved toolbar support.</b> The implementation of the toolbars
        in the main window has been rewritten from scratch. Now the toolbars
        behave better when the main window is being resized. It is also possible
        to dock any toolbar to the right edge of the toolbar area in the main window, thanks
        to a new version of the DTD for toolbar configurations:

<pre>&lt;!-- Document Type Declaration for toolbar configuration xml files. --&gt;

  &lt;!-- Root element of toolbar configuration. It's a list of Rows. --&gt;
  &lt;!ELEMENT Configuration (Row+)&gt;

  &lt;!-- Toolbar configuration row. It's a list of Toolbars. --&gt;
  &lt;!ELEMENT Row (Toolbar*)&gt;

  &lt;!-- Toolbar configuration Toolbar. It contains name of toolbar,
  it's position and switch of toolbar visibility. --&gt;
  &lt;!ELEMENT Toolbar EMPTY&gt;
  &lt;!ATTLIST Toolbar
    name CDATA #REQUIRED
    visible (true | false) #IMPLIED
    align (left | right) #IMPLIED
    dragable (true | false) #IMPLIED
  &gt;</pre>

<p>In the new DTD, shown above, which is version 1.1, the attributes "align" and "dragable" are new,
     while "position" has been removed. General information about
     toolbar configuration can be <a href="http://blogs.sun.com/geertjan/entry/toolbar_configurations">found here</a>.</p>
</li>
</ul>

<h3>New APIs</h3>

<p>Read all of the changes <a href="http://bits.netbeans.org/6.7/javadoc/apichanges.html">here</a>, with
 new/enhanced classes as follows:</p>

<ul>
    <li><b>Parsing API.</b> <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=133900">New API</a> for parsing syntax and providing features,
         such as syntax coloring and code completion. See the
         <a href="http://wiki.netbeans.org/New_Language_Support_TutorialDevelopment_Version">New Language Support Tutorial</a>.</li>

    <li><b>I/O APIs.</b> Several enhancements that enable
         the Output window to be displayed in different positions,
         containing text with varying colors:
        <ul>
            <li><tt><a href="http://bits.netbeans.org/dev/javadoc/org-openide-io/org/openide/windows/IOColorLines.html">IOColorLines</a></tt></li>
            <li><tt><a href="http://bits.netbeans.org/dev/javadoc/org-openide-io/org/openide/windows/IOColors.html">IOColors</a></tt></li>
            <li><tt><a href="http://bits.netbeans.org/dev/javadoc/org-openide-io/org/openide/windows/IOContainer.html">IOContainer</a></tt></li>
            <li><tt><a href="http://bits.netbeans.org/dev/javadoc/org-openide-io/org/openide/windows/IOPosition.html">IOPosition</a></tt></li>
            <li><tt><a href="http://bits.netbeans.org/dev/javadoc/org-openide-io/org/openide/windows/IOTab.html">IOTab</a></tt></li>
        </ul></li>
         
    <li><b>Filesystems API.</b> Several new classes and methods, enabling you
             to work more efficiently with files of any kind:
        <ul>
            <li><tt><a href="http://bits.netbeans.org/dev/javadoc/org-openide-filesystems/org/openide/filesystems/FileChooserBuilder.html">FileChooserBuilder</a></tt></li>
            <li><tt><a href="http://bits.netbeans.org/dev/javadoc/org-openide-filesystems/org/openide/filesystems/FileObject.html#asBytes()">FileObject.asBytes</a></tt></li>
            <li><tt><a href="http://bits.netbeans.org/dev/javadoc/org-openide-filesystems/org/openide/filesystems/FileObject.html#asLines(java.lang.String)">FileObject.asLines</a></tt></li>
            <li><tt><a href="http://bits.netbeans.org/dev/javadoc/org-openide-filesystems/org/openide/filesystems/FileObject.html#asText(java.lang.String)">FileObject.asText(encoding)</a></tt></li>
            <li><tt><a href="http://bits.netbeans.org/dev/javadoc/org-openide-filesystems/org/openide/filesystems/FileUtil.html#addFileChangeListener(org.openide.filesystems.FileChangeListener,%20java.io.File)">FileUtil.addFileChangeListener(FileChangeListener, File)</a></tt></li>
            <li><tt><a href="http://bits.netbeans.org/dev/javadoc/org-openide-filesystems/apichanges.html#FileUtil.getConfigFile">FileUtil.getConfigFile</a></tt></li>
            <li><tt><a href="http://bits.netbeans.org/dev/javadoc/org-openide-filesystems/apichanges.html#FileUtil.getConfigFile">FileUtil.getRoot</a></tt></li>
            <li><tt><a href="http://bits.netbeans.org/dev/javadoc/org-openide-filesystems/apichanges.html#FileUtil.setMIMEType">FileUtil.setMimeType</a></tt></li>
            </ul></li>

          <li><b>Explorer & Property Sheet API.</b>
        <ul><li><p><tt><a href="http://bits.netbeans.org/dev/javadoc/org-openide-explorer/org/openide/explorer/view/CheckableNode.html">CheckableNode</a></tt>
                    is a new class that can be put into the <tt>Lookup</tt> of
         a <tt>Node</tt>, enabling you to display
         a checkbox next to the node in the display of explorer
    views that support it:</p>
<img src="http://blogs.sun.com/geertjan/resource/video-store-checkablenode.png" alt="checkablenode image"/>
                  <p>See <a href="http://blogs.sun.com/geertjan/entry/org_openide_explorer_view_checkablenode">related blog entry</a>.</p>
</li></ul></li>
    <li><b>UI Utilities API.</b>
        <ul>
            <li><p><tt><a href="http://bits.netbeans.org/dev/javadoc/org-openide-awt/org/openide/awt/NotificationDisplayer.html">NotificationDisplayer</a></tt>. New
                 class that creates and shows clickable notifications in the main status line:</p>
                 <p><img alt="statusline image" src="http://blogs.sun.com/geertjan/resource/notificationdisplayer-demo.png"/></p>
                 <p>See <a href="http://blogs.sun.com/geertjan/entry/org_openide_awt_notificationdisplayer">related blog entry</a>.</p></li>
            <li><tt><a href="http://bits.netbeans.org/6.7/javadoc/org-openide-awt/apichanges.html#StatusTextImportance">StatusDisplayer</a>.</tt> Enhancement to
                 this class, enabling you to set the 'importance' of a message in the status line. Messages set to a
                 higher importance level will replace messages of lower importance. The most important messages
                 stay visible permanently, until explicitly cleared or replaced. Previously, all status line
                 messages were removed after some time.</li>
        </ul>
</li>
</ul>

<h3>Deprecations</h3>
<p>The following are deprecated/obsolete from 6.7 onwards:</p>
<ul>
    <li><b>Schliemann.</b> The declarative language approach, also
        known as Schliemann, has been deprecated in favor of
        the more robust Parsing API. However, you are still able
        to use Schliemann, since it is part of the NetBeans IDE
        distribution. Note, though, that no more development
        of any kind will be done on Schliemann.</li>
    <li><b><tt>Repository.getDefault().getDefaultFileSystem().getRoot()</tt>.</b>
         Deprecated, replaced by <tt>FileUtil.getConfigRoot()</tt>. (<a href="http://bits.netbeans.org/dev/javadoc/org-openide-filesystems/apichanges.html#FileUtil.getConfigFile">Details.</a>)</li>
    <li><b><tt>Repository.getDefault().getDefaultFileSystem().findResource(String resource)</tt>.</b>
         Deprecated, replaced by <tt>FileUtil.getConfigFile(String file)</tt>. (<a href="http://bits.netbeans.org/dev/javadoc/org-openide-filesystems/apichanges.html#FileUtil.getConfigFile">Details.</a>)
</li>
</ul>

<h3>New & Changed NetBeans Platform Tools in NetBeans IDE 6.7</h3>

<ul>
    <li><b>Project Properties Dialog.</b>
        <ul>
    <li>New "Add Project..." and
        "Add Cluster..." in the Libraries tab
        in the NetBeans Platform project type's Project Properties
     dialog. These enable "suite chaining", i.e., modules or groups
     of modules (clusters) can be added to an application via these
     buttons.</li>
    <li>New "Resolve" button to automatically
         resolve modules that have not been included,
        even though the application needs them</li>
     <li><b>Contextual Menus.</b> When you right-click on the
        project node of an application, a module suite, or a module,
        the "Share on Kenai" menu item lets you upload the project
        to a site on Kenai.</li></ul></li>
    <li><b>New Window Component Wizard.</b> When you use the
        New Window Component wizard, the "Basic Settings" step
        lets you indicate whether the <tt>TopComponent</tt> will
        be maximizable, closeable, etc. (See "More control over <tt>TopComponents</tt>" above.)
        On completion of the wizard,
        the related client property is added to the constructor
        of the generated <tt>TopComponent</tt>.</li>
</ul>

<h3>New Screencasts</h3>

<p>A Free NetBeans
Platform Crash Course was released, to celebrate a brand new NetBeans Platform
book by Heiko Boeck, translated by the NetBeans Platform community, entitled
<a href="http://www.apress.com/book/view/9781430224174">The Definitive Guide to NetBeans Platform</a>.</p>

<p>A two-part series was introduced during this release cycle, focusing
     on the creation of a CRUD application on the NetBeans Platform:</p>
 <ul>
     <li>Part 1: Database Displayer</li>
     <li>Part 2: Database Editor (to come)</li>
 </ul>

     <p>The introductory screencast series Top 10 NetBeans APIs was expanded to 9 parts.</p>

<h3>New Tutorials</h3>
<p>All tutorials at <a href="https://netbeans.org/kb/trails/platform.html">http://www.netbeans.org/kb/trails/platform.html</a>
 are updated. The following are published for the first time in the 6.7 release cycle:</p>
<ul>
    <li><a href="../tutorials/nbm-quick-start.html">NetBeans Platform Quick Start</a></li>
    <li><a href="../tutorials/nbm-crud.html">NetBeans Platform CRUD Application Tutorial</a></li>
    <li><a href="../tutorials/nbm-quick-start-visual.html">NetBeans Visual Library Tutorial for Java Applications</a></li>
    <li><a href="../tutorials/nbm-wizard.html">NetBeans Wizard Module Tutorial</a></li>
    <li><a href="http://wiki.netbeans.org/New_Language_Support_TutorialDevelopment_Version">New Language Support Tutorial</a></li>
</ul>

    </body>

</html>
