Tom Wheeler's NetBeans Site

NOTE: As of 2012, I am not currently active in the NetBeans project. The information below is mainly for historical purposes.

The open source project I'm most involved with is NetBeans, in particular the NetBeans Platform. I've used it for my work at Boeing and I've also volunteered a lot of my free time to improve it and help others learn how to use it effectively. This subsection of my site is mainly dedicated to sample applications I've written, though most of my more recent work consists of dozens of entries I've written in the NetBeans Developer FAQ.

NetBeans Platform Training at Southern Illinois University - Edwardsville

I volunteered to deliver NetBeans Platform training to a group of 35 students at Southern Illinois University - Edwardsville. I've posted information about the course, including the presentation material I used.

NetBeans Wizards Example

Someone asked on the NetBeans developer mailing list about a tutorial that shows how wizards work; specifically, how you handle validation and store input values between screens. I was not aware of a tutorial covering this in detail, so in the meantime, I wrote a NetBeans 5.5 example suite that illustrates these concepts. It's kind of a first draft, but maybe I will write a corresponding tutorial soon. After launching the suite, you invoke the wizard by clicking the Start Sample Wizard item under the window menu.

NetBeans Community Awards

The Sun Ultra 20 workstation I won as a prize with the NetBeans Community Award arrived this week. To say that I am impressed with the machine would be an understatement.

