October 18, 2005
Project Matisse, NetBeans' GUI Form Designer
I saw this Flash demo of Matisse and thought, "Yea, that's pretty cool." If you watch the demo, you'll see components automagically arranging themselves. Like the baseline text of neighboring a label and text field will auto-align. And the margins between neighboring components will be look and feel appropriate. Nice.
Time to download Netbeans, yet again, to give it a whirl, yet again. So I snagged a copy of 5.0 beta. (Really, Sun, when are you guys going to get on the bittorrent bandwagon? This is just sad.)
Right off, I drew some components and looked over the generated code. I'm happy to report, underneath the hood, construction and layout is done using a Builder design pattern. That's a positive step. It's possible because Matisse relies on GroupLayout (part of Swing Layout). Alas, the code isn't quite roundtrip ready (the GUI builder can work with human modified code). Some day...
Then I banged out some forms inspired by my current project. Nothing as difficult as the preferences dialog box shown in the Flash demo. Eventually, with no apparent cause or recourse, the Matisse Form Designer threw some exceptions and seized up. Whoops.
Being helpful, Matisse will infer and show guidelines, indicating how your components are lining up. Matisse will also auto-arrange components. Not just the one you're placing. As you can see in the Flash demo, Matisse will move placed components out of the way for you. Alas, once a certain level of complexity is achieved, Matisse's efforts become really bad guesses, with components dancing all over the place.
I've seen this kind of "too clever by half" behavior before. Most computer aided design (CAD) packages have the notion "snapping", where the program uses a variety of heurististics to infer where you actually want to place stuff. Before I dropped out of that scene, MicroStation's AccuDraw had the most sophisticated approach. With all sorts of smarts, modes, and overrides.
The thing is, the heuristics can only be so smart. As Matisse shows, this approach will eventually wedge the user (GUI designer) into a corner. To become useful, Matisse will also need to provide modes and overrides.
Of course, the ultimate override would be allowing the user to hand edit the code. A good analog here are all those web design tools; the tool can only take you so far and then you have to write code.
For my money, I'm still bullish on the strategy taken by JGoodies' FormLayout. It's not the omega point, but it's a good step in the right direction.
--
Bill Beebe shared his Matisse experiences:
NetBeans Matisse - Needs considerably more work (July 22, 2005)
NetBeans Dev 4.2 - Going from bad to worse? (July 26, 2005)
Time to download Netbeans, yet again, to give it a whirl, yet again. So I snagged a copy of 5.0 beta. (Really, Sun, when are you guys going to get on the bittorrent bandwagon? This is just sad.)
Right off, I drew some components and looked over the generated code. I'm happy to report, underneath the hood, construction and layout is done using a Builder design pattern. That's a positive step. It's possible because Matisse relies on GroupLayout (part of Swing Layout). Alas, the code isn't quite roundtrip ready (the GUI builder can work with human modified code). Some day...
Then I banged out some forms inspired by my current project. Nothing as difficult as the preferences dialog box shown in the Flash demo. Eventually, with no apparent cause or recourse, the Matisse Form Designer threw some exceptions and seized up. Whoops.
Being helpful, Matisse will infer and show guidelines, indicating how your components are lining up. Matisse will also auto-arrange components. Not just the one you're placing. As you can see in the Flash demo, Matisse will move placed components out of the way for you. Alas, once a certain level of complexity is achieved, Matisse's efforts become really bad guesses, with components dancing all over the place.
I've seen this kind of "too clever by half" behavior before. Most computer aided design (CAD) packages have the notion "snapping", where the program uses a variety of heurististics to infer where you actually want to place stuff. Before I dropped out of that scene, MicroStation's AccuDraw had the most sophisticated approach. With all sorts of smarts, modes, and overrides.
The thing is, the heuristics can only be so smart. As Matisse shows, this approach will eventually wedge the user (GUI designer) into a corner. To become useful, Matisse will also need to provide modes and overrides.
Of course, the ultimate override would be allowing the user to hand edit the code. A good analog here are all those web design tools; the tool can only take you so far and then you have to write code.
For my money, I'm still bullish on the strategy taken by JGoodies' FormLayout. It's not the omega point, but it's a good step in the right direction.
--
Bill Beebe shared his Matisse experiences:
NetBeans Matisse - Needs considerably more work (July 22, 2005)
NetBeans Dev 4.2 - Going from bad to worse? (July 26, 2005)