|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.zkoss.zk.ui.AbstractComponent
org.zkoss.zk.ui.HtmlBasedComponent
org.zkoss.zul.impl.XulElement
org.zkoss.zul.Grid
public class Grid
A grid is an element that contains both rows and columns elements. It is used to create a grid of elements. Both the rows and columns are displayed at once although only one will typically contain content, while the other may provide size information.
Besides creating Row programmingly, you can assign
a data model (a ListModel or GroupsModel instance) to a grid via
setModel(ListModel) or setModel(GroupsModel)
and then the grid will retrieve data
by calling ListModel.getElementAt(int) when necessary.
Besides assign a list model, you could assign a renderer
(a RowRenderer instance) to a grid, such that
the grid will use this
renderer to render the data returned by ListModel.getElementAt(int).
If not assigned, the default renderer, which assumes a label per row,
is used.
In other words, the default renderer adds a label to
a row by calling toString against the object returned
by ListModel.getElementAt(int)
There are two ways to handle long content: scrolling and paging.
If AbstractComponent.getMold() is "default", scrolling is used if HtmlBasedComponent.setHeight(java.lang.String)
is called and too much content to display.
If AbstractComponent.getMold() is "paging", paging is used if two or more pages are
required. To control the number of rows to display in a page, use
setPageSize(int).
If paging is used, the page controller is either created automatically
or assigned explicity by setPaginal(org.zkoss.zul.ext.Paginal).
The paging controller specified explicitly by setPaginal(org.zkoss.zul.ext.Paginal) is called
the external page controller. It is useful if you want to put the paging
controller at different location (other than as a child component), or
you want to use the same controller to control multiple grids.
Default getZclass(): z-grid.(since 3.5.0)
To have a grid without stripping, you can specify a non-existent
style class to setOddRowSclass(java.lang.String).
ListModel,
RowRenderer,
RowRendererExt,
Serialized Form| Nested Class Summary | |
|---|---|
protected class |
Grid.ExtraCtrl
A utility class to implement AbstractComponent.getExtraCtrl(). |
| Nested classes/interfaces inherited from class org.zkoss.zk.ui.AbstractComponent |
|---|
AbstractComponent.Children |
| Field Summary |
|---|
| Fields inherited from class org.zkoss.zk.ui.HtmlBasedComponent |
|---|
_zclass, RS_NO_DISPLAY, RS_NO_HEIGHT, RS_NO_WIDTH |
| Fields inherited from class org.zkoss.zk.ui.AbstractComponent |
|---|
_visible |
| Fields inherited from interface org.zkoss.zk.ui.Component |
|---|
APPLICATION_SCOPE, COMPONENT_SCOPE, DESKTOP_SCOPE, PAGE_SCOPE, REQUEST_SCOPE, SESSION_SCOPE, SPACE_SCOPE |
| Constructor Summary | |
|---|---|
Grid()
|
|
| Method Summary | |
|---|---|
void |
beforeChildAdded(Component newChild,
Component refChild)
Default: does nothing. |
java.lang.Object |
clone()
Clones the component. |
int |
getActivePage()
Returns the active page (starting from 0). |
java.lang.String |
getAlign()
Returns the horizontal alignment of the whole grid. |
Component |
getCell(int row,
int col)
Returns the specified cell, or null if not available. |
Columns |
getColumns()
Returns the columns. |
Columns |
getColumnsApi()
Returns the columns. |
Foot |
getFoot()
Returns the foot. |
Foot |
getFootApi()
Returns the foot. |
GroupsModel |
getGroupsModel()
Returns the groups model associated with this grid, or null if this grid is associated with a ListModel
or not associated with any list data model. |
java.util.Collection |
getHeads()
Returns a collection of heads, including getColumns()
and auxiliary heads (Auxhead) (never null). |
java.lang.String |
getInnerBottom()
Internal use only. |
java.lang.String |
getInnerHeight()
Internal use only. |
java.lang.String |
getInnerTop()
Internal use only. |
java.lang.String |
getInnerWidth()
Returns the inner width of this component. |
ListModel |
getListModel()
Returns the list model associated with this grid, or null if this grid is associated with a GroupsModel
or not associated with any list data model. |
ListModel |
getModel()
Returns the model associated with this grid, or null if this grid is not associated with any list data model. |
java.lang.String |
getOddRowSclass()
Returns the style class for the odd rows. |
java.lang.String |
getOuterAttrs()
Returns the exterior attributes for generating the enclosing HTML tag; never return null. |
int |
getPageCount()
Returns the number of pages. |
int |
getPageSize()
Returns the page size, aka., the number rows per page. |
Paginal |
getPaginal()
Returns the paging controller, or null if not available. |
Paging |
getPaging()
Deprecated. As of release 3.0.7, replaced with getPagingChild()
to avoid the confusion with getPaginal(). |
Paging |
getPagingApi()
|
Paging |
getPagingChild()
Returns the child paging controller that is created automatically, or null if mold is not "paging", or the controller is specified externally by setPaginal(org.zkoss.zul.ext.Paginal). |
Paging |
getPagingChildApi()
Returns the child paging controller that is created automatically, or null if mold is not "paging", or the controller is specified externally by setPaginal(org.zkoss.zul.ext.Paginal). |
java.lang.String |
getPagingPosition()
Returns how to position the paging of grid at the client screen. |
int |
getPreloadSize()
Returns the number of rows to preload when receiving the rendering request from the client. |
RowRenderer |
getRowRenderer()
Returns the renderer to render each row, or null if the default renderer is used. |
Rows |
getRows()
Returns the rows. |
Rows |
getRowsApi()
Returns the rows. |
java.lang.String |
getZclass()
Returns the ZK Cascading Style class(es) for this component. |
boolean |
insertBefore(Component newChild,
Component refChild)
Inserts a child before the reference child. |
boolean |
isFixedLayout()
Returns the outline of grid whether is fixed layout. |
boolean |
isVflex()
Returns whether to grow and shrink vertical to fit their given space, so called vertial flexibility. |
protected java.lang.Object |
newExtraCtrl()
Used by AbstractComponent.getExtraCtrl() to create a client control. |
void |
onInitRender()
Handles a private event, onInitRender. |
boolean |
removeChild(Component child)
Removes a child. |
void |
renderAll()
Renders all Row if not loaded yet,
with getRowRenderer(). |
void |
renderItems(java.util.Set rows)
|
void |
renderRow(Row row)
Renders the specified Row if not loaded yet,
with getRowRenderer(). |
void |
renderRowApi(Row rowApi)
Renders the specified Row if not loaded yet,
with getRowRenderer(). |
void |
renderRows(java.util.Set rows)
Renders a set of specified rows. |
void |
setActivePage(int pg)
Sets the active page (starting from 0). |
void |
setAlign(java.lang.String align)
Sets the horizontal alignment of the whole grid. |
void |
setFixedLayout(boolean fixedLayout)
Sets the outline of grid whether is fixed layout. |
void |
setInnerBottom(java.lang.String innerBottom)
Internal use only. |
void |
setInnerHeight(java.lang.String innerHeight)
Internal use only. |
void |
setInnerTop(java.lang.String innerTop)
Internal use only. |
void |
setInnerWidth(java.lang.String innerWidth)
Sets the inner width of this component. |
void |
setModel(GroupsModel model)
Sets the groups model associated with this grid. |
void |
setModel(ListModel model)
Sets the list model associated with this grid. |
void |
setMold(java.lang.String mold)
Sets the mold to render this component. |
void |
setOddRowSclass(java.lang.String scls)
Sets the style class for the odd rows. |
void |
setPageSize(int pgsz)
Sets the page size, aka., the number rows per page. |
void |
setPaginal(Paginal pgi)
Specifies the paging controller. |
void |
setPagingPosition(java.lang.String pagingPosition)
Sets how to position the paging of grid at the client screen. |
void |
setPreloadSize(int sz)
Sets the number of rows to preload when receiving the rendering request from the client. |
void |
setRowRenderer(RowRenderer renderer)
Sets the renderer which is used to render each row if getModel() is not null. |
void |
setRowRenderer(java.lang.String clsnm)
Sets the renderer by use of a class name. |
void |
setVflex(boolean vflex)
Sets whether to grow and shrink vertical to fit their given space, so called vertial flexibility. |
| Methods inherited from class org.zkoss.zul.impl.XulElement |
|---|
getAction, getActionAttrs, getAllOnClickAttrs, getContext, getCtrlKeys, getInnerAttrs, getPopup, getTooltip, setAction, setContext, setContext, setCtrlKeys, setPopup, setPopup, setTooltip, setTooltip |
| Methods inherited from class org.zkoss.zk.ui.HtmlBasedComponent |
|---|
focus, getAllOnClickAttrs, getDraggable, getDroppable, getHeight, getLeft, getMoldSclass, getRealSclass, getRealStyle, getRealStyleFlags, getSclass, getStyle, getTooltiptext, getTop, getWidth, getZindex, getZIndex, redraw, setClass, setDraggable, setDroppable, setFocus, setHeight, setLeft, setMoldSclass, setSclass, setStyle, setTooltiptext, setTop, setWidth, setZclass, setZindex, setZIndex |
| Methods inherited from class java.lang.Object |
|---|
finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Methods inherited from interface org.zkoss.zul.impl.api.XulElement |
|---|
getAction, getContext, getCtrlKeys, getPopup, getTooltip, setAction, setContext, setContext, setCtrlKeys, setPopup, setPopup, setTooltip, setTooltip |
| Methods inherited from interface org.zkoss.zk.ui.api.HtmlBasedComponent |
|---|
focus, getHeight, getLeft, getSclass, getStyle, getTooltiptext, getTop, getWidth, getZindex, getZIndex, setDraggable, setDroppable, setFocus, setHeight, setLeft, setSclass, setStyle, setTooltiptext, setTop, setWidth, setZclass, setZindex, setZIndex |
| Constructor Detail |
|---|
public Grid()
| Method Detail |
|---|
public final boolean isVflex()
Default: false.
public void setVflex(boolean vflex)
setVflex in interface Gridpublic void setFixedLayout(boolean fixedLayout)
You can also specify the "fixed-layout" attribute of component in lang-addon.xml directly, it's a top priority.
setFixedLayout in interface Gridpublic boolean isFixedLayout()
Default: false.
Note: if the "fixed-layout" attribute of component is specified, it's prior to the original value.
isFixedLayout in interface Gridpublic Rows getRows()
public Rows getRowsApi()
getRowsApi in interface Gridpublic Columns getColumns()
public Columns getColumnsApi()
getColumnsApi in interface Gridpublic Foot getFoot()
public Foot getFootApi()
getFootApi in interface Gridpublic java.util.Collection getHeads()
getColumns()
and auxiliary heads (Auxhead) (never null).
getHeads in interface Grid
public Component getCell(int row,
int col)
getCell in interface Gridrow - which row to fetch (starting at 0).col - which column to fetch (starting at 0).public java.lang.String getAlign()
Default: null (system default: left unless CSS specified).
getAlign in interface Gridpublic void setAlign(java.lang.String align)
Allowed: "left", "center", "right"
setAlign in interface Gridpublic void setPagingPosition(java.lang.String pagingPosition)
setPagingPosition in interface GridpagingPosition - how to position. It can only be "bottom" (the default), or
"top", or "both".public java.lang.String getPagingPosition()
getPagingPosition in interface Paginatedpublic Paginal getPaginal()
AbstractComponent.getMold() is "paging".
If mold is "paging", this method never returns null, because
a child paging controller is created automcatically (if not specified
by developers with setPaginal(org.zkoss.zul.ext.Paginal)).
If a paging controller is specified (either by setPaginal(org.zkoss.zul.ext.Paginal),
or by setMold(java.lang.String) with "paging"),
the grid will rely on the paging controller to handle long-content
instead of scrolling.
getPaginal in interface Gridpublic void setPaginal(Paginal pgi)
GridComponent.getMold() is "paging".
It is OK, though without any effect, to specify a paging controller even if mold is not "paging".
setPaginal in interface Gridpgi - the paging controller. If null and Component.getMold() is
"paging", a paging controller is created automatically as a
child component (see Grid.getPagingApi()).public Paging getPagingChild()
setPaginal(org.zkoss.zul.ext.Paginal).
public Paging getPagingChildApi()
setPaginal(org.zkoss.zul.ext.Paginal).
getPagingChildApi in interface Gridpublic Paging getPaging()
getPagingChild()
to avoid the confusion with getPaginal().
public Paging getPagingApi()
getPagingApi in interface Gridpublic int getPageSize()
getPageSize in interface Gridjava.lang.IllegalStateException - if getPaginal() returns null,
i.e., mold is not "paging" and no external controller is specified.
public void setPageSize(int pgsz)
throws WrongValueException
setPageSize in interface Gridjava.lang.IllegalStateException - if getPaginal() returns null,
i.e., mold is not "paging" and no external controller is specified.
WrongValueExceptionpublic int getPageCount()
getPageCount in interface Gridpublic int getActivePage()
getActivePage in interface Grid
public void setActivePage(int pg)
throws WrongValueException
setActivePage in interface GridWrongValueExceptionpublic void setInnerHeight(java.lang.String innerHeight)
public java.lang.String getInnerHeight()
public void setInnerTop(java.lang.String innerTop)
public java.lang.String getInnerTop()
public void setInnerBottom(java.lang.String innerBottom)
public java.lang.String getInnerBottom()
public ListModel getModel()
Note: if setModel(GroupsModel) was called with a
groups model, this method returns an instance of ListModel
encapsulating it.
getModel in interface GridsetModel(ListModel),
setModel(GroupsModel)public ListModel getListModel()
GroupsModel
or not associated with any list data model.
getListModel in interface GridsetModel(ListModel)public GroupsModel getGroupsModel()
ListModel
or not associated with any list data model.
getGroupsModel in interface GridsetModel(GroupsModel)public void setModel(ListModel model)
setModel in interface Gridmodel - the list model to associate, or null to dis-associate
any previous model.
UiException - if failed to initialize with the modelgetListModel(),
setModel(GroupsModel)public void setModel(GroupsModel model)
The groups model is used to represent a list of data with grouping.
setModel in interface Gridmodel - the groups model to associate, or null to dis-associate
any previous model.
UiException - if failed to initialize with the modelsetModel(ListModel),
getGroupsModel()public RowRenderer getRowRenderer()
getRowRenderer in interface Gridpublic void setRowRenderer(RowRenderer renderer)
getModel() is not null.
Note: changing a render will not cause the grid to re-render.
If you want it to re-render, you could assign the same model again
(i.e., setModel(getModel())), or fire an ListDataEvent event.
setRowRenderer in interface Gridrenderer - the renderer, or null to use the default.
UiException - if failed to initialize with the model
public void setRowRenderer(java.lang.String clsnm)
throws java.lang.ClassNotFoundException,
java.lang.NoSuchMethodException,
java.lang.IllegalAccessException,
java.lang.InstantiationException,
java.lang.reflect.InvocationTargetException
setRowRenderer in interface Gridjava.lang.ClassNotFoundException
java.lang.NoSuchMethodException
java.lang.IllegalAccessException
java.lang.InstantiationException
java.lang.reflect.InvocationTargetExceptionpublic int getPreloadSize()
Default: 7.
It is used only if live data (setModel(ListModel) and
not paging (getPaging().
Note: if the "pre-load-size" attribute of component is specified, it's prior to the original value.(@since 3.0.4)
getPreloadSize in interface Gridpublic void setPreloadSize(int sz)
It is used only if live data (setModel(ListModel) and
not paging (getPaging().
setPreloadSize in interface Gridsz - the number of rows to preload. If zero, no preload
at all.
UiException - if sz is negativepublic void setInnerWidth(java.lang.String innerWidth)
Application developers rarely call this method, unless
they want to preserve the widths of sizable columns
changed by the user.
To preserve the widths, the developer have to store the widths of
all columns and the inner width (getInnerWidth()),
and then restore them when re-creating this component.
setInnerWidth in interface GridinnerWidth - the inner width. If null, "100%" is assumed.public java.lang.String getInnerWidth()
Default: "100%"
getInnerWidth in interface GridsetInnerWidth(java.lang.String)public void onInitRender()
public void renderRow(Row row)
Row if not loaded yet,
with getRowRenderer().
It does nothing if getModel() returns null.
In other words, it is meaningful only if live data model is used.
public void renderRowApi(Row rowApi)
Row if not loaded yet,
with getRowRenderer().
It does nothing if getModel() returns null.
In other words, it is meaningful only if live data model is used.
renderRowApi in interface GridrowApi - assume as a Rowpublic void renderAll()
Row if not loaded yet,
with getRowRenderer().
renderAll in interface Gridpublic void renderRows(java.util.Set rows)
renderItems(java.util.Set).
renderRows in interface Gridpublic void renderItems(java.util.Set rows)
renderItems in interface Gridpublic java.lang.String getOddRowSclass()
Default: getZclass()-odd. (since 3.5.0)
getOddRowSclass in interface Gridpublic void setOddRowSclass(java.lang.String scls)
setOddRowSclass in interface Gridpublic void setMold(java.lang.String mold)
Component
setMold in interface ComponentsetMold in class AbstractComponentmold - the mold. If null or empty, "default" is assumed.ComponentDefinitionpublic java.lang.String getZclass()
HtmlBasedComponentDefault: null (the default value depends on element).
HtmlBasedComponent.setZclass(java.lang.String)) will completely replace the default style
of a component. In other words, the default style of a component
is associated with the default value of HtmlBasedComponent.getZclass().
Once it is changed, the default style won't be applied at all.
If you want to perform small adjustments, use HtmlBasedComponent.setSclass(java.lang.String)
instead.
getZclass in interface HtmlBasedComponentgetZclass in class HtmlBasedComponentHtmlBasedComponent.getSclass(),
HtmlBasedComponent.getRealSclass()public java.lang.String getOuterAttrs()
HtmlBasedComponentUsed only by component developers.
Default: Generates the tooltip text, style, sclass, draggable
and droppable attribute if necessary.
In other words, the corresponding attribute is generated if
HtmlBasedComponent.getTooltiptext(), HtmlBasedComponent.getRealStyle(),
HtmlBasedComponent.getSclass(), HtmlBasedComponent.getDraggable(), HtmlBasedComponent.getDroppable()
are defined.
You have to call both HtmlBasedComponent.getOuterAttrs() and
HtmlBasedComponent.getInnerAttrs() to generate complete attributes.
For simple components that all attributes are put on the outest HTML element, all you need is as follows.
<xx id="${self.uuid}"${self.outerAttrs}${self.innerAttrs}>
If you want to put attributes in a nested HTML element, you
shall use the following pattern. Notice: if HtmlBasedComponent.getInnerAttrs()
in a different tag, the tag must be named with "${self.uuid}!real".
<xx id="${self.uuid}"${self.outerAttrs}>
<yy id="${self.uuid}!real"${self.innerAttrs}>...
Note: This class handles non-deferrable event listeners automatically.
However, you have to invoke AbstractComponent.appendAsapAttr(java.lang.StringBuffer, java.lang.String) for each event
the component handles in HtmlBasedComponent.getOuterAttrs() as follows.
appendAsapAttr(sb, Events.ON_OPEN);
appendAsapAttr(sb, Events.ON_CHANGE);
Theorectically, you could put any attributes in either
HtmlBasedComponent.getInnerAttrs() or HtmlBasedComponent.getOuterAttrs().
However, zkau.js assumes all attributes are put at the outer one.
If you want something different, you have to provide your own
setAttr (refer to how checkbox is implemented).
getOuterAttrs in class XulElement
public void beforeChildAdded(Component newChild,
Component refChild)
AbstractComponent
beforeChildAdded in interface ComponentCtrlbeforeChildAdded in class AbstractComponentnewChild - the child to be added (never null).refChild - another child component that the new child
will be inserted before it. If null, the new child will be the
last child.ComponentCtrl.beforeChildAdded(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)
public boolean insertBefore(Component newChild,
Component refChild)
ComponentYou could use Component.setParent(org.zkoss.zk.ui.Component) or Component.appendChild(org.zkoss.zk.ui.Component)
instead of this method, unless
you want to control where to put the child.
Note: Component.setParent(org.zkoss.zk.ui.Component) always calls back Component.insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)
and/or Component.removeChild(org.zkoss.zk.ui.Component),
while Component.insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component) and Component.removeChild(org.zkoss.zk.ui.Component)
always calls back Component.setParent(org.zkoss.zk.ui.Component),
if the parent is changed. Thus, you don't need to override
both Component.insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component) and Component.setParent(org.zkoss.zk.ui.Component), if you want
to customize the behavior.
insertBefore in interface ComponentinsertBefore in class AbstractComponentnewChild - the new child to be inserted.refChild - the child before which you want the new child
being inserted. If null, the new child is append to the end.
public boolean removeChild(Component child)
ComponentComponent.detach()) and it will be removed
if it is no longer used.
You could use Component.setParent(org.zkoss.zk.ui.Component) with null instead of this method.
Note: Component.setParent(org.zkoss.zk.ui.Component) always calls back Component.insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)
and/or Component.removeChild(org.zkoss.zk.ui.Component),
while Component.insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component) and Component.removeChild(org.zkoss.zk.ui.Component)
always calls back Component.setParent(org.zkoss.zk.ui.Component),
if the parent is changed. Thus, you don't need to override
both Component.insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component) and Component.setParent(org.zkoss.zk.ui.Component), if you want
to customize the behavior.
removeChild in interface ComponentremoveChild in class AbstractComponentpublic java.lang.Object clone()
Component
clone in interface Componentclone in class AbstractComponentprotected java.lang.Object newExtraCtrl()
HtmlBasedComponentAbstractComponent.getExtraCtrl() to create a client control.
It is used only by component developers.
Defaut: creates an instance of HtmlBasedComponent.ExtraCtrl.
newExtraCtrl in class HtmlBasedComponent
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||