|
||||||||||
| 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.zml.XmlMacroComponent
public class XmlMacroComponent
The implementation of a macro component for XML output.
By default, compose() will wire members by use
of Selectors. In other words, it will wire annotated members
the same way as SelectorComposer does.
If you prefer to wire the members based on the name convention
as GenericForwardComposer does (i.e.,
backward compatible with ZK 5), you could specify a library property
called org.zkoss.zk.ui.macro.autowire.convention to true
in WEB-INF/zk.xml as follows.
org.zkoss.zk.ui.macro.autowire.convention
true
If you prefer not to wire at all (neither by-selector nor by-convention),
you could specify a library property called
org.zkoss.zk.ui.macro.autowire.disabled to true
in WEB-INF/zk.xml as follows..
org.zkoss.zk.ui.macro.autowire.disabled
true
| Nested Class Summary |
|---|
| Nested classes/interfaces inherited from class org.zkoss.zk.ui.AbstractComponent |
|---|
AbstractComponent.Children |
| Field Summary | |
|---|---|
protected java.util.List<VariableResolver> |
_resolvers
A list of resolvers (never null). |
| Fields inherited from interface org.zkoss.zk.ui.Component |
|---|
APPLICATION_SCOPE, COMPONENT_SCOPE, DESKTOP_SCOPE, PAGE_SCOPE, REQUEST_SCOPE, SESSION_SCOPE, SPACE_SCOPE |
| Fields inherited from interface org.zkoss.zk.ui.sys.ComponentCtrl |
|---|
CE_BUSY_IGNORE, CE_DUPLICATE_IGNORE, CE_IMPORTANT, CE_NON_DEFERRABLE, CE_REPEAT_IGNORE |
| Constructor Summary | |
|---|---|
XmlMacroComponent()
|
|
| Method Summary | |
|---|---|
void |
afterCompose()
Creates the child components after apply dynamic properties setDynamicProperty(java.lang.String, java.lang.Object). |
java.lang.Object |
clone()
Clones the component. |
protected void |
compose()
Composes the macro component. |
java.lang.Object |
getDynamicProperty(java.lang.String name)
Returns the property value of the specified name. |
java.lang.String |
getMacroURI()
Returns the macro URI. |
boolean |
hasDynamicProperty(java.lang.String name)
Returns whether a dynamic property is defined. |
protected boolean |
isChildable()
Returns whether this component can have a child. |
boolean |
isInline()
Returns whether this is an inline macro. |
void |
recreate()
Detaches all child components and then recreate them. |
void |
redraw(java.io.Writer out)
Redraws this component and all its descendants. |
void |
setDynamicProperty(java.lang.String name,
java.lang.Object value)
Sets a property with the specified name and value. |
boolean |
setInlineParent(Component parent,
Component beforeSibling)
Sets the parent to the given one and insert the children of the inline macro right before the given sibling (beforeSibling). |
void |
setMacroURI(java.lang.String uri)
Sets the macro URI. |
void |
setPage(Page page)
Changes the page. |
void |
setParent(Component parent)
Changes the parent. |
| Methods inherited from class java.lang.Object |
|---|
finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Methods inherited from interface org.zkoss.zk.ui.IdSpace |
|---|
getFellow, getFellow, getFellowIfAny, getFellowIfAny, getFellows, hasFellow, hasFellow |
| Methods inherited from interface org.zkoss.zk.ui.ext.Scope |
|---|
addScopeListener, getAttribute, getAttribute, getAttributes, hasAttribute, hasAttribute, removeAttribute, removeAttribute, removeScopeListener, setAttribute, setAttribute |
| Field Detail |
|---|
protected final java.util.List<VariableResolver> _resolvers
VariableResolver was annotated.
| Constructor Detail |
|---|
public XmlMacroComponent()
| Method Detail |
|---|
public void afterCompose()
setDynamicProperty(java.lang.String, java.lang.Object).
The second invocation is ignored. If you want to recreate
child components, use recreate() instead.
If a macro component is created by ZK loader, this method is invoked automatically. Developers need to invoke this method only if they create a macro component manually.
If this is an line macro, this method is invoked automatically
if setParent(org.zkoss.zk.ui.Component) or setPage(org.zkoss.zk.ui.Page) called
afterCompose in interface AfterComposeprotected void compose()
afterCompose(), and others
to do the rendering based on getMacroURI().
public void setMacroURI(java.lang.String uri)
MacroNote: this method calls Macro.recreate() automatically
if uri is changed.
setMacroURI in interface Macrouri - the URI of this macro. If null, the default is used.public java.lang.String getMacroURI()
MacroIf Macro.setMacroURI(java.lang.String) wasn't called, it returns the URI
defined in the macro definition.
getMacroURI in interface Macropublic void recreate()
MacroIt is used if you have assigned new values to dynamic properties and want to re-create child components to reflect the new values. Note: it is convenient but the performance is better if you can manipulate only the child components that need to be changed. Refer to ZK Developer's Reference for details.
recreate in interface Macropublic boolean isInline()
MacroComponentDefinition.newInstance(org.zkoss.zk.ui.Page, java.lang.String).
isInline in interface Macropublic void setParent(Component parent)
Note: if this is an inline macro (isInline()),
this method actually changes the parent of all components created
from the macro URI.
In other word, an inline macro behaves like a controller of
the components it created. It doesn't belong to any page or parent.
Moreover, afterCompose() is called automatically if
it is not called (and this is an inline macro).
setParent in interface ComponentsetParent in class AbstractComponent
public boolean setInlineParent(Component parent,
Component beforeSibling)
MacroThis method is used only internally.
Notice that when AbstractComponent.insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)
is called to insert an inline macro (Macro.isInline()),
the invocation will be forwarded to this method.
It is called only Macro.isInline() is true.
setInlineParent in interface Macroparent - the parentbeforeSibling - a child of the parent that the macro component
will be inserted before
public void setPage(Page page)
Note: if this is an inline macro (isInline()),
this method actually changes the page of all components created
from the macro URI.
In other word, an inline macro behaves like a controller of
the components it created. It doesn't belong to any page or parent.
Moreover, afterCompose() is called automatically if
it is not called (and this is an inline macro).
setPage in interface ComponentsetPage in class AbstractComponentComponentCtrl.onPageAttached(org.zkoss.zk.ui.Page, org.zkoss.zk.ui.Page),
ComponentCtrl.onPageDetached(org.zkoss.zk.ui.Page)protected boolean isChildable()
AbstractComponentDefault: return true (means it can have children).
isChildable in class AbstractComponent
public void redraw(java.io.Writer out)
throws java.io.IOException
AbstractComponentDefault: It uses JsContentRenderer to render all information
in JavaScript codes. For devices that don't support JavaScript,
it must override this method.
To generate all information, it first invokes
AbstractComponent.renderProperties(org.zkoss.zk.ui.sys.ContentRenderer) to render component's
properties,
and then AbstractComponent.redrawChildren(java.io.Writer) to redraw children (and descendants)
(by calling their AbstractComponent.redraw(java.io.Writer)).
If a derived class wants to render more properties, it can override
AbstractComponent.renderProperties(org.zkoss.zk.ui.sys.ContentRenderer).
If a derived class renders only a subset of its children
(such as paging/cropping), it could override AbstractComponent.redrawChildren(java.io.Writer).
If a deriving class wants to do something before
AbstractComponent.renderProperties(org.zkoss.zk.ui.sys.ContentRenderer), it has to override AbstractComponent.redraw(java.io.Writer).
If a deriving class doesn't want to render in JavaScript codes,
it has to override AbstractComponent.redraw(java.io.Writer) with the proper implementation
of ContentRenderer.
redraw in interface ComponentCtrlredraw in class AbstractComponentjava.io.IOExceptionpublic java.lang.Object clone()
Component
clone in interface Componentclone in class AbstractComponentpublic boolean hasDynamicProperty(java.lang.String name)
DynamicPropertied
hasDynamicProperty in interface DynamicPropertiedpublic java.lang.Object getDynamicProperty(java.lang.String name)
DynamicPropertied
getDynamicProperty in interface DynamicPropertied
public void setDynamicProperty(java.lang.String name,
java.lang.Object value)
throws WrongValueException
DynamicPropertiedIf a component supports only String-type values, it could use org.zkoss.lang.Objects.toString() to convert the value to a String instance.
setDynamicProperty in interface DynamicPropertiedWrongValueException
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||