com.jgoodies.forms.layout
Class FormSpec

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

public abstract class FormSpec
extends java.lang.Object
implements java.io.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.

Version:
$Revision: 54721 $
Author:
Karsten Lentzsch
See Also:
ColumnSpec, RowSpec, FormLayout, CellConstraints, Serialized Form

Nested Class Summary
static class FormSpec.DefaultAlignment
          An ordinal-based serializable typesafe enumeration for the column and row default alignment types.
 
Field Summary
(package private) static FormSpec.DefaultAlignment BOTTOM_ALIGN
          By default put the components in the bottom.
(package private) static FormSpec.DefaultAlignment CENTER_ALIGN
          By default put the components in the center.
static double DEFAULT_GROW
          The default resize weight.
private  FormSpec.DefaultAlignment defaultAlignment
          Holds the default alignment that will be used if a cell does not override this default.
(package private) static FormSpec.DefaultAlignment FILL_ALIGN
          By default fill the column or row.
(package private) static FormSpec.DefaultAlignment LEFT_ALIGN
          By default put components in the left.
static double NO_GROW
          Gives a column or row a fixed size.
private  double resizeWeight
          Holds the resize weight; is 0 if not used.
(package private) static FormSpec.DefaultAlignment RIGHT_ALIGN
          By default put components in the right.
private  Size size
          Holds the size that describes how to size this column or row.
(package private) static FormSpec.DefaultAlignment TOP_ALIGN
          By default put the components in the top.
private static FormSpec.DefaultAlignment[] VALUES
          An array of all enumeration values used to canonicalize deserialized default alignments.
 
Constructor Summary
protected FormSpec(FormSpec.DefaultAlignment defaultAlignment, Size size, double resizeWeight)
          Constructs a FormSpec for the given default alignment, size, and resize weight.
protected FormSpec(FormSpec.DefaultAlignment defaultAlignment, java.lang.String encodedDescription)
          Constructs a FormSpec from the specified encoded description.
 
Method Summary
(package private)  boolean canGrow()
          Checks and answers whether this spec can grow or not.
private  Size decodeAtomicSize(java.lang.String token)
          Decodes and returns an atomic size that is either a constant size or a component size.
private  double decodeResize(java.lang.String token)
          Decodes an encoded resize mode and resize weight and answers the resize weight.
 FormSpec.DefaultAlignment getDefaultAlignment()
          Returns the default alignment.
 double getResizeWeight()
          Returns the current resize weight.
 Size getSize()
          Returns the size.
(package private) abstract  boolean isHorizontal()
          Returns if this is a horizontal specification (vs. vertical).
(package private)  int maximumSize(java.awt.Container container, java.util.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.
private  Size parseAndInitBoundedSize(java.lang.String token, boolean setMax)
          Parses an encoded compound size and sets the size fields.
private  void parseAndInitSize(java.lang.String token)
          Parses an encoded size spec and initializes the size fields.
private  void parseAndInitValues(java.lang.String encodedDescription)
          Parses an encoded form spec and initializes all required fields.
 java.lang.String toShortString()
          Returns a string representation of this form specification.
 java.lang.String toString()
          Returns a string representation of this form specification.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

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.


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:
Constant Field Values

DEFAULT_GROW

public static final double DEFAULT_GROW
The default resize weight.

See Also:
Constant Field Values

defaultAlignment

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


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 Detail

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:
java.lang.IllegalArgumentException - if the resize weight is negative

FormSpec

protected FormSpec(FormSpec.DefaultAlignment defaultAlignment,
                   java.lang.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 Detail

getDefaultAlignment

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

Returns:
the default alignment

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

parseAndInitValues

private void parseAndInitValues(java.lang.String encodedDescription)
Parses an encoded form spec and initializes all required fields. The encoded description must be in lower case.

Parameters:
encodedDescription - the FormSpec in an encoded format
Throws:
java.lang.IllegalArgumentException - if the string is empty, has no size, or is otherwise invalid

parseAndInitSize

private void parseAndInitSize(java.lang.String token)
Parses an encoded size spec and initializes the size fields.

Parameters:
token - a token that represents a size, either bounded or plain

parseAndInitBoundedSize

private Size parseAndInitBoundedSize(java.lang.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

decodeAtomicSize

private Size decodeAtomicSize(java.lang.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

decodeResize

private double decodeResize(java.lang.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:
java.lang.IllegalArgumentException - if the string description is an invalid string representation

toString

public final java.lang.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 a decoded 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. It is strongly recommended to not use this string for parsing purposes.

Overrides:
toString in class java.lang.Object
Returns:
a string representation of the form specification.

toShortString

public final java.lang.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 a decoded 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. It is strongly recommended to not use this string for parsing purposes.

Returns:
a string representation of the form specification.

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

maximumSize

final int maximumSize(java.awt.Container container,
                      java.util.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