com.orsoncharts.table

## Class FlowElement

- java.lang.Object
- - com.orsoncharts.table.AbstractTableElement
  - - com.orsoncharts.table.FlowElement

- All Implemented Interfaces:
    ContainerElement, TableElement, java.io.Serializable

      public class FlowElement
      extends AbstractTableElement
      implements ContainerElement, java.io.Serializable

  A table element that displays a list of sub-elements in a flow layout.
  NOTE: This class is serializable, but the serialization format is subject to change in future releases and should not be relied upon for persisting instances of this class.
  See Also:
    Serialized Form

- - ### Field Summary

    - ### Fields inherited from interface com.orsoncharts.table.TableElement

      `CLASS`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `FlowElement()` Creates a new instance (equivalent to `new FlowElement(HAlign.CENTER, 2)`).
    `FlowElement(HAlign alignment, int hgap)` Creates a new instance with the specified attributes.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addElement(TableElement element)` Adds a sub-element to the list.
    `void` | `draw(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D bounds)` Draws the element within the specified bounds.
    `void` | `draw(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D bounds, TableElementOnDraw onDrawHandler)` Draws the element within the specified bounds.
    `boolean` | `equals(java.lang.Object obj)` Tests this element for equality with an arbitrary object.
    `java.util.List<TableElement>` | `getElements()` Returns a (new) list containing the elements in this flow layout.
    `int` | `getHGap()` Returns the horizontal gap between elements, specified in Java2D units.
    `HAlign` | `getHorizontalAlignment()` Returns the horizontal alignment of items within rows.
    `java.util.List<java.awt.geom.Rectangle2D>` | `layoutElements(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D bounds, java.util.Map<java.lang.String,java.lang.Object> constraints)` Calculates the layout of the elements for the given bounds and constraints.
    `java.awt.geom.Dimension2D` | `preferredSize(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D bounds, java.util.Map<java.lang.String,java.lang.Object> constraints)` Returns the preferred size of the element (including insets).
    `void` | `receive(TableElementVisitor visitor)` Receives a visitor.
    `void` | `setHGap(int gap)` Sets the horizontal gap between elements.
    `void` | `setHorizontalAlignment(HAlign alignment)` Sets the horizontal alignment.

    - ### Methods inherited from class com.orsoncharts.table.AbstractTableElement

      `getBackground, getInsets, getProperty, getRefPoint, getTag, preferredSize, setBackground, setBackgroundColor, setInsets, setProperty, setRefPoint, setTag`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface com.orsoncharts.table.TableElement

      `getProperty, getRefPoint, preferredSize, setProperty`

- - ### Constructor Detail

    - #### FlowElement

          public FlowElement()

      Creates a new instance (equivalent to `new FlowElement(HAlign.CENTER, 2)`).

    - #### FlowElement

          public FlowElement(HAlign alignment,
                             int hgap)

      Creates a new instance with the specified attributes.
      Parameters:
        `alignment` - the horizontal alignment of the elements within each row (`null` not permitted).
        `hgap` - the gap between elements.
      Since:
        1.1

  - ### Method Detail

    - #### getHGap

          public int getHGap()

      Returns the horizontal gap between elements, specified in Java2D units. The default value is `2`.
      Returns:
        The horizontal gap.

    - #### setHGap

          public void setHGap(int gap)

      Sets the horizontal gap between elements.
      Parameters:
        `gap` - the gap (in Java2D units).

    - #### getHorizontalAlignment

          public HAlign getHorizontalAlignment()

      Returns the horizontal alignment of items within rows. The default value is `HAlign.CENTER`.
      Returns:
        The horizontal alignment (never `null`).
      Since:
        1.1

    - #### setHorizontalAlignment

          public void setHorizontalAlignment(HAlign alignment)

      Sets the horizontal alignment.
      Parameters:
        `alignment` - the alignment (`null` not permitted).
      Since:
        1.1

    - #### getElements

          public java.util.List<TableElement> getElements()

      Returns a (new) list containing the elements in this flow layout.
      Returns:
        A list containing the elements (possibly empty, but never `null`).

    - #### addElement

          public void addElement(TableElement element)

      Adds a sub-element to the list.
      Specified by:
        `addElement` in interface `ContainerElement`
      Parameters:
        `element` - the element (`null` not permitted).

    - #### receive

          public void receive(TableElementVisitor visitor)

      Receives a visitor. The implementation ensures that the vistor visits all the elements belonging to the flow.
      Specified by:
        `receive` in interface `TableElement`
      Parameters:
        `visitor` - the visitor (`null` not permitted).
      Since:
        1.2

    - #### preferredSize

          public java.awt.geom.Dimension2D preferredSize(java.awt.Graphics2D g2,
                                                         java.awt.geom.Rectangle2D bounds,
                                                         java.util.Map<java.lang.String,java.lang.Object> constraints)

      Returns the preferred size of the element (including insets).
      Specified by:
        `preferredSize` in interface `TableElement`
      Specified by:
        `preferredSize` in class `AbstractTableElement`
      Parameters:
        `g2` - the graphics target.
        `bounds` - the bounds.
        `constraints` - the constraints (ignored for now).
      Returns:
        The preferred size.

    - #### layoutElements

          public java.util.List<java.awt.geom.Rectangle2D> layoutElements(java.awt.Graphics2D g2,
                                                                          java.awt.geom.Rectangle2D bounds,
                                                                          java.util.Map<java.lang.String,java.lang.Object> constraints)

      Calculates the layout of the elements for the given bounds and constraints.
      Specified by:
        `layoutElements` in interface `TableElement`
      Parameters:
        `g2` - the graphics target (`null` not permitted).
        `bounds` - the bounds (`null` not permitted).
        `constraints` - the constraints (not used here).
      Returns:
        A list of positions for the sub-elements.

    - #### draw

          public void draw(java.awt.Graphics2D g2,
                           java.awt.geom.Rectangle2D bounds)

      Draws the element within the specified bounds.
      Specified by:
        `draw` in interface `TableElement`
      Parameters:
        `g2` - the graphics target (`null` not permitted).
        `bounds` - the bounds (`null` not permitted).

    - #### draw

          public void draw(java.awt.Graphics2D g2,
                           java.awt.geom.Rectangle2D bounds,
                           TableElementOnDraw onDrawHandler)

      Draws the element within the specified bounds.
      Specified by:
        `draw` in interface `TableElement`
      Parameters:
        `g2` - the graphics target (`null` not permitted).
        `bounds` - the bounds (`null` not permitted).
        `onDrawHandler` - an object that will receive notification before and after the element is drawn (`null` permitted).
      Since:
        1.3

    - #### equals

          public boolean equals(java.lang.Object obj)

      Tests this element for equality with an arbitrary object.
      Overrides:
        `equals` in class `AbstractTableElement`
      Parameters:
        `obj` - the object (`null` permitted).
      Returns:
        A boolean.