## org.gjt.sp.jedit.gui
Class VariableGridLayout

    java.lang.Object
      org.gjt.sp.jedit.gui.VariableGridLayout

All Implemented Interfaces:
  java.awt.LayoutManager, java.awt.LayoutManager2, java.io.Serializable

public class VariableGridLayout
extends java.lang.Object
implements java.awt.LayoutManager2, java.io.Serializable

The `VariableGridLayout` class is a layout manager that lays out a container's components in a rectangular grid with variable cell sizes.

The container is divided into rectangles, and one component is placed in each rectangle. Each row is as large as the largest component in that row, and each column is as wide as the widest component in that column.

This behavior is basically the same as in `java.awt.GridLayout`, but with different row heights and column widths for each row/column.

For example, the following is an applet that lays out six buttons into three rows and two columns:

>      import java.awt.*;
>      import java.applet.Applet;
>      public class ButtonGrid extends Applet {
>          public void init() {
>              setLayout(new VariableGridLayout(VariableGridLayout.FIXED_NUM_COLUMNS, 2));
>              add(new Button("1"));
>              add(new Button("2"));
>              add(new Button("3"));
>              add(new Button("4"));
>              add(new Button("5"));
>              add(new Button("6"));
>          }
>      }

Programmer's remark: VariableGridLayout could be faster, if it would reside in the package java.awt, because then it could access some package private fields of `Container` or `Component`. Instead, it has to call `Component.getSize()`, which allocates memory on the heap.

Todo:

- Use alignmentX/Y property if the grid cell is larger than the preferred size of the component.
- Ability to span components over more than one cell horizontally

Version:
  1.0
Author:
  Dirk Moebius
See Also:
  `GridLayout`, Serialized Form

Field Summary
`static int` `FIXED_NUM_COLUMNS`
`static int` `FIXED_NUM_ROWS`

Constructor Summary
`VariableGridLayout()` Creates a variable grid layout manager with mode FIXED_NUM_ROWS, number of rows == 1 and zero horizontal and vertical gap.
`VariableGridLayout(int mode, int size)` Creates a variable grid layout manager with the specified mode and zero horizontal and vertical gap.
`VariableGridLayout(int mode, int size, int hgap, int vgap)`

Method Summary
`void` `addLayoutComponent(java.awt.Component component, java.lang.Object constraints)` Not used in this class.
`void` `addLayoutComponent(java.lang.String name, java.awt.Component component)` Not used in this class.
`float` `getLayoutAlignmentX(java.awt.Container container)` Always returns 0.5.
`float` `getLayoutAlignmentY(java.awt.Container container)` Always returns 0.5.
`void` `invalidateLayout(java.awt.Container container)`
`void` `layoutContainer(java.awt.Container parent)`
`java.awt.Dimension` `maximumLayoutSize(java.awt.Container parent)`
`java.awt.Dimension` `minimumLayoutSize(java.awt.Container parent)`
`java.awt.Dimension` `preferredLayoutSize(java.awt.Container parent)`
`void` `removeLayoutComponent(java.awt.Component component)` Not used in this class.
`java.lang.String` `toString()` Returns the string representation of this variable grid layout's values.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### FIXED_NUM_ROWS

    public static final int FIXED_NUM_ROWS

See Also:
  Constant Field Values

### FIXED_NUM_COLUMNS

    public static final int FIXED_NUM_COLUMNS

See Also:
  Constant Field Values

Constructor Detail

### VariableGridLayout

    public VariableGridLayout(int mode,
                              int size,
                              int hgap,
                              int vgap)

### VariableGridLayout

    public VariableGridLayout(int mode,
                              int size)

  Creates a variable grid layout manager with the specified mode and zero horizontal and vertical gap.

### VariableGridLayout

    public VariableGridLayout()

  Creates a variable grid layout manager with mode FIXED_NUM_ROWS, number of rows == 1 and zero horizontal and vertical gap.

Method Detail

### addLayoutComponent

    public void addLayoutComponent(java.lang.String name,
                                   java.awt.Component component)

  Not used in this class.

  Specified by:
    `addLayoutComponent` in interface `java.awt.LayoutManager`

### addLayoutComponent

    public void addLayoutComponent(java.awt.Component component,
                                   java.lang.Object constraints)

  Not used in this class.

  Specified by:
    `addLayoutComponent` in interface `java.awt.LayoutManager2`

### removeLayoutComponent

    public void removeLayoutComponent(java.awt.Component component)

  Not used in this class.

  Specified by:
    `removeLayoutComponent` in interface `java.awt.LayoutManager`

### getLayoutAlignmentX

    public float getLayoutAlignmentX(java.awt.Container container)

  Always returns 0.5.

  Specified by:
    `getLayoutAlignmentX` in interface `java.awt.LayoutManager2`

### getLayoutAlignmentY

    public float getLayoutAlignmentY(java.awt.Container container)

  Always returns 0.5.

  Specified by:
    `getLayoutAlignmentY` in interface `java.awt.LayoutManager2`

### preferredLayoutSize

    public java.awt.Dimension preferredLayoutSize(java.awt.Container parent)

  Specified by:
    `preferredLayoutSize` in interface `java.awt.LayoutManager`

### minimumLayoutSize

    public java.awt.Dimension minimumLayoutSize(java.awt.Container parent)

  Specified by:
    `minimumLayoutSize` in interface `java.awt.LayoutManager`

### maximumLayoutSize

    public java.awt.Dimension maximumLayoutSize(java.awt.Container parent)

  Specified by:
    `maximumLayoutSize` in interface `java.awt.LayoutManager2`

### layoutContainer

    public void layoutContainer(java.awt.Container parent)

  Specified by:
    `layoutContainer` in interface `java.awt.LayoutManager`

### invalidateLayout

    public void invalidateLayout(java.awt.Container container)

  Specified by:
    `invalidateLayout` in interface `java.awt.LayoutManager2`

### toString

    public java.lang.String toString()

  Returns the string representation of this variable grid layout's values.

  Returns:
    a string representation of this variable grid layout.