Package org.zkoss.zml

Class XmlMacroComponent

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, org.zkoss.zk.ui.Component, org.zkoss.zk.ui.ext.AfterCompose, org.zkoss.zk.ui.ext.DynamicPropertied, org.zkoss.zk.ui.ext.Macro, org.zkoss.zk.ui.ext.Scope, org.zkoss.zk.ui.IdSpace, org.zkoss.zk.ui.sys.ComponentCtrl

    public class XmlMacroComponent
    extends org.zkoss.zk.ui.AbstractComponent
    implements org.zkoss.zk.ui.ext.Macro
    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.

    
    	<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>
     
    Since:
    3.0.0
    Author:
    tomyeh
    See Also:
    Serialized Form
    • Nested Class Summary

      • Nested classes/interfaces inherited from class org.zkoss.zk.ui.AbstractComponent

        org.zkoss.zk.ui.AbstractComponent.Children, org.zkoss.zk.ui.AbstractComponent.ForwardInfo, org.zkoss.zk.ui.AbstractComponent.TargetInfo
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected java.util.List<org.zkoss.xel.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

        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
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void afterCompose()
      Creates the child components after apply dynamic properties setDynamicProperty(java.lang.String, java.lang.Object).
      java.lang.Object clone()  
      protected void compose()
      Composes the macro component.
      java.util.Map<java.lang.String,​java.lang.Object> getDynamicProperties()  
      java.lang.Object getDynamicProperty​(java.lang.String name)  
      java.lang.String getMacroURI()  
      boolean hasDynamicProperty​(java.lang.String name)  
      protected boolean isChildable()  
      boolean isInline()  
      void recreate()  
      void redraw​(java.io.Writer out)  
      void setDynamicProperty​(java.lang.String name, java.lang.Object value)  
      boolean setInlineParent​(org.zkoss.zk.ui.Component parent, org.zkoss.zk.ui.Component beforeSibling)  
      void setMacroURI​(java.lang.String uri)  
      void setPage​(org.zkoss.zk.ui.Page page)
      Changes the page.
      void setParent​(org.zkoss.zk.ui.Component parent)
      Changes the parent.
      • Methods 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, getExtraCtrl, getFellow, getFellow, getFellowIfAny, getFellowIfAny, getFellows, getFirstChild, getForwards, getId, getIndexCacheMap, getLastChild, getMold, getNextSibling, getPage, getParent, getPreviousSibling, getPropertyAccess, getRedrawCallback, getRoot, getShadowFellowIfAny, getShadowRoots, getShadowVariable, getShadowVariable, getShadowVariable0, getSpaceOwner, getSpecialRendererOutput, getStubonly, getSubBindingAnnotationCount, getTemplate, getTemplateNames, getUuid, getWidgetAttributeNames, getWidgetClass, 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, redrawChildren, removeAttribute, removeAttribute, removeAttribute, removeCallback, removeChild, removeEventListener, removeForward, removeForward, removeRedrawCallback, removeScopeListener, removeShadowRoot, render, render, render, renderProperties, renderPropertiesOnly, replace, response, response, response, service, service, sessionDidActivate, sessionWillPassivate, setAttribute, setAttribute, setAttribute, setAuService, setAutag, setClientAttribute, setClientDataAttribute, setDefinition, setDefinition, setId, setMold, setPageBefore, setStubonly, setStubonly, setSubBindingAnnotationCount, setTemplate, setVisible, setVisibleDirectly, setWidgetClass, setWidgetListener, setWidgetOverride, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdateWidgetListener, smartUpdateWidgetOverride, toString, updateByClient, updateSubBindingAnnotationCount, willPassivate, willPassivate, willSerialize, willSerialize
      • Methods inherited from class java.lang.Object

        equals, 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, hasAttribute, removeAttribute, removeScopeListener, setAttribute
    • Field Detail

      • _resolvers

        protected final java.util.List<org.zkoss.xel.VariableResolver> _resolvers
        A list of resolvers (never null). A variable resolver is added automatically if VariableResolver was annotated.
    • Constructor Detail

      • XmlMacroComponent

        public XmlMacroComponent()
    • Method Detail

      • afterCompose

        public void afterCompose()
        Creates the child components after apply dynamic properties 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

        Specified by:
        afterCompose in interface org.zkoss.zk.ui.ext.AfterCompose
      • compose

        protected void compose()
        Composes the macro component. It is called by afterCompose(), and others to do the rendering based on getMacroURI().
        Since:
        5.0.5
      • setMacroURI

        public void setMacroURI​(java.lang.String uri)
        Specified by:
        setMacroURI in interface org.zkoss.zk.ui.ext.Macro
      • getMacroURI

        public java.lang.String getMacroURI()
        Specified by:
        getMacroURI in interface org.zkoss.zk.ui.ext.Macro
      • recreate

        public void recreate()
        Specified by:
        recreate in interface org.zkoss.zk.ui.ext.Macro
      • isInline

        public boolean isInline()
        Specified by:
        isInline in interface org.zkoss.zk.ui.ext.Macro
      • setParent

        public void setParent​(org.zkoss.zk.ui.Component parent)
        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, afterCompose() is called automatically if it is not called (and this is an inline macro).

        Specified by:
        setParent in interface org.zkoss.zk.ui.Component
        Overrides:
        setParent in class org.zkoss.zk.ui.AbstractComponent
      • setInlineParent

        public boolean setInlineParent​(org.zkoss.zk.ui.Component parent,
                                       org.zkoss.zk.ui.Component beforeSibling)
        Specified by:
        setInlineParent in interface org.zkoss.zk.ui.ext.Macro
      • setPage

        public void setPage​(org.zkoss.zk.ui.Page page)
        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, afterCompose() is called automatically if it is not called (and this is an inline macro).

        Specified by:
        setPage in interface org.zkoss.zk.ui.Component
        Overrides:
        setPage in class org.zkoss.zk.ui.AbstractComponent
      • isChildable

        protected boolean isChildable()
        Overrides:
        isChildable in class org.zkoss.zk.ui.AbstractComponent
      • redraw

        public void redraw​(java.io.Writer out)
                    throws java.io.IOException
        Specified by:
        redraw in interface org.zkoss.zk.ui.sys.ComponentCtrl
        Overrides:
        redraw in class org.zkoss.zk.ui.AbstractComponent
        Throws:
        java.io.IOException
      • clone

        public java.lang.Object clone()
        Specified by:
        clone in interface org.zkoss.zk.ui.Component
        Overrides:
        clone in class org.zkoss.zk.ui.AbstractComponent
      • hasDynamicProperty

        public boolean hasDynamicProperty​(java.lang.String name)
        Specified by:
        hasDynamicProperty in interface org.zkoss.zk.ui.ext.DynamicPropertied
      • getDynamicProperties

        public java.util.Map<java.lang.String,​java.lang.Object> getDynamicProperties()
        Specified by:
        getDynamicProperties in interface org.zkoss.zk.ui.ext.DynamicPropertied
      • getDynamicProperty

        public java.lang.Object getDynamicProperty​(java.lang.String name)
        Specified by:
        getDynamicProperty in interface org.zkoss.zk.ui.ext.DynamicPropertied
      • setDynamicProperty

        public void setDynamicProperty​(java.lang.String name,
                                       java.lang.Object value)
                                throws org.zkoss.zk.ui.WrongValueException
        Specified by:
        setDynamicProperty in interface org.zkoss.zk.ui.ext.DynamicPropertied
        Throws:
        org.zkoss.zk.ui.WrongValueException