Sleepless Nights - What Ails You My Friend?

Next >

This week i have started working on providing Substance plugin for the JIDE common layer components. The main project page contains the overview information on using the early drops of this plugin, and you will need the latest 5.0dev drop of the core library to use the early drops.

At the present time the plugin contains the UI delegate for the JideButton component, complete with what you expect from the Substance look-and-feel:

  • Full animations on rollovers, selections, press etc, including animating both background and foreground colors.
  • Support for high-DPI mode, including margins, insets and borders.
  • Support for decoration areas.
  • Animating the text underline on rollovers over hyperlink-styled buttons.

Here is a screenshot of JideButton components under different settings (click to see full view):

Here is a short video of rollover effects over different button styles. Note the animations on the background colors, translucency and the text underline of hyperlink-styled buttons:



And here is a short video of the rollover effects under the core Magma skin. Note how the foreground colors are animated properly (including the always-white foreground on hyperlink-styled buttons that never show the background fill):



This is just a preview of the features that will be eventually available in the final plugin release. The goal is to provide the full range of Substance functionality for all JIDE common layer components.

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

  • Alexander Potochkin shows how to use the new JXLayer to provide mouse auto-scrolling functionality. I have reviewed the available techniques in an earlier post, and this is yet another illustration of the capabilities of JXLayer.
  • Jeff Friesen has an article that shows how use animated Windows cursors (in.ani format) in Swing applications. This builds on his previous article on extracting images from the Windows .ico files.

Ayman Al-Sairafi has a very useful project called JSyntaxPane which provides syntax highlighting capabilities for the JEditorPane Swing component, supporting Java, XML, Groovy and JavaScript. I’ve already mentioned this project on the latest “Swing links of the week”, and this week i’ve integrated it into the Rainbow SVG file viewer.

Rainbow is a testbed for integrating various desktop projects and building an SVG browser for both local and remote (SVN) repositories. Instead of reinventing the wheel, it uses third-party libraries for the various UI building blocks. Here is the list of the libraries:

  • Apache Batik for parsing and transcoding the SVG format.
  • Flamingo for the breadcrumb bar, command button and command button panel components.
  • Substance for the look-and-feel.
  • JXLayer for the spotlight search functionality and applying effects before saving as image.
  • JHLabs filters for applying effects before saving as image.
  • SVNKit for working with SVN repositories.
  • FormLayout for the layout of the top bar and status bar.
  • JSyntaxPane for highlighting the XML and Java2D content.

When you click on any SVG icon, Rainbow shows three views of that icon. The first view shows the original SVG XML content, the second view shows the transcoded Java2D class, and the third view allows applying a number of filters and save the image. The JSyntaxPane comes in handy for the first two views – Rainbow now shows the XML and Java2D content with applied syntax highlighting.

Here is a screenshot of the XML content (click for the full view):


and here is a screenshot of the Java2D class (click for the full view):


The JSyntaxPane is available under Apache 2.0 license.