com.vaadin.ui.
Class GridLayout
java.lang.Object
com.vaadin.ui.AbstractComponent
com.vaadin.ui.AbstractComponentContainer
com.vaadin.ui.AbstractLayout
com.vaadin.ui.GridLayout
All Implemented Interfaces:
LayoutEvents.LayoutClickNotifier, MethodEventSource, Paintable, Sizeable, VariableOwner, Component, ComponentContainer, Layout, Layout.AlignmentHandler, Layout.MarginHandler, Layout.SpacingHandler, Serializable, EventListener
- extends AbstractLayout
- implements Layout.AlignmentHandler, Layout.SpacingHandler, LayoutEvents.LayoutClickNotifier
public class GridLayout
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:
6.8.18
Author:
Vaadin Ltd.
See Also:
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.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 |
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.Paintable |
---|
Paintable.RepaintRequestEvent, Paintable.RepaintRequestListener |
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, UNIT_SYMBOLS, 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. |
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. |
void |
insertRow(int row)
Inserts an empty row at the specified position in the grid. |
boolean |
isSpacing()
|
boolean |
isSpacingEnabled()
Deprecated. |
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 |
setComponentAlignment(Component component,
String alignment)
Deprecated. Replaced by setComponentAlignment(Component, Alignment) |
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 enabled)
Enable spacing between child components within this layout. |
void |
space()
Moves the cursor forward by one. |
Methods inherited from class com.vaadin.ui.AbstractLayout |
---|
changeVariables, fireClick, getMargin, setMargin, setMargin, setMargin |
Methods inherited from class com.vaadin.ui.AbstractComponentContainer |
---|
addListener, addListener, attach, detach, fireComponentAttachEvent, fireComponentDetachEvent, moveComponentsFrom, removeListener, removeListener, requestRepaintAll, setEnabled, setHeight, setWidth |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface com.vaadin.ui.ComponentContainer |
---|
addListener, addListener, moveComponentsFrom, removeListener, removeListener, requestRepaintAll |
Methods inherited from interface com.vaadin.ui.Component |
---|
addListener, addStyleName, attach, childRequestedRepaint, detach, getApplication, getCaption, getIcon, getLocale, getParent, getStyleName, getWindow, isEnabled, isReadOnly, isVisible, removeListener, removeStyleName, setCaption, setEnabled, setIcon, setParent, setReadOnly, setStyleName, setVisible |
Methods inherited from interface com.vaadin.terminal.Paintable |
---|
addListener, getDebugId, paint, removeListener, requestRepaint, requestRepaintRequests, setDebugId |
Methods inherited from interface com.vaadin.terminal.VariableOwner |
---|
isImmediate |
Methods inherited from interface com.vaadin.terminal.Sizeable |
---|
getHeight, getHeightUnits, getWidth, getWidthUnits, setHeight, setHeight, setHeight, setHeightUnits, setSizeFull, setSizeUndefined, setWidth, setWidth, setWidth, setWidthUnits |
Constructor Detail |
---|
GridLayout
public GridLayout(int columns,
int rows)
- Parameters:
columns
- Number of columns in the grid.rows
- Number of rows in the grid.
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.
GridLayout
public GridLayout()
Constructs an empty (1x1) grid layout that is extended as needed.
Method Detail |
---|
addComponent
public void addComponent(Component component,
int column1,
int row1,
int column2,
int row2)
throws GridLayout.OverlapsException,
GridLayout.OutOfBoundsException
- Parameters:
component
- the component to be added.column1
- the column of the upper left corner of the areac
is supposed to occupy. The leftmost column has index 0.row1
- the row of the upper left corner of the areac
is supposed to occupy. The topmost row has index 0.column2
- the column of the lower right corner of the areac
is supposed to occupy.row2
- the row of the lower right corner of the areac
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.
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.
addComponent
public void addComponent(Component component,
int column,
int row)
throws GridLayout.OverlapsException,
GridLayout.OutOfBoundsException
- 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.
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.
newLine
public void newLine()
- See Also:
space()
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.
space
public void space()
- See Also:
newLine()
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.
addComponent
public void addComponent(Component component)
- Specified by:
addComponent
in interfaceComponentContainer
- Overrides:
addComponent
in classAbstractComponentContainer
- Parameters:
component
- the component to be added.- See Also:
ComponentContainer.addComponent(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.
removeComponent
public void removeComponent(Component component)
- Specified by:
removeComponent
in interfaceComponentContainer
- Overrides:
removeComponent
in classAbstractComponentContainer
- Parameters:
component
- the component to be removed.- See Also:
ComponentContainer.removeComponent(Component)
Removes the specified component from the layout.
removeComponent
public void removeComponent(int column,
int row)
- Parameters:
column
- the component's column, starting from 0.row
- the component's row, starting from 0.
Removes the component specified by its cell coordinates.
getComponentIterator
public Iterator<Component> getComponentIterator()
- Specified by:
getComponentIterator
in interfaceComponentContainer
- Returns:
- the Iterator of the components inside the layout.
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.
getComponentCount
public int getComponentCount()
- Returns:
- the number of contained components
Gets the number of components contained in the layout. Consistent with
the iterator returned by getComponentIterator()
.
paintContent
public void paintContent(PaintTarget target)
throws PaintException
- Overrides:
paintContent
in classAbstractLayout
- Parameters:
target
- the Paint Event.- Throws:
PaintException
- if the paint operation failed.
Paints the contents of this component.
getComponentAlignment
public Alignment getComponentAlignment(Component childComponent)
- Specified by:
getComponentAlignment
in interfaceLayout.AlignmentHandler
- Returns:
- the
Alignment
Description copied from interface: Layout.AlignmentHandler
Returns the current Alignment of given component.
setColumns
public void setColumns(int columns)
- Parameters:
columns
- the new number of columns in the grid.
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.
getColumns
public int getColumns()
- Returns:
- the number of columns in the grid.
Get the number of columns in the grid.
setRows
public void setRows(int rows)
- Parameters:
rows
- the new number of rows in the grid.
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.
getRows
public int getRows()
- Returns:
- the number of rows in the grid.
Get the number of rows in the grid.
getCursorX
public int getCursorX()
- Returns:
- the grid column the cursor is on, starting from 0.
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.
setCursorX
public void setCursorX(int cursorX)
- Parameters:
cursorX
-
Sets the current cursor x-position. This is usually handled automatically by GridLayout.
getCursorY
public int getCursorY()
- Returns:
- the grid row the Cursor is on.
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.
setCursorY
public void setCursorY(int cursorY)
- Parameters:
cursorY
- the row number, starting from 0 for the topmost row.
Sets the current y-coordinate (row) of the cursor. This is usually handled automatically by GridLayout.
replaceComponent
public void replaceComponent(Component oldComponent,
Component newComponent)
- Specified by:
replaceComponent
in interfaceComponentContainer
- Parameters:
oldComponent
- the old component that will be replaced.newComponent
- the new component to be replaced.
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.
removeAllComponents
public void removeAllComponents()
- Specified by:
removeAllComponents
in interfaceComponentContainer
- Overrides:
removeAllComponents
in classAbstractComponentContainer
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.
setComponentAlignment
public void setComponentAlignment(Component childComponent,
int horizontalAlignment,
int verticalAlignment)
- Specified by:
setComponentAlignment
in interfaceLayout.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.
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.
setComponentAlignment
public void setComponentAlignment(Component childComponent,
Alignment alignment)
- Specified by:
setComponentAlignment
in interfaceLayout.AlignmentHandler
- Parameters:
childComponent
- the component to align within it's layout cell.alignment
- the Alignment value to be set
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);
setSpacing
public void setSpacing(boolean enabled)
- Specified by:
setSpacing
in interfaceLayout.SpacingHandler
- Parameters:
enabled
- true if spacing should be turned on, false if it should be turned off
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.
isSpacingEnabled
@Deprecated
public boolean isSpacingEnabled()
- Specified by:
isSpacingEnabled
in interfaceLayout.SpacingHandler
- Returns:
- true if spacing between child components within this layout is enabled, false otherwise
Deprecated.
isSpacing
public boolean isSpacing()
- Specified by:
isSpacing
in interfaceLayout.SpacingHandler
- Returns:
- true if spacing between child components within this layout is enabled, false otherwise
insertRow
public void insertRow(int row)
- Parameters:
row
- Index of the row before which the new row will be inserted. The leftmost row has index 0.
Inserts an empty row at the specified position in the grid.
removeRow
public void removeRow(int row)
- Parameters:
row
- Index of the row to remove. The leftmost row has index 0.
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.
setColumnExpandRatio
public void setColumnExpandRatio(int columnIndex,
float ratio)
- Parameters:
columnIndex
-ratio
-- See Also:
AbstractComponentContainer.setWidth(float, int)
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.
getColumnExpandRatio
public float getColumnExpandRatio(int columnIndex)
- Parameters:
columnIndex
-- Returns:
- the expand ratio, 0.0f by default
- See Also:
setColumnExpandRatio(int, float)
Returns the expand ratio of given column
setRowExpandRatio
public void setRowExpandRatio(int rowIndex,
float ratio)
- Parameters:
rowIndex
- The row index, starting from 0 for the topmost row.ratio
-- See Also:
AbstractComponentContainer.setHeight(float, int)
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.
getRowExpandRatio
public float getRowExpandRatio(int rowIndex)
- 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)
Returns the expand ratio of given row.
getComponent
public Component getComponent(int x,
int y)
- 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
Gets the Component at given index.
getComponentArea
public GridLayout.Area getComponentArea(Component component)
- Parameters:
component
- the component whose area information is requested.- Returns:
- an Area object that contains information how component is laid in the grid
Returns information about the area where given component is laid in the GridLayout.
setComponentAlignment
@Deprecated
public void setComponentAlignment(Component component,
String alignment)
- Parameters:
component
- A child component in this layoutalignment
- A short hand notation described inAlignmentUtils
Deprecated. Replaced by
setComponentAlignment(Component, Alignment)
Sets the component alignment using a shorthand string notation.
addListener
public void addListener(LayoutEvents.LayoutClickListener listener)
- Specified by:
addListener
in interfaceLayoutEvents.LayoutClickNotifier
- Parameters:
listener
- The listener to add
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.
removeListener
public void removeListener(LayoutEvents.LayoutClickListener listener)
- Specified by:
removeListener
in interfaceLayoutEvents.LayoutClickNotifier
- Parameters:
listener
- LayoutClickListener to be removed
Description copied from interface: LayoutEvents.LayoutClickNotifier
Removes an LayoutClickListener.