<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>何以解忧,唯有Java</title>
    <description></description>
    <link>http://gml520.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>NetBeans vs Eclipse 最新战报!呵呵!</title>
        <author>gml520</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gml520.javaeye.com">gml520</a>&nbsp;
          链接：<a href="http://gml520.javaeye.com/blog/210387" style="color:red;">http://gml520.javaeye.com/blog/210387</a>&nbsp;
          发表时间: 2008年07月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h1>NetBeans: The Ultimate Linux IDE</h1>
<p>本文只截取最后一部分,想看原文,请点击下面的地址.(偶的翻译能力不够,就看英语原文吧!<img src="../../images/smiles/icon_biggrin.gif" alt="" />
)</p>
<h3>原文:<a href="http://netbeans.dzone.com/articles/netbeans-the-ultimate-linux-id">http://netbeans.dzone.com/articles/netbeans-the-ultimate-linux-id</a>
<br />
</h3>
<h3><span style="font-family: tahoma,arial,helvetica,sans-serif;">NetBeans vs Eclipse</span>
</h3>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;">The
current trend is that many are coming out of their own version of
Eclipse. The vanilla Eclipse has a lot less to offer. Although there
are commercial alternatives, they are too greedy. As I see it, the
problem with Eclipse is that it was designed to be a good platform for
numerous commercial products. So it lags behind in terms of features.
Thus, companies can add more features (I would say basic features) to a
commercial version of it and charge money. This is not the case with
NetBeans. All the greatest and best features are available to use,
right away. There is no need to buy a NetBeans-based commercial IDE to
have all the features. If you ask me, Eclipse is a platform, and not an
IDE.</span>
</p>
<p><strong>NetBeans Face-To-Facts with Eclipse&nbsp;</strong>
</p>
<table cellspacing="1" border="1" cellpadding="1">
<tbody>
<tr>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"><strong> Feature</strong>
</span>
</td>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"><strong>Eclipse <br />
</strong>
</span>
</td>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"><strong>NetBeans<br />
</strong>
</span>
 </td>
</tr>
<tr>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"><strong>Download and Installation</strong>
</span>
</td>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;">
Eclipse comes without automated installer. Users are supposed to
install it manually and configure all the necessary prerequisites.<br />
</span>
</td>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"> Automated cross-platform installer is provided, which also detects all platform perquisites.<br />
</span>
</td>
</tr>
<tr>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"><strong>Java Enterprise Support</strong>
</span>
</td>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;">Does not come pre-configured with any of the Java EE servers. You must do it on your own.<br />
</span>
</td>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;">Popular
application servers like Glassfish and Apache Tomcat are already
bundledwith the installation. Just start compiling your servlets. </span>
</td>
</tr>
<tr>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"><strong>UML Modelling<br />
</strong>
</span>
</td>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"> Is very basic and needs to be installed separately.<br />
</span>
</td>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;">Advanced
and out of the box availability. It separately. supports eight types of
UML diagrams, including activity diagrams, class diagrams,
collaboration diagrams, component diagrams, deployment diagrams,
sequence diagrams, state diagrams, and use case diagrams.</span>
</td>
</tr>
<tr>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"><strong>BPEL Support</strong>
<br />
</span>
</td>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"> Is very basic, and needs to be installed <br />
and configured separately.</span>
</td>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;">Advanced and out-of-the-box support. It is also supported by an enterprise pack,which includes SOA tools as well. <br />
</span>
</td>
</tr>
<tr>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"><strong>JavaDocs Online Help </strong>
</span>
</td>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"> Fails to render help from jar files<br />
</span>
</td>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"> Render it.<br />
</span>
</td>
</tr>
<tr>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"><strong>Collaborative Development </strong>
</span>
</td>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"> Need plug-ins.<br />
</span>
</td>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"> Out-of-the-box support for CVS and Mercurial.<br />
</span>
</td>
</tr>
<tr>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"><strong>Visual Web Development tools</strong>
</span>
</td>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"> This is limited, need plug-ins.<br />
</span>
</td>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"> Advanced, and built in.<br />
</span>
</td>
</tr>
<tr>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"><strong>Java SE</strong>
<br />
</span>
</td>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"> Incomplete support. Features like generics are missing<br />
</span>
</td>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"> Full support.</span>
</td>
</tr>
<tr>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"><strong>Non-Java support</strong>
<br />
</span>
</td>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"> Need plug-ins.</span>
</td>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"> Out of the box support for C, C++, Ruby. PHP \development is under process.<br />
</span>
</td>
</tr>
<tr>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"><strong>XML editor</strong>
<br />
</span>
</td>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;">Need plug-ins.</span>
</td>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"> Out-of-the-box support.<br />
</span>
</td>
</tr>
<tr>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"><strong>GUI Designer</strong>
<br />
</span>
</td>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;">Need plug-ins.</span>
</td>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"> Powerful and feature rich support for SWING via Matisse.<br />
</span>
</td>
</tr>
<tr>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"><strong>Mobile development</strong>
<br />
</span>
</td>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;">Limited support, Need plug-ins.<br />
</span>
</td>
<td><span style="font-family: tahoma,arial,helvetica,sans-serif;"> Ready to go.</span>
</td>
</tr>
</tbody>
</table>
<p> <br />
  <span style="font-family: tahoma,arial,helvetica,sans-serif;">In
the next article we will do some cool things with NetBeans. NetBeans
can be used as an IDE, DB designer, source control tool, unit tester,
and many more. And yes, you can write your own plug-ins for it. We will
cover one role at a time.</span>
</p>
          <br/>
          <span style="color:red;">
            <a href="http://gml520.javaeye.com/blog/210387#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 02 Jul 2008 09:29:09 +0800</pubDate>
        <link>http://gml520.javaeye.com/blog/210387</link>
        <guid>http://gml520.javaeye.com/blog/210387</guid>
      </item>
      <item>
        <title>使用NetBeans6.1 进行Spring RCP开发!【转载】</title>
        <author>gml520</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gml520.javaeye.com">gml520</a>&nbsp;
          链接：<a href="http://gml520.javaeye.com/blog/210011" style="color:red;">http://gml520.javaeye.com/blog/210011</a>&nbsp;
          发表时间: 2008年07月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp; NetBeans 现在是越来越强大了! 今天又看到了 Geertjan Wielenga 写的一篇关于如何开始开发SpringRCP<br />
&nbsp;的文章感觉非常的棒,于是就把它给转载过来了!呵呵! 英文太多了,也就没有翻译了!大家就凑合这看吧,<br />
图文并茂的,我想大家应该不会觉得难了吧! &nbsp; (不知道这篇文章能否发到论坛里,让大家讨论一下关于在NetBeans下开发SpringRCP ,如果不行就麻烦管理员将这个帖子删除了吧!顺便通知一声,下次就不再发到论坛来了.谢谢!)</p>
<p><br />
PS: 原来SpringRCP的开发这么好玩啊!<img src="http://www.blogjava.net/CuteSoft_Client/CuteEditor/images/emsmilep.gif" border="0" align="absmiddle" alt="" />
<br />
<br />
插件下载&nbsp; <a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=10874" title="NetBeans Spring RCP 插件">NetBeans Spring RCP 插件</a>
<br />
<br />
原文连接:<a href="http://java.dzone.com/news/spring-rcp-tutorial?page=0%2C0">http://java.dzone.com/news/spring-rcp-tutorial?page=0%2C0</a>
<br />
作者: Geertjan Wielenga<br />
<br />
&nbsp;Let's familiarize ourselves with the <a href="http://spring-rich-c.sourceforge.net/1.0.0/index.html">Spring RCP</a>
.
New life seems to have been blowing into this project: after almost two
years of hiatus, the 1.0.0 release came out a few months ago. Let's
leave aside the question about its direction and so on and, instead,
let's look purely at the technology itself to see exactly what it
offers. In that light, I've made available a simple plugin for NetBeans
IDE that provides samples and templates to get things started. Below, I
walk through a basic scenario using the plugin. However, even those who
are not NetBeans users could learn a lot about Spring RCP by reading
the steps in this tutorial and the explanations that accompany them.
</p>
<p><strong>Table of Contents</strong>
</p>
<ul>
<li><a href="http://java.dzone.com/news/spring-rcp-tutorial/#getting-started">Getting Started</a>
    </li>
<li><a href="http://java.dzone.com/news/spring-rcp-tutorial?page=0%2C1">Creating a View</a>
    </li>
<li><a href="http://java.dzone.com/news/spring-rcp-tutorial?page=0%2C2">Adding Customer Data</a>
    </li>
<li><a href="http://java.dzone.com/news/spring-rcp-tutorial?page=0%2C3">Adding Docking Views</a>
    </li>
<li><a href="http://java.dzone.com/news/spring-rcp-tutorial?page=0%2C4">Enabling Actions</a>
    </li>
<li><a href="http://java.dzone.com/news/spring-rcp-tutorial?page=0%2C5">Adding Context Sensitivity</a>
    </li>
<li><a href="http://java.dzone.com/news/spring-rcp-tutorial?page=0%2C6">Changing the Look &amp; Feel</a>
    </li>
</ul>
<h2>Getting Started</h2>
<ol><br />
<li>Install the <a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=10874">Spring RCP Tooling</a>
 plugin into NetBeans IDE 6.1.
    </li>
<br />
<li>In the New Project wizard (Ctrl-Shift-N), you will find a new project template:
<p><img src="http://java.dzone.com/sites/all/files/figure-1_0.png" border="1" alt="" />
    </p>
</li>
<li>Complete the wizard and you have a project structure as follows:
<p><img src="http://java.dzone.com/sites/all/files/figure-2_0.png" border="1" alt="" />
</p>
<p>A brief overview of the files that you see above:</p>
<table border="0">
<tbody>
<tr>
<td><strong>File</strong>
 </td>
<td><strong>Explanation</strong>
 <br />
                </td>
</tr>
<tr>
<td>SimpleApp.java <br />
                </td>
<td>Provides the application's &quot;main&quot; method and launches the application<br />
                via the Spring RCP &quot;ApplicationLauncher&quot; class. That class loads the<br />
                application
                context XML file and the startup context XML file, where
                application-level concerns such as the splash screen, initialization
                sequences, and views are defined. </td>
