com.vaadin.ui
Class GridLayout

java.lang.Object
  extended by com.vaadin.terminal.AbstractClientConnector
      extended by com.vaadin.ui.AbstractComponent
          extended by com.vaadin.ui.AbstractComponentContainer
              extended by com.vaadin.ui.AbstractLayout
                  extended by com.vaadin.ui.GridLayout
All Implemented Interfaces:
LayoutEvents.LayoutClickNotifier, MethodEventSource, Connector, ClientConnector, RpcTarget, Sizeable, Vaadin6Component, VariableOwner, Component, ComponentContainer, HasComponents, Layout, Layout.AlignmentHandler, Layout.MarginHandler, Layout.SpacingHandler, Serializable, Iterable<Component>, EventListener

public class GridLayout
extends AbstractLayout
implements Layout.AlignmentHandler, Layout.SpacingHandler, LayoutEvents.LayoutClickNotifier, Vaadin6Component

A layout where the components are laid out on a grid using cell coordinates.

The GridLayout also maintains a cursor for adding components in left-to-right, top-to-bottom order.

Each component in a GridLayout uses a defined area (column1,row1,column2,row2) from the grid. The components may not overlap with the existing components - if you try to do so you will get an GridLayout.OverlapsException. Adding a component with cursor automatically extends the grid by increasing the grid height.

The grid coordinates, which are specified by a row and column index, always start from 0 for the topmost row and the leftmost column.

Since:
3.0
Version:
7.0.0.alpha3
Author:
Vaadin Ltd.
See Also:
Serialized Form

Nested Class Summary
 class GridLayout.Area
          Defines a rectangular area of cells in a GridLayout.
 class GridLayout.OutOfBoundsException
          An Exception object which is thrown when an area exceeds the bounds of the grid.
 class GridLayout.OverlapsException
          Gridlayout does not support laying components on top of each other.
 
Nested classes/interfaces inherited from class com.vaadin.ui.AbstractComponent
AbstractComponent.ComponentErrorEvent, AbstractComponent.ComponentErrorHandler
 
Nested classes/interfaces inherited from interface com.vaadin.terminal.VariableOwner
VariableOwner.ErrorEvent
 
Nested classes/interfaces inherited from interface com.vaadin.ui.Component
Component.ErrorEvent, Component.ErrorListener, Component.Event, Component.Focusable, Component.Listener
 
Nested classes/interfaces inherited from interface com.vaadin.terminal.Sizeable
Sizeable.Unit
 
Nested classes/interfaces inherited from interface com.vaadin.ui.Layout
Layout.AlignmentHandler, Layout.MarginHandler, Layout.MarginInfo, Layout.SpacingHandler
 
Nested classes/interfaces inherited from interface com.vaadin.ui.ComponentContainer
ComponentContainer.ComponentAttachEvent, ComponentContainer.ComponentAttachListener, ComponentContainer.ComponentDetachEvent, ComponentContainer.ComponentDetachListener
 
Field Summary
 
Fields inherited from class com.vaadin.ui.AbstractLayout
margins
 
Fields inherited from interface com.vaadin.ui.Layout.AlignmentHandler
ALIGNMENT_BOTTOM, ALIGNMENT_HORIZONTAL_CENTER, ALIGNMENT_LEFT, ALIGNMENT_RIGHT, ALIGNMENT_TOP, ALIGNMENT_VERTICAL_CENTER
 
Fields inherited from interface com.vaadin.terminal.Sizeable
SIZE_UNDEFINED, UNITS_CM, UNITS_EM, UNITS_EX, UNITS_INCH, UNITS_MM, UNITS_PERCENTAGE, UNITS_PICAS, UNITS_PIXELS, UNITS_POINTS
 
Constructor Summary
GridLayout()
          Constructs an empty (1x1) grid layout that is extended as needed.
GridLayout(int columns, int rows)
          Constructor for a grid of given size (number of columns and rows).
 
