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.
- Trident -
Watch the button text slowly change color. (I do mean slowly.) [Source]
Self-running fireworks. [Source]
Blue progress cylon. [Source]
Blocks light up and fade chasing your mouse cursor. [Source]
Stars light up and fade following your mouse cursor. Sorry, no unicorns. [Source] - Substance and Flamingo -
A hodgepodge of Widgets
A Ribbon Demo.
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)
Very nice to see these wonderful projects getting a new maintainer. Congratz!
Posted by Solerman Kaplon | April 5, 2011 2:28 PM
Posted on April 5, 2011 14:28
The group id is com.github.insubstantial, not org.github.insubstantial
Posted by Tobias Schulte | April 7, 2011 12:57 AM
Posted on April 7, 2011 00:57
Good catch, it was kinda late at night when I wrote this stuff. GroupID is now fixed in the blog post.
Posted by Danno Ferrin | April 8, 2011 9:36 AM
Posted on April 8, 2011 09:36
Congrats!
Posted by Adam Kruszewski | April 11, 2011 1:37 AM
Posted on April 11, 2011 01:37
The link for 'flamingo-lite' doesn't work.
Posted by Not relevant | April 11, 2011 4:13 AM
Posted on April 11, 2011 04:13
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."
Posted by Not relevant | April 11, 2011 4:21 AM
Posted on April 11, 2011 04:21
Great stuff, thanks. Long live Substance!
Posted by Roger Araújo | April 12, 2011 7:10 AM
Posted on April 12, 2011 07:10
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
Posted by gluon | April 12, 2011 7:41 AM
Posted on April 12, 2011 07:41
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.
Posted by Majid Keshtidar | April 15, 2011 1:28 PM
Posted on April 15, 2011 13:28
Im' very happy to discover a new maintainer for substance(s) projecst.
Thank's and long live Substance!
Posted by christophe | April 19, 2011 2:11 AM
Posted on April 19, 2011 02:11
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.
Posted by Darren Scott | April 26, 2011 3:35 PM
Posted on April 26, 2011 15:35
Thanks for maintaining Flamingo and Substance ! I am happy that Ribbons on Java Swing will be continued !
Posted by zeroTier | May 4, 2011 9:34 AM
Posted on May 4, 2011 09:34
I would have to second that. Custom table renderers have caused me much grief
Posted by Martin | May 28, 2011 8:03 AM
Posted on May 28, 2011 08:03
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.
Posted by Kenneth Flynn | May 29, 2011 10:27 PM
Posted on May 29, 2011 22:27
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!
Posted by Dessimat0r | June 4, 2011 6:43 PM
Posted on June 4, 2011 18:43
The main class is here:
https://github.com/Insubstantial/insubstantial/blob/master/substance/src/test/java/test/Check.java
but most of the good stuff is in a sub directory:
https://github.com/Insubstantial/insubstantial/blob/master/substance/src/test/java/test/check
Posted by Danno Ferrin | June 6, 2011 4:22 PM
Posted on June 6, 2011 16:22
just WOW !!!!!!!
Posted by Anjula | June 7, 2011 11:02 AM
Posted on June 7, 2011 11:02
Thank you!
Posted by John | June 7, 2011 9:47 PM
Posted on June 7, 2011 21:47
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!
Posted by Matthias | June 13, 2011 9:32 AM
Posted on June 13, 2011 09:32
You can post bugs here:
https://github.com/insubstantial/insubstantial/issues
Be sure to include a stack trace, or it may be treated with extreme prejudice.
Posted by Danno Ferrin | June 13, 2011 12:08 PM
Posted on June 13, 2011 12:08
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?
Posted by Inferno | June 24, 2011 6:31 AM
Posted on June 24, 2011 06:31
Kirill Called it BasicCheckRibbon, and it was also a manual testing class.
https://github.com/Insubstantial/insubstantial/blob/master/flamingo/src/test/java/test/ribbon/BasicCheckRibbon.java
Posted by Danno Ferrin | June 24, 2011 9:00 AM
Posted on June 24, 2011 09:00
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).
:D
Posted by gumuruh | July 4, 2011 12:15 AM
Posted on July 4, 2011 00:15
"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
Posted by anon | September 30, 2011 2:17 PM
Posted on September 30, 2011 14:17