« On Preparing for Releasing Insubstantial (Codename Invincible) | Main | Insubstantial 6.3 Release »

Insubstantial 6.2 Release

After much hoop jumping, I am pleased to announce that Substance 6.2 (codename Invincible) has been pushed to the Maven Central repositories. This is a maven only release (meaning I am not spinning any other distro jars).

What is Insubstantial?

Insubstantial is a maintenance fork of some of Kirill Grouchnikov's swing based projects. Specifically Substance, Trident, Flamingo, and some supporting project. These are not Kirill's 'official' releases but he has expressed that he is unlikely to do any more official releases.

How do I get it?

The best way is to use them directly from the maven repository (via Gradle, Maven, Ant+Ivy, or other maven repository aware build tool). The group id is com.github.insubstantial. For all of the released projects the version is 6.2. This is a bit of office 6.0 version bumping, but it makes it easier to determine which jars are meant to run with each other.

The artifact names are the same as the original project. I had contemplated renaming them, but after messing with numerous JNLPs decided it was better for compatibility if the jar names were as close as possible to the original jars. The artifacts are as follows:

trident [ jar | sources |javadoc ]
Trident Animation Library.
laf-plugin [ jar | sources | javadoc ]
A swing component enhancement framework.
laf-widget [ jar | sources | javadoc ]
Swing component enhancements.
substance [ jar | lite | tools | sources | javadoc ]
A custom look and feel for Swing.
flamingo [ jar | sources | javadoc ]
A Ribbon component and other supporting components.
substance-flamingo [ jar | sources | javadoc ]
Substance customizations to some Flamingo components.
substance-swingx [ jar | sources | javadoc ]
Substance customizations to some SwingX components.

What's Different?

Not a whole lot code wise or feature wise was added in this release.

  • Gradle - the codebase has been adjusted to use Gradle as the build system. This has allowed for seampless deployment into the maven repositories. For Trident, laf-plugin, and substance-swingx this represents the entirity of the changes
  • Maven Distribution - this deserves it's own bullet point. The jars are available from day one in the maven repositories.
  • NPE Bugs - most of the code changes are to deal with possible null pointer exceptions. No one in their right mind would use a JTable as a table cell renderer, but it does happen in the wild.
  • Flamingo API addition - a patch from Jonathan Gileswas applied to allow commands to be removed from the ribbon.
  • Java 7 fixes - there is a bug fix in Java's Color Choosers that broke substance 6.1. This is fixed in Substance 6.2, so it should run on Java 7 now!

Can I see it do stuff?

Yes you can, there are several JNLP demos that I have managed to stand up over at github.

What about me?

What about you? Well, being open source patches are always welcome! The code is being hosted at Github so forking, soing your own thing, and posting a pull request should be very easy. There's giant tasks to do, such as updating the look to match Office 2010 and Windows 7. Administrative tasks, such as making the existing web content work on github. And creative tasks, sush as creating new color schemes and skins. In a couple weeks I'll figure out what I intend to do, and also some ideas for those who might want to congribute but don't know where to start.

Until later [insert witty postscript here]

Comments (24)

Solerman Kaplon:

Very nice to see these wonderful projects getting a new maintainer. Congratz!

Tobias Schulte:

The group id is com.github.insubstantial, not org.github.insubstantial

Danno Ferrin:

Good catch, it was kinda late at night when I wrote this stuff. GroupID is now fixed in the blog post.

Adam Kruszewski:


Not relevant:

The link for 'flamingo-lite' doesn't work.

Not relevant:

java version "1.6.0_24"

Error: Found unsigned entry in resource.

com.sun.deploy.net.JARSigningException: Found unsigned entry in resource: http://insubstantial.github.com/peacock/webstart/batik/xerces_2_5_0.jar

when trying to run "A Ribbon Demo."

Roger Araújo:

Great stuff, thanks. Long live Substance!


This is great news.
I am wondering if the issue with SwingX Prompt Support is fixed (the root cause was an NPE from the SubstanceColorUtilities class
Must try out this tonight

Majid Keshtidar:

jtable right to left bug seen yet, there is not this bug in substance 6.0, it appears in 6.1, i test 6.2 too, but i saw it.


Im' very happy to discover a new maintainer for substance(s) projecst.
Thank's and long live Substance!

Darren Scott:

Thanks for taking up the mantle of keeping these great projects alive Danno.

You may have covered this elsewhere when outlining your plans going forwards, but one area where Substance wasn't as great as it could have been is that of custom table and list cell renderers. The hard restriction that any custom renderer must be an instance of the default Substance renderer in order for the expected colour and animation effects to work severely limited the amount of customisation that could be done. So this is one area that I, and probably others, would welcome some attention on going forwards. I've played with locally modified versions of Substance which relax this restriction and the results have been promising, so maybe I'll get round to submitting some patches at some point.


Thanks for maintaining Flamingo and Substance ! I am happy that Ribbons on Java Swing will be continued !


I would have to second that. Custom table renderers have caused me much grief

This is really fantastic news. We use all these libraries in our customer facing products, and I'm very glad to see someone taking this up. Please let us know if you need any particular help.

Hi, just wondering where the source code for "A hodgepodge of Widgets" is :) I need to look into it a bit to see how some effects were done!


just WOW !!!!!!!


Thank you!


Hello everyone!

Everytime I'm adding for example a JButton to my GUI, themed with Substance, I get a NullPointerException.

Maybe someone can share the sourcecode for the two last exampels?

Thanks in advance!

You can post bugs here:


Be sure to include a stack trace, or it may be treated with extreme prejudice.


I'm finding it hard to locate the RibbonDemo source code. Github's search feature is not very helpful. Could someone point me to the main class?


hey, Danno Ferrin,
it's nice to know that the Trident library
is extended until here... ( i just read ur webpages ).

anyway, do u hv some examples
of animating the swing components?

i'm still curious to fade in & fade out
the JLabel in java (specifically).



"Can I see it do stuff?" -> "Substance and Flamingo": the two Java Web Start links are broken...

Keep up the super-good work!! You rule

Post a comment


This page contains a single entry from the blog posted on April 4, 2011 7:20 PM.

The previous post in this blog was On Preparing for Releasing Insubstantial (Codename Invincible).

The next post in this blog is Insubstantial 6.3 Release.

Many more can be found on the main index page or by looking through the archives.

Powered by
Movable Type 3.33