Method Summary
 void addComponent(Component component)
          Adds the component into this container to the cursor position.
 void addComponent(Component component, int column, int row)
          Adds the component to the grid in cells column1,row1 (NortWest corner of the area.) End coordinates (SouthEast corner of the area) are the same as column1,row1.
 void addComponent(Component component, int column1, int row1, int column2, int row2)
           Adds a component to the grid in the specified area.
 void addListener(LayoutEvents.LayoutClickListener listener)
          Add a click listener to the layout.
 void changeVariables(Object source, Map<String,Object> variables)
          Called when one or more variables handled by the implementing class are changed.
 float getColumnExpandRatio(int columnIndex)
          Returns the expand ratio of given column
 int getColumns()
          Get the number of columns in the grid.
 Component getComponent(int x, int y)
          Gets the Component at given index.
 Alignment getComponentAlignment(Component childComponent)
          Returns the current Alignment of given component.
 GridLayout.Area getComponentArea(Component component)
          Returns information about the area where given component is laid in the GridLayout.
 int getComponentCount()
          Gets the number of components contained in the layout.
 Iterator<Component> getComponentIterator()
          Gets an Iterator for the components contained in the layout.
 int getCursorX()
          Gets the current x-position (column) of the cursor.
 int getCursorY()
          Gets the current y-position (row) of the cursor.
 float getRowExpandRatio(int rowIndex)
          Returns the expand ratio of given row.
 int getRows()
          Get the number of rows in the grid.
 GridLayoutState getState()
          Returns the shared state bean with information to be sent from the server to the client.
 void insertRow(int row)
          Inserts an empty row at the specified position in the grid.
 boolean isSpacing()
           
 void newLine()
          Forces the next component to be added at the beginning of the next line.
 void paintContent(PaintTarget target)
          Paints the contents of this component.
 void removeAllComponents()
          Removes all components from the container.
 void removeComponent(Component component)
          Removes the specified component from the layout.
 void removeComponent(int column, int row)
          Removes the component specified by its cell coordinates.
 void removeListener(LayoutEvents.LayoutClickListener listener)
          Removes an LayoutClickListener.
 void removeRow(int row)
          Removes a row and all the components in the row.
 void replaceComponent(Component oldComponent, Component newComponent)
          Replaces the component in the container with another one without changing position.
 void setColumnExpandRatio(int columnIndex, float ratio)
          Sets the expand ratio of given column.
 void setColumns(int columns)
          Sets the number of columns in the grid.
 void setComponentAlignment(Component childComponent, Alignment alignment)
          Set alignment for one contained component in this layout.
 void setComponentAlignment(Component childComponent, int horizontalAlignment, int verticalAlignment)
          Set alignment for one contained component in this layout.
 void setCursorX(int cursorX)
          Sets the current cursor x-position.
 void setCursorY(int cursorY)
          Sets the current y-coordinate (row) of the cursor.
 void setRowExpandRatio(int rowIndex, float ratio)
          Sets the expand ratio of given row.
 void setRows(int rows)
          Sets the number of rows in the grid.
 void setSpacing(boolean spacing)
          Enable spacing between child components within this layout.
 void space()
          Moves the cursor forward by one.
 
Methods inherited from class com.vaadin.ui.AbstractLayout
getMargin, setMargin, setMargin, setMargin
 
Methods inherited from class com.vaadin.ui.AbstractComponentContainer
addListener, addListener, fireComponentAttachEvent, fireComponentDetachEvent, isComponentVisible, iterator, moveComponentsFrom, removeListener, removeListener, setHeight, setVisible, setWidth
 
Methods inherited from class com.vaadin.ui.AbstractComponent
addListener, addListener, addListener, addListener, addShortcutListener, addStyleName, attach, detach, findAncestor, fireComponentErrorEvent, fireComponentEvent, fireEvent, focus, getActionManager, getApplication, getCaption, getComponentError, getData, getDebugId, getDescription, getErrorHandler, getErrorMessage, getHeight, getHeightUnits, getIcon, getListeners, getLocale, getParent, getRoot, getStyle, getStyleName, getWidth, getWidthUnits, handleError, hasListeners, isConnectorEnabled, isEnabled, isImmediate, isReadOnly, isVisible, removeListener, removeListener, removeListener, removeListener, removeListener, removeShortcutListener, removeStyleName, requestRepaint, setCaption, setComponentError, setData, setDebugId, setDescription, setEnabled, setErrorHandler, setHeight, setIcon, setImmediate, setLocale, setParent, setReadOnly, setSizeFull, setSizeUndefined, setStyle, setStyleName, setWidth, updateState
 
Methods inherited from class com.vaadin.terminal.AbstractClientConnector
addExtension, addMethodInvocationToQueue, createState, getAllChildrenIterable, getConnectorId, getExtensions, getRpcManager, getRpcProxy, getStateType, registerRpc, registerRpc, removeExtension, requestRepaintAll, retrievePendingRpcCalls
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.vaadin.terminal.VariableOwner
isEnabled, isImmediate
 
Methods inherited from interface com.vaadin.ui.Component
addListener, addStyleName, attach, getApplication, getCaption, getDebugId, getIcon, getLocale, getParent, getRoot, getStyleName, isEnabled, isReadOnly, isVisible, removeListener, removeStyleName, setCaption, setDebugId, setEnabled, setIcon, setReadOnly, setStyleName, setVisible, updateState
 
