Obvious problems are that you can't move an item after it has been dropped and that you must drop items from left to right (you can't insert something in between previously dropped notes). Ah, but that will come. The important thing is that right now, you can visually compose your music and play it (rather than choosing items from various clumsy lists).
Something else I want to do is migrate the syntax highlighting from my earlier implementation to this one. Maybe it is possible to make the font of the note larger in the editor, in addition to giving it a distinctive color. That's something I'll investigate. Not much sense in creating syntax highlighting for this very simple syntax, but it would definitely make the editor look a bit more festive than it does now.
The coolest thing I learnt while working on this application is the beauty of topcomponents. They're really cool. When you use a NetBeans topcomponent in your application, you get a whole bunch of free functionality. In the Music NotePad, I have four topcomponents—the pad, the palette, the editor, and the instruments. (Okay, the palette isn't really a topcomponent, but it acts like one. So maybe that means that it is a topcomponent after all.) Without doing any programming at all, I (now, as the end user of the application) get the following cool "Minimize" functionality for free—when I click the "Minimize" buttons on the palette and the editor, this is the cool effect that I get for free:
On top of that, because of the same coolness of the topcomponent, I (again, as the end user) can move them around by dragging and dropping them from one position to another:
So, building your application "on top of the NetBeans Platform" means that there's a lot of the IDE's underlying infrastructure that you get free out of the box in your own applications. When you consider, on top of that, that you have Matisse as your layout manager (for free and out of the box), I honestly (could this be my first marketing message in this entire blog) can't imagine a better platform to build your applications on.