Flamingo component suite 3.0 – the first drop

November 19th, 2007

After writing about the project vision and posting a few teaser screenshots, it’s finally time for the first source and binary drops of Flamingo component suite version 3.0 code-named Deirdre. Over the next few entries I will write more about each one of the components, how it fits into the project vision, how it is implemented and how you can use it in your application. Right now i will just give a brief overview of the components; if you’re interested in the code or the test applications, you can find those in the Documents & Files section and the CVS repository.

  • The org.jvnet.flamingo.bcb contains the base class for the breadcrumb bar components, while the org.jvnet.flamingo.bcb.core contains pre-packaged core implementations that allow navigating local file system, wrap an existing tree model and navigate a remote SVN repository.
  • The org.jvnet.flamingo.common contains most of the common components:
    • AbstractCommandButton and its extensions, JCommandButton and JToggleCommandButton provide powerful extensions to the core JButton and JToggleButton classes, adding optional popup action area (split buttons) and automatic resizability with adaptive layout.
    • JCommandButtonPanel is a host panel for AbstractCommandButtons with adaptive layout, groupings and optional single selection mode. It can be used to provide functionality similar to Windows Explorer or Leopard Control Panel.
    • AbstractFileViewPanel is an extension of JCommandButtonPanel with support for progress tracking and canceling, backed up by a SwingWorker. Sample usage is illustrated in test.imageviewer.Viewer that implements a simple image viewer (also shows an example of local file breadcrumb bar and resizable icons).
    • JPopupPanel is the base class that allows showing any Component in a popup window, with support for multiple (cascading) rich popup panels in the PopupPanelManager class . The JIconPopupPanel allows wrapping a JCommandButtonPanel in a popup with configurable scrolling and maximum width.
  • The org.jvnet.flamingo.common.icon contains the classes for resizable icons. The base interface is ResizableIcon, extending the core Icon interface and adding a number of methods for resizability support. Other classes in this package provide utility implementations (such as ImageWrapperResizableIcon that creates a resizable icon from a specified image).
  • The org.jvnet.flamingo.ribbon contains the implementation of Office 2007 ribbon component. It reuses the vast majority of other Flamingo components such as JCommandButton, JToggleCommandButton, JPopupPanel, JIconPopupPanel and ResizableIcon.
  • The org.jvnet.flamingo.svg contains classes that allow showing an SVG image as a ResizableIcon and to transcode SVG image to the matching Java2D code. The implementation is backed by the Apache Batik library.

For more information you can either wait for the next few entries or dive right into the code at the project site. Note that while most of the API and the implementation is stable, some of the functionality is either missing or will be refactored. If you have any questions, post them at project forums or mailing lists.