Here are some Swing links that you might have missed during the last two weeks:

  • Continuing the theme of Swing-“powered” applications running on JVM but written in another language, Shawn Crowley addresses the viability of JRuby as a realistic candidate for authoring complex desktop applications. It’s great to see that his experience is largely positive and he has no regrets in choosing this platform.
  • Tim Dalton continues his series on building GUIs in Scala. This time, the “usual suspect” of UI demoes – a simple calculator.
  • And to top off this part, Andres Almiray revisits his library of Groovy builders as the Groovy 1.1 release approaches. The entry on GraphicsBuilder is talking about adding mouse and keyboard support, and the entry on JideBuilder makes sure that it is updated and functional. The last entry is on GraphicsPad, which begs just two questions – what is it, and where are the screenshots?
  • Jan Erik Paulsen continues his experiments with Photoshop Express clone, and is trying to come up with a new Substance-based skin. Dubbed “Titanium White”, it looks quite similar to the core Business skin from Substance with round button shaper.
  • Alex Potochkin has technical details on the Rainbow application that we used for our join JavaOne presentation last year. As you can see, this application is still alive (hint-hint), and is still used by both of us to improve the libraries that it is using (JXLayer for Alex and Flamingo for me).

And a few product announcements as well:

  • The JPen project is a library for accessing pen/digitizer tablets and pointing devices.
  • Alex Ruiz has announced the release 0.7.0 of the FEST-Swing UI testing library.
  • Dave Gilbert has announced the bugfix release 1.0.8 of JFreeChart charting library.
  • Wolfgang Zitzelsberger has announced the release 2.6.0 of Synthetica look-and-feel. If you thought your favorite library was customizable, take a look at the customization documentation – with ten new client properties, this release has broken the 300 mark :)

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

  • Landon Fuller continues working on Mustang port to Mac OS X. It’s been more than three weeks since Leopard has been released, and since Eric’s timeline doesn’t seem to hold (and Apple used some very questionable wording in the Tiger’s update for JDK 5.0 and 1.4.2), it looks like a promising development. What’s even more interesting is the fact that Landon has shown a Swing-based game running on FreeBSD’s port :)
  • Tim Dalton shows how to harness Swing to build user interfaces in Scala. Combine this with the similar work in Grrovy from Andres and a bug recently opened on Substance that shows Swing being used in Jython UIs, and you might think that Swing is becoming to cross-platform UIs as what JVM is becoming to cross-platform languages. A solid base to use instead of reinventing the wheel.
  • David Gilbert has announced release 1.0.7 of his JFreeChart library.
  • Davide Raccagni has announced release 3.0 of his A03 look-and-feel.
  • Not necessarily a strictly Swing link – kind folks from EasyRGB.com have put together a list of color conversion algorithms between a sizeable collection of color formats.

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

  • John Zukowski provides an overview of using system tray in JDK 6.0. Judged by the comments, people do not know that you can use JPopupMenu on the system tray icon.
  • Alex Potochkin adds yet another useful tool to his SwingHelper project. This entry introduces a “visual debugger” painter that allows seeing what is repainted at runtime, and whether your application / custom components are repainting more than necessary.
  • Patrick Lightbody is having some problems with Swing applications (namely IntelliJ IDEA) under Leopard Spaces.
  • Daniel Spiewak has written an overview article on Fuse project that allows injecting external resources into custom Swing / Java2D painting code. Based on comments from Daniel and Romain, i am still not convinced that this approach is easier than writing a custom theme for an existing look-and-feel, at least for a big UI that needs consistency for all the visual elements.
  • Rafael Alvarez writes about yet another Swing layout manager. You can also read the manual that has more information on the syntax and the usage of the XMLGridLayout. The goal of this layout manager is “to provide all the power of GridBagLayout with the simplicity of an HTML table“.
  • Charles Tai has announced the new SwingRCP project. The goal of this project is to provide “a platform for developing applications based on the Eclipse Rich Client Platform (RCP).” This is a commercial product, and it remains to be seen whether it will be able to win the mindshares of either Swing or Eclipse RCP developers.
  • An interesting RFE has made its way into the latest binary build of Mustang Update N. RFE 6604856 provides a way to define a RepaintManager for the hierarchy of specified component. I have already discussed the good and the bad sides of RepaintManager as a tool for custom painting, and one of the biggest disadvantages is that RepaintManager is a global resource. It’s not immediately clear where this functionality will be used. My hope is that it was added for internal use in JavaFX (why wait until now? this limitation has been known for a very long time), and not for yet another JavaOne demo. A look at the sources reveals that the implementation is most probably in the new internal com.sun.java.swing.SwingUtilities3 class and its static setDelegateRepaintManager class. Hopefully, this will be formally exposed in Mustang Dolphin to allow using multiple repaint managers in a supported way.

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

  • Jan Erik Paulsen is working on a new RIA tool named Amanda. Some nice screenshots that use the Titanium look-and-feel that is based on Substance.
  • The release notes for Java 5 on Leopard include a few new client properties that can be used to provide functionality missing from the core Swing components. Examples include indeterminate progress circular indicator, smaller controls and search text fields.
  • Jan Haderka writes about detecting Caps Lock state on the JXLoginPanel SwingX component. This thread on java.net forums has additional comments. The current solution does not sound too robust, and since the correct approach requires using native code (which is currently missing from the JDK), use with care.
  • Eclipse 3.4M3 release notes mention the new API on the Shell component. It allows setting an alpha channel value on supported platforms (see screenshot). While the matching functionality is available in the JNA project for Swing, it’s really time for the core Swing team to provide it in JDK. It’s missing in Tiger, it’s missing in Mustang, and it most probably won’t be in Dolphin (due to major work by the client team on the “Update N” which leaves them with only a few months for Dolphin).
  • Hrish writes about problems with file access in signed applets under IE 7 on Windows Vista. There are some links to MSDN articles, but i think that a more important link would be to Chet’s blog on this subject where he says that “There is an issue worth noting here than cannot be fixed: IE7 on Vista will not let us access the file system outside the IE7 sandbox for applets. This means that even “signed” applets have no permission to write to arbitrary locations on disk. This behavior differs from the old behavior of applets on Windows, but given the restrictions of IE7, there is really no way around the problem.” I’m not sure how this sits along with the user comments on bug 6504236 that say that “there is a well documented design to allow IE add-ins access the file system from the user’s normal (Medium) Integrity level, rather the IE’s Low Integrity level: implement an Internet Explorer Broker Process“.

