Release miscellania

April 14th, 2010

In addition to releasing Trident 1.2 and Substance 6.0, today i have released the following:

  • Laf-Plugin version 1.2 code named Landshark. This is used by Substance to find and load its plugins.
  • Laf-Widget version 5.0 code named Magnolia. This is used by Substance to add visual and behavioral features to specific component types.
  • Lightbeam version 1.1 code named Betelgeuse. This is used to analyze Substance performance and make sure there are no performance regressions.
  • Rainbow version 1.2 code named Blackstone. A small test application written with Alex Potochkin to test Substance, Flamingo and JXLayer.

An unfortunate omission is the Flamingo component suite. As much as i would have loved to be able to have Flamingo 5.0 join the release train today, it was not realistic given the time constraints. So, instead of delaying the releases of all the projects, i have decided to have Flamingo be developed in its own timeline. The final 6.0 release of Substance Flamingo is based on the latest 5.0dev daily drops of Flamingo core. As the work on Flamingo core continues, the interested applications will need to use daily builds of Substance and Substance Flamingo. My intent is to release Flamingo 5.0 together with Substance 6.1.

It is a great pleasure to announce the availability of the final release or version 6.0 of Substance look-and-feel (code-named Sonoma). The release notes for version 6.0 contain the detailed information on the contents of this release which include the following:

  • Multi-state animated transitions
  • New look for text based components (text fields, combo boxes, spinners, date pickers)
  • Custom component states
  • Support for drop location

Animations in Substance 6.0 are powered by the Trident animation library. You will need to add the matching Trident jar to your classpath. Substance 6.0 is using version 1.2 of Trident which can be downloaded from the main Trident download area or from the Substance 6.0 download area.

In addition to deprecated APIs that have been removed in version 6.0 (see the release notes for version 5.3), application code that uses the following Substance APIs will need to be revisited:

  • All painter APIs now operate on a single color scheme. Application code that passed two different color schemes will now need to call the matching APIs twice, and use the relevant composites on the graphics context.
  • Configuring the animation settings is now done with the org.pushingpixels.lafwidget.animation.AnimationConfigurationManager APIs. In addition, application that want to control the resolution of the animation pulses should consult the Trident documentation on this topic.

Click on the button below to launch a signed WebStart application that shows the available Substance features.

The following sub-projects are also available:

You are more than welcome to take Substance 6.0 for a ride. Sample screenshots of Substance 6.0 in action:

The command button component is a central building block for the Flamingo component suite. It aims to address the deficiencies of the core Swing button components, adding features expected by the modern applications. While the main goal of Flamingo is to provide a pure Java implementation of the Office 2007 ribbon container, the command buttons can certainly be used outside the ribbon.

Command buttons can be configured to have two separate areas – action and popup. This allows the application to use command buttons as drop-in replacement for Swing core buttons, as well as use them to create split and popup buttons. The JCommandButton.setPopupCallback API is used to dynamically create the popup menu content when the popup area is activated. The core org.pushingpixels.flamingo.common.popup.JCommandPopupMenu allows creating most commonly used popup menus. You can use its addMenuButton and addMenuSeparator to create simple menus:

https://flamingo.dev.java.net/release-info/5.0/button-popup-simple.png

or you can use a JCommandPopupMenu constructor that gets a JCommandButtonPanel instance to create a more complex popup menu with embedded scrollable command button panel:

https://flamingo.dev.java.net/release-info/5.0/button-popup-with-buttonpanel.png

If a popup menu hosts a large number of command menu buttons, it may overflow the vertical boundaries of the monitor, resulting in poor UI experience. Even though such scenarios usually indicate poor UI design (too many choices), sometimes it is a valid requirement. One such example is showing all files in the specific folder when the user clicks the popup area. To address such scenarios, you can use the new JCommandPopupMenu.setMaxVisibleMenuButtons(int) API.

Suppose you use this API with the value 10. If your popup menu contains ten items or less, it will be shown as it is today. However, if it contains more than ten items, the popup menu will show two scroller buttons, one before the first menu item, and another after the last menu item:

https://flamingo.dev.java.net/release-info/5.0/button-popup-scrollable-top.png

