Class HtmlMacroComponent
- All Implemented Interfaces:
Serializable,Cloneable,Component,AfterCompose,DynamicPropertied,Macro,Scope,IdSpace,ComponentCtrl
Generally, a macro component is created automatically by ZK loader.
If a developer wants to create it manually, it has to instantiate from
the correct class, and then invoke afterCompose().
To do additional application-specific tasks, you could override
compose(). Both afterCompose() and recreate()
depends on compose().
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.
<library-property>
<name>org.zkoss.zk.ui.macro.autowire.convention</name>
<value>true</value>
</library-property>
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..
<library-property>
<name>org.zkoss.zk.ui.macro.autowire.disabled</name>
<value>true</value>
</library-property>
- Author:
- tomyeh
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.zkoss.zk.ui.HtmlBasedComponent
HtmlBasedComponent.ExtraCtrlNested classes/interfaces inherited from class org.zkoss.zk.ui.AbstractComponent
AbstractComponent.Children, AbstractComponent.ForwardInfo, AbstractComponent.TargetInfo -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final List<org.zkoss.xel.VariableResolver>A list of resolvers (never null).Fields inherited from class org.zkoss.zk.ui.HtmlBasedComponent
_zclassFields inherited from interface org.zkoss.zk.ui.Component
APPLICATION_SCOPE, COMPONENT_SCOPE, DESKTOP_SCOPE, PAGE_SCOPE, REQUEST_SCOPE, SESSION_SCOPE, SPACE_SCOPEFields inherited from interface org.zkoss.zk.ui.sys.ComponentCtrl
AFTER_CHILD_ADDED, AFTER_CHILD_REMOVED, AFTER_CLONED, AFTER_PAGE_ATTACHED, AFTER_PAGE_DETACHED, AFTER_PARENT_CHANGED, CE_BUSY_IGNORE, CE_DUPLICATE_IGNORE, CE_IMPORTANT, CE_NON_DEFERRABLE, CE_REPEAT_IGNORE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidCreates the child components after apply dynamic propertiessetDynamicProperty(java.lang.String, java.lang.Object).clone()Clones the component.protected voidcompose()Composes the macro component.Returns all available dynamic properties.getDynamicProperty(String name) Returns the property value of the specified name.Returns the name of the enclosing tag for this macro component.Returns the macro URI.Returns the component class (a.k.a., widget type), "zk.Macro".booleanhasDynamicProperty(String name) Returns whether a dynamic property is defined.protected booleanReturns whether this component can have a child.booleanisInline()Returns whether this is an inline macro.voidrecreate()Detaches all child components and then recreate them by use ofcompose().protected voidrenderProperties(ContentRenderer renderer) Renders the content of this component, excluding the enclosing tags and children.voidsetDynamicProperty(String name, Object value) Sets a property with the specified name and value.voidsetEnclosingTag(String tag) Sets the the name of the enclosing tag for this macro component.booleansetInlineParent(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).voidsetMacroURI(String uri) Sets the macro URI.voidChanges the page.voidChanges the parent.Methods inherited from class org.zkoss.zk.ui.HtmlBasedComponent
addSclass, evalCSSFlex, focus, getAction, getClientAction, getDraggable, getDroppable, getExtraCtrl, getHeight, getHflex, getLeft, getPropertyAccess, getRenderdefer, getSclass, getSkeleton, getStyle, getTabindex, getTabindexInteger, getTooltiptext, getTop, getVflex, getWidth, getZclass, getZindex, getZIndex, removeSclass, removeSclass, service, setAction, setClass, setClientAction, setDraggable, setDroppable, setFocus, setHeight, setHeight0, setHeightDirectly, setHflex, setHflex0, setHflexDirectly, setLeft, setLeftDirectly, setRenderdefer, setSclass, setSkeleton, setStyle, setTabindex, setTabindex, setTooltiptext, setTop, setTopDirectly, setVflex, setVflex0, setVflexDirectly, setWidth, setWidth0, setWidthDirectly, setZclass, setZindex, setZIndex, setZIndexDirectlyMethods inherited from class org.zkoss.zk.ui.AbstractComponent
addAnnotation, addCallback, addClientEvent, addEventHandler, addEventListener, addEventListener, addForward, addForward, addForward, addForward, addMoved, addRedrawCallback, addScopeListener, addShadowRoot, addShadowRootBefore, addSharedEventHandlerMap, appendChild, applyProperties, beforeChildAdded, beforeChildRemoved, beforeParentChanged, destroyIndexCacheMap, detach, didActivate, didActivate, didDeserialize, didDeserialize, disableBindingAnnotation, disableClientUpdate, disableHostChanged, enableBindingAnnotation, enableHostChanged, getAnnotatedProperties, getAnnotatedPropertiesBy, getAnnotation, getAnnotations, getAnnotations, getAttribute, getAttribute, getAttribute, getAttributeOrFellow, getAttributes, getAttributes, getAuService, getAutag, getCallback, getChildren, getClientAttribute, getClientDataAttribute, getClientEvents, getDefaultMold, getDefinition, getDesktop, getEventHandler, getEventHandlerNames, getEventListenerMap, getEventListeners, getFellow, getFellow, getFellowIfAny, getFellowIfAny, getFellows, getFirstChild, getForwards, getId, getIndexCacheMap, getLastChild, getMold, getNextSibling, getPage, getParent, getPreviousSibling, getRedrawCallback, getRoot, getShadowFellowIfAny, getShadowRoots, getShadowVariable, getShadowVariable, getShadowVariable0, getSpaceOwner, getSpecialRendererOutput, getStubonly, getStubonlyDescendants, getSubBindingAnnotationCount, getTemplate, getTemplateNames, getUuid, getWidgetAttributeNames, getWidgetListener, getWidgetListenerNames, getWidgetOverride, getWidgetOverrideNames, hasAttribute, hasAttribute, hasAttribute, hasAttributeOrFellow, hasBindingAnnotation, hasFellow, hasFellow, hasSubBindingAnnotation, initIndexCacheMap, insertBefore, invalidate, isDisabledHostChanged, isInitialized, isInvalidated, isListenerAvailable, isVisible, onChildAdded, onChildRemoved, onPageAttached, onPageDetached, onParentChanged, onWrongValue, query, queryAll, redraw, redrawChildren, removeAttribute, removeAttribute, removeAttribute, removeCallback, removeChild, removeEventListener, removeForward, removeForward, removeRedrawCallback, removeScopeListener, removeShadowRoot, render, render, render, renderPropertiesOnly, replace, response, response, response, service, sessionDidActivate, sessionWillPassivate, setAttribute, setAttribute, setAttribute, setAuService, setAutag, setClientAttribute, setClientDataAttribute, setDefinition, setDefinition, setId, setMold, setPageBefore, setStubonly, setStubonly, setStubonlyDescendants, setSubBindingAnnotationCount, setTemplate, setVisible, setVisibleDirectly, setWidgetClass, setWidgetListener, setWidgetOverride, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdateWidgetListener, smartUpdateWidgetOverride, toString, updateByClient, updateSubBindingAnnotationCount, willPassivate, willPassivate, willSerialize, willSerializeMethods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.zkoss.zk.ui.IdSpace
getFellow, getFellow, getFellowIfAny, getFellowIfAny, getFellows, hasFellow, hasFellowMethods inherited from interface org.zkoss.zk.ui.ext.Scope
addScopeListener, getAttribute, hasAttribute, removeAttribute, removeScopeListener, setAttribute
-
Field Details
-
_resolvers
A list of resolvers (never null). A variable resolver is added automatically ifVariableResolverwas annotated.
-
-
Constructor Details
-
HtmlMacroComponent
public HtmlMacroComponent()
-
-
Method Details
-
getWidgetClass
Returns the component class (a.k.a., widget type), "zk.Macro".- Specified by:
getWidgetClassin interfaceComponent- Overrides:
getWidgetClassin classAbstractComponent- Since:
- 5.0.0
- See Also:
-
getEnclosingTag
Returns the name of the enclosing tag for this macro component.Default: div (since 7.0.1)
- Since:
- 5.0.3
-
setEnclosingTag
Sets the the name of the enclosing tag for this macro component.Default: div (since 7.0.1)
- Since:
- 5.0.3
-
afterCompose
public void afterCompose()Creates the child components after apply dynamic propertiessetDynamicProperty(java.lang.String, java.lang.Object).If a macro component is created by ZK loader, this method is invoked automatically. Developers rarely need to invoke this method.
Default: it invokes
compose()to compose the macro component.Instead of overriding this method, it is suggested to override
compose(), since all other methods depend oncompose()(rather thanafterCompose()).- Specified by:
afterComposein interfaceAfterCompose
-
compose
protected void compose()Composes the macro component. It is called byafterCompose()and others to do the rendering based ongetMacroURI().The second invocation is ignored. If you want to recreate child components, use
recreate()instead.If this is an line macro, this method is invoked automatically if
setParent(org.zkoss.zk.ui.Component)orsetPage(org.zkoss.zk.ui.Page)calledBy default, supports auto forward events and wire accessible variables to this component.
- Since:
- 5.0.5
-
getMacroURI
Description copied from interface:MacroReturns the macro URI.If
Macro.setMacroURI(java.lang.String)wasn't called, it returns the URI defined in the macro definition.- Specified by:
getMacroURIin interfaceMacro
-
setMacroURI
Description copied from interface:MacroSets the macro URI. It affects only this component.Note: this method calls
Macro.recreate()automatically if uri is changed.- Specified by:
setMacroURIin interfaceMacro- Parameters:
uri- the URI of this macro. If null, the default is used.
-
recreate
public void recreate()Detaches all child components and then recreate them by use ofcompose(). -
isInline
public boolean isInline()Description copied from interface:MacroReturns whether this is an inline macro. The only way to create an inline macro is by use ofComponentDefinition.newInstance(org.zkoss.zk.ui.Page, java.lang.String). -
setParent
Changes the 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,compose()is called automatically if it is not called (and this is an inline macro).- Specified by:
setParentin interfaceComponent- Overrides:
setParentin classAbstractComponent
-
setInlineParent
Description copied from interface:MacroSets the parent to the given one and insert the children of the inline macro right before the given sibling (beforeSibling).This 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 onlyMacro.isInline()is true.- Specified by:
setInlineParentin interfaceMacro- Parameters:
parent- the parentbeforeSibling- a child of the parent that the macro component will be inserted before- Returns:
- if it has been added successfully
-
setPage
Changes the 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,compose()is called automatically if it is not called (and this is an inline macro).- Specified by:
setPagein interfaceComponent- Overrides:
setPagein classAbstractComponent- See Also:
-
isChildable
protected boolean isChildable()Description copied from class:AbstractComponentReturns whether this component can have a child.Default: return true (means it can have children).
- Overrides:
isChildablein classAbstractComponent
-
clone
Description copied from interface:ComponentClones the component. All of its children and descendants are cloned. Also, ID are preserved.- Specified by:
clonein interfaceComponent- Overrides:
clonein classHtmlBasedComponent- Returns:
- the new component. Notice that it doesn't belong to any page, nor desktop. It doesn't have a parent, either.
-
hasDynamicProperty
Description copied from interface:DynamicPropertiedReturns whether a dynamic property is defined.- Specified by:
hasDynamicPropertyin interfaceDynamicPropertied
-
getDynamicProperties
Description copied from interface:DynamicPropertiedReturns all available dynamic properties.- Specified by:
getDynamicPropertiesin interfaceDynamicPropertied
-
getDynamicProperty
Description copied from interface:DynamicPropertiedReturns the property value of the specified name.- Specified by:
getDynamicPropertyin interfaceDynamicPropertied
-
setDynamicProperty
Description copied from interface:DynamicPropertiedSets a property with the specified name and value.If a component supports only String-type values, it could use org.zkoss.lang.Objects.toString() to convert the value to a String instance.
- Specified by:
setDynamicPropertyin interfaceDynamicPropertied- Throws:
WrongValueException
-
renderProperties
Description copied from class:HtmlBasedComponentRenders the content of this component, excluding the enclosing tags and children.- Overrides:
renderPropertiesin classHtmlBasedComponent- Throws:
IOException
-