Adding more substance to NetBeans
As some of you might have noticed, the plugin that integrates the (kirill)cool Substance look & feel with NetBeans has been discontinued, because it’s so complicated to write all the UIDelegates:
substance-netbeans: Project Home Page.
One of the reasons, why I created NBTabbedPane was, to bring Substance back without the need of creating custom UI Delegates. But it was harder than I thought, because substance checks for violations of the new EDT rules, and in NetBeans there are some.
So I was glad to see that Josh took care of this:
JNBB: Plugin: NetBeans Substance 5.2 Look and Feel.
Now here’s a screenshot of NetBeans with my latest changes to the Tab Component:

..and here’s how it looks without:

Here’s another screenshot with a different Substance theme and tablayout policy set to scroll:

Hello again Substance Look & Feel!

Yeah, that’s the meaning of modular programming
Fantastic job with your ui-delegates.
br, jsoh.
Comment by Aljoscha Rittner
— 19. August 2009 @ 10:57
This is absolutely fantastic stuff, Toni! 2 thumbs up :).
So when do we get to play with this???
Cheers,
-Kodeninja
Comment by kodeninja
— 19. August 2009 @ 11:30
@Kodeninja: Thanks for your nice comment! Right now, I’m waiting for my API changes to be approved and integrated (http://www.netbeans.org/issues/show_bug.cgi?id=169099). The NetBeans developers have already tested them, but since this is part of the NetDev program it seems it’s a bit more bureaucratic :-). I had to find a community tester who will test and approve my contributions. Then it will get integrated to the community Mercurial repository, later it will hopefully promoted to main. After that happened you can simply install NBTabbedPane as a plugin. Before it’s a bit more work, since you need to patch the sources, but you can check the project page (http://kenai.com/projects/nb-tabbedpane/pages/Home) for the details…
The plugin is still buggy and needs some improvements. I’ll work on this, as soon as the required API changes have been integrated into community main, because testing & development will be much easier then.
Comment by Toni
— 19. August 2009 @ 12:02
great work! (I noticed missing font anti aliasing in some places - but this is probably only a configuration issue.)
Comment by michael bien
— 19. August 2009 @ 12:14
Excellent! The lost of Substance support, time ago, were really bad news. Glad that it’s going to be back.
Comment by Fabrizio Giudici
— 19. August 2009 @ 12:55
Man you are awesome. I am sooo looking forward to this being released. Your hard work is definitely appreciated. Great job.
Comment by adamarmistead
— 19. August 2009 @ 16:04
Hi!
I’ve found some issues in my Substance Plugin (UIThreadingViolation-Exception in the Plugin Manager). This issue is fixed. And now it’s possible to change the Skin “on-the-fly” - but with Editor-Issues (diapearing linenumbers and hints). But it gives a good preview.
Please take a look in my blog: http://www.sepix.de/blogs/blogrittner/category/nb_substance/index.html click the newest entry on top (translate, if needed) and download the new Substance Support Plugin.
Feedback and comments on my blog are very welcome.
br, josh.
Comment by Aljoscha Rittner
— 19. August 2009 @ 16:15
@Josh: Very cool. Without your plugin and your changes to the substance EDT checks I had plenty of exceptions with substance and the toolbar vanished after a few seconds :-). Checking for EDT Violations is a good thing, but it’s also good if you can turn it off in case you can’t fix all the uses of OFF-EDT component creation. It would be great to have a property in substance for turning it on and off…
Also I like your approach for putting the options actually in the applications “options” panel better than the original plugin, where it was in the view menu.
Comment by Toni
— 19. August 2009 @ 17:10
Hi Toni!
I’ve added some log informations (sometimes warnings, sometimes infos) as a replace for the exceptions. I’ll document this feature and give an option to enable/disable this log-feature. So it’s easier to find out the non-EDT-issues in NetBeans. But more informations in the JAXenter article coming soon
br, jsoh.
Comment by Aljoscha Rittner
— 19. August 2009 @ 17:14
Josh, will you contribute your changes back to Substance?
–Toni
Comment by Toni
— 19. August 2009 @ 17:57
It would be very cool to contribute this few lines, but I’m in doubt. I can not imagine that the Substance team weaken the restrictive rules again…
But I’ll do my best. We need a legacy flag to use Substance in NetBeans and (at a next step) remove the “bad” wrong calls out of the EDT.
br, josh.
Comment by Aljoscha Rittner
— 19. August 2009 @ 20:46
Hi Josch,
Substance is a one man show (Kirill Grouchnikov). There have been some requests to add such a flag already. Kirill said, that he wasn’t planning to add it himself, but maybe he will accept it as a contribution…
–Toni
“I do not have any immediate plans to switch off these checks. For the reasons
why please read [1]
Thanks Kirill
[1] http://www.pushing-pixels.org/?p=368”
Ps: But maybe you’re right, the last comment in the linked reference actually sounds like he might reject the patch…
Comment by Toni
— 19. August 2009 @ 21:30
“Ps: But maybe you’re right, the last comment in the linked reference actually sounds like he might reject the patch…”
exactly :-/
Comment by Aljoscha Rittner
— 20. August 2009 @ 14:14
This looks like some excellent work.
I am the (new) owner of the offical Substance NetBeans plugin but have not had the time to do much work on it to date. The work you have done with this could be integrated into the offical code for the plugin if you wish but we would need to get around the issue of creating components outside of the EDT. I am positive that Kirill will not relax this policy and I believe this is the correct strategy. The problem is with NetBeans, not with Susbtance. I may be able to liaise with the NetBeans developers to encourage them to make the necessary modifications to ensure all components are created on the EDT but in the past they have been reluctant to make any changes to NetBeans itself if only one look and feel or plugin is affected. It’s not a dead-end but it will present some challenges.
Are you interested in contributing to the Substance NetBeans plugin with this work? It would be really great to be able to make a new official release as soon as possible.
Cheers,
John C. Turnbull
Comment by John C. Turnbull
— 31. August 2009 @ 11:12
@John: Thanks for your comments! I filed a NetBeans Bug a while ago. They are aware of the problem, but they won’t fix it for now, because NB is working and they would have to change too many parts. Would be cool if Josh and you could work together on the Substance Plugin. Josh has the patched evrsion of Substance and you’ve got the UIDelegates.
–Toni
Comment by Toni
— 31. August 2009 @ 11:24
Great job,
I am moving from NB 6.5.1 to 6.8 and found that substance plugin from Kirill doesn’t work well. I am developing an RCP application but when I install substance plugin to my app, the menu bar is missing. I can’t wait to see further progress on this project, also from John as the new maintainer of Kirill’s plugin. Substance, in my opinion, is a great tool to polish netbeans RCP application. I’m working on Linux and for me GTK LAF is sometimes crappy.
Comment by anes
— 14. December 2009 @ 06:03