Richard Bair, the SwingLabs Lead, updated us on the state of SwingLabs.
Dev Packs
Richard announced a SwingLabs Dev Pack concept. The idea is that includes all of the stable good stuff from SwingLabs in a way that can be used for production.
They are planning that the packs will work for 1.5, 1.6, and of course future releases. The packs will use JDK stuff when its available; will bundle back-ports as necessary so that the packs work seamlessly across versions.
A Dev Pack M1 and M2 releases were announced and a future roadmap proposed for packs beyond that. I’ll come back and fill in what M1 and M2 will include, but for future releases, they are considering:
– client-side cache management
– XHTML and PDF renderers
– Binding and App Frameworks (JSR-295 and JSR-296)
– Nimbus
A more formal announcement of the Dev Pack stuff will come soon.
SwingX tour
– Painters: an easy way to paint effects on a component
– Abstract Bean: an easy way to add observability to Swing
– JXErrorPane: a nice, word-wrapping error dialog with a “more details” option and an option to send the error message someplace. Also integrates with logging systems and includes a “fatal” error that forces the user to quit the application.
– JXHeader: Nice looking headers a la Eclipse and Romain’s demos
– JXStatusBar: This is important because status bars often have a particular look on the native platforms and so SwingX can provide the customizations by default.
– JXFrame: Makes common JFrame tasks easier, such as adding tool bars, menu bars, status bars, a wait pane, and an interceptor that receives previews of all key events. The wait pane lets you install an effect that blocks the user interface while a background job processes. It doesn’t use the glass pane, it uses the top layer of a JLayeredPane.
– JXGraph: Don’t get excited, its a mathematical grid that almost no one cares about. But it does look pretty.
– JXHyperlink: Hyperlink label that comes with renderers that work in trees and tables, etc.
– JXLoginPane: Application login screen. Looks pretty nice, nothing too fancy. Includes an API for a login service and handles threading automatically.
– JXMultiSplitPane: Hans’ new splitter thing.
– JXTable: Tons of new table features. My favorite is the column control widget that lets users manipulate the columns at run-time. Includes filtering, sorting, highlighting, etc.
– JXTaskPane: Collapsible task panes with “awesome” visual effects.
– JXTitledPanel: A cool customizable sort of internal titled border thingy that’s similar to the old JGoodies thing but with painter extensions and ability to add components to the titlebar, etc.
Graphics Utilities from Aerith
– Morphing2D: Morphs one Java2D shape into another (a la Flash “tweening”)
– Compositing with blending modes, color utilities, graphics utilities, and much more — couldn’t keep up. But basically all the cool stuff from the Aerith demo have been generalized into toolkit features. This looks really exciting.
SwingX-WS: “APIs for writing web-aware rich clients”
– SimpleDocument extends JAXP DOM document class and adds convenience features for XPath, creating a new Document, parsing an in-memory string as an HTML document easily, enhanced For Loop support for NodeLists. Its a usability layer on top of JAXP, which is very cool and funny to see coming from the Desktop team.
– HTTP wrappers in the org.jdesktop.http package. Using the new JDK6 enhancements that include a moderately powerful HTTP client out of the box (cookie tracking, etc.). Adds a bunch of other cool things, like ignoring cert errors in development mode when you want to, and so forth. “Tuned for common use cases.” The API does look very simple, especially for doing post requests and so forth.
– XmlHttpRequest and JsonHttpRequest. Goal here is to provide an API that web developers will find familiar in the Swing world — so the API is exactly the same as the browsers. Convenience subclasses return more than just XHR’s familiar DOM or String objects (in addition to Json, there’s HtmlHttpRequest and SoapHttpRequest).
– Convenience classes for dealing with HTML forms: org.jdesktop.html.form.
Q: “What’s the state of integration with an embedded browser component?”
A: Right now, you can send JavaScript to the embedded browser, but you can’t read values from it. An audience member mentioned that third-party components let you communicate with an embedded browser (like JNIWrapper).
We’re building Dev Packs, but this is just my subset of SwingLabs that I find interesting: there’s a ton of other stuff in there, and if you want a different pack, build your own “distro”. We’ll link to it and promote it. We can take all kinds of code contributions and do all kinds of weird stuff.
You can definitely see your enthusiasm in the article you write.
The world hopes for more passionate writers such as you who aren’t afraid to say how they believe.
All the time follow your heart.