This week has also seen a few announcements:

  • Mikael Grev has announced release 3.0 of MigLayout project. The main emphasis of this release is on automatic support for resolution independence, which is a very important topic that doesn’t get the attention it deserves (neither in Java world nor elsewhere).
  • David Qiao has announced release 2.2.1 of JIDE component suite. The new components are group list, dual list and aggregate table – all of these are not available in the open-source common layer.
  • Instantiations has announced release 6.5.0 of the WindowBuilder family of products with a few enhancements to the Swing designer.
  • Hans Muller has announced release 1.03 of Swing Application Framework, the reference implementation of JSR 296, while Shannon Hickey has announced release 1.2 and release 1.2.1 of Beans Binding, the reference implementation of JSR 295. There are some breaking changes in the Beans Binding 1.2 (see release notes). While on one hand it is expected from an evolving project which has not been finalized, it brings some interesting questions nonetheless. The first one (this is also relevant for Swing Application Framework) – what exactly do the version numbers signify? Was the release 1.0 just something to “tag” and release so that people will consider it as a production-ready implementation? Or perhaps these are the versions used in NetBeans 6.0 betas – which makes it even worse considering that NetBeans is an IDE and these two projects are JSR reference implementations. And what happens when NetBeans 6.0 is frozen (somewhere this week) and there are still breaking API changes in these two projects?