<HTML>
<HEAD>
<title>netbeans.org: NetBeans Weekly News Issue #259 - Sep 25, 2006</title>
<META NAME="description" CONTENT="Newsletter 2006-09-25">

<link rel="stylesheet" type="text/css" href="/netbeans.css">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2">

<!-- ====================================================== -->
<!-- Please do not edit this file by hand, it is rebuilt    -->
<!-- automatically and your changes will be lost.  Contact  -->
<!-- webmaster for details.  Rebuilt at                     -->
<!-- #TIMESTAMP# 25-Sep 18:14 CEST                          -->
<!-- ====================================================== -->
</HEAD>
<BODY>

<h1>NetBeans Weekly News<br>Issue #259 - Sep 25, 2006</h1><hr>
NetBeans Weekly News, a newsletter for the NetBeans community<br>
Issue #259 - Sep 25, 2006<br>
URL: &lt;<a href='https://netbeans.org/community/news/newsletter/2006-09-25.html'>https://netbeans.org/community/news/newsletter/2006-09-25.html</a>&gt;<br>
Interested in becoming a newsletter editor?  We're always looking<br>
for editors to help out. Contact <a href='mailto:nbnews_contrib@netbeans.org'>nbnews_contrib@netbeans.org</a><br>
Please send news contributions to <a href='mailto:nbnews_contrib@netbeans.org'>nbnews_contrib@netbeans.org</a><br>
<hr><pre>[ANNOUNCE] New NetBeans Governance Board Decided
The NetBeans Board Elections closed Thursday, September 21 and the
community has re-elected current board members David Strupl and Rich
Unger. Charlie Hunt will also stay on and serve another term as the Sun
appointed member of the NetBeans Governance Board. The web pages will
be updated shortly.

NetBeans WorldTour - Next Stop Beijing China - September 29, 2006
This is your last chance to register for the next stop on the NetBeans
WorldTour. Space is limited so reserve your spot today!
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=795">http://services.netbeans.org/newsletter/story.php?id=795</a>&gt;

NetBeans 6.0 Milestone 3
NetBeans 6.0 (Dev) Milestone 3 is now available for download and
contains the following improvements:
 * Ant output window now features Stop and Re-run buttons
 * Windows Vista look and feel is fully supported if you run NetBeans
   6.0 on latest available build of Java SE 6.0
 * Run configurations is now available also for Java SE projects.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=796">http://services.netbeans.org/newsletter/story.php?id=796</a>&gt;

Run Configurations Available in Milestone 3
The "run configurations" feature is available in Milestone 3 of
NetBeans 6.0. This feature lets you define multiple main classes and
their parameters for your applications and switch between them easily:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=797">http://services.netbeans.org/newsletter/story.php?id=797</a>&gt;

Things You'd Like to See in the New 6.0 Editor
There is a thread going on the nbusers mailing list that has posed the
question of the new editor that will be in NetBeans 6.0. Are you
missing something or know of a killer feature that should be added to.
Browse this thread and see what others think want and be sure to add
your comments.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=798">http://services.netbeans.org/newsletter/story.php?id=798</a>&gt;

Got Identity on Your Web Service?
Follow this tutorial to understand how to create secure web services
using Liberty specifications. Identity tooling features available in
NetBeans Enterprise Pack 5.5 provide required tooling and runtime
support to do this easily. Prior knowledge of Liberty specifications
NOT required!
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=799">http://services.netbeans.org/newsletter/story.php?id=799</a>&gt;

Get Started with On-device Debugging for NetBeans
A new tutorial from Sony Ericsson that includes information on on-
device debugging with the NetBeans Mobility Pack and the Sony Ericsson
K800 mobile phone.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=800">http://services.netbeans.org/newsletter/story.php?id=800</a>&gt;

NetBeans Nodes, Explorer Manager, and Component Palette Tutorial
In this tutorial, you will learn how to create a BeanTreeView with drag
and drop functionality. You will view the nodes in a variety of
explorer views and create a Component Palette containing items created
from your nodes.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=806">http://services.netbeans.org/newsletter/story.php?id=806</a>&gt;

Drag and Drop Tutorial
In this tutorial, you will learn how to create a Component Palette for
a custom component. A custom component is provided by the NetBeans API
TopComponent class. You will use a wizard to create a TopComponent.
Then you will create items that can be dragged from the TopComponent's
Component Palette onto the TopComponent. You will also be shown how to
add functionality for dragging an item after it has been dropped.
* Use at your own Risk:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=802">http://services.netbeans.org/newsletter/story.php?id=802</a>&gt;

Using the AspectJ Plug-In Module for NetBeans
Ramon Ramos has made available the first draft of a short tutorial on
how to use the aspectj plug-in for NetBeans. Check it out.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=803">http://services.netbeans.org/newsletter/story.php?id=803</a>&gt;

Clipboard and Toolbars in a NetBeans Module
Bernhard Huber's weblog has a new entry. "The NetBeans module wordcount
has a clipboard action. The number of files, the filenames, and the
word count results are copied to the clipboard." Get more information
including a screenshot that displays the new word count window, having
an clipboard action button, and a button for count lines, words, and
characters.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=804">http://services.netbeans.org/newsletter/story.php?id=804</a>&gt;

New NetBeans Plug-in : JOGL Project Templates, Particle Demo and more
Charles Ditzel writes, "There are some new JOGL plug-ins for NetBeans. Included - updated JOGL libraries to JSR 231 Beta5, added support for
additional target platforms, a Particle Engine demo and simple syntax
highlighting GLSL shader editor." There is also a link to a short how-
to on NetBeans + JOGL + WebStart setup.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=805">http://services.netbeans.org/newsletter/story.php?id=805</a>&gt; </pre><hr>This issue of NetBeans Weekly News was brought to you by Robbert Demmer.<br>
The next editor will be Robbert Demmer. (New volunteers are welcome!)<br>
Please send news contributions to <a href='mailto:nbnews_contrib@netbeans.org'>nbnews_contrib@netbeans.org</a></BODY>
</HTML>