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

  • Sandip Chitale has two tips on using JOptionPane component. The first tip show how to use multiline text and images, and the second tip is on making the component dialog resizable.
  • David Qiao has announced the official release 2.0 of JIDE Desktop Application Framework.
  • Maxim Zakharenkov has announced release 1.0 of the Swing Explorer project. The getting started guide shows the potential of this project for visual debugging of Swing application. The player feature looks particularly impressive.
  • Nazmul Idris sums up the limitations of the current native font rasterizer in 6u10 latest builds.
  • Geertjan Wielenga writes an overview article on FEST-Swing project by Alex Ruiz and Yvonne Price.
  • Roman Kennke posts updates on the Caciocavallo project. The first is on build errors, and the second is on font rasterization.
  • Fabien sums up a few libraries and tools that help building Swing applications.
  • And finally, the Glimmer project proposal has been accepted by Eclipse. The goal of this project is to wrap SWT with a JRuby DSL for easier authoring of cross-platform user interfaces. While interesting on itself, this might also prove a good catalyst and inject some life into the Swing-based efforts in Groovy, JRuby and Scala.

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

  • Roman Kennke kicks off the week with the announcement on Caciocavallo project. It will implement his proposal for OpenJDK challenge and concentrate on three areas:
    • An implementation of the AWT Toolkit interface (java.awt.peer and a bunch of classes in java.awt), that doesn’t make use of Sun internal classes.
    • An implementation of the AWT Toolkit interface that subclasses Sun internal classes and reuses most of the infrastructure. (This is named Caciocavallo-NG)
    • Patches to OpenJDK to enable the above
  • The trend of using Java UI toolkits as “virtual UI machine” continues with the proposal of Glimmer project in Eclipse community. Over the past few months we have seen a number of attempts to “wrap” Swing in a variety of languages that use JVM as the runtime. These include Groovy, JRuby and Scala. While up until now these attempts have chosen Swing as the underlying “platform”, Glimmer will use SWT to create a JRuby DSL for creating UIs. The project creation review is scheduled for April 16, and you can peruse the PDF slides of creation review.
  • On a related note, Gregg Bollinger explores the Groovy SwingBuilder on a simple login panel using MigLayout. He then follows with an example of integrating Groovy with Java using the new Script API, and Danno Ferrin replies with a better way to achieve the same result.
  • Nick from Palantir writes about a collection of time chooser components. These explore various text-based and rich ways to select time in Swing applications. WebStart application and full sources are provided.
  • Christophe Le Besnerais continues exploring the JNA project to play with translucent windows. In the new entry he provides an implementation of Mac OS X transparent panel.
  • Alexander Potochkin notes an unexpected and an unwelcome side effect of temporarily turning off the double buffering on the current repaint manager – the “gray-rect” fix is disabled :(

For those of you interested in more technical background on composite rendering in general (and how it subsequently applies to Java2D), the following links might be of interested. Found via a very informative blog of Russ Cox:

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

  • Jacek Furmankiewicz posted a series of three entries on builders for Swing layout managers. The first entry shows two prototypes for wrapping Mig layout manager in a Java builder, the second entry explores a more WYSIWYG approach (which looks like a simplified version of ZoneLayout, since the example itself is also very simple), and the last entry tackles a more complicated example of ZoneLayout. Personally, the use of white space to drive the layout does not sound like the best idea. It’s hard to debug (make, anyone?), it’s prone to whitespace / tab conversion problems, and it poses significant challenges to refactoring control names.
  • Anthony Goubard posts a few screenshots of new demo applications created for 6u10 version of JDK. As mentioned last week, these are SwingSet3 and Laffy. The bundled demo folder has a simple HTML page for each one of the projects that point to the actual java.net content. SwingSet3 is now publicly available, and you can run the WebStart version here. Hopefully Laffy‘s homepage will be updated soon.
  • Geertjan Wielenga has a short tutorial on using Spring framework for building Swing applications. The usual pains of Spring approach apply, and that would include compile-time errors moved to runtime, tons of XML wiring for anything but sample applications (which also needs to be edited manually in most IDEs and is hard to refactor) and a few dependency jar.
  • Robert O’Connor rounds up the comparison of the three Java closures proposals with an example of applying CICE to a sample Swing application. I don’t really agree with Robert’s point that the main problem with Java is its verbosity. I think that the biggest pain point of Swing (at least for beginners) is the over-flexibility of Swing API and lack of “the true way” to achieve a specific functionality. And the second one is lack of video capabilities, which would hopefully be addressed at this year’s JavaOne (see below).
  • Nazmul Idris is back with the first part of tutorial on his new Task API for Swing applications.
  • The OpenJDK Innovators’ Challenge has announced the finalists, and both UI-related proposals are in. Congratulations to Clemens Eisserer, Roman Kennke and Mario Torre.

The session catalog for JavaOne 2008 has been published, and it has quite a few desktop-related technical and bird-of-feather sessions. Out of the entire Desktop track and Rich Media track, here are a few interesting sessions:

  • TS-6649 / Desktop Track Overview & New Features in the upcoming Java 6u10 Platform by Hans Muller and Ethan Nicholas. This might hold some interesting news for the Java desktop developers, especially in light of BOS-6511 and TS-6509.
  • TS-6611 / Filthy-Rich Clients: Filthier, Richer, Clientier by Romain Guy and Chet Haase.
  • BOF-6511 / The Java Media Components API BOF.
  • BOF-5037 / High-Resolution Monitors: Make Your User Interfaces Scale with the Future by Mike Swingler and I.
  • TS-6609 / Using JavaFX Script To Build Swing Applications by Amy Fowler and Hans Muller.
  • TS-6929 / Creating a Compelling User Experience by Ben Galbraith.
  • BOF-6101 / Nimbus: Beyond the Basics by Richard Bair and Jasper Potts.
  • TS-6096 / Nimbus: The New Face of Swing by Richard Bair and Jasper Potts.
  • TS-6656 / Extreme GUI Makeover: Swing Meets FX by Christophe Campbell and Shannon Hickey.
  • TS-5500 / The Desktop Java Lovers Survival Guide by Joe Winchester.
  • TS-6509 / Incorporating Media into JavaFX™ and Java™ Technology-Based Applications by Marc Owerfeldt and Tony Wyant.

Please browse through the entire session catalog for more desktop-related presentations by my friends Alexander, David, Richard, Andres, Mikael and more.

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

  • Is there new life for JDIC? It started with a big bang in 2004, pretty much died late 2006 when Mustang was released and now looks like it has received a renewed attention. The announcement on the forum introduces JDICplus project. At this stage it is a Win32-only wrapper around the Internet Explorer. The main page has four WebStartable applications that show IE, map explorer, flash viewer and HTML editor. The functionality looks very similar to the DJ Native Swing project, except the multi-platform support.
  • Are you interested to know when Apple is going to release JDK 6.0? You can know the answer to this question, with one small caveat – you can’t tell anyone. Oh, and you have to pass the interviews and sign a few papers… If you are interested to work for Apple’s Java team on AWT, SWT, Swing and other areas, follow this link to read the job description and apply.
  • Build 14 of 6u10 closes the bug on bringing SwingSet2 to be a better demo application for Swing. Looks like SwingSet2 will be no longer maintained, and instead will be replaced by two new java.net-hosted projects. The first is SwingSet3 that will show the core Swing features, and the second is Laffy that will act as look-and-feel test bed. Unfortunately, SwingSet3 is still a private project and can not be accessed (unless you have special privileges), and Laffy’s main page is still the template one.
  • Robert O’Connor explores the different closures proposals and how they apply to primitive Swing applications. The first entry is on FCM, and the second entry is on BGGA. If you have a UI with one button and one-line action listener, you might even cut down the number of lines in your application :)
  • Daniel Leuck proposes a format for packaging multi-resolution icons in Swing applications. This is one of the issues facing UI application running on high-resolution monitors. If you are interested in this subject, please consider coming to a birds-of-feather session that i will be presenting with Mike Swingler (of Apple’s Swing team) at this year’s JavaOne.
  • Collin Fagan introduces a few JavaFX-inspired panels that aim to make it easier to work with core Swing layout managers. Why would anyone still want to use the GridBagLayout is a mystery to me.
  • Thierry Lefort experiments with multiple popup toolbars that provide functionality similar to that of Office 2007 MiniBar (floatie). This topic has been mentioned in the session that Jensen Harris (lead designer of Office 2007) has presented at this year’s MIX conference (click here for the PowerPoint presentation or visit the site to view the video feed of the session). They eventually decided to have only one floating toolbar that fades out as you move the mouse away from it.
  • Christophe Le Besnerais writes about a class that allows showing any Swing component in its own non-taskbar window. It doesn’t really go beyond providing a simple wrapper around the Popup and PopupFactory classes, and the translucency can be easily achieved by always using heavyweight popup windows, as explained in my entry on the translucent windows tricks.