Class FormSpec

java.lang.Object
com.jgoodies.forms.layout.FormSpec
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
ColumnSpec, RowSpec

public abstract class FormSpec extends Object implements Serializable
An abstract class that specifies columns and rows in FormLayout by their default alignment, start size and resizing behavior. API users will use the subclasses ColumnSpec and RowSpec.

Also implements the parser for encoded column and row specifications and provides parser convenience behavior for its subclasses ColumnSpec and RowSpec.

TODO: Consider extracting the parser role to a separate class.

Version:
$Revision: 1.25 $
See Also:
  • Field Details

    • LEFT_ALIGN

      static final FormSpec.DefaultAlignment LEFT_ALIGN
      By default put components in the left.
    • RIGHT_ALIGN

      static final FormSpec.DefaultAlignment RIGHT_ALIGN
      By default put components in the right.
    • TOP_ALIGN

      static final FormSpec.DefaultAlignment TOP_ALIGN
      By default put the components in the top.
    • BOTTOM_ALIGN

      static final FormSpec.DefaultAlignment BOTTOM_ALIGN
      By default put the components in the bottom.
    • CENTER_ALIGN

      static final FormSpec.DefaultAlignment CENTER_ALIGN
      By default put the components in the center.
    • FILL_ALIGN

      static final FormSpec.DefaultAlignment FILL_ALIGN
      By default fill the column or row.
    • NO_ALIGN

      static final FormSpec.DefaultAlignment NO_ALIGN
      A special alignment intended for table columns only, where some cell renderers are not aligned.
    • VALUES

      private static final FormSpec.DefaultAlignment[] VALUES
      An array of all enumeration values used to canonicalize deserialized default alignments.
    • NO_GROW

      public static final double NO_GROW
      Gives a column or row a fixed size.
      See Also:
    • DEFAULT_GROW

      public static final double DEFAULT_GROW
      The default resize weight.
      See Also:
    • TOKEN_SEPARATOR_PATTERN

      private static final Pattern TOKEN_SEPARATOR_PATTERN
    • BOUNDS_SEPARATOR_PATTERN

      private static final Pattern BOUNDS_SEPARATOR_PATTERN
    • defaultAlignment

      private FormSpec.DefaultAlignment defaultAlignment
      Holds the default alignment that will be used if a cell does not override this default.
    • defaultAlignmentExplicitlySet

      private boolean defaultAlignmentExplicitlySet
      Describes whether the default alignment has been explictly set.
      See Also:
    • size

      private Size size
      Holds the size that describes how to size this column or row.
    • resizeWeight

      private double resizeWeight
      Holds the resize weight; is 0 if not used.
  • Constructor Details

    • FormSpec

      protected FormSpec(FormSpec.DefaultAlignment defaultAlignment, Size size, double resizeWeight)
      Constructs a FormSpec for the given default alignment, size, and resize weight. The resize weight must be a non-negative double; you can use NONE as a convenience value for no resize.
      Parameters:
      defaultAlignment - the spec's default alignment
      size - a constant, component or bounded size
      resizeWeight - the spec resize weight
      Throws:
      NullPointerException - if the size is null
      IllegalArgumentException - if the resizeWeight is negative
    • FormSpec

      protected FormSpec(FormSpec.DefaultAlignment defaultAlignment, String encodedDescription)
      Constructs a FormSpec from the specified encoded description. The description will be parsed to set initial values.
      Parameters:
      defaultAlignment - the default alignment
      encodedDescription - the encoded description
  • Method Details

    • getDefaultAlignment

      public final FormSpec.DefaultAlignment getDefaultAlignment()
      Returns the default alignment.
      Returns:
      the default alignment
    • getDefaultAlignmentExplictlySet

      public final boolean getDefaultAlignmentExplictlySet()
      Returns whether the default alignment has been explicitly set or not.
      Returns:
      true if the default alignment has been provided during the parse process, false if the default alignment has been set by the constructor at the instance creation time
    • getSize

      public final Size getSize()
      Returns the size.
      Returns:
      the size
    • getResizeWeight

      public final double getResizeWeight()
      Returns the current resize weight.
      Returns:
      the resize weight.
    • canGrow

      final boolean canGrow()
      Checks and answers whether this spec can grow or not. That is the case if and only if the resize weight is != NO_GROW.
      Returns:
      true if it can grow, false if it can't grow
    • isHorizontal

      abstract boolean isHorizontal()
      Returns if this is a horizontal specification (vs. vertical). Used to distinct between horizontal and vertical dialog units, which have different conversion factors.
      Returns:
      true for horizontal, false for vertical
    • setDefaultAlignment

      void setDefaultAlignment(FormSpec.DefaultAlignment defaultAlignment)
    • setSize

      void setSize(Size size)
    • setResizeWeight

      void setResizeWeight(double resizeWeight)
    • parseAndInitValues

      private void parseAndInitValues(String encodedDescription)
      Parses an encoded form specification and initializes all required fields. The encoded description must be in lower case.
      Parameters:
      encodedDescription - the FormSpec in an encoded format
      Throws:
      NullPointerException - if encodedDescription is null
      IllegalArgumentException - if encodedDescription is empty, whitespace, has no size, or is otherwise invalid
    • parseSize

      private Size parseSize(String token)
      Parses an encoded size spec and returns the size.
      Parameters:
      token - a token that represents a size, either bounded or plain
      Returns:
      the decoded Size
    • parseBoundedSize

      private Size parseBoundedSize(String token)
    • parseOldBoundedSize

      private Size parseOldBoundedSize(String token, boolean setMax)
      Parses an encoded compound size and sets the size fields. The compound size has format: max(<atomic size>;<atomic size2>) | min(<atomic size1>;<atomic size2>) One of the two atomic sizes must be a logical size, the other must be a size constant.
      Parameters:
      token - a token for a bounded size, e.g. "max(50dlu; pref)"
      setMax - if true we set a maximum size, otherwise a minimum size
      Returns:
      a Size that represents the parse result
    • parseAtomicSize

      private Size parseAtomicSize(String token)
      Decodes and returns an atomic size that is either a constant size or a component size.
      Parameters:
      token - the encoded size
      Returns:
      the decoded size either a constant or component size
    • parseResizeWeight

      private static double parseResizeWeight(String token)
      Decodes an encoded resize mode and resize weight and answers the resize weight.
      Parameters:
      token - the encoded resize weight
      Returns:
      the decoded resize weight
      Throws:
      IllegalArgumentException - if the string description is an invalid string representation
    • isConstant

      private static boolean isConstant(Size aSize)
    • toString

      public final String toString()
      Returns a string representation of this form specification. The string representation consists of three elements separated by a colon (":"), first the alignment, second the size, and third the resize spec.

      This method does not return an encoded version of this object; the contrary is the case. Many instances will return a string that cannot be parsed.

      Note: The string representation may change at any time. For parsing use encode() instead.

      Overrides:
      toString in class Object
      Returns:
      a string representation of the form specification.
    • toShortString

      public final String toShortString()
      Returns a string representation of this form specification. The string representation consists of three elements separated by a colon (":"), first the alignment, second the size, and third the resize spec.

      This method does not return an encoded version of this object; the contrary is the case. Many instances will return a string that cannot be parsed.

      Note: The string representation may change at any time. For parsing use encode() instead.

      Returns:
      a string representation of the form specification.
    • encode

      public final String encode()
      Returns a short and parseable string representation of this form specification. The string will omit the alignment and resize specifications if these are the default values.

      Returns:
      a string representation of the form specification.
      Since:
      1.2
      See Also:
    • maximumSize

      final int maximumSize(Container container, List components, FormLayout.Measure minMeasure, FormLayout.Measure prefMeasure, FormLayout.Measure defaultMeasure)
      Computes the maximum size for the given list of components, using this form spec and the specified measure.

      Invoked by FormLayout to determine the size of one of my elements

      Parameters:
      container - the layout container
      components - the list of components to measure
      minMeasure - the measure used to determine the minimum size
      prefMeasure - the measure used to determine the preferred size
      defaultMeasure - the measure used to determine the default size
      Returns:
      the maximum size in pixels