public interface Component extends Scope, java.io.Serializable, java.lang.Cloneable
There are two kind of life-cycles: one is page creations and the other is asynchronous updates.
The page creation occurs when a page is about to render at the first time. The detailed phases can be found in the devloper's guide.
The asynchronous update occurs when users does something on the browser, such as changing the content of input, clicking buttons and so on. Such behaviors are packed as requests, queue in the browser, and then send to the server at the proper time. The detailed phases can be found in the developer's guide.
To simplify the development of components and applications, invocations of methods of components and event listener are all serialized. In other words, application and component developers need not worry synchronization and other thread issues (unless you are developing background thread to handle long operations).
It also implies a limitation that you cannot access components belonging to other desktops when processing an event.
It is not recommended to implements this interface while developing custom
component. Instead is is recommended to extend from AbstractComponent
or its specialized base component classes. Refer to Creating a simple ZK Component
Modifier and Type | Field and Description |
---|---|
static int |
APPLICATION_SCOPE
Used with
getAttribute(String, int) and related to denote
custom attributes shared by the whole application. |
static int |
COMPONENT_SCOPE
Used with
getAttribute(String, int) and related to denote
custom attributes private to a component is searched. |
static int |
DESKTOP_SCOPE
Used with
getAttribute(String, int) and related to denote
custom attributes shared by the same desktop. |
static int |
PAGE_SCOPE
Used with
getAttribute(String, int) and related to denote
custom attributes shared by the same page. |
static int |
REQUEST_SCOPE
Used with
getAttribute(String, int) and related to denote
custom attributes shared by the same request. |
static int |
SESSION_SCOPE
Used with
getAttribute(String, int) and related to denote
custom attributes shared by the same session. |
static int |
SPACE_SCOPE
Used with
getAttribute(String, int) and related to denote
custom attributes shared by the same ID space. |
Modifier and Type | Method and Description |
---|---|
boolean |
addEventListener(int priority,
java.lang.String evtnm,
EventListener<? extends Event> listener)
Adds an event listener to specified event name for this component
with the given priority.
|
boolean |
addEventListener(java.lang.String evtnm,
EventListener<? extends Event> listener)
Adds an event listener to specified event name for this component.
|
boolean |
addForward(java.lang.String originalEvent,
Component target,
java.lang.String targetEvent)
Adds a forward condition to forward the event received
by this component to another component.
|
boolean |
addForward(java.lang.String originalEvent,
Component target,
java.lang.String targetEvent,
java.lang.Object eventData)
Adds a forward condition to forward the event received
by this component to another component with extra event data.
|
boolean |
addForward(java.lang.String originalEvent,
java.lang.String targetPath,
java.lang.String targetEvent)
Adds a forward condition to forward the event received
by this component to another component, specified with a path.
|
boolean |
addForward(java.lang.String originalEvent,
java.lang.String targetPath,
java.lang.String targetEvent,
java.lang.Object eventData)
Adds a forward condition to forward the event received
by this component to another component of the specified path
with extra event data.
|
boolean |
appendChild(Component child)
Appends a child.
|
void |
applyProperties()
Initializes the properties (a.k.a. members)
based on what are defined in the component definition.
|
java.lang.Object |
clone()
Clones the component.
|
void |
detach()
Detaches this component such that it won't belong to any page.
|
java.lang.Object |
getAttribute(java.lang.String name)
Returns the custom attribute associated with this component, i.e.,
COMPONENT_SCOPE . |
java.lang.Object |
getAttribute(java.lang.String name,
int scope)
Returns the value of the specified custom attribute in the specified scope,
or null if not defined.
|
java.lang.Object |
getAttributeOrFellow(java.lang.String name,
boolean recurse)
Returns the custom attribute associated with this component,
or the fellow of this component; or null if not found.
|
java.util.Map<java.lang.String,java.lang.Object> |
getAttributes()
Returns all custom attributes associated with this component, i.e.,
COMPONENT_SCOPE . |
java.util.Map<java.lang.String,java.lang.Object> |
getAttributes(int scope)
Returns all custom attributes of the specified scope.
|
AuService |
getAuService()
Returns an AU service to process the AU request before the component's
default handling.
|
java.lang.String |
getAutag()
Returns the AU tag for this widget.
|
<T extends Component> |
getChildren()
Returns a live list of children.
|
java.lang.String |
getClientAttribute(java.lang.String name)
Returns the value of a DOM attribute
|
java.lang.String |
getClientDataAttribute(java.lang.String name)
Returns the value of a DOM data attribute
Notice that the parameter - name would be expanded by adding the prefix
"data-" automatically.
|
ComponentDefinition |
getDefinition()
Returns the component definition of this component (never null).
|
Desktop |
getDesktop()
Returns the desktop of this component,
or null if this component doesn't belong to any desktop.
|
java.lang.Iterable<EventListener<? extends Event>> |
getEventListeners(java.lang.String evtnm)
Returns an iterable collection of the event listeners for the given event.
|
Component |
getFellow(java.lang.String id)
Returns a component of the specified ID in the same ID space.
|
Component |
getFellow(java.lang.String id,
boolean recurse)
Returns a component of the specified ID in the same ID space.
|
Component |
getFellowIfAny(java.lang.String id)
Returns a component of the specified ID in the same ID space, or null
if not found.
|
Component |
getFellowIfAny(java.lang.String id,
boolean recurse)
Returns a component of the specified ID in the same ID space, or null
if not found.
|
java.util.Collection<Component> |
getFellows()
Returns all fellows in the same ID space of this component.
|
Component |
getFirstChild()
Returns the first child component, or null if no child at all.
|
java.lang.String |
getId()
Returns the ID.
|
Component |
getLastChild()
Returns the last child component, or null if no child at all.
|
java.util.Iterator<EventListener<? extends Event>> |
getListenerIterator(java.lang.String evtnm)
Deprecated.
As of release 6.0, replaced with
getEventListeners(java.lang.String) .
Returns an iterator for iterating the event listeners for the given event. |
java.lang.String |
getMold()
Returns the mold used to render this component.
|
Component |
getNextSibling()
Returns the next sibling, or null if it is the last child.
|
Page |
getPage()
Returns the page that this component belongs to, or null if
it doesn't belong to any page.
|
Component |
getParent()
Returns the parent component, or null if this is the root component.
|
Component |
getPreviousSibling()
Returns the previous sibling, or null if it is the first child.
|
Component |
getRoot()
Returns the root of this component.
|
java.lang.Object |
getShadowVariable(java.lang.String name,
boolean recurse)
Returns the shadow variable associated with this component or its parent
component; or null if not found.
|
IdSpace |
getSpaceOwner()
Returns the owner of the ID space that this component belongs to.
|
java.lang.String |
getStubonly()
Returns whether this component is stub-only.
|
Template |
getTemplate(java.lang.String name)
Returns the template of the given name, or null if not available.
|
java.util.Set<java.lang.String> |
getTemplateNames()
Returns a readonly set of the names of all templates.
|
java.lang.String |
getUuid()
Returns UUID (universal unique ID) which is unique in the whole
session.
|
java.lang.String |
getWidgetAttribute(java.lang.String name)
Deprecated.
As released of ZK 8.0.0, please use
getClientAttribute(String)
instead. |
java.util.Set<java.lang.String> |
getWidgetAttributeNames()
Returns a read-only collection of additions DOM attributes that shall be
generated.
|
java.lang.String |
getWidgetClass()
Returns the widget class (a.k.a., the widget type), or null
if not available.
|
java.lang.String |
getWidgetListener(java.lang.String evtnm)
Returns the script of the client event, or null if not found.
|
java.util.Set<java.lang.String> |
getWidgetListenerNames()
Returns a read-only collection of event names (String) that
the listener of the peer widget are assigned, or
an empty collection if none is registered.
|
java.lang.String |
getWidgetOverride(java.lang.String name)
Returns the script of the method definition to override
widget's method, or null if not found.
|
java.util.Set<java.lang.String> |
getWidgetOverrideNames()
Returns a read-only collection of the property names (String) that
shall be overridden, or an empty collection if none is registered.
|
boolean |
hasAttribute(java.lang.String name)
Returns if the custom attribute is associate with this component.
|
boolean |
hasAttribute(java.lang.String name,
int scope)
Returns if the custom attribute is associate with this component.
|
boolean |
hasAttributeOrFellow(java.lang.String name,
boolean recurse)
Returns if a custom attribute is associated with this component,
or the fellow of this component.
|
boolean |
hasFellow(java.lang.String compId)
Returns whether a fellow exists in the same ID space of this component.
|
boolean |
hasFellow(java.lang.String id,
boolean recurse)
Returns whether there is a fellow named with the specified component ID
in the same ID space as this component.
|
boolean |
insertBefore(Component newChild,
Component refChild)
Inserts a child before the reference child.
|
void |
invalidate()
Invalidates this component by setting the dirty flag
such that it will be redraw the whole content of this
component and its dependences later.
|
boolean |
isInvalidated()
Returns if this component needs to be redrawn at the client.
|
boolean |
isListenerAvailable(java.lang.String evtnm,
boolean asap)
Returns whether the event listener is available.
|
boolean |
isVisible()
Returns whether this component is visible.
|
Component |
query(java.lang.String selector)
Find the first component that matches the given CSS3 selector.
|
java.lang.Iterable<Component> |
queryAll(java.lang.String selector)
Returns an iterable object for components that match the given CSS3 selector.
|
java.lang.Object |
removeAttribute(java.lang.String name)
Removes the custom attribute associated with this component, i.e.,
COMPONENT_SCOPE . |
java.lang.Object |
removeAttribute(java.lang.String name,
int scope)
Removes the specified custom attribute in the specified scope.
|
boolean |
removeChild(Component child)
Removes a child.
|
boolean |
removeEventListener(java.lang.String evtnm,
EventListener<? extends Event> listener)
Removes an event listener.
|
boolean |
removeForward(java.lang.String originalEvent,
Component target,
java.lang.String targetEvent)
Removes a forward condition that was added by
addForward(String, Component, String) . |
boolean |
removeForward(java.lang.String originalEvent,
java.lang.String targetPath,
java.lang.String targetEvent)
Removes a forward condition that was added by
addForward(String, String, String) . |
java.lang.Object |
setAttribute(java.lang.String name,
java.lang.Object value)
Sets the custom attribute associated with this component, i.e.,
COMPONENT_SCOPE . |
java.lang.Object |
setAttribute(java.lang.String name,
java.lang.Object value,
int scope)
Sets the value of the specified custom attribute in the specified scope.
|
void |
setAuService(AuService service)
Sets an AU service to process the AU request before the component's
default handling.
|
void |
setAutag(java.lang.String tag)
Sets the AU tag for this widget.
|
java.lang.String |
setClientAttribute(java.lang.String name,
java.lang.String value)
Sets or removes a DOM attribute of the peer widget (at the client).
|
java.lang.String |
setClientDataAttribute(java.lang.String name,
java.lang.String value)
Sets a DOM data attribute of the peer widget (at the client).
|
void |
setId(java.lang.String id)
Sets the ID.
|
void |
setMold(java.lang.String mold)
Sets the mold to render this component.
|
void |
setPage(Page page)
Sets what page this component belongs to.
|
void |
setPageBefore(Page page,
Component refRoot)
Sets what page this component belongs to, and insert
this component right before the reference component.
|
void |
setParent(Component parent)
Sets the parent component.
|
void |
setStubonly(boolean stubonly)
Sets whether this component is stub-only.
|
void |
setStubonly(java.lang.String stubonly)
Sets whether this component is stub-only.
|
Template |
setTemplate(java.lang.String name,
Template template)
Sets a UI template which could be retrieved later
with
getTemplate(java.lang.String) . |
boolean |
setVisible(boolean visible)
Sets whether this component is visible.
|
java.lang.String |
setWidgetAttribute(java.lang.String name,
java.lang.String value)
Deprecated.
As released of ZK 8.0.0, please use
setClientAttribute(String, String)
instead. |
void |
setWidgetClass(java.lang.String clsnm)
Sets the widget class (a.k.a., the widget type).
|
java.lang.String |
setWidgetListener(java.lang.String evtnm,
java.lang.String script)
Sets or removes an event listener of the peer widget.
|
java.lang.String |
setWidgetOverride(java.lang.String name,
java.lang.String script)
Sets or removes a method or a property of the peer widget (at the client).
|
addScopeListener, getAttribute, hasAttribute, removeAttribute, removeScopeListener, setAttribute
static final int COMPONENT_SCOPE
getAttribute(String, int)
and related to denote
custom attributes private to a component is searched.
It is also known as the component attributes.
It is the same as getAttributes(int)
.
static final int SPACE_SCOPE
getAttribute(String, int)
and related to denote
custom attributes shared by the same ID space.
It is also known as the ID space attributes.
static final int PAGE_SCOPE
getAttribute(String, int)
and related to denote
custom attributes shared by the same page.
It is also known as the page attributes.
It is the same as Page.getAttributes(int)
.
static final int DESKTOP_SCOPE
getAttribute(String, int)
and related to denote
custom attributes shared by the same desktop.
It is also known as the desktop attributes.
It is the same as Desktop.getAttributes()
.
static final int SESSION_SCOPE
getAttribute(String, int)
and related to denote
custom attributes shared by the same session.
It is also known as the session attributes.
It is the same as Session.getAttributes()
.
static final int APPLICATION_SCOPE
getAttribute(String, int)
and related to denote
custom attributes shared by the whole application.
It is also known as the application attributes.
It is the same as WebApp.getAttributes()
.
static final int REQUEST_SCOPE
getAttribute(String, int)
and related to denote
custom attributes shared by the same request.
It is also known as the request attributes, or execution attributes.
It is the same as Execution.getAttributes()
.
java.lang.String getWidgetClass()
Default: the widget class is decided by the component definition
(ComponentDefinition
) and the mold (getMold()
).
To override in Java, you could invoke setWidgetClass(java.lang.String)
.
To override in ZUML, you could use the client namespace as follows.
<window xmlns:w="http://www.zkoss.org/2005/zk/client"
w:use="foo.MyWindow">
</window>
Note: for Ajax devices, the widget class must be non-null.
setWidgetClass(java.lang.String)
void setWidgetClass(java.lang.String clsnm)
clsnm
- the widget's class name at the client side.
If null (or empty), the default one is used (see getWidgetClass()
).ComponentDefinition getDefinition()
IdSpace getSpaceOwner()
IdSpace
, this method
returns itself.
If it has an ancestor that implements IdSpace
,
the ancestor is returned.
Otherwise, the page it belongs to is returned
Each ID space defines an independent set of IDs. No component
in the same ID space could have the same ID.
To get any component in the same ID space, you could use
getFellow(java.lang.String)
.
See IdSpace
for more details.
The ID space related methods include getFellow(java.lang.String)
,
getAttribute(java.lang.String, int)
and getAttributeOrFellow(java.lang.String, boolean)
.
java.lang.String getId()
Default: "" (an empty string; it means no ID at all).
If a component belongs to an ID space (see IdSpace
),
the ID must also be unique in the ID space it belongs.
any its parent and ancestor implements IdSpace
.
If it is a root component (i.e., without any parent),
its ID must be unique among root components of the same page.
A page itself is also an ID space, so you could retrieve
components in a page by use of IdSpace.getFellow(java.lang.String)
, unless
the component is a descendant of another component that implements
IdSpace
. In this case, you have to retrieve the parent
first (by use of IdSpace.getFellow(java.lang.String)
and then use getFellow(java.lang.String)
against the owner of the ID space.
In zscript and EL, a component with explicit ID can be accessed directly by the ID.
Path
void setId(java.lang.String id)
getId()
for more details.
Default: "" (an empty string; it means no ID at all).
id
- the identifier.
You could specify null or an empty string to remove ID.Selectors
Desktop getDesktop()
When a component is created in an event listener, it
is assigned to the current desktop automatically.
If a component is created not in any event listener, it doesn't
belong to any desktop and this method returns null.
Once a component is attached to a desktop (by use of setPage(org.zkoss.zk.ui.Page)
or setParent(org.zkoss.zk.ui.Component)
), it belongs to the desktop.
Notice: there is no way to detach a component from a desktop, once it is attached as described above. In other words, you cannot move a component (or page) from one desktop to another.
In summary, there are only two ways to handle components.
Page getPage()
When a component is created (a.k.a., constructed), it doesn't belong to any page. And, if a component doesn't belong to any page, they won't be displayed at the client.
When changing parent (setParent(org.zkoss.zk.ui.Component)
), the child component's
page will become the same as parent's. In other words, a component
is added to a page automatically if it becomes a child of
another component (who belongs to a page).
For root components, you have to invoke setPage(org.zkoss.zk.ui.Page)
Explicitly.
void setPage(Page page)
For child components, the page they belong is maintained automatically. You need to invoke this method only for root components.
Note: a component might be attached to a page due invocations
other than this method. For example, a component is attached
if its parent is attached.
To know whether it is attached, override
ComponentCtrl.onPageAttached(org.zkoss.zk.ui.Page, org.zkoss.zk.ui.Page)
rather than this method.
If you would like to monitor if a component is attached or detached
from a page, you could register a desktop listener implementing
UiLifeCycle
.
void setPageBefore(Page page, Component refRoot)
For child components, the page they belong is maintained automatically. You need to invoke this method only for root components.
It is similar to setPage(org.zkoss.zk.ui.Page)
, except this component
will be placed before the reference component.
If the reference component is null, this component is placed
at the end of all root components.
refRoot
- another root component used as a reference
which this component will be placed before.
If null, this component will be placed at the end of all
root components (no matter whether it already belongs to the same page).setPage(org.zkoss.zk.ui.Page)
java.lang.String getUuid()
RawId
is also implemented.
It is mainly used for communication between client and server and you rarely need to access it.
If RawId
is implemented as part of
a component, UUID is the same as getId()
if setId(java.lang.String)
is ever called. It is designed to migrate HTML pages to ZK, such
that the element ID could remain the same.
Component getFellow(java.lang.String id)
Unlike getFellowIfAny(java.lang.String)
, it throws an exception if not found.
ComponentNotFoundException
- is thrown if fellow not foundComponent getFellowIfAny(java.lang.String id)
Unlike getFellow(java.lang.String)
, it returns null if not found.
java.util.Collection<Component> getFellows()
boolean hasFellow(java.lang.String compId)
Component getFellow(java.lang.String id, boolean recurse) throws ComponentNotFoundException
Unlike getFellowIfAny(String, boolean)
, it throws ComponentNotFoundException
if not found.
recurse
- whether to look up the parent ID space for the
existence of the fellowComponentNotFoundException
- is thrown if
this component doesn't belong to any ID spaceComponent getFellowIfAny(java.lang.String id, boolean recurse)
Unlike getFellow(String, boolean)
, it returns null
if not found.
recurse
- whether to look up the parent ID space for the
existence of the fellowboolean hasFellow(java.lang.String id, boolean recurse)
recurse
- whether to look up the parent ID space for the
existence of the fellowComponent getNextSibling()
Component getPreviousSibling()
Component getFirstChild()
Component getLastChild()
java.util.Map<java.lang.String,java.lang.Object> getAttributes(int scope)
If scope is COMPONENT_SCOPE
, it means custom attributes private
to this component.
If scope is SPACE_SCOPE
, it means custom attributes shared
by components from the same ID space as this one's.
If scope is PAGE_SCOPE
, it means custom attributes shared
by components from the same page as this one's.
If scope is DESKTOP_SCOPE
, it means custom attributes shared
by components from the same desktops this one's.
scope
- one of COMPONENT_SCOPE
, SPACE_SCOPE
,
PAGE_SCOPE
, DESKTOP_SCOPE
, SESSION_SCOPE
,
REQUEST_SCOPE
or APPLICATION_SCOPE
,java.lang.Object getAttribute(java.lang.String name, int scope)
If scope is COMPONENT_SCOPE
, it means attributes private
to this component.
If scope is SPACE_SCOPE
, it means custom attributes shared
by components from the same ID space as this one's.
If scope is PAGE_SCOPE
, it means custom attributes shared
by components from the same page as this one's.
If scope is DESKTOP_SCOPE
, it means custom attributes shared
by components from the same desktop as this one's.
scope
- one of COMPONENT_SCOPE
, SPACE_SCOPE
,
PAGE_SCOPE
, DESKTOP_SCOPE
, SESSION_SCOPE
,
REQUEST_SCOPE
or APPLICATION_SCOPE
,boolean hasAttribute(java.lang.String name, int scope)
If scope is COMPONENT_SCOPE
, it means attributes private
to this component.
If scope is SPACE_SCOPE
, it means custom attributes shared
by components from the same ID space as this one's.
If scope is PAGE_SCOPE
, it means custom attributes shared
by components from the same page as this one's.
If scope is DESKTOP_SCOPE
, it means custom attributes shared
by components from the same desktop as this one's.
Notice that null
is a valid value, so you can
tell if an attribute is associated by examining the return value
of getAttribute(java.lang.String, int)
.
scope
- one of COMPONENT_SCOPE
, SPACE_SCOPE
,
PAGE_SCOPE
, DESKTOP_SCOPE
, SESSION_SCOPE
,
REQUEST_SCOPE
or APPLICATION_SCOPE
,java.lang.Object setAttribute(java.lang.String name, java.lang.Object value, int scope)
Note: The attribute is removed (by removeAttribute(java.lang.String, int)
if value is null.
If scope is COMPONENT_SCOPE
, it means custom attributes private
to this component.
If scope is SPACE_SCOPE
, it means custom attributes shared
by components from the same ID space as this one's.
If scope is PAGE_SCOPE
, it means custom attributes shared
by components from the same page as this one's.
If scope is DESKTOP_SCOPE
, it means custom attributes shared
by components from the same desktop as this one's.
scope
- one of COMPONENT_SCOPE
, SPACE_SCOPE
,
PAGE_SCOPE
, DESKTOP_SCOPE
, SESSION_SCOPE
,
REQUEST_SCOPE
or APPLICATION_SCOPE
,value
- the value. If null, the attribute is removed.java.lang.Object removeAttribute(java.lang.String name, int scope)
If scope is COMPONENT_SCOPE
, it means attributes private
to this component.
If scope is SPACE_SCOPE
, it means custom attributes shared
by components from the same ID space as this one's.
If scope is PAGE_SCOPE
, it means custom attributes shared
by components from the same page as this one's.
If scope is DESKTOP_SCOPE
, it means custom attributes shared
by components from the same desktop as this one's.
scope
- COMPONENT_SCOPE
, SPACE_SCOPE
,
PAGE_SCOPE
, DESKTOP_SCOPE
, SESSION_SCOPE
,
REQUEST_SCOPE
or APPLICATION_SCOPE
,java.util.Map<java.lang.String,java.lang.Object> getAttributes()
COMPONENT_SCOPE
.getAttributes
in interface Scope
java.lang.Object getAttribute(java.lang.String name)
COMPONENT_SCOPE
.getAttribute
in interface Scope
boolean hasAttribute(java.lang.String name)
Notice that null
is a valid value, so you can
tell if an attribute is associated by examining the return value
of getAttribute(java.lang.String, int)
.
hasAttribute
in interface Scope
java.lang.Object setAttribute(java.lang.String name, java.lang.Object value)
COMPONENT_SCOPE
.setAttribute
in interface Scope
java.lang.Object removeAttribute(java.lang.String name)
COMPONENT_SCOPE
.removeAttribute
in interface Scope
java.lang.Object getAttributeOrFellow(java.lang.String name, boolean recurse)
Notice that it doesn't check any variable defined in
VariableResolver
(of Page.addVariableResolver(org.zkoss.xel.VariableResolver)
).
recurse
- whether to look up the parent component for the
existence of the attribute.java.lang.Object getShadowVariable(java.lang.String name, boolean recurse)
Notice that it doesn't check any variable defined in
VariableResolver
(of Page.addVariableResolver(org.zkoss.xel.VariableResolver)
).
recurse
- whether to look up the parent component for the
existence of the shadow variable.boolean hasAttributeOrFellow(java.lang.String name, boolean recurse)
Notice that it doesn't check any variable defined in
VariableResolver
(of Page.addVariableResolver(org.zkoss.xel.VariableResolver)
).
recurse
- whether to look up the parent component for the
existence of the attribute.java.lang.String getStubonly()
There are three possible values: "true", "false", and "inherit", and "ignore-native".
Notice that the native components will be stub-ized, no matter
this property is set. Though rarely required, you could control
whether to stub-ize the native components with
a component attribute called Attributes.STUB_NATIVE
.
void setStubonly(java.lang.String stubonly)
Default: "inherit" (i.e., the same as the parent's stub-only, and "false" is assumed if none of parents is specified with stub-only).
If a component is set to stub-only, the application running at the server shall not access it anymore after rendered to the client. The ZK loader will try to minimize the memory footprint by merging stub-only components and replacing with light-weight components.
However, the event listeners and handlers are preserved, so
they will be invoked if the corresponding event is received.
Since the original component is gone, the event is the more generic
format: an instance of Event
(rather than MouseEvent or others).
If a component is stub-only, the application usually access it only at the client since all widgets are preserved at the client (so are events).
This method is available only for ZK EE.
stubonly
- whether it is stub-only. The allowed values include
"true", "false" and "inherit".void setStubonly(boolean stubonly)
setStubonly(stubonly ? "true": "false")
.Component getParent()
void setParent(Component parent)
Note: setParent(org.zkoss.zk.ui.Component)
always calls back insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)
and/or removeChild(org.zkoss.zk.ui.Component)
,
while insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)
and removeChild(org.zkoss.zk.ui.Component)
always calls back setParent(org.zkoss.zk.ui.Component)
,
if the parent is changed. Thus, you don't need to override
both insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)
and setParent(org.zkoss.zk.ui.Component)
, if you want
to customize the behavior.
<T extends Component> java.util.List<T> getChildren()
Component getRoot()
boolean isVisible()
boolean setVisible(boolean visible)
boolean insertBefore(Component newChild, Component refChild)
You could use setParent(org.zkoss.zk.ui.Component)
or appendChild(org.zkoss.zk.ui.Component)
instead of this method, unless
you want to control where to put the child.
Note: setParent(org.zkoss.zk.ui.Component)
always calls back insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)
and/or removeChild(org.zkoss.zk.ui.Component)
,
while insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)
and removeChild(org.zkoss.zk.ui.Component)
always calls back setParent(org.zkoss.zk.ui.Component)
,
if the parent is changed. Thus, you don't need to override
both insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)
and setParent(org.zkoss.zk.ui.Component)
, if you want
to customize the behavior.
If you would like to monitor if a component is attached or detached
from a page, you could register a desktop listener implementing
UiLifeCycle
.
newChild
- 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.boolean appendChild(Component child)
boolean removeChild(Component child)
detach()
) and it will be removed
if it is no longer used.
You could use setParent(org.zkoss.zk.ui.Component)
with null instead of this method.
Note: setParent(org.zkoss.zk.ui.Component)
always calls back insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)
and/or removeChild(org.zkoss.zk.ui.Component)
,
while insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)
and removeChild(org.zkoss.zk.ui.Component)
always calls back setParent(org.zkoss.zk.ui.Component)
,
if the parent is changed. Thus, you don't need to override
both insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)
and setParent(org.zkoss.zk.ui.Component)
, if you want
to customize the behavior.
If you would like to monitor if a component is attached or detached
from a page, you could register a desktop listener implementing
UiLifeCycle
.
void detach()
setParent(org.zkoss.zk.ui.Component)
or setPage(org.zkoss.zk.ui.Page)
to
attach it to any page, it will be removed automatically
(from the client) after the current event is processed.java.lang.String getMold()
Default: "default"
Since 5.0, the default can be overridden by specify a library property. For example, if the component's class name is org.zkoss.zul.Button, then you can override the default mold by specifying the property called "org.zkoss.zul.Button.mold" with the mold you want in zk.xml. For example,
<library-property>
<name>org.zkoss.zul.Button.mold</name>
<value>trendy</value>
</library-property>
Notice that it doesn't affect the deriving classes. If you want to change the deriving class's default mold, you have to specify them explicitly, too.
ComponentDefinition
void setMold(java.lang.String mold)
mold
- the mold. If null or empty, "default" is assumed.ComponentDefinition
boolean addEventListener(int priority, java.lang.String evtnm, EventListener<? extends Event> listener)
You could register listener to all components in the same page
by use of Page.addEventListener(java.lang.String, org.zkoss.zk.ui.event.EventListener<? extends org.zkoss.zk.ui.event.Event>)
.
ZK 5.0 and earlier, the second registration is ignored if an event listener has been registered twice. However, since 6.0.0 and later, it won't be ignored. If a listener has been registered multiple times, it will be invoked multiple times.
If you prefer to ignore the second registration, you could specify a library property called "org.zkoss.zk.ui.EventListener.duplicateIgnored" to true.
priority
- the priority of the event. The higher the priority is, the earlier it
is invoked.addEventListener(String, EventListener)
is 0.evtnm
- what event to listen (never null)Page.addEventListener(java.lang.String, org.zkoss.zk.ui.event.EventListener<? extends org.zkoss.zk.ui.event.Event>)
boolean addEventListener(java.lang.String evtnm, EventListener<? extends Event> listener)
You could register listener to all components in the same page
by use of Page.addEventListener(java.lang.String, org.zkoss.zk.ui.event.EventListener<? extends org.zkoss.zk.ui.event.Event>)
.
ZK 5.0 and earlier, the second registration is ignored if an event listener has been registered twice. However, since 6.0.0 and later, it won't be ignored. If a listener has been registered multiple times, it will be invoked multiple times.
If you prefer to ignore the second registration, you could specify a library property called "org.zkoss.zk.ui.EventListener.duplicateIgnored" to true.
evtnm
- what event to listen (never null)Page.addEventListener(java.lang.String, org.zkoss.zk.ui.event.EventListener<? extends org.zkoss.zk.ui.event.Event>)
boolean removeEventListener(java.lang.String evtnm, EventListener<? extends Event> listener)
boolean isListenerAvailable(java.lang.String evtnm, boolean asap)
Unlike Events.isListened(org.zkoss.zk.ui.Component, java.lang.String, boolean)
,
this method checks only the event listener registered by
addEventListener(int, java.lang.String, org.zkoss.zk.ui.event.EventListener<? extends org.zkoss.zk.ui.event.Event>)
.
asap
- whether to check only non-deferrable listener,
i.e., not implementing Deferrable
,
or Deferrable.isDeferrable()
is false.Deferrable
,
Events.isListened(org.zkoss.zk.ui.Component, java.lang.String, boolean)
,
addEventListener(int, java.lang.String, org.zkoss.zk.ui.event.EventListener<? extends org.zkoss.zk.ui.event.Event>)
java.util.Iterator<EventListener<? extends Event>> getListenerIterator(java.lang.String evtnm)
getEventListeners(java.lang.String)
.
Returns an iterator for iterating the event listeners for the given event.java.lang.Iterable<EventListener<? extends Event>> getEventListeners(java.lang.String evtnm)
Note: it is OK to invoke addEventListener(int, java.lang.String, org.zkoss.zk.ui.event.EventListener<? extends org.zkoss.zk.ui.event.Event>)
or removeEventListener(java.lang.String, org.zkoss.zk.ui.event.EventListener<? extends org.zkoss.zk.ui.event.Event>)
when iterating through the event listeners with the returned collection.
To remove an event listener from the returned iterable collection,
you could invoke Iterable.iterator()
's Iterator.remove()
.
boolean addForward(java.lang.String originalEvent, Component target, java.lang.String targetEvent)
Default: no forward condition at all.
Once the condition is added, a event called targetEvent
is posted to the target
component,
when this component receives the orginalEvent
event.
originalEvent
- the original event that was received
by this component. If null, "onClick" is assumed.target
- the target component to receive the event.
If null, the space owner getSpaceOwner()
is assumed.
If null and the space owner is the page, the root component is assumed.targetEvent
- the target event that the target component
will receive.
If null, it is the same as the original event.removeForward(String, Component, String)
,
addForward(String, Component, String, Object)
boolean addForward(java.lang.String originalEvent, java.lang.String targetPath, java.lang.String targetEvent)
Note: the target component is retrieved from the path, each time the event is received. Thus, you can reference to a component that is created later.
originalEvent
- the original event that was received
by this component. If null, "onClick" is assumed.targetPath
- the target component's path related to this component.
If ".", this component is assumed.
If null, the space owner is assumed.
If null and the space owner is the page, the root component is assumed.targetEvent
- the target event that the target component
will receive.
If null, it is the same as the original event.addForward(String, Component, String)
,
removeForward(String, String, String)
boolean addForward(java.lang.String originalEvent, Component target, java.lang.String targetEvent, java.lang.Object eventData)
eventData
- the extra data that can be retrieve by
Event.getData()
.addForward(String, Component, String)
boolean addForward(java.lang.String originalEvent, java.lang.String targetPath, java.lang.String targetEvent, java.lang.Object eventData)
eventData
- the extra data that can be retrieve by
Event.getData()
.addForward(String, String, String)
boolean removeForward(java.lang.String originalEvent, Component target, java.lang.String targetEvent)
addForward(String, Component, String)
.
If no such forward condition exists, nothing happens but return false.originalEvent
- the original event that was received
by this component.
It must be the same as the one passed to addForward(String, Component, String)
.target
- the target component to receive the event.
It must be the same as the one passed to addForward(String, Component, String)
.targetEvent
- the target event that the target component will receive.
It must be the same as the one passed to addForward(String, Component, String)
.addForward(String, Component, String)
boolean removeForward(java.lang.String originalEvent, java.lang.String targetPath, java.lang.String targetEvent)
addForward(String, String, String)
.
If no such forward condition exists, nothing happens but return false.originalEvent
- the original event that was received
by this component.
It must be the same as the one passed to addForward(String, Component, String)
.targetPath
- the target component's path related to this component.
If ".", this component is assumed.
If null, the space owner is assumed.
If null and the space owner is the page, the root component is assumed.targetEvent
- the target event that the target component will receive.
It must be the same as the one passed to addForward(String, Component, String)
.addForward(String, String, String)
boolean isInvalidated()
Application developers rarely need to call this method.
Note:
invalidate()
was not called against this component.void invalidate()
If the application is totally controlled by the server side (i.e., you don't write client codes), you rarely need to access this method.
It can be called only in the request-processing and event-processing phases. However, it is NOT allowed in the rendering phase.
void applyProperties()
This method is invoked automatically if a component is created by evaluating a ZUML page, i.e., if it is specified as an element of a ZUML page.
On the other hand, if it is created manually (by program),
developer might choose to invoke this method or not,
depending whether he wants to
initializes the component with the properties
defined in the ZUML page (PageDefinition
)
and the language definition (LanguageDefinition
).
Notice that, since 5.0.7, custom-attributes are applied automatically
in the constructor of AbstractComponent
, so they are always
available no matter this method is called or not.
java.lang.String setWidgetListener(java.lang.String evtnm, java.lang.String script)
evtnm
- the event name, such as onClickscript
- the script to handle the event. If null, the event
handler is removed.java.lang.String getWidgetListener(java.lang.String evtnm)
java.util.Set<java.lang.String> getWidgetListenerNames()
java.lang.String setWidgetOverride(java.lang.String name, java.lang.String script)
For example,
comp.setWidgetOverride("setValue", "function (value) {}"); //override a method
comp.setWidgetOverride("myfield", "new Date()"); //override a property
If there is no previous method or property, the method/property will be assigned directly.
Notice that, unlike setWidgetListener(java.lang.String, java.lang.String)
, if the method has been sent
to the client for update, it cannot be removed by calling this method
with a null value.
In other words, invoking this method with a null value only removes
the method overrides if it has not YET been to sent to the client.
The previous method/property can be accessed by this.$xxx. For example
function (value, fromServer) {
this.$setValue(value, fromServer);
if (this.desktop) {
this._cnt = !this._cnt;
this.setStyle('background:'+(this._cnt ? 'red':'green'));
}
}
Notice that, since it is not extending, so this.$super references the superclass's method, rather than the old method.
name
- the property name to override,
such as setValue
and miles
.script
- the method definition, such as function (arg) {...}
,
or a value, such as 123
and new Date()
.
If not null, this method will be added to the peer widget.
If there was a method with the same name, it will be renamed to
$name
so can you call it back.
<label w:setValue="function (value) {
this.$setValue(value); //old method
}"/>
If null, the previous method, if any, will be restored.java.lang.String getWidgetOverride(java.lang.String name)
java.util.Set<java.lang.String> getWidgetOverrideNames()
java.lang.String setWidgetAttribute(java.lang.String name, java.lang.String value)
setClientAttribute(String, String)
instead.java.lang.String getWidgetAttribute(java.lang.String name)
getClientAttribute(String)
instead.java.lang.String setClientAttribute(java.lang.String name, java.lang.String value)
Notice that setWidgetOverride(java.lang.String, java.lang.String)
or setWidgetListener(java.lang.String, java.lang.String)
are used to customize the peer widget, while setWidgetAttribute(java.lang.String, java.lang.String)
customizes the DOM element of the peer widget directly.
Unlike setWidgetOverride(java.lang.String, java.lang.String)
or setWidgetListener(java.lang.String, java.lang.String)
,
setWidgetAttribute(java.lang.String, java.lang.String)
has no effect if the widget has been
generated at the client, unless invalidate()
is called.
name
- the attribute name to generate to the DOM element,
such as onload
.
Unlike setWidgetOverride(java.lang.String, java.lang.String)
, the name might contain
no alphanumeric characters, such as colon and dash.value
- the value of the attribute. It could be anything
depending on the attribute.
If null, the attribute will be removed. Make sure to specify an empty
string if you want an attribute with an empty value.java.lang.String getClientAttribute(java.lang.String name)
java.lang.String setClientDataAttribute(java.lang.String name, java.lang.String value)
Notice that the parameter - name would be expanded by adding the prefix "data-" automatically.
name
- the attribute name to generate to the DOM element,
such as mask
.value
- the value of the attribute. It could be anything
depending on the attribute.
If null, the attribute will be removed. Make sure to specify an empty
string if you want an attribute with an empty value.setClientDataAttribute(String, String)
java.lang.String getClientDataAttribute(java.lang.String name)
Notice that the parameter - name would be expanded by adding the prefix "data-" automatically.
getClientDataAttribute(String)
java.util.Set<java.lang.String> getWidgetAttributeNames()
setWidgetAttribute(java.lang.String, java.lang.String)
.Template getTemplate(java.lang.String name)
setTemplate(java.lang.String, org.zkoss.zk.ui.util.Template)
Template setTemplate(java.lang.String name, Template template)
getTemplate(java.lang.String)
.name
- the template's name. It cannot be empty or null.template
- the template to assign. If it is null, the previous
template, if any, will be removedjava.util.Set<java.lang.String> getTemplateNames()
void setAuService(AuService service)
Default: null.
If you want to provide an AU service for the AU requests
targeting the desktop. Use Desktop.addListener(java.lang.Object)
.
See also How to process AU requests with JSON.
AuService getAuService()
Default: null
java.lang.String getAutag()
xxx,yyy
and the desktop's
request path (Desktop.getRequestPath()
) is /foo.zul
, then
the URL of the AU request will contain /_/foo.zul/xxx,yyy
,.
Default: null (no AU tag for this widget).
setAutag(java.lang.String)
void setAutag(java.lang.String tag)
tag
- the AU tag. Both an empty string and null are considered as null,
i.e., no AU tag for this widget.getAutag()
java.lang.Object clone()
Component query(java.lang.String selector)
selector
- the CSS3 selector. For example, comp.query("#id div").queryAll(java.lang.String)
java.lang.Iterable<Component> queryAll(java.lang.String selector)
Notice: this method traverses the whole component tree, only if you iterate through the whole iterable object. In other words, the performance is good, and you can iterate it find the object that matches your criteria.
selector
- the CSS3 selector. For example, comp.queryAll("#id div").query(java.lang.String)
Copyright © 2005-2011 Potix Corporation. All Rights Reserved.