Friday, July 22, 2005

NetBeans Matisse - Needs considerably more work

I pulled down the latest developer NetBeans (for July 21st) and installed it, then I visited the Project Matisse page and watched Roman Strobl's flash demo. I wanted to followed Roman's dialog and illustrations as I recreated his DemoForm. Using the latest developer version my results were a lot less successful than Roman's.

First, the Matisse module seems to have regressed with regards to stability. I encountered numerous unhandled exceptions as I attempted to add each of the controls. The biggest problem with the flash demo is that when Roman starts his demo he starts from a point where there are already a number of controls on the form. I added the same controls in order to start at the same spot where the flash demo starts. I generated no less than two exceptions to get to that point, which forced me to "save early, save often." The problem is that once an unexpected exception appears, then no more work can be done until the form is closed. You can't even save your work. You throw it away and then restart the form editor from the last saved state. The exception that plagued me is listed below.
java.lang.AssertionError
at org.netbeans.modules.form.layoutdesign.LayoutDesigner.endMoving(LayoutDesigner.java:396)
at org.netbeans.modules.form.HandleLayer$ResizeComponentDrag.end(HandleLayer.java:2188)
at org.netbeans.modules.form.HandleLayer$ComponentDrag.end(HandleLayer.java:1893)
at org.netbeans.modules.form.HandleLayer.endDragging(HandleLayer.java:799)
at org.netbeans.modules.form.HandleLayer.mouseReleased(HandleLayer.java:1290)
at java.awt.Component.processMouseEvent(Component.java:5488)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1774)
at java.awt.Component.dispatchEvent(Component.java:3803)
[catch] at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
The following images show where I got to with regards to the Matisse visual editor. The left image was the final "stable" stage, with the Identity panel added with its text field and three text entry areas. Note the three buttons beneath the Identity panel. These are outside the panel. They'll later illustrate what I've run into trying to build non-trivial layouts with Matisse ever since it's been made available.

The right image shows what happened to me when I tried to follow Roman's example and add Organization label and text box to the Identity panel. Unlike the smooth example in the flash demo, my experience was anything but smooth. Any attempt to add the label did not push down the lower two labels. Instead Matisse kept placing it first in line with the email address label, and pushing the text box off the form edge. I finally got it added to the panel by manually moving down the lower to labels and associated text boxes, adding the new label and text box, and then manually moving the lower controls back up again. When I finished that exercise I had managed to shove down the "Remove Account" button on the left, and the lower buttons beneath the Identity panel were now almost completely off the form edge. Not a problem, right? Wrong. Grabbing the Identity panel's lower edge and attempting to resize it back to its original location resulted in an immediate unexpected exception. I could do nothing to the form at this point, except kill it, and any attempt to bring it back up and resize the Identity panel resulted in the aforementioned exception being thrown.

No comments:

Post a Comment

All comments are checked. Comment SPAM will be blocked and deleted.

Note: Only a member of this blog may post a comment.