Methods inherited from interface com.vaadin.terminal.gwt.server.ClientConnector
detach, getExtensions, getStateType, isConnectorEnabled, removeExtension, requestRepaint, requestRepaintAll, retrievePendingRpcCalls, setParent
 
Methods inherited from interface com.vaadin.terminal.gwt.client.Connector
getConnectorId
 
Methods inherited from interface com.vaadin.terminal.gwt.server.RpcTarget
getRpcManager
 
Methods inherited from interface com.vaadin.terminal.Sizeable
getHeight, getHeightUnits, getWidth, getWidthUnits, setHeight, setHeight, setSizeFull, setSizeUndefined, setWidth, setWidth
 
Methods inherited from interface com.vaadin.ui.ComponentContainer
addListener, addListener, moveComponentsFrom, removeListener, removeListener
 
Methods inherited from interface com.vaadin.ui.HasComponents
isComponentVisible
 
Methods inherited from interface java.lang.Iterable
iterator
 

Constructor Detail

GridLayout

public GridLayout(int columns,
                  int rows)
Constructor for a grid of given size (number of columns and rows). The grid may grow or shrink later. Grid grows automatically if you add components outside its area.

Parameters:
columns - Number of columns in the grid.
rows - Number of rows in the grid.

GridLayout

public GridLayout()
Constructs an empty (1x1) grid layout that is extended as needed.

Method Detail

getState

public GridLayoutState getState()
Description copied from class: AbstractComponent
Returns the shared state bean with information to be sent from the server to the client. Subclasses should override this method and set any relevant fields of the state returned by super.getState().

Specified by:
getState in interface Connector
Specified by:
getState in interface Component
Overrides:
getState in class AbstractLayout
Returns:
updated component shared state

addComponent

public void addComponent(Component component,
                         int column1,
                         int row1,
                         int column2,
                         int row2)
                  throws GridLayout.OverlapsException,
                         GridLayout.OutOfBoundsException

Adds a component to the grid in the specified area. The area is defined by specifying the upper left corner (column1, row1) and the lower right corner (column2, row2) of the area. The coordinates are zero-based.

If the area overlaps with any of the existing components already present in the grid, the operation will fail and an GridLayout.OverlapsException is thrown.

Parameters:
component - the component to be added.
column1 - the column of the upper left corner of the area c is supposed to occupy. The leftmost column has index 0.
row1 - the row of the upper left corner of the area c is supposed to occupy. The topmost row has index 0.
column2 - the column of the lower right corner of the area c is supposed to occupy.
row2 - the row of the lower right corner of the area c is supposed to occupy.
Throws:
GridLayout.OverlapsException - if the new component overlaps with any of the components already in the grid.
GridLayout.OutOfBoundsException - if the cells are outside the grid area.

addComponent

public void addComponent(Component component,
                         int column,
                         int row)
                  throws GridLayout.OverlapsException,
                         GridLayout.OutOfBoundsException
Adds the component to the grid in cells column1,row1 (NortWest corner of the area.) End coordinates (SouthEast corner of the area) are the same as column1,row1. The coordinates are zero-based. Component width and height is 1.

Parameters:
component - the component to be added.
column - the column index, starting from 0.
row - the row index, starting from 0.
Throws:
GridLayout.OverlapsException - if the new component overlaps with any of the components already in the grid.
GridLayout.OutOfBoundsException - if the cell is outside the grid area.

newLine

public void newLine()
Forces the next component to be added at the beginning of the next line.

Sets the cursor column to 0 and increments the cursor row by one.

By calling this function you can ensure that no more components are added right of the previous component.

See Also:
space()

space

public void space()
Moves the cursor forward by one. If the cursor goes out of the right grid border, it is moved to the first column of the next row.

See Also:
newLine()

addComponent

public void addComponent(Component component)
Adds the component into this container to the cursor position. If the cursor position is already occupied, the cursor is moved forwards to find free position. If the cursor goes out from the bottom of the grid, the grid is automatically extended.

Specified by:
addComponent in interface ComponentContainer
Overrides:
addComponent in class AbstractComponentContainer
Parameters:
component - the component to be added.
See Also:
ComponentContainer.addComponent(Component)

removeComponent

public void removeComponent(Component component)
Removes the specified component from the layout.

Specified by:
removeComponent in interface ComponentContainer
Overrides:
removeComponent in class AbstractComponentContainer
Parameters:
component - the component to be removed.
See Also:
ComponentContainer.removeComponent(Component)

removeComponent

public void removeComponent(int column,
                            int row)
Removes the component specified by its cell coordinates.

