I’ve been playing with Dashcode today, creating my first ever Dashboard widget (something that I wanted to do for some time) as part of a whole project I’m working on right now.
Basically I’ve discovered that there are, roughly speaking (and please correct me if I’m wrong), two kinds of Dashboard widgets:
- Those that you cannot resize, but have nice shadows, “glass” effects and gradients;
- and those that you can resize, but do not have shadows, “glass” effects and gradients.
There is no way to get resizable and shadowy widgets at once. At least, not that I’ve found. It seems like Dashcode generates at design time the background images (as a PNG file) for the widgets you’re working on (I suppose that this is done using Quartz), and this cannot be done at runtime (I suppose, again, because of performance considerations…!).
Of course I discovered this while creating a widget that would have had to look good and be resizable. Of course I couldn’t get both :) Another thing that makes me wonder about this dichotomy is this phrase in Apple’s own documentation:
Live resizing means that your widget can change its size and contents based on the user’s preference. Try to limit using live-resizing to cases where it is absolutely necessary. If your content can be shown in a fixed, simple user interface, do so.
All in all, my first impression of Dashcode is that it is a fine IDE, somewhat buggy, but fine for what it does. I still prefer TextMate for editing the JavaScript code inside the widgets, but that’s a personal preference. The workflow for creating widgets is easy to follow, the object model is easy to understand, and I could have a reasonably useful widget in just a couple of hours of work.

