Toolkits Swing
  • linux
  • macosx
  • windows
  • solaris
License Apache Software License 2.0
Documentation No documentation link provided

Downloads 606

Authored by:

Andres Almiray

This plugin provides a coverflow component useful for displaying an image set. The component is based on Romain Guy's work explained at In 2008 Kevin Long refactored the code to be more generic and component-like. See Finally the components received another face lift in terms of observable properties and the usage of a ListModel to hold the items.


The following nodes will become available on a View script upon installing this plugin

Node Property Type Default Required Bindable Notes
stackLayout exposes BOTTOM and TOP as constraints
gradientPanel gradientStart Color Color(110, 110, 110) no yes
gradientEnd Color Color(0, 0, 0) no yes
imageFlow items ImageFlowItem[] no no alternate values may be of type List<ImageFlowItem>, ListModel or ImageFlow
amount int 5 no yes
sigma double no yes
itemFont Font Font("Dialog", Font.PLAIN, 24) no yes
itemTextColor Color Color.WHITE no yes
itemSpacing double 0.4 no yes
imageFlowItem file File no no value can be a String. Alternate to url:, image:, inputStream:, resource:
url URL no no value can be a String. Alternate to file:, image:, inputStream:, resource:
image Image no no value can be a String. Alternate to file:, url:, inputStream:, resource:
inputStream InputStream no no Alternate to file:, url:, image:, resource:
resource String no no Alternate to file:, url:, image:, inputStream:

imageFlowItem can be nested inside imageFlow if and only if the model is mutable.

ImageFlow exposes the following methods to help you navigate and keep track of the current selection:

  • previous() - navigates one step backward.
  • next() - navigates one step forward.
  • getMinSelectionIndex() - returns the smallest selected cell index.
  • getMaxSelectionIndex() - returns the largest selected cell index.
  • getSelectedIndex() - returns the first selected index; returns -1 if there is no selected item.
  • getSelectedValue() - returns the first selected value, or null if the selection is empty.
  • isSelectedIndex(int) - returns true if the specified index is selected.
  • setSelectedIndex(int) - selects a single cell.
  • addListSelectionListener(ListSelectionListener) - adds a listener to the list that's notified each time a change to the selection occur.
  • removeListSelectionListener(ListSelectionListener) - removes a listener to the list that's notified each time a change to the selection occur.

The following view script shows a basic usage. Not that imageFlow allows nesting of imageFlowItem given that its defualt model is mutable.

    application(title: 'Coverflow',
      size: [520,320],
      locationByPlatform: true,
      iconImage: imageIcon('/griffon-icon-48x48.png').image,
      iconImages: [imageIcon('/griffon-icon-48x48.png').image,
                   imageIcon('/griffon-icon-16x16.png').image]) {
      panel(constraints: CENTER) {
        gradientPanel(constraints: BOTTOM)
        imageFlow(id: "flow", constraints: TOP) {
          (1..10). each { i ->
            imageFlowItem(resource: "/griffon-icon-128x128.png", label: "Icon $i")
      panel(constraints: WEST) {
        button("<",  actionPerformed: { flow.previous() })
      panel(constraints: EAST) {
        button(">",  actionPerformed: { })