Parameters:
column - the component's column, starting from 0.
row - the component's row, starting from 0.

getComponentIterator

public Iterator<Component> getComponentIterator()
Gets an Iterator for the components contained in the layout. By using the Iterator it is possible to step through the contents of the layout.

Specified by:
getComponentIterator in interface HasComponents
Returns:
the Iterator of the components inside the layout.

getComponentCount

public int getComponentCount()
Gets the number of components contained in the layout. Consistent with the iterator returned by getComponentIterator().

Specified by:
getComponentCount in interface ComponentContainer
Returns:
the number of contained components

changeVariables

public void changeVariables(Object source,
                            Map<String,Object> variables)
Description copied from interface: VariableOwner
Called when one or more variables handled by the implementing class are changed.

Specified by:
changeVariables in interface VariableOwner
Parameters:
source - the Source of the variable change. This is the origin of the event. For example in Web Adapter this is the request.
variables - the Mapping from variable names to new variable values.

paintContent

public void paintContent(PaintTarget target)
                  throws PaintException
Paints the contents of this component.

Specified by:
paintContent in interface Vaadin6Component
Parameters:
target - the Paint Event.
Throws:
PaintException - if the paint operation failed.

getComponentAlignment

public Alignment getComponentAlignment(Component childComponent)
Description copied from interface: Layout.AlignmentHandler
Returns the current Alignment of given component.

Specified by:
getComponentAlignment in interface Layout.AlignmentHandler
Returns:
the Alignment

setColumns

public void setColumns(int columns)
Sets the number of columns in the grid. The column count can not be reduced if there are any areas that would be outside of the shrunk grid.

Parameters:
columns - the new number of columns in the grid.

getColumns

public int getColumns()
Get the number of columns in the grid.

Returns:
the number of columns in the grid.

setRows

public void setRows(int rows)
Sets the number of rows in the grid. The number of rows can not be reduced if there are any areas that would be outside of the shrunk grid.

Parameters:
rows - the new number of rows in the grid.

getRows

public int getRows()
Get the number of rows in the grid.

Returns:
the number of rows in the grid.

getCursorX

public int getCursorX()
Gets the current x-position (column) of the cursor.

The cursor position points the position for the next component that is added without specifying its coordinates (grid cell). When the cursor position is occupied, the next component will be added to first free position after the cursor.

Returns:
the grid column the cursor is on, starting from 0.

setCursorX

public void setCursorX(int cursorX)
Sets the current cursor x-position. This is usually handled automatically by GridLayout.

Parameters:
cursorX -

getCursorY

public int getCursorY()
Gets the current y-position (row) of the cursor.

The cursor position points the position for the next component that is added without specifying its coordinates (grid cell). When the cursor position is occupied, the next component will be added to the first free position after the cursor.

Returns:
the grid row the Cursor is on.

setCursorY

public void setCursorY(int cursorY)
Sets the current y-coordinate (row) of the cursor. This is usually handled automatically by GridLayout.

Parameters:
cursorY - the row number, starting from 0 for the topmost row.

replaceComponent

public void replaceComponent(Component oldComponent,
                             Component newComponent)
Description copied from interface: ComponentContainer
Replaces the component in the container with another one without changing position.

This method replaces component with another one is such way that the new component overtakes the position of the old component. If the old component is not in the container, the new component is added to the container. If the both component are already in the container, their positions are swapped. Component attach and detach events should be taken care as with add and remove.

Specified by:
replaceComponent in interface ComponentContainer
Parameters:
oldComponent - the old component that will be replaced.
newComponent - the new component to be replaced.

removeAllComponents

public void removeAllComponents()
Description copied from class: AbstractComponentContainer
Removes all components from the container. This should probably be re-implemented in extending classes for a more powerful implementation.

Specified by:
removeAllComponents in interface ComponentContainer
Overrides:
removeAllComponents in class AbstractComponentContainer

setComponentAlignment

public void setComponentAlignment(Component childComponent,
                                  int horizontalAlignment,
                                  int verticalAlignment)
Description copied from interface: Layout.AlignmentHandler
Set alignment for one contained component in this layout. Alignment is calculated as a bit mask of the two passed values.

Specified by:
setComponentAlignment in interface Layout.AlignmentHandler
Parameters:
childComponent - the component to align within it's layout cell.
horizontalAlignment - the horizontal alignment for the child component (left, center, right). Use ALIGNMENT constants.
verticalAlignment - the vertical alignment for the child component (top, center, bottom). Use ALIGNMENT constants.

setComponentAlignment

public void setComponentAlignment(Component childComponent,
                                  Alignment alignment)