In the interest of full disclosure, I didn't pay for the machine. However, I already have the system in my possession, and I have no motive to say anything I don't completely believe. I've personally owned four Sun workstations already (SPARCStation 2, SPARCStation 20, Ultra 1 and Ultra 5), so I feel strongly enough about the quality of their hardware to have spent my own money on them. Anyway, if you're familiar with those older SPARC-based workstations from Sun, you'll know that they're solid and wll-built, but not compatible with most PC operating systems and they cost several times more than a PC. That's OK, because they've typically been used for intense computing tasks like science, 3D graphics and engineering, but the Ultra 20 is unique because it is 100% compatible with PC operating systems (you can even order one with MS Windows on it, if you're so inclined), but it's available at a price that's competitive even with PC hardware from Dell, IBM and HP. So, it's really the first time that Sun is a top choice for home and small business users.

Since this machine was a prize, I expected to get one of the "small" configurations (which would certainly have been generous), but what I received seems to be the "medium" configuration with an additional gigabyte of memory (thank you, Sun!).

The machine is solid and constructed of high-quality parts. As is typically the case with Sun hardware, they're concerned with the details and it shows. The extra memory came in a separate box, so I had to install it myself. The case door is attached with thumbscrews, so I didn't need any tools at all and I had the memory installed in less than five minutes. The package even included a static protection wrist strap so I didn't fry the memory! Now that's attention to detail.

The system had several PCI and PCI Express slots free, plus a number of USB ports in both the front and the back. The box came with a USB mouse and keyboard (UNIX-style type 6 keyboard) and every single cable and adapter I needed to hook the system up -- even the power cord is of much higher quality than typical PC hardware. The machine is fairly loud (fan noise) when first booting, but after a few seconds, I could not hear it over my other PC. It came preloaded with Solaris 10, which seems quite nice, and I was able to run through the configuration wizard and get the system attached to my network in minutes. That's all I have time for now, but I will write more when I can.

I just got back to St. Louis last night from NetBeans Software Day in San Francisco. I was nominated for the NetBeans Community Award, which I am very happy to say I won. To whoever nominated and voted for me, thanks! I feel very honored and hope to help with NetBeans even more in the future. Even better than winning the award (except maybe receiving the award from James Gosling onstage) was meeting all the people I had known only from the NetBeans blogs and e-mail, like Geertjan Wielenga, Jaroslav Tulach, Roman Strobl, Brian Leonard, Gregg Sporar, Alexis Moussine-Pouchkine, Charles Ditzel, Jack Catchpoole, Robert Demmer and others.

Tom Wheeler receives the NetBeans Community Award from James Gosling
Tom Wheeler receives the NetBeans Community Award from James Gosling (photo by Jan Chalupa).

So what is the NetBeans Platform?

Simply put, it's a framework for building Java desktop applications. It saves you from having to start from scratch and reduces the amount of code you write. It allows you to make your application more modular and distribute updates easily. Jaroslav Tulach has written a very concise explanation of the NetBeans platform. And, once you know what it is, I recommend checking the Planet NetBeans blog periodically to see what's new.

File Support, Nodes and Lookups: Todo List Manager Example Application

Have you been wanting a simple but realistic example for using the Nodes and Lookup APIs? Do you want to add support for your own file type in the NetBeans platform and want to go beyond the basics. Would you like to know how to create an application like this one that does all these things?

I created another example to help document what I learned about NetBeans Nodes and Lookup APIs. I also found a few bugs along the way, reported them and created some workaarounds. You can download my example as a NetBeans 5.5 suite and see how it works.

Fame and Fortune

My interview about NetBeans platform development has been published.

Dog File: Example of JGoodies DataBinding and Custom File Type

A few months ago, I needed to add support for a custom file type to my application built on the NetBeans platform. I needed to be able to load and save it, as well as view and edit its information. Unlike most of the examples in the IDE source code tree, it was not a text file that could normally be opened in the editor. I have created an example based on what I did so that others might be able to learn from it. It edits files that represent information about a dog, such as the name, age and breed. It also makes use of the excellent JGoodies Data Binding framework, which I have packaged with it. You can download the DogFile support module and JGoodies Data Binding module packaged as a suite for NetBeans 5.0 RC2.

StockTrader Game Source Code for NetBeans IDE 5.0

I had a little free time recently, so I created a NetBeans 5.0 IDE project for the Stock Trader game I used in my Java News Brief last October. If you're using a NetBeans 5.0 RC2 IDE, then you will probably find this much easier to use than the older NetBeans 4.x version from my original article. I hope to be able to update it with some new features later. I will post any updates here. In the meantime, note that this example does not open any new TopComponent windows automatically; you have to open them yourself using the items on the View menu. Read the article for more information.

Example of Using the Settings API

Several people have asked on the NetBeans developers mailing list for a simple example of how to use the options API. I previously created a module that showed this, but have since found that Roman Strobl had a better one with more explanation, so I now encourage you to see Roman's SystemOption example instead. However, you should also be aware the using SystemOption is not necessarily the best approach.

October Article on the NetBeans Platform

My new article on creating a complete application on the NetBeans Platform has just been published. It's a follow up to the introductory article I wrote last month.

Here's the final version of the stocktrader cluster source (1.6MB) that I created for the article. Everybody loves a screenshot, so here you can see what it looks like. Instructions for how to compile, launch and play the game are included in the article.

September Article on the NetBeans Platform

I wrote an article on Getting Started with the NetBeans Platform. The paragraphs below describe some things I fixed in the source code for the article. I have committed them back to the NetBeans project, so they're here only for historical reasons.

If you have trouble running the examples from the September article, please see this page.


This is a temporary holding places for modifications I have made to NetBeans source code or related modules. I am in the process of submitting them back to the NetBeans project, but this is where they're stored until then. This is not intended to provide permanent storage; if my changes are accepted into the main codebase, I will remove the relevant files from here and provide a link to the canonical location for them.

cluster build harness (updated to support NB platform 4.1, 2005-08-21)
original location (before modifications): http://contrib.netbeans.org/files/documents/130/269/cluster_build_harness.zip
my modifications were posted to the "contrib: documents and files" section of the NetBeans Web site on 9/12/2005. In case you have trouble with the link above, here is a local copy.
diskexplorer module (updated to avoid calls from outside AWT event dispatching thread, 2005-08-21)
NOTE: (Tue Sep 20 00:12:30 EDT 2005) : My diskexplorer patch has been committed to the NetBeans source tree (platform/samples/diskexplorer/) per issue #64626. Since some people may not have CVS access, I will leave my ZIP file of the diskexplorer here for a while longer, but please be advised that this copy is outdated and that the NetBeans CVS server contains the current version.

NOTE: There was a mistake in the original version of the article. In item two under the "Testing Your Installation" section I said that you need to add the diskexplorer module to your nbbuild/user.build.properties file, when it should have specifed the nbbuild/user.cluster.properties file instead. This has now been corrected in the article and I apologize for the error.