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:

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:

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

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

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:

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:

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:

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

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

The secondary menu group can have multiple menu sections:

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

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:

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:

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

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

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.
The application menu button in the ribbon component from Flamingo component suite is a big round button in the top left corner of the ribbon:

It is not a direct replacement for the usual application menu bar, but rather a place to hold actions that (as a general rule) do not affect the visual content of the document – such as saving, printing, sharing etc.
Prior to version 5.0, the ribbon frame (org.pushingpixels.flamingo.ribbon.JRibbonFrame class) tracked application calls to Window.setIconImages API, located the closest image that fits in the application menu button and used that image. This was a rather awkward solution that did not sit well with pervasive usage of the ResizableIcon interface in other parts of Flamingo. The latest 5.0dev drop of Flamingo (code-named Imogene) will now throw an UnsupportedOperationException if your code calls the setIconImages API. Instead, the application code must use the new JRibbonFrame.setApplicationIcon(ResizableIcon) API.
The ribbon will use the specified resizable icon to create window images and set them on the underlying frame. As a bonus side effect of using this API, you will also get a 128*128 version of the icon automatically passed to Application.setDockIconImage API, providing much better integration with the native Mac OS X application environment:

Note here how the crispness of the dock icon – which is using the same icon source as the application button menu icon. The original SVG is from the Tango icon library, and org.pushingpixels.flamingo.svg.SvgTranscoder was run offline to create a standalone Java2D implementation of the ResizableIcon interface from it.
To test the new functionality in your applications, you will need just the latest 5.0dev drop of Flamingo. As a side note, now that i have moved to Mac as my primary development environment, expect much better desktop integration for both Flamingo and Substance.
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.
Just as command buttons can be used as drop-in replacement for core Swing buttons, rich tooltips are the extension of the core tooltip functionality. Rich tooltips provide support for main and footer areas, multi-line and multi-section content, as well as embedding main and footer images – all of these are optional and can be combined together freely. While the previous entry talked about providing right-to-left (RTL) support on command buttons and related containers, the latest 5.0dev drop of Flamingo (code-named Imogene) extends this support to rich tooltips.
The first screenshot shows a command button with action and popup areas. Both areas have associated rich tooltips, and the mouse is over the action area. The current locale is en_US:

And here is the same button / tooltip under iw_IL locale:

The same button has a different rich tooltip for the popup area under en_US locale (no main image and only one paragraph in the main section):

and the same button / tooltip under iw_IL locale:

This is the next step towards full RTL support in all Flamingo components. Stay tuned for more. 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.
With Substance 6.0 in release candidate stage, it’s time to go back and work on the missing features in the Flamingo component suite. As mentioned in the JavaOne ’09 presentation on the project, there are a few features missing in the Swing implementation, and today i’m going to talk about supporting right-to-left orientation on command buttons and related components.
Four RTL languages are supported in Java: Hebrew, Arabic, Farsi, and Urdu. Substance provides full RTL support for core Swing components, and you can see older entries (Aligning menu items in Swing applications – welcome to the real world and RTL support in Swing – part II) for a glimpse of RTL-related issues. The latest drop of Flamingo 5.0 (code-named Imogene) has added RTL support to the following components:
- Command buttons
- Command button strips
- Command button panels
- Command menu buttons
- Command popup menus
RTL support is best illustrated by screenshots, so let’s begin (and yes, the Hebrew texts are notjust gibberish if you were wondering). The first screenshot shows a number of command buttons with different states and kinds (see the JavaOne presentation for more info) under the en_US locale – click for a full size image:

and here are the same buttons under iw_IL locale (with the matching texts) – click for a full size image:

The next screenshot shows a command button with a simple popup containing a few command menu buttons and a separator under en_US locale:

and the same button + menu under iw_IL locale:

Flamingo provides an API to embed a command button panel into the popup menu. Here is how such a menu looks like under en_US locale:

and the same rich popup menu under iw_IL locale:

Command button panels can be used as standalone containers. Here is a button panel with row-fill layout and group titles under en_US locale:

and the same button panel under iw_IL locale (note the order of the buttons):

Command button panel can be configured to use column fill layout:

and it is fully supported in RTL mode (note the order of buttons and groups):

This is the first step towards full RTL support in all Flamingo components. Stay tuned for more. 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.