Description copied from interface: Layout.AlignmentHandler
Set alignment for one contained component in this layout. Use predefined alignments from Alignment class. Example: layout.setComponentAlignment(myComponent, Alignment.TOP_RIGHT);

Specified by:
setComponentAlignment in interface Layout.AlignmentHandler
Parameters:
childComponent - the component to align within it's layout cell.
alignment - the Alignment value to be set

setSpacing

public void setSpacing(boolean spacing)
Description copied from interface: Layout.SpacingHandler
Enable spacing between child components within this layout.

NOTE: This will only affect the space between components, not the space around all the components in the layout (i.e. do not confuse this with the cellspacing attribute of a HTML Table). Use Layout.setMargin(boolean) to add space around the layout.

See the reference manual for more information about CSS rules for defining the amount of spacing to use.

Specified by:
setSpacing in interface Layout.SpacingHandler
Parameters:
spacing - true if spacing should be turned on, false if it should be turned off

isSpacing

public boolean isSpacing()
Specified by:
isSpacing in interface Layout.SpacingHandler
Returns:
true if spacing between child components within this layout is enabled, false otherwise

insertRow

public void insertRow(int row)
Inserts an empty row at the specified position in the grid.

Parameters:
row - Index of the row before which the new row will be inserted. The leftmost row has index 0.

removeRow

public void removeRow(int row)
Removes a row and all the components in the row.

Components which span over several rows are removed if the selected row is on the first row of such a component.

If the last row is removed then all remaining components will be removed and the grid will be reduced to one row. The cursor will be moved to the upper left cell of the grid.

Parameters:
row - Index of the row to remove. The leftmost row has index 0.

setColumnExpandRatio

public void setColumnExpandRatio(int columnIndex,
                                 float ratio)
Sets the expand ratio of given column.

The expand ratio defines how excess space is distributed among columns. Excess space means space that is left over from components that are not sized relatively. By default, the excess space is distributed evenly.

Note that the component width of the GridLayout must be defined (fixed or relative, as opposed to undefined) for this method to have any effect.

Parameters:
columnIndex -
ratio -
See Also:
#setWidth(float, int)

getColumnExpandRatio

public float getColumnExpandRatio(int columnIndex)
Returns the expand ratio of given column

Parameters:
columnIndex -
Returns:
the expand ratio, 0.0f by default
See Also:
setColumnExpandRatio(int, float)

setRowExpandRatio

public void setRowExpandRatio(int rowIndex,
                              float ratio)
Sets the expand ratio of given row.

Expand ratio defines how excess space is distributed among rows. Excess space means the space left over from components that are not sized relatively. By default, the excess space is distributed evenly.

Note, that height needs to be defined (fixed or relative, as opposed to undefined height) for this method to have any effect.

Parameters:
rowIndex - The row index, starting from 0 for the topmost row.
ratio -
See Also:
#setHeight(float, int)

getRowExpandRatio

public float getRowExpandRatio(int rowIndex)
Returns the expand ratio of given row.

Parameters:
rowIndex - The row index, starting from 0 for the topmost row.
Returns:
the expand ratio, 0.0f by default
See Also:
setRowExpandRatio(int, float)

getComponent

public Component getComponent(int x,
                              int y)
Gets the Component at given index.

Parameters:
x - The column index, starting from 0 for the leftmost column.
y - The row index, starting from 0 for the topmost row.
Returns:
Component in given cell or null if empty

getComponentArea

public GridLayout.Area getComponentArea(Component component)
Returns information about the area where given component is laid in the GridLayout.

Parameters:
component - the component whose area information is requested.
Returns:
an Area object that contains information how component is laid in the grid

addListener

public void addListener(LayoutEvents.LayoutClickListener listener)
Description copied from interface: LayoutEvents.LayoutClickNotifier
Add a click listener to the layout. The listener is called whenever the user clicks inside the layout. An event is also triggered when the click targets a component inside a nested layout or Panel, provided the targeted component does not prevent the click event from propagating. A caption is not considered part of a component. The child component that was clicked is included in the LayoutEvents.LayoutClickEvent. Use #removeListener(LayoutClickListener) to remove the listener.

Specified by:
addListener in interface LayoutEvents.LayoutClickNotifier
Parameters:
listener - The listener to add

removeListener

public void removeListener(LayoutEvents.LayoutClickListener listener)
Description copied from interface: LayoutEvents.LayoutClickNotifier
Removes an LayoutClickListener.

Specified by:
removeListener in interface LayoutEvents.LayoutClickNotifier
Parameters:
listener - LayoutClickListener to be removed


Copyright © 2000-2011 Vaadin Ltd. All Rights Reserved.