</tr>
<tr>
<td>SimpleLifecycleAdvisor.java </td>
<td>Provides lifecycle management for the application.  This class is<br />
                registered in the application context XML file. It provides methods such<br />
                as &quot;onWindowOpened&quot; and &quot;onCommandsCreated&quot;, so that you have<br />
                entry points to customize what happens when the application starts. (<a href="http://java.dzone.com/articles/spring-rich-client-part-1">For example</a>
, you can adjust the application's size in the &quot;onPreWindowOpen&quot; method.)</td>
</tr>
<tr>
<td>richclient-application-context.xml </td>
<td>Provides the application context XML file, which configures the Spring RCP<br />
                components and services.<br />
                </td>
</tr>
<tr>
<td>richclient-startup-context.xml </td>
<td>Provides
                the startup context XML file, which defines the splash screen, but
                could define anything that you want to have happen specifically at
                startup.<br />
                </td>
</tr>
<tr>
<td>images.properties </td>
<td>Provides  the image resource. It is registered in the application context<br />
                XML file. <br />
                </td>
</tr>
<tr>
<td>splash-screen.jpg </td>
<td>Provides the splash screen image that is used in the startup context XML<br />
                file.<br />
                </td>
</tr>
<tr>
<td>commands-context.xml </td>
<td>Provides
                the application's commands, organized within menu bars and toolbars,
                and the items within them. This file is declared in the application
                context XML file.<br />
                </td>
</tr>
<tr>
<td>messages.properties </td>
<td>Provides the display texts in a centralized location. For example, texts for titles and descriptions are found here. </td>
</tr>
</tbody>
</table>
<p> <br />
    <strong>Note:</strong>
    The template also put most of the Spring RCP JARs on your application's
    classpath. Look in the Libraries node to see which ones are there.
    Potentially, more JARs could be included in the plugin as the
    complexity of the provided tooling increases.
    </p>
</li>
<li>Run the application. You should see this:
<p><img src="http://java.dzone.com/sites/all/files/figure-3_0.png" border="1" alt="" />
</p>
</li>
</ol>
<p>&nbsp;</p>
<h2>Creating a View</h2>
<p>Now we will create a new window in our application.
</p>
<ol>
<li>Right-click the project node and choose New | Spring View, as shown here:
<p><img src="http://java.dzone.com/sites/all/files/figure-4_0.png" border="1" alt="" />
    </p>
</li>
<li>In the New Spring View dialog, type &quot;CustomerView&quot; and set the existing package as your package name:
<p><img src="http://java.dzone.com/sites/all/files/figure-5_0.png" border="1" alt="" />
    </p>
</li>
<li>Click Finish. You now have a new class that extends the Spring RCP AbstractView class:<br />
    </li>
</ol>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!-- <br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br />
<br />
--><span style="color: #000000;">&nbsp;</span>
<span style="color: #0000ff;"><span style="font-size: 12pt;"><span style="color: #0000ff;">package</span>
<span style="color: #000000;">&nbsp;simple;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;</span>
<span style="color: #0000ff;">import</span>
<span style="color: #000000;">&nbsp;javax.swing.JComponent;&nbsp;&nbsp;<br />
&nbsp;</span>
<span style="color: #0000ff;">import</span>
<span style="color: #000000;">&nbsp;javax.swing.JPanel;&nbsp;&nbsp;<br />
&nbsp;</span>
<span style="color: #0000ff;">import</span>
<span style="color: #000000;">&nbsp;org.springframework.richclient.application.support.AbstractView;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">public</span>
<span style="color: #000000;">&nbsp;</span>
<span style="color: #0000ff;">class</span>
<span style="color: #000000;">&nbsp;CustomerView&nbsp;</span>
<span style="color: #0000ff;">extends</span>
<span style="color: #000000;">&nbsp;AbstractView&nbsp;{&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">protected</span>
<span style="color: #000000;">&nbsp;JComponent&nbsp;createControl()&nbsp;{&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JPanel&nbsp;panel&nbsp;</span>
<span style="color: #000000;">=</span>
<span style="color: #000000;">&nbsp;</span>
<span style="color: #0000ff;">new</span>
<span style="color: #000000;">&nbsp;JPanel();&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">return</span>
<span style="color: #000000;">&nbsp;panel;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />
&nbsp;} </span>
</span>
</span>
<span style="color: #000000;"><br />
</span>
</div>
<p>
<br />
Open the richclient-application-context.xml file. At the end of the
file, notice that your view has been automatically registered for you
as follows:
<br /></p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!-- <br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br />
<br />
--><span style="color: #000000;"><span style="font-size: 12pt;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">bean&nbsp;</span>
<span style="color: #ff0000;">id</span>
<span style="color: #0000ff;">=&quot;CustomerView&quot;</span>
<span style="color: #ff0000;">&nbsp;class</span>
<span style="color: #0000ff;">=&quot;org.springframework.richclient.application.support.DefaultViewDescriptor&quot;</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">property&nbsp;</span>
<span style="color: #ff0000;">name</span>
<span style="color: #0000ff;">=&quot;viewClass&quot;</span>
<span style="color: #ff0000;">&nbsp;value</span>
<span style="color: #0000ff;">=&quot;simple.CustomerView&quot;</span>
<span style="color: #0000ff;">&gt;&lt;/</span>
<span style="color: #800000;">property</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;">&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;/</span>
<span style="color: #800000;">bean</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;">&nbsp; </span>
</span>
</span>
<span style="color: #000000;"><br />
</span>
</div>
<p>
<br />
Finally, open ui/messages.properties and notice the new entry for the menu item that will open the view:</p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!-- <br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br />
<br />
--><span style="color: #000000;"><span style="font-size: 12pt;"><span style="color: #000000;">CustomerView.label=</span>
<span style="color: #ff0000;">&amp;CustomerView</span>
</span>
</span>
</div>
<p>
<br />
&nbsp; 4 . Run the application and go to Window | Show View, from where you can open the new Customer View:
</p>
<p><img src="http://java.dzone.com/sites/all/files/figure-6_0.png" border="1" alt="" />
&nbsp;&nbsp;</p>
<p>&nbsp; 5.&nbsp; Let's make our new view open by default whenever
the application starts. In other words, our Customer View will be the
application's initial view. To do that, open the
richclient-application-context.xml file and find the bean that has
&quot;lifecycleAdvisor&quot; as its &quot;id&quot; attribute. Add this property to that
bean's list of properties:<!-- <br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br />
<br />
--></p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!-- <br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br />
<br />
--><span style="color: #0000ff;"><span style="font-size: 12pt;"><span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">property&nbsp;</span>
<span style="color: #ff0000;">name</span>
<span style="color: #0000ff;">=&quot;startingPageId&quot;</span>
<span style="color: #ff0000;">&nbsp;value</span>
<span style="color: #0000ff;">=&quot;CustomerView&quot;</span>
<span style="color: #ff0000;">&nbsp;</span>
<span style="color: #0000ff;">/&gt;</span>
</span>
</span>
</div>
<p>Notice that the &quot;name&quot; attribute can be completed automatically if
you call up code completion (which is Ctrl-Space, by default):
</p>
<p><img src="http://java.dzone.com/sites/all/files/figure-12_0.png" border="1" alt="" />
</p>
<p>Therefore, the whole bean definition is now as follows:</p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!-- <br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br />
<br />
--><span style="color: #0000ff;"><span style="font-size: 12pt;"><span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">bean&nbsp;</span>
<span style="color: #ff0000;">id</span>
<span style="color: #0000ff;">=&quot;lifecycleAdvisor&quot;</span>
<span style="color: #ff0000;">&nbsp;class</span>
<span style="color: #0000ff;">=&quot;simple.SimpleLifecycleAdvisor&quot;</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">property&nbsp;</span>
<span style="color: #ff0000;">name</span>
<span style="color: #0000ff;">=&quot;startingPageId&quot;</span>
<span style="color: #ff0000;">&nbsp;value</span>
<span style="color: #0000ff;">=&quot;CustomerView&quot;</span>
<span style="color: #ff0000;">&nbsp;</span>
<span style="color: #0000ff;">/&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">property&nbsp;</span>
<span style="color: #ff0000;">name</span>
<span style="color: #0000ff;">=&quot;windowCommandBarDefinitions&quot;</span>
<span style="color: #ff0000;">&nbsp;value</span>
<span style="color: #0000ff;">=&quot;ui/commands-context.xml&quot;</span>
<span style="color: #ff0000;">&nbsp;</span>
<span style="color: #0000ff;">/&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">property&nbsp;</span>
<span style="color: #ff0000;">name</span>
<span style="color: #0000ff;">=&quot;windowCommandManagerBeanName&quot;</span>
<span style="color: #ff0000;">&nbsp;value</span>
<span style="color: #0000ff;">=&quot;windowCommandManager&quot;</span>
<span style="color: #ff0000;">&nbsp;</span>
<span style="color: #0000ff;">/&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">property&nbsp;</span>
<span style="color: #ff0000;">name</span>
<span style="color: #0000ff;">=&quot;menubarBeanName&quot;</span>
<span style="color: #ff0000;">&nbsp;value</span>
<span style="color: #0000ff;">=&quot;menuBar&quot;</span>
<span style="color: #ff0000;">&nbsp;</span>
<span style="color: #0000ff;">/&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">property&nbsp;</span>
<span style="color: #ff0000;">name</span>
<span style="color: #0000ff;">=&quot;toolbarBeanName&quot;</span>
<span style="color: #ff0000;">&nbsp;value</span>
<span style="color: #0000ff;">=&quot;toolBar&quot;</span>
<span style="color: #ff0000;">&nbsp;</span>
<span style="color: #0000ff;">/&gt;</span>
<span style="color: #000000;"><br />
</span>
<span style="color: #0000ff;">&lt;/</span>
<span style="color: #800000;">bean</span>
<span style="color: #0000ff;">&gt;</span>
</span>
</span>
</div>
<p>&nbsp;6 . Run the application again and notice that the Customer View now appears when the application starts.&nbsp;</p>
<h2>Adding Customer Data</h2>
<p>Next, we'll use our new Spring View to display customer data to our
users. Nothing in this section is specific to Spring RCP. Nothing more
than its seamless integration with standard Swing development is
demonstrated below, together with the related benefit of being able to
use the associated development tools provided by NetBeans IDE. We'll
use one of the databases bundled with the IDE, but we could be using
any database at all. </p>
<ol>
<li>Right-click the project node and choose New | JPanel Form.
    Name the panel &quot;CustomerPanel&quot; and choose &quot;simple&quot; in the package
    drop-down so that your panel will be created in the same package as
    where the other classes are found. Click Finish.
    </li>
<li>Open &quot;CustomerView.java&quot;. Change the line that instantiates the JPanel so that your new CustomerPanel is created instead:
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!-- <br />
    <br />
    Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
    http://www.CodeHighlighter.com/<br />
    <br />
    --><span style="color: #0000ff;"><span style="font-size: 12pt;"><span style="color: #0000ff;">public</span>
<span style="color: #000000;">&nbsp;</span>
<span style="color: #0000ff;">class</span>
<span style="color: #000000;">&nbsp;CustomerView&nbsp;</span>
<span style="color: #0000ff;">extends</span>
<span style="color: #000000;">&nbsp;AbstractView&nbsp;{<br />
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
    &nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">protected</span>
<span style="color: #000000;">&nbsp;JComponent&nbsp;createControl()&nbsp;{<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JPanel&nbsp;panel&nbsp;</span>
<span style="color: #000000;">=</span>
<span style="color: #000000;">&nbsp;</span>
<span style="color: #0000ff;">new</span>
<span style="color: #000000;">&nbsp;CustomerPanel();<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">return</span>
<span style="color: #000000;">&nbsp;panel;<br />
    &nbsp;&nbsp;&nbsp;&nbsp;}<br />
    <br />
    }</span>
</span>
</span>
</div>
<p>Now, whenever you run the application, the CustomerPanel will define the initial view.
    </p>
</li>
<li>Open the Services window (Ctrl-5). In the Services
    window, expand the Databases node, right-click the jdbc:derby node, and
    choose Connect. The IDE now connects to its bundled Derby database.
    Expand the jdbc:derby node, expand the Tables node, and notice that
    there is a table called &quot;CUSTOMER&quot;. That's the table we'll show in our
    application. </li>
<li>Open the CustomerPanel in Design mode. Next, drag
    and drop a table from the Palette onto the CustomerPanel's Design view.
    Finally, drag and drop the CUSTOMER node onto the table. You should now
    see this:
<p><img src="http://java.dzone.com/sites/all/files/figure-10_0.png" border="1" alt="" />
    </p>
<p><strong>Note:</strong>
 Make sure that you click the two arrow buttons on
    the top right of the screenshot above. Doing that will result in the
    JTable resizing automatically at runtime, to fit snugly into the size
    of the JPanel.</p>
</li>
<li>The related JAR files should
    automatically be added to your project. If they're not and you see a
    lot of error messages in the generated code, right-click the Libraries
    node, choose Add Library, and then add &quot;Beans Binding&quot; and &quot;TopLink
    Essentials&quot;, as well as &quot;derbyclient.jar&quot; from your JDK's db/lib
    folder. </li>
<li>Back in the Projects window, you should see that JPA-related artifacts have been added to your project:
<p><img src="http://java.dzone.com/sites/all/files/figure-8_0.png" border="1" alt="" />
    </p>
</li>
<li>Run the application and you will see your initial view populated with data from your database:
<p><img src="http://java.dzone.com/sites/all/files/figure-9_0.png" border="1" alt="" />
    </p>
</li>
</ol>
<p>&nbsp;</p>
<h2>Adding Docking Views</h2>
<p>At the moment, we only have one view (i.e., one window). One of the
central reasons for desktop developers choosing to use an RCP is the
need for a windowing system. As soon as a desktop application starts
becoming non-trivial, you need to be able to deal with multiple
windows. More than simply <em>showing</em>
 multiple windows, you also
need to provide functionality for maximizing and minimizing them, for
opening and closing them, for docking and undocking them. Not much fun
to code all of that. Let's see how Spring RCP can help us with this
basic requirement.
</p>
<ol>
<li>First, we need to add a new view, so that we have two windows. Use
    the Spring View template, as described earlier in this tutorial, and
    add a new view with whatever name you like, in the same package as
    before (or anywhere else). As before, the view is registered for you in
    the richclient-application-context.xml file, as well as in the
    messages.properties file.
    </li>
<li>When you run the application, you'll have two menu
    items under Window | Show View. On selection, the second view replaces
    the first view, and vice versa. That's not docking, that's replacing.
    So let's now change that so that both are displayed at the same time,
    i.e., so that both windows dock within the Spring RCP.
    </li>
<li>Begin by adding this bean to the richclient-application-context.xml file: </li>
</ol>
<p>&nbsp;</p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!-- <br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br />
<br />
--><span style="color: #0000ff;"><span style="font-size: 12pt;"><span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">bean&nbsp;</span>
<span style="color: #ff0000;">id</span>
<span style="color: #0000ff;">=&quot;applicationPageFactory&quot;</span>
<span style="color: #ff0000;">&nbsp;depends-on</span>
<span style="color: #0000ff;">=&quot;serviceLocator&quot;</span>
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;class</span>
<span style="color: #0000ff;">=&quot;org.springframework.richclient.application.docking.vldocking.VLDockingApplicationPageFactory&quot;</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;"><br />
</span>
<span style="color: #0000ff;">&lt;/</span>
<span style="color: #800000;">bean</span>
<span style="color: #0000ff;">&gt;</span>
</span>
</span>
</div>
<p>
<br />
&nbsp; 4. Run the application. When you open both views, you should see the following:
</p>
<p><img src="http://java.dzone.com/sites/all/files/figure-11_0.png" border="1" alt="" /></p>
<p>&nbsp;5 . Next, find the beans that declare the two views and change
the class that they use in the richclient-application-context.xml to
the following:</p>
<p>&nbsp;&nbsp;&nbsp;<strong>&nbsp;&nbsp; org.springframework.richclient.application.docking.vldocking.VLDockingViewDescriptor <br />
</strong>
</p>
<p>So now the bean for the Customer View should be as follows, while the same should be true for the other view you created:</p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!-- <br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br />
<br />
--><span style="color: #0000ff;"><span style="font-size: 12pt;"><span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">bean&nbsp;</span>
<span style="color: #ff0000;">id</span>
<span style="color: #0000ff;">=&quot;CustomerView&quot;</span>
<span style="color: #ff0000;">&nbsp;class</span>
<span style="color: #0000ff;">=&quot;org.springframework.richclient.application.docking.vldocking.VLDockingViewDescriptor&quot;</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">property&nbsp;</span>
<span style="color: #ff0000;">name</span>
<span style="color: #0000ff;">=&quot;viewClass&quot;</span>
<span style="color: #ff0000;">&nbsp;value</span>
<span style="color: #0000ff;">=&quot;simple.CustomerView&quot;</span>
<span style="color: #ff0000;">&nbsp;</span>
<span style="color: #0000ff;">/&gt;</span>
<span style="color: #000000;"><br />
</span>
<span style="color: #0000ff;">&lt;/</span>
<span style="color: #800000;">bean</span>
<span style="color: #0000ff;">&gt;</span>
</span>
</span>
</div>
<p>&nbsp;6 . Let's now look more carefully at how our views are defined. Find the
CustomerView bean, place the cursor at the start of the property
element's &quot;name&quot; attribute's value, and call up code completion
(Ctrl-Space). You should now see the list of possible values displayed:
</p>
<p><img src="http://java.dzone.com/sites/all/files/figure-13_0.png" border="1" alt="" />
</p>
<p>&nbsp;&nbsp;&nbsp; Go ahead and take a whole bunch of those names, specifically, the ones shown below, setting them all to &quot;true&quot;:
</p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!-- <br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br />
<br />
--><span style="color: #0000ff;"><span style="font-size: 12pt;"><span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">bean&nbsp;</span>
<span style="color: #ff0000;">id</span>
<span style="color: #0000ff;">=&quot;CustomerView&quot;</span>
<span style="color: #ff0000;">&nbsp;class</span>
<span style="color: #0000ff;">=&quot;org.springframework.richclient.application.docking.vldocking.VLDockingViewDescriptor&quot;</span>
<span style="color: #0000ff;">&gt;</span>
</span>
</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;</span>
</div>
<p>&nbsp;</p>
<p>
&nbsp;&nbsp; 7. You can do the same for the other view, depending on which of the
properties above you would like to make available to that particular
window. The names of the above properties are self explanatory, except
for &quot;autoHideEnabled&quot;, which will add minimize functionality to your
view.
<br />
&nbsp; 8. Run the application again and notice some small new buttons in the top right of the view:
</p>
<p><img src="http://java.dzone.com/sites/all/files/figure-15_0.png" border="1" alt="" />
</p>
<p>&nbsp;&nbsp;&nbsp; If you right-click inside the title bar, you see the same
options, this time as menu items together with the keystroke that can&nbsp;&nbsp;&nbsp;
invoke them:
</p>
<p><img src="http://java.dzone.com/sites/all/files/figure-16_0.png" border="1" alt="" /></p>
<p>&nbsp; 9. Try out a few of those new features in your
application. For example, click the &quot;Detach&quot; button and then you're
able to move the whole view out of the application (handy if your user
has multiple monitors, for example), as shown below:
</p>
<ol>
<li>
<p><img src="http://java.dzone.com/sites/all/files/figure-14_0.png" border="1" alt="" />
</p>
</li>
<p><strong>Note:</strong>
 To be able to drag a detached window, your cursor needs
    to become a hand, which is what happens when you move the mouse over
    the dotted line at the top of the window's title bar.</p>
</ol>
<p>
10.&nbsp; Finally, drag the title bar of a view to a position
where it could conceivably be dropped and then you will see a shadow
where it will appear when you release the view:
</p>
<ol>
<li>
<p><img src="http://java.dzone.com/sites/all/files/figure-17_0.png" border="1" alt="" />
</p>
<p><img src="http://java.dzone.com/sites/all/files/figure-18_0.png" border="1" alt="" />
</p>
</li>
</ol>
<p>&nbsp; 11. Once you have more windows, you can move them around and
you can even end up with tabs, if you drag the window to the correct
position, as shown below:
</p>
<ol>
<li>
<p><img src="http://java.dzone.com/sites/all/files/figure-19.png" border="1" alt="" />
    </p>
<p><img src="http://java.dzone.com/sites/all/files/figure-20.png" border="1" alt="" />
    </p>
<p><strong>Note:</strong>
 One thing I haven't been able to figure out is how
    to save window positions at shutdown. In other words, at startup the
    user would like to have the window positions be restored to where they
    were when the application last closed. I don't know how this is handled
    in Spring RCP. I believe it should be done automatically, which doesn't
    seem to be the case since the application reverts to its default state
    when I rerun it.
    </p>
</li>
</ol>
<p>&nbsp;</p>
<h2>Enabling Actions</h2>
<p>Let's now look at the menubar. Several menu items are available by
default. Where do they come from? Our simple application contains no
Java classes that have anything to do with menu items. So, what's going
on here?
</p>
<p>Menus and toolbars are all declared in the
&quot;command-context.xml&quot; file. That file and its contents, in turn, are
declared in the &quot;richclient-application-context.xml&quot; file, which is the
application context XML file that is loaded at startup. </p>
<ol>
<li>Open the &quot;richclient-application-context.xml&quot; file and take note of the declaration of the command-context.xml file, as follows:<br />
    </li>
</ol>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!-- <br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br />
<br />
--><span style="color: #0000ff;"><span style="font-size: 12pt;"><span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">bean&nbsp;</span>
<span style="color: #ff0000;">id</span>
<span style="color: #0000ff;">=&quot;lifecycleAdvisor&quot;</span>
<span style="color: #ff0000;">&nbsp;class</span>
<span style="color: #0000ff;">=&quot;simple.SimpleLifecycleAdvisor&quot;</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">property&nbsp;</span>
<span style="color: #ff0000;">name</span>
<span style="color: #0000ff;">=&quot;startingPageId&quot;</span>
<span style="color: #ff0000;">&nbsp;value</span>
<span style="color: #0000ff;">=&quot;CustomerView&quot;</span>
<span style="color: #ff0000;">&nbsp;</span>
<span style="color: #0000ff;">/&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">property&nbsp;</span>
<span style="color: #ff0000;">name</span>
<span style="color: #0000ff;">=&quot;windowCommandBarDefinitions&quot;</span>
<span style="color: #ff0000;">&nbsp;value</span>
<span style="color: #0000ff;">=&quot;ui/commands-context.xml&quot;</span>
<span style="color: #ff0000;">&nbsp;</span>
<span style="color: #0000ff;">/&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">property&nbsp;</span>
<span style="color: #ff0000;">name</span>
<span style="color: #0000ff;">=&quot;windowCommandManagerBeanName&quot;</span>
<span style="color: #ff0000;">&nbsp;value</span>
<span style="color: #0000ff;">=&quot;windowCommandManager&quot;</span>
<span style="color: #ff0000;">&nbsp;</span>
<span style="color: #0000ff;">/&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">property&nbsp;</span>
<span style="color: #ff0000;">name</span>
<span style="color: #0000ff;">=&quot;menubarBeanName&quot;</span>
<span style="color: #ff0000;">&nbsp;value</span>
<span style="color: #0000ff;">=&quot;menuBar&quot;</span>
<span style="color: #ff0000;">&nbsp;</span>
<span style="color: #0000ff;">/&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">property&nbsp;</span>
<span style="color: #ff0000;">name</span>
<span style="color: #0000ff;">=&quot;toolbarBeanName&quot;</span>
<span style="color: #ff0000;">&nbsp;value</span>
<span style="color: #0000ff;">=&quot;toolBar&quot;</span>
<span style="color: #ff0000;">&nbsp;</span>
<span style="color: #0000ff;">/&gt;</span>
<span style="color: #000000;"><br />
</span>
<span style="color: #0000ff;">&lt;/</span>
<span style="color: #800000;">bean</span>
<span style="color: #0000ff;">&gt;</span>
</span>
</span>
</div>
<p>&nbsp;</p>
<p><strong>Note:</strong>
 The menubar and the toolbar are also declared above and are then further spelled out in the &quot;command-context.xml&quot; file.
</p>
<p>
&nbsp; 2.&nbsp; Notice the third line above and then open that
file, i.e., the commands-context.xml file. Let's start by looking at
the Help menu:</p>
<p><img src="http://java.dzone.com/sites/all/files/figure-21.png" border="1" alt="" />
</p>
<p>So, the &quot;Help Contents&quot; item is disabled, while the &quot;About&quot; item is enabled. Why?
</p>
<p>
&nbsp;3. Look at the &quot;menuBar&quot; bean in
commands-context.xml, where you'll find that one of its members is
&quot;helpMenu&quot;. Hold down the Ctrl key and move your mouse over the
&quot;helpMenu&quot; text and you will see a hyperlink:
</p>
<p><img src="http://java.dzone.com/sites/all/files/figure-22.png" border="1" alt="" />
</p>
<p>Click it and you will jump to the &quot;helpMenu&quot; bean, which is defined as follows:
</p>
<p>&nbsp;</p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!-- <br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br />
<br />
--><span style="color: #0000ff;"><span style="font-size: 12pt;"><span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">bean&nbsp;</span>
<span style="color: #ff0000;">id</span>
<span style="color: #0000ff;">=&quot;helpMenu&quot;</span>
<span style="color: #ff0000;">&nbsp;<br />
&nbsp;&nbsp;class</span>
<span style="color: #0000ff;">=&quot;org.springframework.richclient.command.CommandGroupFactoryBean&quot;</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">property&nbsp;</span>
<span style="color: #ff0000;">name</span>
<span style="color: #0000ff;">=&quot;members&quot;</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">list</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">value</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;">helpContentsCommand</span>
<span style="color: #0000ff;">&lt;/</span>
<span style="color: #800000;">value</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">value</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;">separator</span>
<span style="color: #0000ff;">&lt;/</span>
<span style="color: #800000;">value</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">ref&nbsp;</span>
<span style="color: #ff0000;">bean</span>
<span style="color: #0000ff;">=&quot;aboutCommand&quot;</span>
<span style="color: #ff0000;">&nbsp;</span>
<span style="color: #0000ff;">/&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;/</span>
<span style="color: #800000;">list</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;/</span>
<span style="color: #800000;">property</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;"><br />
</span>
<span style="color: #0000ff;">&lt;/</span>
<span style="color: #800000;">bean</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;<br />
</span>
<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">bean&nbsp;</span>
<span style="color: #ff0000;">id</span>
<span style="color: #0000ff;">=&quot;aboutCommand&quot;</span>
<span style="color: #ff0000;">&nbsp;<br />
&nbsp;&nbsp;class</span>
<span style="color: #0000ff;">=&quot;org.springframework.richclient.command.support.AboutCommand&quot;</span>
<span style="color: #ff0000;">&nbsp;</span>
<span style="color: #0000ff;">/&gt;</span>
</span>
</span>
</div>
<p>
<br />
&nbsp;4. Now you can see why the &quot;Help Contents&quot; item is disabled, while the
&quot;About&quot; item is enabled. In the first case, only a value has been
declared, while in the second case there is a reference to a bean, for
which a class has been defined that handles the invocation of the menu
item. Let's do the same for the &quot;Help Contents&quot; item, starting by
creating a new bean for the &quot;Help Contents&quot; item:
<br /></p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!-- <br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br />
<br />
--><span style="color: #0000ff;"><span style="font-size: 12pt;"><span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">bean&nbsp;</span>
<span style="color: #ff0000;">id</span>
<span style="color: #0000ff;">=&quot;helpContentsCommand&quot;</span>
<span style="color: #ff0000;">&nbsp;class</span>
<span style="color: #0000ff;">=&quot;org.springframework.richclient.command.support.HelpContentsCommand&quot;</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">property&nbsp;</span>
<span style="color: #ff0000;">name</span>
<span style="color: #0000ff;">=&quot;helpSetPath&quot;</span>
<span style="color: #ff0000;">&nbsp;value</span>
<span style="color: #0000ff;">=&quot;help/simple-hs.xml&quot;</span>
<span style="color: #ff0000;">&nbsp;</span>
<span style="color: #0000ff;">/&gt;</span>
<span style="color: #000000;"><br />
</span>
<span style="color: #0000ff;">&lt;/</span>
<span style="color: #800000;">bean</span>
<span style="color: #0000ff;">&gt;</span>
</span>
</span>
</div>
<p>&nbsp;</p>
<p><strong>Note:</strong>
 We refer above to &quot;help/simple-hs.xml&quot;. That's the
JavaHelp helpset file that is the entrypoint to our helpset. You could
create that by hand, as well as all the files that are needed to set up
a JavaHelp helpset. Instead of that, save yourself some time and
trouble by going back to the New Project wizard (Ctrl-Shift-N) and in
the &quot;Samples&quot; category you will find some Spring Rich Client samples.
Complete the wizard for one of them and then copy its &quot;help&quot; package
into the &quot;Resource Packages&quot; node of your own application. Hurray you
now have the start of your own helpset.
</p>
<p>
&nbsp; 5. Finally, we need to hook the bean up to our help
menu, replacing the value with a reference to the bean, as shown below,
in the same way as is done by default for the About item:</p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!-- <br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br />
<br />
--><span style="color: #0000ff;"><span style="font-size: 12pt;"><span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">bean&nbsp;</span>
<span style="color: #ff0000;">id</span>
<span style="color: #0000ff;">=&quot;helpMenu&quot;</span>
<span style="color: #ff0000;">&nbsp;<br />
&nbsp;&nbsp;class</span>
<span style="color: #0000ff;">=&quot;org.springframework.richclient.command.CommandGroupFactoryBean&quot;</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">property&nbsp;</span>
<span style="color: #ff0000;">name</span>
<span style="color: #0000ff;">=&quot;members&quot;</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">list</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">ref&nbsp;</span>
<span style="color: #ff0000;">bean</span>
<span style="color: #0000ff;">=&quot;helpContentsCommand&quot;</span>
<span style="color: #0000ff;">/&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">value</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;">separator</span>
<span style="color: #0000ff;">&lt;/</span>
<span style="color: #800000;">value</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">ref&nbsp;</span>
<span style="color: #ff0000;">bean</span>
<span style="color: #0000ff;">=&quot;aboutCommand&quot;</span>
<span style="color: #ff0000;">&nbsp;</span>
<span style="color: #0000ff;">/&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;/</span>
<span style="color: #800000;">list</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;/</span>
<span style="color: #800000;">property</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;"><br />
</span>
<span style="color: #0000ff;">&lt;/</span>
<span style="color: #800000;">bean</span>
<span style="color: #0000ff;">&gt;</span>
</span>
</span>
</div>
<p>
<br />
&nbsp;6. Run the application and now the &quot;Help Contents&quot; item is enabled.
When you click the item, the JavaHelp from the sample appears.<br /></p>
<h2>Adding Context Sensitivity</h2>
<p>As your application increases in size, fewer actions remain relevant
to all views. Not every menu item should be available to every window,
for example. This aspect of large applications is referred to as
&quot;context sensitivity&quot; or &quot;selection management&quot;. Depending on the
current context, certain features should be available while other
features are hidden or greyed out or disabled.
</p>
<p>So, in this section, we will set things up so that the &quot;New&quot;
command is only available if the current view is the Customer view. If
the current view is not the Customer view, the &quot;New&quot; menu item and
toolbar button (first button in the toolbar in the two following
screenshots) will be disabled:
</p>
<p><img src="http://java.dzone.com/sites/all/files/figure-24.png" border="1" alt="" />
</p>
<p>Otherwise, both will be enabled. Below you see the &quot;New&quot; toolbar button enabled because the current view is the Customer view:
</p>
<p><img src="http://java.dzone.com/sites/all/files/figure-23.png" border="1" alt="" />
</p>
<p>To achieve the above result, one simply needs to modify the CustomerView class, as follows:
</p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!-- <br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br />
<br />
--><span style="color: #0000ff;"><span style="font-size: 12pt;"><span style="color: #0000ff;">public</span>
<span style="color: #000000;">&nbsp;</span>
<span style="color: #0000ff;">class</span>
<span style="color: #000000;">&nbsp;CustomerView&nbsp;</span>
<span style="color: #0000ff;">extends</span>
<span style="color: #000000;">&nbsp;AbstractView&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #008000;">/**</span>
<span style="color: #008000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Handler&nbsp;for&nbsp;the&nbsp;&quot;New&quot;&nbsp;action.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #008000;">*/</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">private</span>
<span style="color: #000000;">&nbsp;ActionCommandExecutor&nbsp;newContactExecutor&nbsp;</span>
<span style="color: #000000;">=</span>
<span style="color: #000000;">&nbsp;</span>
<span style="color: #0000ff;">new</span>
<span style="color: #000000;">&nbsp;NewExecutor();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">protected</span>
<span style="color: #000000;">&nbsp;JComponent&nbsp;createControl()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JPanel&nbsp;panel&nbsp;</span>
<span style="color: #000000;">=</span>
<span style="color: #000000;">&nbsp;</span>
<span style="color: #0000ff;">new</span>
<span style="color: #000000;">&nbsp;CustomerPanel();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">return</span>
<span style="color: #000000;">&nbsp;panel;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #008000;">/**</span>
<span style="color: #008000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Register&nbsp;the&nbsp;local&nbsp;command&nbsp;executor&nbsp;to&nbsp;be&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;associated&nbsp;with&nbsp;named&nbsp;commands.&nbsp;This&nbsp;is&nbsp;called&nbsp;by&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Spring&nbsp;RCP&nbsp;prior<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;to&nbsp;making&nbsp;the&nbsp;view&nbsp;visible.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #008000;">*/</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">protected</span>
<span style="color: #000000;">&nbsp;</span>
<span style="color: #0000ff;">void</span>
<span style="color: #000000;">&nbsp;registerLocalCommandExecutors(PageComponentContext&nbsp;context)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context.register(</span>
<span style="color: #000000;">&quot;</span>
<span style="color: #000000;">newCommand</span>
<span style="color: #000000;">&quot;</span>
<span style="color: #000000;">,&nbsp;newContactExecutor);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #008000;">/**</span>
<span style="color: #008000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Private&nbsp;inner&nbsp;class&nbsp;to&nbsp;create&nbsp;a&nbsp;new&nbsp;customer.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #008000;">*/</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">private</span>
<span style="color: #000000;">&nbsp;</span>
<span style="color: #0000ff;">class</span>
<span style="color: #000000;">&nbsp;NewExecutor&nbsp;</span>
<span style="color: #0000ff;">implements</span>
<span style="color: #000000;">&nbsp;ActionCommandExecutor&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">public</span>
<span style="color: #000000;">&nbsp;</span>
<span style="color: #0000ff;">void</span>
<span style="color: #000000;">&nbsp;execute()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JOptionPane.showMessageDialog(</span>
<span style="color: #0000ff;">null</span>
<span style="color: #000000;">,&nbsp;</span>
<span style="color: #000000;">&quot;</span>
<span style="color: #000000;">new&nbsp;customer<img src="http://www.blogjava.net/Images/dot.gif" alt="" />
</span>
<span style="color: #000000;">&quot;</span>
<span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
}<br />
</span>
</span>
</span>
<span style="color: #000000;"><br />
</span>
</div>
<p>Notice lines 20-23 in the code above:
</p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!-- <br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br />
<br />
--><span style="color: #000000;"><span style="font-size: 12pt;"><span style="color: #000000;">@Override&nbsp;&nbsp;<br />
</span>
<span style="color: #0000ff;">protected</span>
<span style="color: #000000;">&nbsp;</span>
<span style="color: #0000ff;">void</span>
<span style="color: #000000;">&nbsp;registerLocalCommandExecutors(PageComponentContext&nbsp;context)&nbsp;{&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;context.register(</span>
<span style="color: #000000;">&quot;</span>
<span style="color: #000000;">newCommand</span>
<span style="color: #000000;">&quot;</span>
<span style="color: #000000;">,&nbsp;newContactExecutor);&nbsp;&nbsp;<br />
}</span>
</span>
</span>
<span style="color: #000000;"><br />
<br />
</span>
</div>
<p>Reference is made here to &quot;newCommand&quot;. Where's that defined? As
always, all commands in Spring RCP are defined in &quot;command-context.xml&quot;
file. There, note that the &quot;windowCommandManager&quot; bean declares
&quot;newCommand&quot;, among other commands, under &quot;sharedCommandIds&quot;. In each
view, a different target executor could be defined for the same
command. In the code above, an &quot;ActionCommandExecutor&quot; is defined in
the CustomerView, which produces a JOptionPane with a message as a
placeholder for real code. In the OtherView, there could be a different
way of handling the &quot;newCommand&quot;. In other words, though the
&quot;newCommand&quot; is globally visible, it is implemented differently per
view.
</p>
<p>In addition to commands that are defined in
&quot;command-context.xml&quot;, there are several that are predefined, which you
can simply declare in your code:
</p>
<p><img src="http://java.dzone.com/sites/all/files/figure-25.png" border="1" alt="" />
</p>
<p>As a result, for the view above, the commands declared above
will be available and implemented as defined in the second argument to
&quot;GlobalCommandIds&quot; (all of which are handled by &quot;newContactExecutor&quot;,
though that's not very likely in real life). Potentially, you could
have all or some of these displayed as toolbar buttons in the toolbar,
assuming you declare the related tags in the &quot;command-context.xml&quot;
file. They would be enabled if the view in which they're declared is
active:
</p>
<p><img src="http://java.dzone.com/sites/all/files/figure-26.png" border="1" alt="" />
</p>
<p>...while being disabled in the context of other views:
</p>
<p><img src="http://java.dzone.com/sites/all/files/figure-27.png" border="1" alt="" />
</p>
<p>&nbsp;</p>
<h2>Changing the Look &amp; Feel</h2>
<p>Since the end result is a standard Swing application, we should be
able to change the look and feel. Open the
&quot;richclient-application-context.xml&quot; and find the bean that is defined
as follows, thanks to the NetBeans project template that created the
source structure used in this tutorial:</p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!-- <br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br />
<br />
--><span style="color: #0000ff;"><span style="font-size: 12pt;"><span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">bean&nbsp;</span>
<span style="color: #ff0000;">id</span>
<span style="color: #0000ff;">=&quot;lookAndFeelConfigurer&quot;</span>
<span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;class</span>
<span style="color: #0000ff;">=&quot;org.springframework.richclient.application.config.JGoodiesLooksConfigurer&quot;</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">property&nbsp;</span>
<span style="color: #ff0000;">name</span>
<span style="color: #0000ff;">=&quot;popupDropShadowEnabled&quot;</span>
<span style="color: #ff0000;">&nbsp;value</span>
<span style="color: #0000ff;">=&quot;false&quot;</span>
<span style="color: #ff0000;">&nbsp;</span>
<span style="color: #0000ff;">/&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">property&nbsp;</span>
<span style="color: #ff0000;">name</span>
<span style="color: #0000ff;">=&quot;theme&quot;</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">bean&nbsp;</span>
<span style="color: #ff0000;">class</span>
<span style="color: #0000ff;">=&quot;com.jgoodies.looks.plastic.theme.ExperienceBlue&quot;</span>
<span style="color: #ff0000;">&nbsp;</span>
<span style="color: #0000ff;">/&gt;</span>
<span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="color: #0000ff;">&lt;/</span>
<span style="color: #800000;">property</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;"><br />
</span>
<span style="color: #0000ff;">&lt;/</span>
<span style="color: #800000;">bean</span>
<span style="color: #0000ff;">&gt;</span>
</span>
</span>
</div>
<p>
<br />
Let's change the look and feel to Metal:
<br /></p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!-- <br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br />
<br />
--><span style="color: #0000ff;"><span style="font-size: 12pt;"><span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">bean&nbsp;</span>
<span style="color: #ff0000;">id</span>
<span style="color: #0000ff;">=&quot;lookAndFeelConfigurer&quot;</span>
<span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;class</span>
<span style="color: #0000ff;">=&quot;javax.swing.plaf.metal.MetalLookAndFeel&quot;</span>
<span style="color: #0000ff;">&gt;</span>
<span style="color: #000000;"><br />
</span>
<span style="color: #0000ff;">&lt;/</span>
<span style="color: #800000;">bean</span>
<span style="color: #0000ff;">&gt;</span>
</span>
</span>
</div>
<p>&nbsp;</p>
<p>Now run it again, with this result:
</p>
<p><img src="http://java.dzone.com/sites/all/files/figure-28.png" border="1" alt="" />
</p>
<p>If you remove the bean altogether, you can set the look and feel via the VM option:</p>
<blockquote>
<p>
<strong>-Dswing.defaultlaf=net.sourceforge.napkinlaf.NapkinLookAndFeel
</strong>
</p>
</blockquote>
<p>The result, assuming the Napkin look and feel is on your classpath, is then as follows:
</p>
<p><img src="http://java.dzone.com/sites/all/files/figure-29.png" border="1" alt="" />
</p>
<h2>Conclusion</h2>
<p>There are several other topics that could be discussed in the
context of Spring RCP. However, the topics discussed so far should
serve as a pretty good basis and give you an understanding of what
Spring RCP can do for you and how various pieces fit together. At this
point, you certainly should have enough information to build some
pretty solid applications on top of Spring RCP.
</p>
<p>It is tempting to attempt to compare Spring RCP with similar
offerings in the desktop framework domain. It is also tempting to make
value judgements. However, that's not the purpose of this article and
will be broached at another point in time. </p>
          <br/>
          <span style="color:red;">
            <a href="http://gml520.javaeye.com/blog/210011#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 01 Jul 2008 09:28:14 +0800</pubDate>
        <link>http://gml520.javaeye.com/blog/210011</link>
        <guid>http://gml520.javaeye.com/blog/210011</guid>
      </item>
      <item>
        <title>把男朋友升级为老公的时候发生的BUG【转载】</title>
        <author>gml520</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gml520.javaeye.com">gml520</a>&nbsp;
          链接：<a href="http://gml520.javaeye.com/blog/209956" style="color:red;">http://gml520.javaeye.com/blog/209956</a>&nbsp;
          发表时间: 2008年06月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>亲爱的技术支持部门：&nbsp;&nbsp;<br />
　　自从去年把「男朋友5.0」更新成「老公1.0」之后，我发觉整个计算机的效能下降。特别是在送花与送珠宝的部分，过去在没更新以前一直是用得很顺手
的。还有，就因为装上「老公1.0」，其它许多好用的软件，像是「浓情蜜意9.5」、「眼中只有你6.5」都自动被删除了；相反地，装进了许多莫名其妙的
东西，像是「橄榄球5.0」、「篮球大赛3.0」。现在搞得「枕边细语8.0」已经完全无法使用，「整理家务2.6」甚至每次都让计算机当机。我不想再用
「唠唠叨叨5.3」来修理这个问题，因为根本没有效果。我现在该怎么办呢？&nbsp;&nbsp;<br />
<br />
　　　没指望了敬上</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>
亲爱的没指望了： <br />
<br />
　　首先你需要具备一观念，「男朋友5.0」只是一个试用的娱乐软件，而「老公1.0」却是一个实际作业平台。 <br />
<br />
　　我建议你可以先到计算机档案夹 C:\我以为你一直都很爱我，下载「泪汪汪6.2」，再装上「让他内疚3.0」。试用没问题的话，应该会让「老公1.0」自己启动「珠宝礼物2.0」与「献上鲜花3.5」。 <br />
<br />
　　不过要记得，千万不要经常使用，不然会触动「老公1.0」的预设装置，全面降级转换到「爱理不理2.5」、「迟滞不归7.0」或是「苦酒满杯6.1」。「苦酒满杯6.1」是个要不得的软件，它每晚会自动播放「鼾声大作.有声档」。 <br />
<br />
　　还有要记得，不论作什么，就是不能去装「岳母大人1.0」或是其它的「男朋友」软件。一旦装进这些不能兼容的软件，「老公1.0」马上就会报销的，有时连抢救的机会都没有。 <br />
<br />
　　其实，「老公1.0」是个非常不错的软件，只是它的记忆容量有限，而且学新东西的速度慢了一点。 <br />
<br />
　　或许你愿意考虑装置一些外围辅助的软件，它们能提升「老公1.0」效能与增加记忆容量，甚至能达到「老公2.0」相仿的功能。我个人觉得「热腾腾晚餐6.0」与「嫚妙睡衣6.9」一定会奏效。 <br />
<br />
　　祝你成功！ </p>
          <br/>
          <span style="color:red;">
            <a href="http://gml520.javaeye.com/blog/209956#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 30 Jun 2008 22:57:19 +0800</pubDate>
        <link>http://gml520.javaeye.com/blog/209956</link>
        <guid>http://gml520.javaeye.com/blog/209956</guid>
      </item>
      <item>
        <title>女友升级为老婆的时候发生的bug 【转载】</title>
        <author>gml520</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gml520.javaeye.com">gml520</a>&nbsp;
          链接：<a href="http://gml520.javaeye.com/blog/209953" style="color:red;">http://gml520.javaeye.com/blog/209953</a>&nbsp;
          发表时间: 2008年06月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>亲爱的<span class="t_tag">技术</span>
支持：<br />
<br />
我急需您的帮助。我最近将&ldquo;女朋友7.0&rdquo;升级到&ldquo;妻子1.0&rdquo;，发现这个新<span class="t_tag">程序</span>
意外地启动了孩子生产程序，而且占用了大量的<span class="t_tag">空间</span>
和珍贵的资源。这在产品的使用手册中没有提到。此外&ldquo;妻子1.0&rdquo;<span class="t_tag">自动</span>
将自己安装到其他的所有的程序中，它随<span class="t_tag">系统</span>
同时启动，监控整个系统的状态。&ldquo;男人夜出2.5&rdquo;和&ldquo;高尔夫  5.3&rdquo;无法再<span class="t_tag">运行</span>
，一旦运行该程序系统即行崩溃。试图运行&ldquo;周日足球6.3&rdquo;经常失败，而&ldquo;周六购物7.1&rdquo;却代之运行。看来我无法保留&ldquo;妻子  1.0&rdquo;，因为它和我喜欢运行的任何程序都不相容。我打算回到&ldquo;女朋友7.0&rdquo;，可是这个程序又无法卸载。<br />
<br />
请您帮帮我吧！<br />
<br />
回信:<br />
<br />
亲爱的<span class="t_tag">用户</span>
:<br />
<br />
这是个很普通的问题，产生于你对基本原理的不了解。<br />
<br />
很多的男人将&ldquo;女朋友7.0&rdquo;升级到&ldquo;妻子1.0&rdquo;，以为&ldquo;妻子1.0&rdquo;是一个&ldquo;实用与娱乐程序&rdquo;。然而&ldquo;妻子1.0&rdquo;却是个操作系统，是被设计用来运行所有程序的。你不可能清除&ldquo;妻子1.0&rdquo;，也不可能回到&ldquo;女朋友7.0&rdquo;，因为&ldquo;妻子1.0&rdquo;的设计中不具有这个<span class="t_tag">功能</span>
，无论是卸载、删除或是清除已经安装在系统中的这些程序文件，都是不可能的。<br />
<br />
有些人曾试图安装&ldquo;女朋友8.0&rdquo;或者&ldquo;妻子2.0&rdquo;，结果是产生了更多的问题(参见手册中的赡养费/孩子的养育/律师费用)。我安装过&ldquo;妻子1.0&rdquo;，我<span class="t_tag">建议</span>
你保持现在的安装状态，妥善<span class="t_tag">解决</span>
遇到的困难。<br />
<br />
当任何错误或问题出现的时候，不论你认为是什么原因引起的，你必须运行&ldquo;C:＼我道歉&rdquo;程序，并且避免使用&ldquo;退出键&rdquo;。必要时可能需要运行&ldquo;C：＼我道歉&rdquo;多次，希望最终能使*作系统恢复到初始状态。<br />
<br />
&ldquo;妻子1.0&rdquo;虽然是一个需要高保养的程序，但同时对人可能是非常有益的。充分地利用它，需要买些额外的<span class="t_tag">软件</span>
比如&ldquo;鲜花2.0&rdquo;和&ldquo;巧克力5.0&rdquo;。<br />
<br />
不要在任何情况下安装&ldquo;秘书(短裙版)&rdquo;，因为&ldquo;妻子1.0&rdquo;不支持这种程序，而且系统多数时候肯定会崩溃。<br />
<br />
建议使用外挂&quot;情人2.05&quot;版本,可同时运行但不保证稳定性</p>
          <br/>
          <span style="color:red;">
            <a href="http://gml520.javaeye.com/blog/209953#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 30 Jun 2008 22:52:33 +0800</pubDate>
        <link>http://gml520.javaeye.com/blog/209953</link>
        <guid>http://gml520.javaeye.com/blog/209953</guid>
      </item>
      <item>
        <title>NetBeans6.1 插件支持Facelets Web 框架 (包含JBossSeam 的代码生)</title>
        <author>gml520</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gml520.javaeye.com">gml520</a>&nbsp;
          链接：<a href="http://gml520.javaeye.com/blog/209894" style="color:red;">http://gml520.javaeye.com/blog/209894</a>&nbsp;
          发表时间: 2008年06月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天再向大家介绍一款插件 Facelets&nbsp; , Facelets 也是一个Web 框架.和JSF 有关. 这款插件还提供JBoss Seam 支持.&nbsp; 具体看看<strong>Facelets 插件的发展史</strong>
.&nbsp; Facelets提供了NetBeans6.1 FCS 和ML 两个版本的下载!<br />
该项目主页:<a href="https://nbfaceletssupport.dev.java.net/">https://nbfaceletssupport.dev.java.net/</a>
<br />
<br />
<strong><span style="color: red;"><span style="color: red;"><span style="color: red;">支持 JBossSeam&nbsp; 插件</span>
下载</span>
</span>
</strong>
: <a href="http://www.blogjava.net/Files/gml520/org-netbeans-modules-web-nbseamgenintegration.rar">http://www.blogjava.net/Files/gml520/org-netbeans-modules-web-nbseamgenintegration.rar</a>
<br />
<br />
Facelets 特性介绍&nbsp; :<a href="https://nbfaceletssupport.dev.java.net/features.html">https://nbfaceletssupport.dev.java.net/features.html</a>
&nbsp; (<span style="color: red;">强烈推荐</span>
)<br />
入门教程:&nbsp; <a href="http://wiki.netbeans.org/UsingJSFAndFaceletsInNetbeans">http://wiki.netbeans.org/UsingJSFAndFaceletsInNetbeans</a>
 (这个是5.5 的教程,但是对于6.x 应该也适用!)<br />
<br />
(翻译就免了吧!<img src="http://www.blogjava.net/CuteSoft_Client/CuteEditor/images/emsmilep.gif" border="0" align="absmiddle" alt="" />
)<br />
<br />
<strong>Release Notes</strong></p>
<p>
The main goal of this project is to support
<a href="https://facelets.dev.java.net/">Facelets</a>
 in NetBeans IDE.</p>
<p>
The 6.1 development snapshot is currently available:
<a href="https://nbfaceletssupport.dev.java.net/files/documents/5684/99000/nbfaceletssupport-6.1.zip">
6.1 FCS download here</a>
 or
<a href="https://nbfaceletssupport.dev.java.net/files/documents/5684/99718/nbfaceletssupport-6.1ml.zip">
6.1 ML download here</a>
.
This release delivers bundled Facelets 1.1.14 and also provides palettes for facelets files.
The majority of the palette was created by Daniel Boekhoff. Thanks to Daniel for the contribution.
</p>
<p>
This build only works with NetBeans 6.1 because it has an
implementation dependency on NetBeans 6.1 FCS/ML. Necessary fixes for
the daily builds of NetBeans 6.5 will be provided after the official
6.1 plugin is released. The functionality is still under development
and the main goal of this snapshot is to get feedback from real
Facelets users. You can read more about the support on the <a href="https://nbfaceletssupport.dev.java.net/features.html">feature page</a>
.</p>
<p><strong>下面是Facelets 插件的发展史:</strong></p>
<p>04 June 2008<br />
A lot of requests have been
made asking when Facelets support will be available on NetBeans 6.1 and
how it will be provided. Yes, there is a plan to officially release the
support NBMs through the update center for NetBeans 6.1. We are
currently working to resolve several compatibility issues and migrate
the internal API usage to NetBeans 6.1. When the plugin is ready for
final release, we will announce it and make it available in the
Available Plugins list of NetBeans 6.1, but you can currently download
the Beta release binary for NetBeans 6.1 FCS <a href="https://nbfaceletssupport.dev.java.net/files/documents/5684/99000/nbfaceletssupport-6.1.zip">here</a>
 or NetBeans 6.1 ML
<a href="https://nbfaceletssupport.dev.java.net/files/documents/5684/99718/nbfaceletssupport-6.1ml.zip">here</a>
.</p>
<p>28 November 2007<br />
Many people have asked me when a version of facelets support will be available for NetBeans 6.0.
You can download it <a href="https://nbfaceletssupport.dev.java.net/files/documents/5684/77220/nbfaceletssupport-0-6.zip">here</a>
.
<br />
<br />
No user improvements have been made, but this build works with NetBeans 6.0 and some issues have been fixed.
Unfortunately I don't have enough time for deep testing and I also expect some regressions.
If you find any problems when evaluating this snapshot, please fill a new issue in the Issue tracker
and mark the issue that was found in snapshot06. Thank you for your help.
</p>
<p>7 June 2007<br />
Daniel Boekhoff wrote a new tutorial -
<a href="http://www.dbnetworx.de/brain-backup/tutorial-running-and-facelets-support-in-netbeans-with-jpa-glassfish-and-mysql-5">Running and Facelets Support in Netbeans (with JPA, Glassfish and MySQL 5)</a>
. The tutorial is also available on  <a href="http://wiki.netbeans.org/wiki/view/UsingJSFAndFaceletsInNetbeans">wiki.netbeans.org</a>
. Thanks to Daniel for the contribution.
</p>
<p>22 May 2007<br />
A new build of the Seam Gen Integration module is now available.<span style="color: red;">
<strong>This version works with JBoss Seam 1.2.1 GA</strong>
</span>
, which generates a folder structure of the sources that
differs slightly from the previous one.
This change and some bug fixes are contained in the new build version 0.2.&nbsp;</p>
<p>&nbsp;</p>
<p>随便贴几幅截图,还有好多呢! 具体看看<a href="https://nbfaceletssupport.dev.java.net/features.html">https://nbfaceletssupport.dev.java.net/features.html</a></p>
<p><img src="https://nbfaceletssupport.dev.java.net/CodeCompletion01.png" alt="" /></p>
<p>&nbsp;</p>
<p><img src="https://nbfaceletssupport.dev.java.net/images/NewTemplateWizard.png" alt="" />
</p>
<p>&nbsp;</p>
<p><img src="https://nbfaceletssupport.dev.java.net/images/CodeCompletion03.png" alt="" /></p>
<p><img src="https://nbfaceletssupport.dev.java.net/images/CodeCompletion09.png" alt="" />
</p>
<p>&nbsp;</p>
<p>
<img src="https://nbfaceletssupport.dev.java.net/images/CodeCompletion05.png" alt="" />
<br /></p>
<table border="1">
<tbody>
<tr>
<td>Document</td>
<td>Tag Code Completin</td>
</tr>
<tr>
<td>Before CC</td>
<td><img src="https://nbfaceletssupport.dev.java.net/images/AutoImport-1-1.png" alt="AutoImport-1-1.png" />
</td>
</tr>
<tr>
<td>During CC</td>
<td><img src="https://nbfaceletssupport.dev.java.net/images/AutoImport-1-2.png" alt="AutoImport-1-2.png" />
</td>
</tr>
<tr>
<td>After CC</td>
<td><img src="https://nbfaceletssupport.dev.java.net/images/AutoImport-1-3.png" alt="AutoImport-1-3.png" />
</td>
</tr>
</tbody>
</table>
<p>Examples 2: Very similar to the example 1. Only the user doesn't complete a tag, but the value of jsfc attribute of a html tag.
</p>
<table border="1">
<tbody>
<tr>
<td>Document</td>
<td>Code Completion of jsfc attribute</td>
</tr>
<tr>
<td>Before CC</td>
<td><img src="https://nbfaceletssupport.dev.java.net/images/AutoImport-2-1.png" alt="AutoImport-2-1.png" />
</td>
</tr>
<tr>
<td>During CC</td>
<td><img src="https://nbfaceletssupport.dev.java.net/images/AutoImport-2-2.png" alt="AutoImport-2-2.png" />
</td>
</tr>
<tr>
<td>After CC</td>
<td><img src="https://nbfaceletssupport.dev.java.net/images/AutoImport-2-3.png" alt="AutoImport-2-3.png" />
</td>
</tr>
</tbody>
</table>
          <br/>
          <span style="color:red;">
            <a href="http://gml520.javaeye.com/blog/209894#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 30 Jun 2008 18:43:25 +0800</pubDate>
        <link>http://gml520.javaeye.com/blog/209894</link>
        <guid>http://gml520.javaeye.com/blog/209894</guid>
      </item>
      <item>
        <title>NetBeans6.1 插件支持 Wicket 1.3.3 Web 框架</title>
        <author>gml520</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gml520.javaeye.com">gml520</a>&nbsp;
          链接：<a href="http://gml520.javaeye.com/blog/209889" style="color:red;">http://gml520.javaeye.com/blog/209889</a>&nbsp;
          发表时间: 2008年06月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span id="form1:center_container:page_border:fixed_contentarea:fixed_contextbox:bottomPanel:categoryDetailPanel:whatsnewPanel:txtRevisionNotes"> 这个插件出来已经一段时间了,感觉好像没什么人关注,最近发现还是有人关注这个Web框架的.<br />
今天就发个NetBeans的插件 ,这个插件支持Wicket 1.3.3 . 对于喜欢这个Web 框架的朋友,可以试一试这个插件!<br />
下面是插件的简介(最近比较懒就不翻译了,会用到这个框架的朋友,英语应该不是问题了!</span>
<img src="http://www.blogjava.net/CuteSoft_Client/CuteEditor/images/emsmilep.gif" border="0" align="absmiddle" alt="" />
<span id="form1:center_container:page_border:fixed_contentarea:fixed_contextbox:bottomPanel:categoryDetailPanel:whatsnewPanel:txtRevisionNotes">):<br />
<br />
</span>
<span class="orange" id="form1:center_container:page_border:fixed_contentarea:fixed_contextbox:bottomPanel:categoryDetailPanel:whatsnewPanel:staticText17" style="font-size: 14px; font-weight: bold;">What is New in this Version?</span>
<br />
&nbsp;<span id="form1:center_container:page_border:fixed_contentarea:fixed_contextbox:bottomPanel:categoryDetailPanel:whatsnewPanel:txtRevisionNotes">Latest
changes: (1) Wicket 1.3.3 is supported, instead of Wicket 1.3.0, (2) a
filter is used in web.xml instead of servlet (as requested in the
comments in this plugin page), (3) names of generated templates are
much simpler, (4) some superfluous options in configuration panel are
removed, (5) the HeaderPanel is now always created, (5) no dummy POJO
is created, (6) reference to stylesheet in generated BasePage is now
done the Wicket way: using
org.apache.wicket.markup.html.resources.StyleSheetReference, which
means automatic support for localized stylesheets, and (7) there are
now three modules instead of two, because the file templates have been
split out into a separate module.</span>
<br />
<br />
<span class="orange" id="form1:center_container:page_border:fixed_contentarea:fixed_contextbox:bottomPanel:categoryDetailPanel:descPanel:staticText18" style="font-size: 14px; font-weight: bold;">Plugin Owner's Notes</span>
<br />
<span id="form1:center_container:page_border:fixed_contentarea:fixed_contextbox:bottomPanel:categoryDetailPanel:descPanel:txtDescription">This plugin adds <strong>Wicket</strong>
as a framework for a web application project. The zip file contains
three plugins; the two framework Wicket provider modules and the Wicket
1.3.3 Library. Create a new web application and choose Wicket in the
Frameworks panel:
<p><img src="http://testwww.netbeans.org/images/articles/60/web/wicket/frameworks1.png" border="1" alt="" />
</p>
<p>Then follow the Wicket tutorial for NetBeans IDE:</p>
</span>
这是快速入门教程:<br />
<a href="http://www.netbeans.org/kb/60/web/quickstart-webapps-wicket_zh_CN.html">http://www.netbeans.org/kb/60/web/quickstart-webapps-wicket_zh_CN.html</a>
<br />
<br />
下载地址:<a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=3586">http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=3586</a>
</p>
          <br/>
          <span style="color:red;">
            <a href="http://gml520.javaeye.com/blog/209889#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 30 Jun 2008 18:33:12 +0800</pubDate>
        <link>http://gml520.javaeye.com/blog/209889</link>
        <guid>http://gml520.javaeye.com/blog/209889</guid>
      </item>
      <item>
        <title>Struts2 in NetBeans 6.1  is released</title>
        <author>gml520</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gml520.javaeye.com">gml520</a>&nbsp;
          链接：<a href="http://gml520.javaeye.com/blog/208925" style="color:red;">http://gml520.javaeye.com/blog/208925</a>&nbsp;
          发表时间: 2008年06月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>说实在的这个版本的Struts2 plugin for NetBeans 并不怎么样! 功能有限,但是有总比没有的好,至少还可以提高一点生产力!&nbsp; 这个插件带的lib 很少最好还是用自己的lib。</p>
<p>&nbsp;</p>
<p>下面是 Struts2 Support Features:</p>
<p>&nbsp;</p>
<p><strong style="font-weight: normal;">Apache Struts 2 is an elegant, extensible framework </strong>
for
creating enterprise-ready Java web applications. The framework is
designed to streamline the full development cycle, from building, to
deploying, to maintaining applications over time. You can read more about Struts 2 at <a href="http://struts.apache.org/2.x/">http://struts.apache.org/2.x/</a>
. <br />
<br />
Installation instructions can be found <a href="https://nbstruts2support.dev.java.net/installation.html">here</a>
.</p>
<p>&nbsp;</p>
<p>下载地址 https://nbstruts2support.dev.java.net/servlets/ProjectDocumentList?folderID=9422%26expandFolder=9422%26folderID=8962</p>
<h2>Framework Support</h2>
<p>***To be added***</p>
<h2>Context based Code Completion(基于上下文的代码自动补全)</h2>
<p>Code completion assists the programmers/developers to fill in the
values for the various attributes. It enlists all possible entries that
a attribute/element value can have in a configuration file. By doing
so, we improve the ease of use for editing a Struts Configuration file. <br />
<br />
Some screen shots of code completion:<br />

<br />

<img src="https://nbstruts2support.dev.java.net/images/cc_package_extends.png" alt="CC Package Extends" style="width: 818px; height: 587px;" />
<br />

<br />

Code completion also assists while specifying a fully qualified java name (inclusive of packages)<br />

<br />

<img src="https://nbstruts2support.dev.java.net/images/cc_java_class.png" alt="CC Java Class" style="width: 847px; height: 537px;" />
<br />

<br />
<br />

<br />

For an exhaustive list on the code completion scenarios, please visit this <a href="http://spreadsheets.google.com/pub?key=pcnE6sVq1k0xii9bo0ZAWRA">link</a>
.</p>
<h2>Hyperlinking (超连接跳转)<br />
</h2>
<p>
With the help of this plugin, the developer will be able to jump to the
point of origin (declaration) of an entity. It would be applicable to
all the elements present in the configuration file, right from
Interceptors, results,etc. to externally referenced Java files. Some of
the hyperlinking scenarios that have been implemented are shown below.&nbsp;<br />

<br />

<img src="https://nbstruts2support.dev.java.net/images/hy_interceptor_class.png" alt="HY Interceptor Class" style="width: 711px; height: 421px;" />
<br />

<br />
For an exhaustive list on the hyperlinking&nbsp;scenarios, please visit this <a href="http://spreadsheets.google.com/pub?key=pDWwbXLaY5bH2srtBPxsdGg">link</a>
.</p>
<h2>Wizards(向导生成)</h2>
<p>
Wizards assist the programmers by generating a default template for
Struts 2 components like Interceptors, Results, Actions and
Configuration files. Once, we have a web project with Struts 2
framework, we can add an Interceptor/Action/Result/Configuration file
into our project by clicking on 'File -&gt; New File -&gt; Struts 2'.&nbsp;<br />

<br />

<img src="https://nbstruts2support.dev.java.net/images/wizard_struts.png" alt="Struts 2 Wizard" style="width: 741px; height: 507px;" />
<br />

<br />
The screen shot below shows the scenario of creating a new Interceptor using a wizard:<br />

<br />

<img src="https://nbstruts2support.dev.java.net/images/new_interceptor.png" alt="Wizard New Interceptor" style="width: 738px; height: 504px;" />
</p>
          <br/>
          <span style="color:red;">
            <a href="http://gml520.javaeye.com/blog/208925#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 28 Jun 2008 13:20:03 +0800</pubDate>
        <link>http://gml520.javaeye.com/blog/208925</link>
        <guid>http://gml520.javaeye.com/blog/208925</guid>
      </item>
      <item>
        <title>NetBeans中的python m3版 操作视频</title>
        <author>gml520</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gml520.javaeye.com">gml520</a>&nbsp;
          链接：<a href="http://gml520.javaeye.com/blog/208878" style="color:red;">http://gml520.javaeye.com/blog/208878</a>&nbsp;
          发表时间: 2008年06月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><br />
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.netbeans.tv/js/swfobject.js&quot;&gt;&lt;/script&gt;<br />
&lt;script type=&quot;text/javascript&quot;&gt;<br />
&lt;!--<br />
var so = new SWFObject(&quot;http://www.netbeans.tv/images/playerWidget.swf&quot; , &quot;pv&quot;, &quot;410&quot;, &quot;331&quot;, &quot;8&quot;, &quot;#666666&quot;);<br />
so.addParam(&quot;quality&quot;, &quot;high&quot;);<br />
so.addParam(&quot;allowScriptAccess&quot;, &quot;sameDomain&quot;);<br />
so.addParam(&quot;allowFullScreen&quot;, &quot;true&quot;);<br />
so.addVariable(&quot;autoPlay&quot;, &quot;false&quot;);<br />
so.addVariable(&quot;urlFileIdList&quot;, &quot;6644&quot;);<br />
so.addVariable(&quot;show_title&quot;, &quot;true&quot;);<br />
so.addVariable(&quot;PLAY_CALLBACK&quot;,&quot;emphasize&quot;);<br />
so.addVariable(&quot;resizeLimitMax&quot;,&quot;true&quot;);<br />
so.addVariable(&quot;lang&quot;, &quot;en&quot;);<br />
so.addVariable(&quot;flash_play&quot;,&quot;true&quot;);<br />
so.addVariable(&quot;author_name&quot;,&quot;NetBeans.tv&quot;);<br />
so.addVariable(&quot;configUrl&quot;,&quot;http://sun.ora.ma/config.sun.ora.ma.xml&quot;);<br />
so.write(&quot;videoPlayer&quot;);<br />
// --&gt;<br />
&lt;/script&gt;<br />
&lt;object classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0&quot; width=&quot;600&quot; height=&quot;325&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.vimeo.com/moogaloop.swf?clip_id=1195398&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1&quot; /&gt;&lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;&lt;param name=&quot;menu&quot; value=&quot;false&quot; /&gt;&lt;param name=&quot;wmode&quot; value=&quot;&quot; /&gt;&lt;embed src=&quot;http://www.vimeo.com/moogaloop.swf?clip_id=1195398&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1&quot; wmode=&quot;&quot; quality=&quot;high&quot; menu=&quot;false&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;600&quot; height=&quot;325&quot;&gt;&lt;/embed&gt;&lt;/object&gt;</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://gml520.javaeye.com/blog/208878#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 28 Jun 2008 08:13:56 +0800</pubDate>
        <link>http://gml520.javaeye.com/blog/208878</link>
        <guid>http://gml520.javaeye.com/blog/208878</guid>
      </item>
      <item>
        <title>你属于哪个版本的程序员？【转载】</title>
        <author>gml520</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gml520.javaeye.com">gml520</a>&nbsp;
          链接：<a href="http://gml520.javaeye.com/blog/208372" style="color:red;">http://gml520.javaeye.com/blog/208372</a>&nbsp;
          发表时间: 2008年06月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>国外开发者博客中有一篇有趣的文章，将程序员按水平像软件版本号那样划分为不同的版本。相对于在招聘时分为初级，中级，高级程序员，直接表明需要某种语言N版本的程序员或许更方便直接。根据作者的观点，可将WEB开发者大致分为以下几个版本：<br />
<br />
Alpha：阅读过一些专业书籍，大多数能用Dreamweaver或者FrontPage帮朋友制作一些Web页面。但在他们熟练掌握HTML代码以前，你大概不会雇佣他们成为职业的WEB制作人员。<br />
<br />
Beta：已经比较擅长整合站点页面了，在HTML技巧方面也有一定造诣，但还是用Tables来制作页面，不了解CSS，在面对动态页面或数据库连接时还是底气不足。<br />
<br />
Pre Version 1 (0.1)：比Beta版的开发者水平要高。熟悉HTML，开始了解CSS是如何运作的，懂一点JavaScript，但还是基于业余水准，逐步开始关心动态站点搭建和数据库连接的知识。这个版本的WEB开发人员还远不能成为雇主眼中的香饽饽。<br />
<br />
1.0: 能够基本把控整个站点开发，针对每个问题尽可能的找到最直接的解决办法。但对可测性，可扩展性以及在不同(层)框架下如何选择最合适的WEB设计工具尚无概念。这个版本的WEB开发者有良好的技术基础，需要有进一步的帮助和指导。<br />
<br />
<br />
<br />
2.0：懂面向对象的编程语言，理解分层开发的必要性，关注代码分离，对问题寻找更完美的解决方法，偶然也会考虑设计模式的问题，但对此仍然概念不清。属于优秀的初级开发者，能完成较松散的代码开发(相对大型严谨的站点开发而言)，在面对较复杂问题寻找解决办法时需要周边人的帮助。<br />
<br />
3.0：开始较为深入的理解面向对象编程和设计模式，了解他们的用途，当看到好的设计模式时能看透其本质，逐步关注分层的架构解决办法和可测试性。理解不同的开发语言并能说出他们的异同(例如各自的优势)。属于优秀的中级别开发者，雇主也确信他们最终能找到问题的解决办法，这个版本的人可以给1.0和2.0的开发者以指导。但他们对架构的理解仍然不够清晰，值得一提的是，只要给予一些指导，他们能很快理解并熟记做出的决定，以及选定方案的优势所在。<br />
<br />
4.0：理解模式，重视用户的反馈。着手研究方法论，架构设计和软件开发的最佳入口。头脑中已经形成了超越开发语言，技术架构的整体方案，可根据需求解构程序。能从理论的角度，不同模式如何融合成最佳形态，将多种X-驱动的模式应用到不同的方案中。是精通多语言的高手，理解不同系统和方法论的细微差别，属于高级程序员。这个级别的人能够轻易的辅导2.0和3.0的程序员，将他们推向更高的级别。<br />
<br />
5.0：从系统的角度考虑问题。对各种系统结构有深入研究，能对整个代码架构中的问题进行改进。在团队粘合性以及代码安全性方面有杰出贡献。对1.0到4.0版本的开发人员出现的问题能及时察觉，让整个团队保持积极性且保持兴奋的状态创建软件解决办法。举例来说，他们总是对新的技术和信息保持饥渴状态，试图用最简便的方案解决开发任务。在整个IT团队中获得信任，属于高级程序员和架构师。<br />
<br />
那么，您属于哪个版本的程序员呢？<br />
<br />
查看本文国际来源：<a href="http://geekswithblogs.net/leesblog/archive/2008/06/22/developer-versioning-which-version-are-you.aspx" target="_blank">开发者版本：你属于哪个版本的程序员？</a>
</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://gml520.javaeye.com/blog/208372#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 26 Jun 2008 21:43:35 +0800</pubDate>
        <link>http://gml520.javaeye.com/blog/208372</link>
        <guid>http://gml520.javaeye.com/blog/208372</guid>
      </item>
      <item>
        <title>Linux 内核编写者的集合照</title>
        <author>gml520</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gml520.javaeye.com">gml520</a>&nbsp;
          链接：<a href="http://gml520.javaeye.com/blog/208311" style="color:red;">http://gml520.javaeye.com/blog/208311</a>&nbsp;
          发表时间: 2008年06月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>这张照片里有几个是中国人! 佩服他们!而且还有个女的!</p>
<p>&nbsp;</p>
<p><a href="../../upload/picture/pic/16713/ab40424d-27ea-32ee-801f-3c3df41136a0.jpg"><img src="../../../upload/picture/pic/16713/ab40424d-27ea-32ee-801f-3c3df41136a0.jpg" alt="" />
</a>
</p>
          <br/>
          <span style="color:red;">
            <a href="http://gml520.javaeye.com/blog/208311#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 26 Jun 2008 17:58:10 +0800</pubDate>
        <link>http://gml520.javaeye.com/blog/208311</link>
        <guid>http://gml520.javaeye.com/blog/208311</guid>
      </item>
      <item>
        <title>NetBeans6.5 M1 众多期待的特性一览表! </title>
        <author>gml520</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gml520.javaeye.com">gml520</a>&nbsp;
          链接：<a href="http://gml520.javaeye.com/blog/207794" style="color:red;">http://gml520.javaeye.com/blog/207794</a>&nbsp;
          发表时间: 2008年06月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>Netbeans 6.5 M1 已经发布,最新版本的NetBeans 增强了许多功能,同时也引入了许多值得期待的新特性.<br />
其中我比较喜欢的是DataBase 的改进,Eclipse 项目导入变得比以前更方便了,可以正确的区分Web项目<br />
和普通项目,还有Spring&nbsp;&nbsp; Hibernate 增强. GUI 中新增了JDK1.6 u10 中的look&amp;feel 只要你用的是 JDK1.6 u10<br />
就可以使用这个外观预览.数据绑定功能也改进了!&nbsp;&nbsp; 全新的多线程Debug&nbsp; 功能支持!<br />
&nbsp;JavaScript&nbsp; 也加入的Debug功能,还加入了好几个Javascript 库,像JQuery ,Yahoo ui dojo 等等! <br />
还新增了一个 &quot;驼峰拼写&quot; 代码补全功能. 很有意思. <br />
JavaEE 的lib path 也变成了可变的了.此外还增加了快速搜索功能. 更方便搜索!&nbsp;&nbsp; 还有好多个特性呢! </p>
<p>还有PHP Groovy Ruby 等都有增强!<br />
具体看下面的介绍! 英文太多了就不翻译了 大家自己看吧!<br />
<br />
UNC paths on Windows
</p>
<p>Now the NetBeans IDE supports <a href="http://en.wikipedia.org/wiki/Path_%28computing%29#Uniform_Naming_Convention">UNC paths</a>
 like <span style="font-family: monospace; white-space: pre;">&quot;&quot;computerName&quot;sharedFolder&quot;</span>
.
It is possible to install the IDE to UNC like folder and also it is
possible to create projects and other resources on UNC paths.
</p>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-FileAssociationsOptionsPanelAndOpenAs...Action"> File Associations options panel and Open As... action</h3>
<p>A new panel in options dialog which allows to say to NetBeans that
files with certain extension should be treated as files with a certain
MIME type (see <a href="http://www.netbeans.org/issues/show_bug.cgi?id=133773">#133773</a>
).
You can add a new extension to the list of modify existing one. If you
want to restore default setting for selected extension, you just click
the Default button.
</p>
<p><img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/file-associations.png" alt="file-associations.png" />
</p>
<p>In connection with the above change there was also added a new Open
As... action. It is enabled only for files which are not recognized by
the IDE. User can choose one from supplied MIME types and from now on
all files with this extension are treated as of choosen MIME type.
</p>
<p><img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/open-as-action.png" alt="open-as-action.png" />
</p>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-RunningSomeIDEDistributionsOnJRE"> Running some IDE distributions on JRE</h3>
<p>Certain IDE distributions (e.g. PHP IDE) don't require Java JDK to run on, JRE is enough.
</p>
<p>Plugin Manager now checks OpenIDE-Module-Package-Dependencies of all
modules which user selects to be installed. If the user's IDE is
running on JRE and the unsatified package dependency might indicate
that JDK is required, user is warned about it and the plugin
installation is not allowed.
</p>
<p><img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/missing-jdk-warning.png" alt="missing-jdk-warning.png" />
</p>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-QuickSearch"><a href="http://wiki.netbeans.org/QuickSearch">QuickSearch</a>
</h3>
<p>
Quickly search for action or type is now easy. Use Ctrl-I.
</p>
<p><img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/qs.png" alt="qs.png" />
</p>
<ul>
<li> wiki:    <a href="http://wiki.netbeans.org/QuickSearch">http://wiki.netbeans.org/QuickSearch</a>
    </li>
<li> UI spec:<a href="http://ui.netbeans.org/docs/ui/quicksearch/index.html">http://ui.netbeans.org/docs/ui/quicksearch/index.html</a>
    </li>
</ul>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-VariableBasedPathsInJ2SEJ2EEProjects">Variable based paths in J2SE/J2EE projects </h3>
<p>Since NetBeans 6.1 it is possible to control whether JAR/Folder
added to project classpath is referenced via absolute or relative path.
Now it is also possible to define a global IDE <em> named variable</em>
 pointing to a folder and use this variable as a base for referring to JARs/Folders.
</p>
<p>This feature further simplifies project sharing between users. In scenario where a project depends on JARs for which:
</p>
<ul>
<li> it is not desirable to store them in VCS; and which
    </li>
<li> can be placed in different locations for different users
    </li>
</ul>
<p>
a named IDE variable can be used.
</p>
<p>The variables are managed via Tools -&gt; Variable menu item:
</p>
<p><img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/Manage-Variables.png" alt="Manage-Variables.png" />
</p>
<p>In above screenshot single variable is defined with these details:
</p>
<p><img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/Edit-Variable.png" alt="Edit-Variable.png" />
</p>
<p>When variable based JAR/Folder is added to project classpath you can
see its path starting with variable name (and tooltip showing absolute
path):
</p>
<p><img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/Project-Properties.png" alt="Project-Properties.png" />
</p>
<p>Variable based JAR/Fodler is added to classpath via standard means
of &quot;Add Jar/Folder&quot; button in classpath customizer (or &quot;Add JAR/Folder&quot;
action on project's Libraries node in project's view). Custom file
chooser is shown with one new option &quot;Use Variable Path&quot;:
</p>
<p><img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/Add-JAR-Folder.png" alt="Add-JAR-Folder.png" />
</p>
<p>Just browse for your JAR/Folder and if selected file is under a
variable the option gets enabled. Alternatively press &quot;...&quot; button and
setup a new variable.
</p>
<p>If a user opens project with a variable based path and the variable
is not defined in user's IDE then standard broken reference warning is
shown to advice user to define variable:
</p>
<p><img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/Broken-Reference.png" alt="Broken-Reference.png" />
</p>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-EclipseProjectImportAndSynchronization"> Eclipse project import and synchronization</h3>
<p>The Eclipse project import feature facilitates mixed IDE development teams.
It allows you to select Eclipse projects from an Eclipse workspace
and generate NetBeans projects for them.
The generated NetBeans project keeps a link to the original Eclipse project
and will update itself after any relevant change:
for example, changing the classpath of the Eclipse project.
The update is done automatically when the NetBeans project is opened,
or can be explicitly requested via a context menu item &quot;Synch with Eclipse&quot; on the project.
</p>
<p><img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/wizard1.png" alt="wizard1.png" />
</p>
<p>This is early preview of the Eclipse import feature which will be fully implemented in Milestone 2.
(It supersedes the limited Eclipse import feature available in former NetBeans releases on the update center.)
We would appreciate feedback and real-life Eclipse projects for testing;
best is to use Issuezilla. (component <tt>ide</tt>
, subcomponent <tt>eclipse project import</tt>
)
</p>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-EnhancedJavaWebStartSupport"> Enhanced Java Web Start support</h3>
<p>Support for creating applets that can be deployed via Java Web Start was added to NetBeans IDE. <strong>Note:</strong>
 the functionality is available in JDK 1.6.0 update 10.
</p>
<p><img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/JWSProjProps.png" alt="JWSProjProps.png" />
</p>
<p>Each application or applet deployed via Java Web Start can specify
external resources (usually other JNLP file in internet). Dialog is
opened by clicking on 'External Resources' button.
</p>
<p><img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/JWSExtRes.png" alt="JWSExtRes.png" />
</p>
<p>Each applet can have number of properties defined in JNLP file,
those properties can be defined in dialog that is opened by clicking
'Applet Parameters'. Also you can set applet dimensions in the dialog.
</p>
<p><img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/JWSAppletParams.png" alt="JWSAppletParams.png" />
</p>
<h2 id="section-NewAndNoteWorthyMilestone1NB65-Platform"> Platform</h2>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-SlidingWindowsSupportOriginalWindowSizes"> Sliding windows support original window sizes</h3>
<p>Slided-in windows can keep their preferred size instead of being stretched to the whole height/width of the IDE window.
</p>
<p>(see <a href="http://www.netbeans.org/issues/show_bug.cgi?id=135318">#135318</a>
).
</p>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-PossibilityToConfigureSomeWindowSystemPropertiesForApplicationsBasedOnPlatform"> Possibility to configure some Window System properties for applications based on Platform</h3>
<p>Some window system features can be turned off by branding of core.windows module.
</p>
<p><img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/winsys_customization.png" alt="winsys_customization.png" />
</p>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-TreeTableViewReplacementIntroduced"> TreeTableView replacement introduced</h3>
<p>OutlineView is a new replacement for buggy TreeTableView. It
supports drag and drop, in-place editing of tree cells, enhanced
sorting etc. The data model is fully compatible with TreeTableView.
</p>
<p>(see <a href="http://www.netbeans.org/issues/show_bug.cgi?id=33281">#33281</a>
).
</p>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-OpeningOptionsDialogWithPreselectedSubcategories"> Opening Options dialog with preselected subcategories</h3>
<p>API in options.api module has been changed to allow open Options dialog with preselected subcategory (see <a href="http://www.netbeans.org/issues/show_bug.cgi?id=109538">#109538</a>
). In your code you can call <tt>OptionsDisplayer.getDefault().open(&quot;CategoryID/SubcategoryID&quot;);</tt>
 where <tt>CategoryID</tt>
 and <tt>SubcategoryID</tt>
 are registration names from layer. For selection a panel under Miscellaneous category use <tt>OptionsDisplayer.getDefault().open(OptionsDisplayer.ADVANCED+&quot;/SubcategoryID&quot;);</tt>
.
</p>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-SupportAllowingAUserToDropATextIntoThePalette"> Support allowing a user to drop a text into the palette</h3>
<p>It is possible to drag and drop any text to the Palette window to
create a new code snippet. It works for HTML editor palette only at the
moment, more document types will follow soon.
</p>
<h2 id="section-NewAndNoteWorthyMilestone1NB65-PHP"> PHP</h2>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-FeaturesFirstIntroducedInEarlyAccessForPHP"> Features first introduced in Early Access for PHP</h3>
<p>The <a href="http://download.netbeans.org/netbeans/6.1/final/">NetBeans IDE Early Access for PHP</a>
 was released in April at the same time as NetBeans 6.1. Milestone 1 of NetBeans 6.5 now contains <a href="http://wiki.netbeans.org/FeatureListEAPHP">all features introduced in this release</a>
.
</p>
<p>Next, in NB 6.5 M1, PHP features are a part of the &quot;all-in-one&quot;
distribution of NetBeans, so they can be used together with all the
other NetBeans features. Of course, there is still the slim PHP edition
of NetBeans, targeted for PHP development specifically. </p>
<p>See below for more features added in NetBeans 6.5 Milestone 1, that
were not present in Early Access. Also, to keep up with the new
features added to NetBeans PHP support, make sure to check and bookmark
the <a href="http://blogs.sun.com/netbeansphp/">NetBeans PHP Team Blog</a>
.
</p>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-DatabaseRelatedCodeSnippets"> Database-related code snippets</h3>
<p>Generate code to connect to a MySQL database and to display the data
in a database table. These snippets are available under the Generate
Code action [Alt+Insert], just like in the Java editor.
</p>
<p><img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/php-database-table-snippet.png" alt="php-database-table-snippet.png" />
</p>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-FindUsages"> Find Usages </h3>
<p>Available also for PHP development. Right click the item and select &quot;Find Usages&quot; or hit Alt-F7.
</p>
<p><img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/php-find-usages.png" alt="php-find-usages.png" />
</p>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-MultipleProjectConfigurations"> Multiple project configurations</h3>
<ul>
<li> running, debugging either as script or as web page in browser
    </li>
<li> index file, arguments ...
    </li>
</ul>
<p><img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/php-project-configs.png" alt="php-project-configs.png" />
</p>
<h2 id="section-NewAndNoteWorthyMilestone1NB65-Ajax"> Ajax</h2>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-JavaScriptDebugger"> <a href="http://wiki.netbeans.org/NbAjaxProject#section-NbAjaxProject-section-NbAjaxProject-JavaScriptDebugging">JavaScript Debugger </a>
</h3>
<ul>
<li> Supported browsers
    
<ul>
<li> Firefox 2.0.0.X
        </li>
<li> Requires Firebug 1.1beta. An automatic installation is attempted when not found.
        </li>
</ul>
</li>
<li> Add &amp; delete breakpoints in JavaScript code
    
<ul>
<li> Html Files
        </li>
<li> JavaScript Files
        </li>
<li> URL source resulting from server side technologies such as JSP
        </li>
</ul>
</li>
<li> Manage debugger session
    </li>
<li> View &amp; navigate source artifacts
    
<ul>
<li> Html Files
        </li>
<li> JavaScript files
        </li>
<li> URL source resulting from server side technologies such as JSP
        </li>
</ul>
</li>
<li> View window/frame structure
    </li>
<li> View &amp; navigate JavaScript Callstack
    </li>
<li> View local variables
    </li>
<li> Set &amp; delete watches
    </li>
<li> View (static) browser DOM in the IDE
    </li>
<li> J2EE &amp; Ruby Project integration
    
<ul>
<li> Debug Client Session: Run the project and launch a JavaScript
        debugging session in NetBeans, attached to the Firefox 2.0.0.X browser
        where the client-side application is running
        </li>
<li> Source Mapping: Correlate a client-side application (browser
        DOM) identified by a URI with the corresponding source file in the J2EE
        project (limited mapping in M1) Mapping for:
        
<ul>
<li> Html files
            </li>
<li> JavaScript files
            </li>
</ul>
</li>
</ul>
</li>
</ul>
<p><a href="http://wiki.netbeans.org/JavaScriptDebuggerNetBeans6.5M1UserGuide">User Guide</a>
</p>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-JavaScriptLibraryManager"> <a href="http://wiki.netbeans.org/JavaScriptBundledLibraries">JavaScript Library Manager </a>
</h3>
<ul>
<li> Utilizes NetBeans Library Manager to manage JavaScript libraries
    </li>
<li> Wizard to add JS libraries to Java EE, Ruby, or PHP projects (Tools-&gt;Add JavaScript Libraries)
    </li>
</ul>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-BundledJavaScriptLibraries"> <a href="http://wiki.netbeans.org/JavaScriptBundledLibraries">Bundled JavaScript Libraries </a>
</h3>
<ul>
<li> Yahoo UI
    </li>
<li> WoodStock
    </li>
<li> jQuery
    </li>
<li> dojo
    </li>
<li> scriptaculous
    </li>
<li> prototype
    </li>
</ul>
<h2 id="section-NewAndNoteWorthyMilestone1NB65-Java"> Java</h2>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-JavadocAnalyzer"> Javadoc Analyzer</h3>
<p>
This
plugin provides ability to check and fix Javadoc comments in your
source code. Just select project/package/files and invoke &quot;Source |
Analyze Javadoc&quot;.
Auto comment functionality is back.
</p>
<p><img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/javadoc.png" alt="javadoc.png" />
</p>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-CallHierarchy"> Call Hierarchy</h3>
<p>
Show all callers/callees in the search scope of the selected member.
</p>
<p><img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/ch.png" alt="ch.png" />
</p>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-FormattingSettingsPerProject">Formatting Settings per Project</h3>
<p>
You can specify formatting settings individually for each project
</p>
<p><img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/sttings.png" alt="sttings.png" />
</p>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-CamelCaseCodeCompletion"> CamelCase code completion</h3>
<p>
Code
completion improved. Just write first letters of each word in method to
get smart code completion. For instance &quot;iL&quot; stands for invokeLater.
</p>
<p><img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/cc.png" alt="cc.png" />
</p>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-ImprovedEncapsulateFieldsRefactoring"> Improved Encapsulate Fields Refactoring</h3>
<p>
Encapsulate Fields Refactoring Improved. New options available.
</p>
<p><img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/encapsulate.png" alt="encapsulate.png" />
</p>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-OptionToRemoveWhitespaceAtEndOfLine"> Option to remove whitespace at end of line</h3>
<p>
Top voted <a href="http://www.netbeans.org/issues/show_bug.cgi?id=13063">enhancement</a>
 finally implemented
</p>
<h2 id="section-NewAndNoteWorthyMilestone1NB65-Groovy">Groovy</h2>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-Editor">Editor</h3>
<ul>
<li>placeholder
    </li>
</ul>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-JavaSEProjectIntegration">Java SE Project Integration</h3>
<h2 id="section-NewAndNoteWorthyMilestone1NB65-Database"> Database</h2>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-ImprovedNewConnectionDialog"> Improved New Connection dialog</h3>
<p>
Now
the dialog for creating a new database connection does not expect you
to know the details of the JDBC URL to open a connection. If you want
to modify the URL, however, you can do so, just click on the &quot;Show JDBC
URL&quot; checkbox. Changes to the URL are reflected in the fields and vice
versa.
</p>
<p><img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/conndialog.jpg" alt="conndialog.jpg" />
</p>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-SQLHistoryDialog"> SQL history dialog</h3>
<p>
SQL
that has been executed is saved to a file in the userdir and available
for viewing in a dialog and also SQL can be selected and reinserted in
an existing SQL file.
<img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/sql_history_icon.png" alt="sql_history_icon.png" />
</p>
<p><img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/sql_history.png" alt="sql_history.png" />
</p>
<h2 id="section-NewAndNoteWorthyMilestone1NB65-ServerSupport"> Server Support</h2>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-GlassFishV3IntegrationModule."> GlassFish V3 integration module.</h3>
<p>
Is now part of the Web &amp; Java EE and Ruby bundles.
No need to get the modules from the update center.
</p>
<h2 id="section-NewAndNoteWorthyMilestone1NB65-WebFrameworksSpringHibernateJSFJSFCRUDGeneratorJPA"> Web frameworks (Spring, Hibernate, JSF, JSF CRUD Generator, JPA)</h2>
<h3 id="section-NewAndNoteWorthyMilestone1NB65-Spring"> Spring</h3>
<ul>
<li> Improved Java class FQN completion
    </li>
</ul>
<p>
Code completion is now faster than the earlier version. For
efficiency, Java class FQN completion is now a two step process. Most
of the times, a user will need only classes defined locally in the
project (source classpath). Hence the first CTRL+SPACE will list only
the items in the source classpath, as shown below: <img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/cc_step1.png" alt="cc_step1.png" />
</p>
<p>If the user wishes to add an item not in the source classpath, he
can press CTRL+SPACE again. Also, if the typed prefix does not match
any local item, the completion will automatically switch to show all
items instead of just local items.
<img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/cc_step2.png" alt="cc_step2.png" />
</p>
<ul>
<li> Go to Spring Bean dialog
    </li>
</ul>
<p>
A Go to Spring Bean dialog is similar to the Go to Type
dialog and will allow the user to quickly navigate to a given Spring
Bean definition by it's name. The user selects the main menu item <strong>Navigate | Go to Spring Bean...</strong>
 or the keyboard short cut <strong>Alt + Shift + B</strong>
 to invoke the Go to Spring Bean dialog.
<img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/menu_goto.png" alt="menu_goto.png" />
</p>
<p><img src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone1NB65/goto_dialog.png" alt="goto_dialog.png" 