org.zkoss.zul |
ZUL Component Set in HTML
ZUL component set that are used for HTML-based clients.
Table of Contents
Components of XUL in HTML
Introduction
The implementation of XUL components for ZK.
Directive Elements
page
<?page [id="..."] [title="..."] [language="xul/html"]?>
- The language must be
xul/html .
- The title is used as the HTML page title. Used only if it is rendered
as a standalone page (rather than included).
- The id, if specified, must be unique in the same request.
Note: a request might contain multiple pages (such as a portal page).
- It must be at the same level as the root element.
Special Elements
zk
Due to XML's syntax limitation, we can only specify one document root.
Thus, if you have multiple root components, you must use <zk>
as the document root to group these root components.
In other words, <zk> is not a component and it, if used,
must be the document root.
zscript
<zscript>...</zscript>
<zscript src="/WEB-INF/xx/yy.bs">
Simple Elements
Common Attributes
<xxx [id="..."] [class="..."] [style="...] [use="..."]/>
- If id is not specified, it is generated automatically.
If specified, it must be unique in the whole page.
- The class attribute defines the CSS class that this component
shall refer.
- The use attribute defines the Java class to use instead of
the Java class defined in zk-xul-*.xml
textbox
<textbox [id="..."] [class="..."] [style="...] [use="..."]
[onChange="script"] [onChanging="script"] [value="value"] [type="|password"]
[maxlength="0|num"] [rows="3|num"] [cols="0|num"]
[disabled="false|true"] [readonly="false|true"] [multiline="false|true"] />
- The onChange attribute is called after the value is really set.
- Note: the script of the onChange attribute is called
only if user input a different value.
On the other hand, the setValue method is called either by a program
or by user's input (if by a program, the value might not be changed).
- The onChanging attribute is called when a user is chaning its content.
onChanging won't cause the content being set. It is simply used to notify
server for implementing auto-completion and other features.
window
<window [id="..."] [class="..."] [style="...] [use="..."] [title="..."] [border="normal|none"]/>
- The title attribute defines the window title.
Implicit Objects
Depending on invoking from a script or from an EL expression, different
implicit objects might be used.
Name | Description | From Script | From EL |
self |
The current component that script/EL is interpreted upon.
It is the same as this in Java. |
Yes | Yes |
spaceOwner |
The owner of the ID space that the current component belongs to
(See What is an ID space").
It is null, if the current component doesn't belong to any space.
It is the same as self.getSpaceOwner() in script, self.root in EL and
this.getSpaceOwner() in Java. |
Yes | Yes |
desktopScope |
The attributes defined in the current desktop.
It is the same as this.getPage().getAttributes(name,DESKTOP_SCOPE) in Java. |
Yes | Yes |
pageScope |
The attributes defined in the current page.
It is the same as this.getPage().getAttributes() in Java. |
Yes | Yes |
spaceScope |
The attributes defined in the ID space that the current component belongs to
(See What is an ID space").
It is the same as this.getAttributes() with SPACE_SCOPE in Java. |
Yes | Yes |
componentScope |
The attributes defined in the current component.
It is the same as this.getAttributes() with COMPONENT_SCOPE in Java. |
Yes | Yes |
arg |
A map of parameters that are passed to Execution.createComponents(...).
It is the same as desktop.getExecution().getArg() in Java. |
Yes | Yes |
How to browse components
In Java
Each window forms an independent ID space.
To get a component from an ID space, use Component.getFellow against
any component in the same ID space. If a window, say C, is a child of
another window, say P, then C belongs the ID space of P, but descendants
of C don't. Rather, descendants of C belong to the ID space of C.
Notice: C belongs to the ID spaces of both C and P.
A page is also an independent ID space, Page.getFellow is used to
retrieve a fellow in it.
- To get the current page, use Component.getPage().
- To get another page (in the same desktop), use Component.getPage(String).
- To get a component of a page, use Page.getFellow(String) -- assuming
the component is not a descendant of any window..
- To get a child component of window, use
Window.getFellow(String).
- To get a fellow component, use Componnet.getFellow(String).
All components belongs (aka., child or descendant of) to the same window
are called fellows. If a window, say X, belongs to another window, say Y,
then X, like other type of components, is a fellow of Y. However,
children and descendants of X are NOT fellow of Y because they belong
to X's space. Only X belongs to both X's and Y's spaces.
In Script and EL
Components that are specified with the id attribute (i.e., you have assign an ID)
can be accessed directly by the value of the id attribute.
For example,
<label id="label" value="Not good enough?"/>
<button label="Change label" onClick="label.value = label.value + 'A'"/>
The scope of visibility, same as in Java, is controlled by the ID space.
In other words, each window has an independent ID space.
When you specified an ID, only the current ID space is searched.
Events
onOK and onCancel
When window intercepts whether ENTER or ESC is pressed,
the onOK or onCancel event is sent, resprectively.
onCtrlKey
Window intercepts whether control or function keys is pressed
if you specify what to intercept by use of the ctrlKeys attribute.
For example, If ctrlKeys="GW2" is specified, it means Ctrl+G,
Ctrl+W and F2 are all intercepted.
Once user press one of them, the onCtrlKey event is sent.
|
Java Source File Name | Type | Comment |
AbstractChartModel.java | Class | A skeletal implementation for
ChartModel . |
AbstractListModel.java | Class | A skeletal implementation for
ListModel . |
AbstractTreeModel.java | Class | A skeletal implementation for
TreeModel . |
Area.java | Class | An area of a
Imagemap . |
Attributes.java | Class | Common attributes used for implementation. |
Audio.java | Class | An audio clip. |
Auxhead.java | Class | Used to define a collection of auxiliary headers (
Auxheader ). |
Auxheader.java | Class | An auxiliary header. |
Bandbox.java | Class | A band box. |
Bandpopup.java | Class | The popup that belongs to a
Bandbox instance. |
Box.java | Class | A box. |
Button.java | Class | A button. |
Calendar.java | Class | A calendar. |
Captcha.java | Class | The generic captcha component. |
Caption.java | Class | A header for a
Groupbox . |
CategoryModel.java | Interface | A catetory chart data model. |
Chart.java | Class | The generic chart component. |
ChartModel.java | Interface | Chart Model is used to hold the data model for the chart.
|
Checkbox.java | Class | A checkbox. |
ClientConstraint.java | Interface | Addition interface implemented with
Constraint to denote
how to validate at the client. |
Column.java | Class | A single column in a
Columns element. |
Columns.java | Class | Defines the columns of a grid. |
Combobox.java | Class | A combo box.
Non-XUL extension. |
Comboitem.java | Class | An item of a combo box.
Non-XUL extension. |
ComboitemRenderer.java | Interface | Identifies components that can be used as "rubber stamps" to paint
the cells in a
Combobox .
If you need better control, your renderer can also implement
ComboitemRendererExt .
In addition, you could also
implement
RendererCtrl . |
ComboitemRendererExt.java | Interface | Provides additional control to
ComboitemRenderer . |
Constraint.java | Interface | A constraint. |
CustomConstraint.java | Interface | Additional interface implemented with
Constraint to denote
a constraint supports a custom way to display the error message.
If this interface is implemented, the default error box won't be
displayed. |
Datebox.java | Class | An edit box for holding a date.
Default
Datebox.getSclass : datebox.
The default format (
Datebox.getFormat ) depends on JVM's setting
and the current user's locale. |
Decimalbox.java | Class | An edit box for holding BigDecimal. |
Div.java | Class | The same as HTML DIV tag.
An extension. |
Doublebox.java | Class | An edit box for holding an float point value (double). |
Filedownload.java | Class | File download utilities. |
Fileupload.java | Class | A fileupload dialog used to let user upload a file.
There are two ways to use
Fileupload :
1. |
Flash.java | Class | A generic flash component. |
Foot.java | Class | Defines a set of footers (
Footer ) for a grid (
Grid ). |
Footer.java | Class | A column of the footer of a grid (
Grid ). |
Grid.java | Class | 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 instance) to a grid via
Grid.setModel and then the grid will retrieve data
by calling
ListModel.getElementAt 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 .
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 There are two ways to handle long content: scrolling and paging.
If
Grid.getMold is "default", scrolling is used if
Grid.setHeight is called and too much content to display.
If
Grid.getMold is "paging", paging is used if two or more pages are
required. |
Groupbox.java | Class | Groups a set of child elements to have a visual effect. |
Hbox.java | Class | A hbox. |
HiLoModel.java | Interface | A HiLo chart data model (date, open, close, high, low, volumn) usually used in
stock market. |
Html.java | Class | A comonent used to embed the browser native content (i.e., HTML tags)
into the output sent to the browser.
The browser native content is specified by
Html.setContent .
Notice that
Html generates HTML SPAN to enclose
the embedded HTML tags. |
Iframe.java | Class | Includes an inline frame. |
Image.java | Class | An image.
Note: IE 5.5/6 (not 7) has a bug that failed to render PNG with
alpha transparency. |
Imagemap.java | Class | An image map.
There are two ways to use Imagemap:
- Listen to the onClick event, which is an instance of
org.zkoss.zk.ui.event.MouseEvent .
|
Include.java | Class | Includes the result generated by any servlet. |
Intbox.java | Class | An edit box for holding an integer. |
Label.java | Class | A label. |
Listbox.java | Class | A listbox.
Event:
- org.zkoss.zk.ui.event.SelectEvent is sent when user changes
the selection.
See Specification.
Besides creating
Listitem programmingly, you could assign
a data model (a
ListModel instance) to a listbox
via
Listbox.setModel and then
the listbox will retrieve data via
ListModel.getElementAt when
necessary.
Besides assign a list model, you could assign a renderer
(a
ListitemRenderer instance) to a listbox, such that
the listbox will use this
renderer to render the data returned by
ListModel.getElementAt .
If not assigned, the default renderer, which assumes a label per
list item, is used.
In other words, the default renderer adds a label to
a row by calling toString against the object returned
by
ListModel.getElementAt There are two ways to handle long content: scrolling and paging.
If
Listbox.getMold is "default", scrolling is used if
Listbox.setHeight is called and too much content to display.
If
Listbox.getMold is "paging", paging is used if two or more pages are
required. |
Listcell.java | Class | A list cell. |
Listfoot.java | Class | A row of
Listfooter . |
Listfooter.java | Class | A column of the footer of a list box (
Listbox ). |
Listhead.java | Class | A list headers used to define multi-columns and/or headers. |
Listheader.java | Class | The list header which defines the attributes and header of a columen
of a list box. |
Listitem.java | Class | A list item. |
ListitemComparator.java | Class | A comparator used to compare
Listitem , if not live data,
or the data themselves, if live data. |
ListitemRenderer.java | Interface | Identifies components that can be used as "rubber stamps" to paint
the cells in a
Listbox .
If you need better control, your renderer can also implement
ListitemRendererExt .
In addition, you could also
implement
RendererCtrl . |
ListitemRendererExt.java | Interface | Provides additional control to
ListitemRenderer . |
ListModel.java | Interface | This interface defines the methods that components like
Listbox and
Grid use to get the content of items. |
ListModelArray.java | Class | This is the
ListModel as an Object array to be used with
Listbox . |
ListModelExt.java | Interface | An extra interface that can be implemented with
ListModel to control the sorting of the listbox. |
ListModelList.java | Class | This is the
ListModel as a
java.util.List to be used with
Listbox . |
ListModelMap.java | Class | This is the
ListModel as a
java.util.Map to be used with
Listbox . |
ListModelSet.java | Class | This is the
ListModel as a
java.util.Set to be used with
Listbox . |
ListSubModel.java | Interface | An extra interface that can be implemented with
ListModel to control
the extract of the combobox. |
Longbox.java | Class | An edit box for holding an integer. |
Menu.java | Class | An element, much like a button, that is placed on a menu bar. |
Menubar.java | Class | A container that usually contains menu elements. |
Menuitem.java | Class | sA single choice in a
Menupopup element. |
Menupopup.java | Class | A container used to display menus. |
Menuseparator.java | Class | Used to create a separator between menu items. |
Messagebox.java | Class | Represents the message box.
You don't create
Messagebox directly. |
Paging.java | Class | Paging of long content. |
PieModel.java | Interface | A Pie chart data model. |
Popup.java | Class | A container that is displayed as a popup. |
Progressmeter.java | Class | A progress meter is a bar that indicates how much of a task has been completed. |
Radio.java | Class | A radio button.
Radio buttons without a ancestor
Radiogroup is considered
as the same group.
The nearest ancestor
Radiogroup is the group that the radio
belongs to. |
Radiogroup.java | Class | A radio group.
Note: To support the versatile layout, a radio group accepts any kind of
children, including
Radio . |
RendererCtrl.java | Interface | This interface defines the methods components like
Listbox use to notify the renderer for several circumstance.
Though
ListitemRenderer.render is called one item a timer,
a request might have several items to render. |
Row.java | Class | A single row in a
Rows element.
Each child of the
Row element is placed in each successive cell
of the grid. |
RowRenderer.java | Interface | Identifies components that can be used as "rubber stamps" to paint
the cells in a
Grid .
If you need better control, your renderer can also implement
RowRendererExt .
In addition, you could also
implement
RendererCtrl . |
RowRendererExt.java | Interface | Provides additional control to
RowRenderer . |
Rows.java | Class | Defines the rows of a grid. |
Script.java | Class | A component to represent script codes running at the client.
It is the same as HTML SCRIPT tag.
Note: it is the scripting codes running at the client, not at the
server. |
Separator.java | Class | A separator. |
SimpleCategoryModel.java | Class | A Category data model implementation of
CategoryModel . |
SimpleConstraint.java | Class | A simple constraint that you could build based the predefined constants.
Depending on the component (such as
Intbox and
Datebox ,
you could combine the flags, such as
SimpleConstraint.NO_POSITIVE +
SimpleConstraint.NO_ZERO to accept only negative number. |
SimpleDateConstraint.java | Class | A simple date constraint. |
SimpleHiLoModel.java | Class | A HiLo data model implementation of
HiLoModel . |
SimpleListModel.java | Class | A simple implementation of
ListModel .
Note: It assumes the content is immutable. |
SimplePieModel.java | Class | A Pie chart data model implementation of
PieModel . |
SimpleTreeModel.java | Class | A simple implementation of
TreeModel . |
SimpleTreeNode.java | Class | |
SimpleXYModel.java | Class | A XY data model implementation of
XYModel . |
Slider.java | Class | A slider.
To customize the look, you can specify the style class with
Slider.setSclass . |
Space.java | Class | Space is a
Separator with the orient default to "horizontal". |
Splitter.java | Class | An element which should appear before or after an element inside a box
(
Box ,
Vbox and
Hbox ).
When the splitter is dragged, the sibling elements of the splitter are
resized. |
Style.java | Class | The style component used to specify CSS styles for the owner desktop. |
Tab.java | Class | A tab. |
Tabbox.java | Class | A tabbox. |
Tabpanel.java | Class | A tab panel. |
Tabpanels.java | Class | A collection of tab panels. |
Tabs.java | Class | A collection of tabs (
Tab ). |
Textbox.java | Class | A textbox. |
Timebox.java | Class | An edit box for holding a time (a java.util.Date Object , but only Hour & Minute are used.
Default
Timebox.getSclass : datebox.
timebox doens't support customized format. |
Timer.java | Class | Fires one or more
org.zkoss.zk.ui.event.Event after
a specified delay. |
Toolbar.java | Class | A toolbar. |
Toolbarbutton.java | Class | A tool button.
The default CSS class is "button".
Non-xul extension: Toolbarbutton supports
Toolbarbutton.getHref . |
Tree.java | Class | A container which can be used to hold a tabular
or hierarchical set of rows of elements. |
Treecell.java | Class | A treecell.
In XUL, treecell cannot have any child, but ZUL allows it.
Thus, you could place any kind of children in it. |
Treechildren.java | Class | A treechildren. |
Treecol.java | Class | A treecol. |
Treecols.java | Class | A treecols. |
Treefoot.java | Class | A row of
Treefooter . |
Treefooter.java | Class | A column of the footer of a tree (
Tree ). |
Treeitem.java | Class | A treeitem. |
TreeitemRenderer.java | Interface | Identifies components that can be used as "rubber stamps" to paint
the cells in a
Tree . |
TreeModel.java | Interface | This interface defines the methods that component like
Tree use to get the content of items. |
Treerow.java | Class | A treerow. |
Vbox.java | Class | A vbox. |
Version.java | Class | The version of the ZK XUL component set. |
Window.java | Class | A generic window.
Unlike other elements, each
Window is an independent ID space
(by implementing
IdSpace ).
It means a window and all its descendants forms a ID space and
the ID of each of them is unique in this space.
You could retrieve any of them in this space by calling
Window.getFellow .
If a window X is a descendant of another window Y, X's descendants
are not visible in Y's space. |
XYModel.java | Interface | A XY chart data model. |