<HTML>
<HEAD>
<title>netbeans.org: NetBeans Weekly News Issue #193 - Mar 22, 2005</title>
<META NAME="description" CONTENT="Newsletter 2005-03-22">

<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# 22-Mar 17:33 CET                          -->
<!-- ====================================================== -->
</HEAD>
<BODY>

<h1>NetBeans Weekly News<br>Issue #193 - Mar 22, 2005</h1><hr>
NetBeans Weekly News, a newsletter for the NetBeans community<br>
Issue #193 - Mar 22, 2005<br>
URL: &lt;<a href='https://netbeans.org/community/news/newsletter/2005-03-22.html'>https://netbeans.org/community/news/newsletter/2005-03-22.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>Upcoming Chat: Create a MIDP Application Using Drag 'n' Drop
Interested in creating J2ME MIDP applications faster and more easily? Find
out how the powerful new Visual Editor in the upcoming NetBeans Mobility
Pack 4.1 IDE speeds your development time with drag and drop functionality.
Join us for a live chat with the engineers who designed and implemented this
feature for an inside look at its capabilities. Takes place March 29th, 2005.
https://see.sun.com/Apps/DCS/mcp?q=ST2W5LTG9RLe3U

Cast Your Votes for the Second iPod Winner!
Voting for the second iPod winner in the Win With NetBeans competition has
opened. Please review the competition entries listed on the Win With NetBeans
page, and cast your votes. Voting will run for 2 weeks from today, and the
winner of the second iPod will be announced on Monday April 4th. Note you can
vote for up to 3 articles.
&lt;<a href="https://netbeans.org/competition/win-with-netbeans.html">https://netbeans.org/competition/win-with-netbeans.html</a>&gt;

RefactorIT 2.5 supports NetBeans 4.0+
Introduced in RefactorIT 2.5 is an aggressive new pricing model that is based
on the project-size. There is no limitation in functionality for all RefactorIT
Editions. Release 2.5 now integrates with version 4.0+ of NetBeans including
CVS support, J2SE 5.0 and features a preview for all refactorings.
&lt;<a href="https://netbeans.org/servlets/ReadMsg?list=nbdiscuss&msgNo=3349">https://netbeans.org/servlets/ReadMsg?list=nbdiscuss&msgNo=3349</a>&gt;

Jalopy Plugin for NetBeans 4.1 available
Frank-Michael has ported the Jalopy Source Code Formatter Plugin for NetBeans
4.1. It is available at NetBeans' contribution download site as binary, a
complete source bundle and is also under CVS at netbeans.org as contrib/jalopy.
&lt;<a href="https://netbeans.org/servlets/ReadMsg?list=nbusers&msgNo=51192">https://netbeans.org/servlets/ReadMsg?list=nbusers&msgNo=51192</a>&gt;

NetBeans IDE 4.1 Tag Library Tutorial
The standard HTML and JSP tags are often quite boring. Wouldn't you rather write
your own? For example, what about creating a tag that sets text to a specific
font and size? Or maybe you'd like to create a tag that uploads a graphic into
your JSP page? It's really easy with NetBeans IDE 4.1. And you can choose whether
to create the tag in the Java programming language or in JSP syntax. Read all
about it in the brand new NetBeans IDE 4.1 Tag Library Tutorial.
&lt;<a href="https://netbeans.org/kb/archive/index.html">https://netbeans.org/kb/archive/index.html</a>&gt;

Troubleshooting the Debug Target for Web Free-Form Projects
Several users have been a bit confused about how to write an Ant target to
debug web free-form projects. There are quite a few things you need to be aware
of. For example, have you correctly specified which sources folders you want to
make available for debugging? This and other questions are answered in the new
troubleshooting section for Ant debug targets:
&lt;<a href="https://netbeans.org/kb/archive/index.html">https://netbeans.org/kb/archive/index.html</a>&gt;
(If you encounter different problems, write and let us know so that we can add
them to the document.)
</pre><hr>This issue of NetBeans Weekly News was brought to you by Robert Demmer.<br>
The next editor will be Robert 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>
