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

  • Christopher Deckers writes about the new functionality in drop 0.9.3 of his DJ Native Swing project. The main focus is on the possibility to mix heavyweight and lightweight components with lightweight components on top, to change their Z-order or re-parent them.
  • The new Metawidget project led by Richard Kennard announced its first drop. The stated goal of the project is to create UI components by inspecting existing back-end architectures (beans, annotations, XML config files). The target UI frameworks include Swing, JSF, Struts and Android, and it is possible to add support for more.
  • froglogic announced release 3.3 of their Squish UI testing tool. Main new features relevant to Swing development include support for testing mixed Swing / SWT applications, applets and WebStart applications.
  • Jan Haderka writes about the planned schedule for drop 0.9.2 of SwingX. The current timeline is late February or early March. Are we talking about the first stable release for JavaOne? :)
  • Philipp Meier shares a tip on writing cross-LAF cell renderers, based on an example of a combobox under the Nimbus look-and-feel.
  • Vaclav Pech is a new voice in the Groovy community that uses Swing as the “native” UI toolkit. His entries on binding and multithreading show a few examples of conciseness and expressive power of SwingBuilder. Now, if only my action listeners were all that simple…
  • Andres Almiray continues his tutorials on GraphicsBuilder. The second part talks about shapes and outlines.

A rather unexpected new feature made its way into milestone 5 of the upcoming release 3.4 of Eclipse. As the milestone release notes state, Java Editor now offers a breadcrumb navigation bar which can be enabled via the Toggle Breadcrumb tool bar button or by pressing Alt+Shift+B. Being an active proponent of breadcrumb bar component myself i have decided to enable this feature and play with it for a few hours. At the time being (while it’s all still fresh), i find it very useful.

It elegantly combines the tree structures of project explorer and the outline view (along with fully functional context menus on all items), and since the breadcrumb segment icons are synchronized with the package explorer, i can easily see the familiar overlay icons that are associated with errors and warnings. As a matter of fact, i would even dare say that i no longer need the package explorer and outline views, since the breadcrumb segment selector menus provide filtering capabilities as well. As an experiment, i have decided to use the new breadcrumb bar exclusively for the next few weeks to see if i’m going to miss the old tree views.

As an added bonus, i now have more horizontal space to tile the search view and problems view and have them visible together at the bottom of the IDE window. Here is how my Eclipse is going to look like in the next few weeks (click to see full size in 1024*770):

Eclipse 3.4 M5 breadrcumb bar - thumbnail

There are a few usability issues that hopefully will get addressed in the final release. My top two would be:

  • When the selector arrow is clicked, the mouse focus should be transferred into the popup window. Right now, i can’t click the selector arrow and start mouse-wheeling through the elements.
  • The element selection in the popup list should be single click and not double click.

Right now, the breadcrumb bar navigation in Eclipse feels much slower than in the Vista Explorer because of these two issues. I have submitted these two points to the Eclipse bug tracker (bug 215830).

The ribbon component is one of the major parts of the Flamingo component suite. It is a Swing component that provides capabilities of Office 2007 Command Bar, and the detailed documentation has been updated to show the latest visuals, APIs and terminology of the ribbon component. Here, i will show a few screenshots that illustrate the ribbon functionality.

The following screenshot shows a sample ribbon component (under Metal look-and-feel with the default Ocean theme):

Ribbon consists of a set of ribbon tasks. Only one task is visible at a time (a-la card layout). Logically, a task also includes its toggle button (the top portion of the ribbon control):

When another task is selected (programmatically or via user interaction), the contents of the selected task replace the previously selected task:

A ribbon task consists of a number of ribbon task bands:

A ribbon task band can contain command buttons in different states, usual core Swing controls (buttons, check boxes, combo boxes) and in-ribbon galleries. The available width is distributed between the task bands based on the priority of the elements in the task. As can be seen in these screenshots, some command buttons are in <font color="darkblue">ElementState.BIG</font> (big icon and text), some are in <font color="darkblue">ElementState.MEDIUM</font> (small icon and text), and the others are in <font color="darkblue">ElementState.SMALL</font> (only small icon).

An in-ribbon gallery allows scrolling and operating a large number of command buttons in a limited space.

Clicking on the gallery expand button opens a popup panel that shows the gallery command buttons arranged in a multi-row scrollable grid:

As mentioned earlier on this blog, the ribbon component uses the visuals of the current look-and-feel. Here is how ribbon looks under the Windows XP with Windows look-and-feel:

And under Windows Vista:

And under Ubuntu 7.10 with GTK look-and-feel:

And under Looks Plastic XP:

And under Synthetica Mauve Metallic:

And finally under Pagosoft:

The release candidate of Flamingo 3.0 is scheduled for February 11, with the official release scheduled for February 18. The latest binaries and source can be downloaded here.

The breadcrumb bar component from the Flamingo component suite has been mentioned a few times in the past, and now the official documentation has been reworked to reflect the current stable APIs. Here i will give a short overview of some of the main features.

Breadcrumb bar is a modern component that plays important part in Windows Vista Explorer and many web sites. It allows the user to keep track of his location within a program or document, efficiently utilizing the available screen estate. In the following screenshot, the file viewer panel is driven by the breadcrumb bar that navigates the local file system:

Breadcrumb bar can be used for navigating any tree-based structure, such as an SVN repository. In addition, Flamingo provides a utility class that wraps an existing JTree or TreeModel and exposes it as a breadcrumb bar with little additional programming. Here is the list of available implementations:

The org.jvnet.flamingo.bcb.BreadcrumbBar is the base class that provides the skeleton implementation of breadcrumb bar component. The org.jvnet.flamingo.bcb.core package provides specific implementations targeting a few popular structures. These are:

  • BreadcrumbFileSelector for traversing a local file system.
  • BreadcrumbSvnSelector for traversing a local or remote SVN repository.
  • BreadcrumbMultiSvnSelector for traversing a number of local or remote SVN repositories.
  • BreadcrumbTreeAdapterSelector for wrapping an existing JTree or TreeModel.

The detailed documentation has more information on wiring the core breadcrumb bar components to other application panels and on implementing a custom breadcrumb bar.