To scroll through the items, use the mouse wheel or move the mouse over the bottom scroller button. In the later case, there’s no need to click the mouse button – the scrolling will start automatically when the mouse is moved over the scroller button and will continue as long as the mouse stays there. Once you start scrolling, the top scroller button becomes enabled:

https://flamingo.dev.java.net/release-info/5.0/button-popup-scrollable-middle.png

When you reach the last menu button, the bottom scroller button becomes disabled:

https://flamingo.dev.java.net/release-info/5.0/button-popup-scrollable-bottom.png

To test the new functionality in your applications, you will need the following:

Note that the last two are required if you’re running your application under one of Substance skins – such as Office Blue 2007 used in all the screenshots in this entry.

The latest 5.0dev drop of the Flamingo library (code-named Imogene) provides full right-to-left (RTL) support for the ribbon component and all its parts. Here are some screenshots of the ribbon running under iw-IL locale using the Office Blue 2007 skin from Substance core and Substance Flamingo plugin.

The first screenshot shows the full RTL ribbon in action – click to see fullsize view:
https://flamingo.dev.java.net/release-info/5.0/ribbon-rtl-thumbnail.png

You can associate rich tooltips with buttons in ribbon bands. The tooltips are shown below the main ribbon area, right aligned with the original button:

https://flamingo.dev.java.net/release-info/5.0/ribbon-rtl-button-tooltip.png

Command buttons placed in the ribbon can have associated simple popup menu:

https://flamingo.dev.java.net/release-info/5.0/ribbon-rtl-button-popup.png

The popup menu can also host a command button panel, with each button having its own rich tooltip:

https://flamingo.dev.java.net/release-info/5.0/ribbon-rtl-button-richpopup-tooltip.png

The screenshots above show an embedded ribbon gallery (in the middle ribbon band). A ribbon gallery can be expanded to show all the available gallery choices:

https://flamingo.dev.java.net/release-info/5.0/ribbon-rtl-gallery-popup.png

The ribbon usually hosts command controls – such as command buttons or ribbon galleries, which themselves contain command buttons. However, you can also put any core Swing component into the ribbon:

https://flamingo.dev.java.net/release-info/5.0/ribbon-rtl-wrapped-corecomponents.png

Note that you can associate an optional icon and an optional caption text with the wrapped core component.

The application menu button is shown in the top-right corner. Internally it is a command button as well, and you can associate a rich tooltip with it:

https://flamingo.dev.java.net/release-info/5.0/ribbon-rtl-appmenu-tooltip.png

Clicking on the application menu button shows a three-panel application menu:

https://flamingo.dev.java.net/release-info/5.0/ribbon-rtl-appmenu.png

You can associate a custom secondary menu group with the specific primary menu entry:

https://flamingo.dev.java.net/release-info/5.0/ribbon-rtl-appmenu-secondary.png

The secondary menu group can have multiple menu sections:

https://flamingo.dev.java.net/release-info/5.0/ribbon-rtl-appmenu-secondary2.png

You can have more than two levels in the application menu by associating a custom popup callback with the relevant secondary menu entries:

https://flamingo.dev.java.net/release-info/5.0/ribbon-rtl-appmenu-popup.png

Contextual task groups can be shown and hidden based on the current selection in the application. The contextual task group headers are shown in the application title bar:

https://flamingo.dev.java.net/release-info/5.0/ribbon-rtl-contextualgroups.png

You can place frequently use controls in the ribbon taskbar. Command buttons in the taskbar can have rich tooltips. These tooltips are shown directly below the button and are right-aligned:

https://flamingo.dev.java.net/release-info/5.0/ribbon-rtl-taskbar-tooltip.png

Command buttons in the ribbon taskbar can have associated popup menus:

https://flamingo.dev.java.net/release-info/5.0/ribbon-rtl-taskbar-popup.png

You can also associate a rich tooltip with the ribbon band expand button:

https://flamingo.dev.java.net/release-info/5.0/ribbon-rtl-bandexpandbutton-tooltip.png

This is the next major step towards full RTL support in all Flamingo components. The breadcrumb bar remains the only Flamingo component without the RTL support. It will be added after the planned internal refactoring of the breadcrumb bar to use command buttons.

To test the new functionality in your applications, you will need the following:

Note that the last two are required if you’re running your application under one of Substance skins – such as Office Blue 2007 used in all the screenshots in this entry.