The new Extras pack for Substance look-and-feel provides additional settings on top of the functionality available in the core library. The previous entry showed screenshots of color schemes, watermarks and skins from the Extras pack, and this entry will talk about button shapers, mixed color scheme and mixed gradient painters.

Additional button shapers can be found in the <font color="darkblue">org.jvnet.substance.shaperpack</font> package. The screenshot below shows the available button shapers.

The <font color="darkblue">org.jvnet.substance.colorschemepack.MixColorScheme</font> provides support for creating a color scheme based on more than one base color schemes. The <font color="darkblue">org.jvnet.substance.painterpack.gradient.MixDelegateGradientPainter</font> allows wrapping an existing gradient painter to support mixed color schemes. The sample screenshot from the Mango skin (note the painting of scroll bar thumbs, checkmarks of radio buttons and checkboxes and the top part of the selected tab):

Here are some Swing links that you might have missed during this week:

  • Jacek Furmankiewicz has announced the first beta release 0.1 of his SwingBuilder project. It provide support for data binding with Beans Binding, layout management with MigLayout, validation with Apache Commons Validator, long running tasks with SwingWorker and has integration libraries for JIDE and SwingX.
  • Maxim Zakharenkov has released version 1.2 of the Swing Explorer tool for debugging Swing applications. Eclipse support is a welcome addition, and in fact i would warmly recommend rewriting the entire UI as a collection of Eclipse views. In my experience, Eclipse is a great scaffolding for exactly this kind of information presentation, taking away a lot of implementation complexity and leaving you with implementing your actual logic. As long as you don’t fight it and try to go against the “Eclipse way” of doing things, you’ll find it a very mature and rich platform. In addition, learning another UI toolkit (SWT) is not a bad thing.
  • Collin Fagan writes about using tooltips to show preview of tabs in a tabbed pane. Users of Substance look-and-feel had access to this functionality for quite some time now, and Collin shows how this can be done in a cross-LAF way.
  • Ayman Al-Sairafi is working on the JSyntaxPane component that provides a text control with syntax highlighting for Java, Groovy, XML and JavaScript. It follows in the footsteps of jEdit Syntax package and Apache Batik XML editor kit (contributed by Kiyut) and is available under the Apache license.
  • There’s a new Swing book out there! Tim Lavers and Lindsay Peters have written a book “Swing Extreme Testing” published by Packt Publishing. From the book site – This book is a practical guide to automated software testing for extreme Java programming using Swing GUIs, with lots of ready-to-use real-life examples and source code for automated testing of the software components usually regarded as too hard to test automatically.
  • David Qiao and Wolfgang Zitzelsberger have announced integration between JIDE components and Synthetica look-and-feel.
  • Richard Kennard has announced release 0.5 of the Metawidget project that takes domain objects in your applications and creates the UI widgets for them. It has support for SwingX, GWT, Groovy and applets.
  • Andy Maleh introduces the Glimmer project that aims to create a JRuby DSL for creating cross-platform UIs with SWT.
  • Peter Karich kicks off the series of articles on Spring Rich Client Project. Unlike server-oriented Spring projects, this has not seemed to receive nowhere as many resources to be actively targeting the major paint-points of rich client development. Answering the “when will 1.0 be released” with “when it’s ready” is not a good sign, and one of the commenters says that the plans are to rebrand it to Spring Desktop without “being bound to the current codebase”. If you’re planning to break backwards compatibility and have good reasons to do so – just say it as it is.
  • David Qiao writes about adding arrow key support to the ButtonPanel component. Alexander Potochkin had a similar functionality in the JXButtonPanel a couple of years ago.
  • Rajesh has a list of ten free docking frameworks for Java UI applications. One addition to the list comes from Davide Raccagni that has announced the new P74 graphical library. It contains a docking manager as well as a few other tools.

Substance Extras pack

June 21st, 2008

As specified in the roadmap for version 5.0 of Substance look-and-feel, a number of the existing Substance plugins have been consolidated into the Extras pack. This pack contains additional color schemes, watermarks and skins, as well as a mixed color scheme and a mixed gradient painter. The documentation for the Extras pack contains the information about the available features, and you can run the WebStart application below and select the skins from the “Skins” menu.

The plugin itself can be downloaded here, and once you add it to your classpath, the new skins will be available to the applications via the existing Substance APIs. Here are some screenshots of additional color schemes availablein the Extras pack:

Here are a few additional watermarks available in the Extras pack. Note that in version 4.3 these were available in the core distribution. Since using watermarks introduces about 25-45% performance overhead, these have been moved from the core library.

And here are the additional skins

As a follow up to the previous post that showed how LightBeam tool can be used to analyze the performance of various core and third-party Swing look-and-feels, today i’m going to answer Luke’s question in the comments section and compare the performance of the core Substance skins.

The table below lists all available core Substance skins, and three numbers for each skin. The first number is the average time to complete a static performance scenario (rendering a bunch of controls to an offscreen image). The second number is the heap size after the static performance scenarios have been completed. The third number is the total time to run all dynamic performance scenarios (the list can be found in the PDF report or in the source code).

There is a simple explanation why Magma, Office 2007 family and Raven family have 25-45% worse dynamic performance than the rest – they use watermarks. I have already mentioned that this has been identified as the biggest performance obstacle during the performance tuning of version 5.0dev, and the skins that used the simple translucent-fill watermark do not use any watermark at all. The selected skins mentioned above are still using non-null watermarks to provide better visuals. You can extend these skins and set the watermark field to null in the constructor to get better performance (but less distinct visuals).

As you can see, there are minimal differences in the rest of the skins, even though they use different button shapers and painters. The core button shapers and painters have been improved to provide uniform performance so that you don’t have to sacrifice the visuals for the performance (except, once again, the watermarks).

If you do find that your custom skin has distinctly different results under different painters, i would be very interested in hearing about this in the project forums, mailing lists or a private e-mail.