Class VolatileComponent

    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addAnnotation​(java.lang.String propName, java.lang.String annotName, java.util.Map<java.lang.String,​java.lang.String[]> annotAttrs)
      Adds an annotation to the specified property of this component.
      void addAnnotation​(java.lang.String annotName, java.util.Map<java.lang.String,​java.lang.String[]> annotAttrs)  
      boolean addCallback​(java.lang.String name, Callback callback)
      Adds a callback at component in specific name
      void addEventHandler​(java.lang.String name, EventHandler evthd)
      Adds an event handler.
      boolean addEventListener​(int i, java.lang.String s, EventListener<? extends Event> eventListener)
      Adds an event listener to specified event name for this component with the given priority.
      boolean addEventListener​(java.lang.String s, EventListener<? extends Event> eventListener)
      Adds an event listener to specified event name for this component.
      boolean addForward​(java.lang.String s, java.lang.String s1, java.lang.String s2)
      Adds a forward condition to forward the event received by this component to another component, specified with a path.
      boolean addForward​(java.lang.String s, java.lang.String s1, java.lang.String s2, java.lang.Object o)
      Adds a forward condition to forward the event received by this component to another component of the specified path with extra event data.
      boolean addForward​(java.lang.String s, Component component, java.lang.String s1)
      Adds a forward condition to forward the event received by this component to another component.
      boolean addForward​(java.lang.String s, Component component, java.lang.String s1, java.lang.Object o)
      Adds a forward condition to forward the event received by this component to another component with extra event data.
      boolean addRedrawCallback​(Callback<ContentRenderer> callback)
      Adds a callback at component redraw phase.
      boolean addScopeListener​(ScopeListener scopeListener)
      Adds a listener to listen whether this scope is changed.
      boolean addShadowRoot​(ShadowElement shadow)
      Adds the given shadow root from this host.
      boolean addShadowRootBefore​(ShadowElement shadow, ShadowElement insertBefore)
      Adds the given shadow root from this host.
      void addSharedEventHandlerMap​(EventHandlerMap evthds)
      Adds a map of event handlers which is shared by other components.
      boolean appendChild​(Component component)
      Appends a child.
      void applyProperties()
      Initializes the properties (a.k.a. members) based on what are defined in the component definition.
      void beforeChildAdded​(Component child, Component insertBefore)
      Called before adding a child.
      void beforeChildRemoved​(Component child)
      Called before removing a child.
      void beforeParentChanged​(Component parent)
      Called before changing the parent.
      java.lang.Object clone()
      Clones the component.
      void detach()
      Detaches this component such that it won't belong to any page.
      void disableBindingAnnotation()
      Set to disable the component with binding annotation.
      boolean disableClientUpdate​(boolean disable)
      Sets whether to disable the update of the client widgets of this component and its descendants.
      void enableBindingAnnotation()
      Set to enable the component with binding annotation.
      boolean equals​(java.lang.Object o)  
      java.util.List<java.lang.String> getAnnotatedProperties()
      Returns a read-only list of the name of properties that are associated at least one annotation (never null).
      java.util.List<java.lang.String> getAnnotatedPropertiesBy​(java.lang.String annotName)
      Returns a read-only list of the names of the properties that are associated with the specified annotation (never null).
      Annotation getAnnotation​(java.lang.String annotName)  
      Annotation getAnnotation​(java.lang.String propName, java.lang.String annotName)
      Returns the annotation associated with the definition of the specified property, or null if not available.
      java.util.Collection<Annotation> getAnnotations()  
      java.util.Collection<Annotation> getAnnotations​(java.lang.String propName)
      Returns a read-only collection of all annotations (Annotation) associated with the specified property.
      java.util.Collection<Annotation> getAnnotations​(java.lang.String propName, java.lang.String annotName)
      Returns the annotations associated with the definition of the specified property.
      java.lang.Object getAttribute​(java.lang.String s)
      Returns the custom attribute associated with this component, i.e., Component.COMPONENT_SCOPE.
      java.lang.Object getAttribute​(java.lang.String s, boolean b)
      Returns the custom attribute associated with this object.
      java.lang.Object getAttribute​(java.lang.String s, int i)
      Returns the value of the specified custom attribute in the specified scope, or null if not defined.
      java.lang.Object getAttributeOrFellow​(java.lang.String s, boolean b)
      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.COMPONENT_SCOPE.
      java.util.Map<java.lang.String,​java.lang.Object> getAttributes​(int i)
      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.
      java.util.Collection<Callback> getCallback​(java.lang.String name)
      Returns all of callbacks by specific name
      <T extends Component>
      java.util.List<T>
      getChildren()
      Returns a live list of children.
      java.lang.String getClientAttribute​(java.lang.String s)
      Returns the value of a DOM attribute
      java.lang.String getClientDataAttribute​(java.lang.String s)
      Returns the value of a DOM data attribute
      java.util.Map<java.lang.String,​java.lang.Integer> getClientEvents()
      Returns a map of event information that the client might send to this component.
      ComponentDefinition getDefinition()
      Returns the component definition of this component (never null).
      ZScript getEventHandler​(java.lang.String evtnm)
      Returns the event listener of the specified name, or null if not found.
      java.util.Set<java.lang.String> getEventHandlerNames()
      Returns a readonly collection of event names (String), or an empty collection if no event name is registered.
      EventListenerMap getEventListenerMap()
      Returns the map of event handlers and listeners defined in this component.
      java.lang.Iterable<EventListener<? extends Event>> getEventListeners​(java.lang.String s)
      Returns an iterable collection of the event listeners for the given event.
      java.lang.Object getExtraCtrl()
      Returns the extra controls that tell ZK how to handle this component specially.
      Component getFellow​(java.lang.String s)
      Returns a component of the specified ID in the same ID space.
      Component getFellow​(java.lang.String s, boolean b)
      Returns a component of the specified ID in the same ID space.
      Component getFellowIfAny​(java.lang.String s)
      Returns a component of the specified ID in the same ID space, or null if not found.
      Component getFellowIfAny​(java.lang.String s, boolean b)
      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 s)  
      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.
      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.
      PropertyAccess getPropertyAccess​(java.lang.String prop)
      Returns the corresponding property access object from the given property name, if any.
      java.util.Collection<Callback<ContentRenderer>> getRedrawCallback()
      Returns all of callbacks for component redraw phase
      Component getRoot()
      Returns the root of this component.
      ShadowElement getShadowFellowIfAny​(java.lang.String id)
      Returns the shadow element under this shadow host.
      <T extends ShadowElement>
      java.util.List<T>
      getShadowRoots()
      Returns a set of shadow elements, if any.
      java.lang.Object getShadowVariable​(java.lang.String s, boolean b)
      Returns the shadow variable associated with this component or its parent component; or null if not found.
      java.lang.Object getShadowVariable​(Component component, java.lang.String s, boolean b)
      Returns the shadow variable enclosed with the base component, which 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.
      int getSubBindingAnnotationCount()
      Returns the count of the component's subtree binding annotation.
      Template getTemplate​(java.lang.String s)
      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 getWidgetAttribute​(java.lang.String s)  
      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 s)
      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 s)
      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 s)
      Returns if the custom attribute is associate with this component.
      boolean hasAttribute​(java.lang.String s, boolean b)
      Returns if a custom attribute is associated with this object.
      boolean hasAttribute​(java.lang.String s, int i)
      Returns if the custom attribute is associate with this component.
      boolean hasAttributeOrFellow​(java.lang.String s, boolean b)
      Returns if a custom attribute is associated with this component, or the fellow of this component.
      boolean hasBindingAnnotation()
      Returns whether the component itself has binding annotation or not.
      boolean hasFellow​(java.lang.String s)
      Returns whether a fellow exists in the same ID space of this component.
      boolean hasFellow​(java.lang.String s, boolean b)
      Returns whether there is a fellow named with the specified component ID in the same ID space as this component.
      int hashCode()  
      boolean hasSubBindingAnnotation()
      Returns whether the component and its children have binding annotation or not.
      boolean insertBefore​(Component component, Component component1)
      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 dependencies later.
      void invalidatePartial()
      Invalidates this component by setting the dirty flag such that it will be redraw the partial content of this component and its dependencies later.
      void invalidatePartial​(java.lang.String subId)  
      boolean isInvalidated()
      Returns if this component needs to be redrawn at the client.
      boolean isListenerAvailable​(java.lang.String s, boolean b)
      Returns whether the event listener is available.
      boolean isVisible()
      Returns whether this component is visible.
      void onChildAdded​(Component child)
      Called when a child is added.
      void onChildRemoved​(Component child)
      Called when a child is removed.
      void onPageAttached​(Page newpage, Page oldpage)
      Called when this component is attached to a page.
      void onPageDetached​(Page page)
      Called when this component is detached from a page.
      void onParentChanged​(Component parent)
      Called after the parent changed.
      WrongValueException onWrongValue​(WrongValueException ex)
      Notifies that an WrongValueException instance is thrown, and WrongValueException.getComponent() is the component causing the exception.
      Component query​(java.lang.String s)
      Find the first component that matches the given CSS3 selector.
      java.lang.Iterable<Component> queryAll​(java.lang.String s)
      Returns an iterable object for components that match the given CSS3 selector.
      void redraw​(java.io.Writer out)
      Render (a.k.a., redraw) this component and all its descendants.
      java.lang.Object removeAttribute​(java.lang.String s)
      Removes the custom attribute associated with this component, i.e., Component.COMPONENT_SCOPE.
      java.lang.Object removeAttribute​(java.lang.String s, boolean b)
      Removes the custom attribute associated with this scope.
      java.lang.Object removeAttribute​(java.lang.String s, int i)
      Removes the specified custom attribute in the specified scope.
      boolean removeCallback​(java.lang.String name, Callback callback)
      Removes a callback for component by specific name.
      boolean removeChild​(Component component)
      Removes a child.
      boolean removeEventListener​(java.lang.String s, EventListener<? extends Event> eventListener)
      Removes an event listener.
      boolean removeForward​(java.lang.String s, java.lang.String s1, java.lang.String s2)
      Removes a forward condition that was added by Component.addForward(String, String, String).
      boolean removeForward​(java.lang.String s, Component component, java.lang.String s1)
      Removes a forward condition that was added by Component.addForward(String, Component, String).
      boolean removeRedrawCallback​(Callback<ContentRenderer> callback)
      Removes a callback for component redraw phase.
      boolean removeScopeListener​(ScopeListener scopeListener)
      Removes a change listener from this scope.
      boolean removeShadowRoot​(ShadowElement shadow)
      Removes the given shadow root from this host.
      void renderPropertiesOnly​(ContentRenderer renderer)
      Renders the component properties only
      void service​(AuRequest request, boolean everError)
      Handles an AU request.
      void service​(Event event, Scope scope)
      Handles an event.
      void sessionDidActivate​(Page page)
      Notification that the session, which owns this component, has just been activated (a.k.a., deserialized).
      void sessionWillPassivate​(Page page)
      Notification that the session, which owns this component, is about to be passivated (a.k.a., serialized).
      java.lang.Object setAttribute​(java.lang.String s, java.lang.Object o)
      Sets the custom attribute associated with this component, i.e., Component.COMPONENT_SCOPE.
      java.lang.Object setAttribute​(java.lang.String s, java.lang.Object o, boolean b)
      Sets the custom attribute associated with this scope, or the parent scope.
      java.lang.Object setAttribute​(java.lang.String s, java.lang.Object o, int i)
      Sets the value of the specified custom attribute in the specified scope.
      void setAuService​(AuService auService)
      Sets an AU service to process the AU request before the component's default handling.
      void setAutag​(java.lang.String s)
      Sets the AU tag for this widget.
      java.lang.String setClientAttribute​(java.lang.String s, java.lang.String s1)
      Sets or removes a DOM attribute of the peer widget (at the client).
      java.lang.String setClientDataAttribute​(java.lang.String s, java.lang.String s1)
      Sets a DOM data attribute of the peer widget (at the client).
      void setDefinition​(java.lang.String defname)
      Sets the component definition by specifying the name.
      void setDefinition​(ComponentDefinition compdef)
      Sets the component definition.
      void setId​(java.lang.String s)
      Sets the ID.
      void setMold​(java.lang.String s)
      Sets the mold to render this component.
      void setPage​(Page page)
      Sets what page this component belongs to.
      void setPageBefore​(Page page, Component component)
      Sets what page this component belongs to, and insert this component right before the reference component.
      void setParent​(Component component)
      Sets the parent component.
      void setStubonly​(boolean b)
      Sets whether this component is stub-only.
      void setStubonly​(java.lang.String s)
      Sets whether this component is stub-only.
      Template setTemplate​(java.lang.String s, Template template)
      Sets a UI template which could be retrieved later with Component.getTemplate(java.lang.String).
      boolean setVisible​(boolean b)
      Sets whether this component is visible.
      java.lang.String setWidgetAttribute​(java.lang.String s, java.lang.String s1)  
      void setWidgetClass​(java.lang.String s)
      Sets the widget class (a.k.a., the widget type).
      java.lang.String setWidgetListener​(java.lang.String s, java.lang.String s1)
      Sets or removes an event listener of the peer widget.
      java.lang.String setWidgetOverride​(java.lang.String s, java.lang.String s1)
      Sets or removes a method or a property of the peer widget (at the client).
      • Methods inherited from class java.lang.Object

        finalize, getClass, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • VolatileComponent

        public VolatileComponent()
    • Method Detail

      • getWidgetClass

        public java.lang.String getWidgetClass()
        Description copied from interface: Component
        Returns the widget class (a.k.a., the widget type), or null if not available. The widget class is a JavaScript class, including the package name. For example, "zul.wnd.Window".

        Default: the widget class is decided by the component definition (ComponentDefinition) and the mold (Component.getMold()).

        To override in Java, you could invoke Component.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.

        Specified by:
        getWidgetClass in interface Component
        See Also:
        Component.setWidgetClass(java.lang.String)
      • setWidgetClass

        public void setWidgetClass​(java.lang.String s)
        Description copied from interface: Component
        Sets the widget class (a.k.a., the widget type). The widget class is a JavaScript class, including the package name. For example, "zul.wnd.Window".
        Specified by:
        setWidgetClass in interface Component
        Parameters:
        s - the widget's class name at the client side. If null (or empty), the default one is used (see Component.getWidgetClass()).
      • getId

        public java.lang.String getId()
        Description copied from interface: Component
        Returns the ID.

        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 Component.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.

        Specified by:
        getId in interface Component
        See Also:
        Path
      • setId

        public void setId​(java.lang.String s)
        Description copied from interface: Component
        Sets the ID. The scope of uniqueness depends on whether this component is a root component. Refer to Component.getId() for more details.

        Default: "" (an empty string; it means no ID at all).

        Specified by:
        setId in interface Component
        Parameters:
        s - the identifier. You could specify null or an empty string to remove ID.
        See Also:
        Selectors
      • setPageBefore

        public void setPageBefore​(Page page,
                                  Component component)
        Description copied from interface: Component
        Sets what page this component belongs to, and insert this component right before the reference component.

        For child components, the page they belong is maintained automatically. You need to invoke this method only for root components.

        It is similar to Component.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.

        Specified by:
        setPageBefore in interface Component
        component - 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).
        See Also:
        Component.setPage(org.zkoss.zk.ui.Page)
      • getFellowIfAny

        public Component getFellowIfAny​(java.lang.String s,
                                        boolean b)
        Description copied from interface: Component
        Returns a component of the specified ID in the same ID space, or null if not found. It is the same as getSpaceOwner().getFellowIfAny(id, recurse);

        Unlike Component.getFellow(String, boolean), it returns null if not found.

        Specified by:
        getFellowIfAny in interface Component
        b - whether to look up the parent ID space for the existence of the fellow
      • getFellows

        public java.util.Collection<Component> getFellows()
        Description copied from interface: Component
        Returns all fellows in the same ID space of this component. Notice that only components that are assigned with ID are considered as fellows. The returned collection is read-only.
        Specified by:
        getFellows in interface Component
      • hasFellow

        public boolean hasFellow​(java.lang.String s,
                                 boolean b)
        Description copied from interface: Component
        Returns whether there is a fellow named with the specified component ID in the same ID space as this component. It is the same as getSpaceOwner().hasFellow(id, recurse);
        Specified by:
        hasFellow in interface Component
        b - whether to look up the parent ID space for the existence of the fellow
      • hasFellow

        public boolean hasFellow​(java.lang.String s)
        Description copied from interface: Component
        Returns whether a fellow exists in the same ID space of this component.
        Specified by:
        hasFellow in interface Component
      • getNextSibling

        public Component getNextSibling()
        Description copied from interface: Component
        Returns the next sibling, or null if it is the last child.
        Specified by:
        getNextSibling in interface Component
      • getPreviousSibling

        public Component getPreviousSibling()
        Description copied from interface: Component
        Returns the previous sibling, or null if it is the first child.
        Specified by:
        getPreviousSibling in interface Component
      • getFirstChild

        public Component getFirstChild()
        Description copied from interface: Component
        Returns the first child component, or null if no child at all.
        Specified by:
        getFirstChild in interface Component
      • getLastChild

        public Component getLastChild()
        Description copied from interface: Component
        Returns the last child component, or null if no child at all.
        Specified by:
        getLastChild in interface Component
      • getAttribute

        public java.lang.Object getAttribute​(java.lang.String s,
                                             boolean b)
        Description copied from interface: Scope
        Returns the custom attribute associated with this object.
        Specified by:
        getAttribute in interface Scope
        b - whether to search its ancestor scope. If true and the current scope doen't define the attribute, it searches up its ancestor to see any of them has defined the specified attribute.
      • hasAttribute

        public boolean hasAttribute​(java.lang.String s,
                                    boolean b)
        Description copied from interface: Scope
        Returns if a custom attribute is associated with this object.

        Notice that null is a valid value, so you can tell if an attribute is associated by examining the return value of Scope.getAttribute(java.lang.String).

        Specified by:
        hasAttribute in interface Scope
        b - whether to search its ancestor scope. If true and the current scope doen't define the attribute, it searches up its ancestor to see any of them has defined the specified attribute.
      • setAttribute

        public java.lang.Object setAttribute​(java.lang.String s,
                                             java.lang.Object o)
        Description copied from interface: Component
        Sets the custom attribute associated with this component, i.e., Component.COMPONENT_SCOPE.
        Specified by:
        setAttribute in interface Component
        Specified by:
        setAttribute in interface Scope
        Returns:
        the previous value associated with the attribute, if any
      • setAttribute

        public java.lang.Object setAttribute​(java.lang.String s,
                                             java.lang.Object o,
                                             boolean b)
        Description copied from interface: Scope
        Sets the custom attribute associated with this scope, or the parent scope.
        Specified by:
        setAttribute in interface Scope
        b - whether to look up the parent scope for the existence of the attribute.
        If recurse is true and the attribute is defined in one of its ancestor (including page), the attribute is replaced. Otherwise, it is the same as Scope.setAttribute(String,Object).
      • removeAttribute

        public java.lang.Object removeAttribute​(java.lang.String s)
        Description copied from interface: Component
        Removes the custom attribute associated with this component, i.e., Component.COMPONENT_SCOPE.
        Specified by:
        removeAttribute in interface Component
        Specified by:
        removeAttribute in interface Scope
        Returns:
        the previous value associated with the attribute, if any,
      • removeAttribute

        public java.lang.Object removeAttribute​(java.lang.String s,
                                                boolean b)
        Description copied from interface: Scope
        Removes the custom attribute associated with this scope.
        Specified by:
        removeAttribute in interface Scope
        b - whether to look up the parent scope for the existence of the attribute.
        If recurse is true and the attribute is defined in one of its ancestor (including page), the attribute is removed. Otherwise, it is the same as Scope.removeAttribute(String).
      • addScopeListener

        public boolean addScopeListener​(ScopeListener scopeListener)
        Description copied from interface: Scope
        Adds a listener to listen whether this scope is changed. The listener is called when a custom attribute is added, removed, or the parent is changed.
        Specified by:
        addScopeListener in interface Scope
        Returns:
        weather the listener is added successfully. Note: if the resolver was added before, it won't be added again and this method returns false.
      • removeScopeListener

        public boolean removeScopeListener​(ScopeListener scopeListener)
        Description copied from interface: Scope
        Removes a change listener from this scope.
        Specified by:
        removeScopeListener in interface Scope
        Returns:
        false if listener is not added before.
      • getAttributeOrFellow

        public java.lang.Object getAttributeOrFellow​(java.lang.String s,
                                                     boolean b)
        Description copied from interface: Component
        Returns the custom attribute associated with this component, or the fellow of this component; or null if not found.

        Notice that it doesn't check any variable defined in VariableResolver (of Page.addVariableResolver(org.zkoss.xel.VariableResolver)).

        Specified by:
        getAttributeOrFellow in interface Component
        b - whether to look up the parent component for the existence of the attribute.
        Notice that, if recurse is false and this component is not an ID space owner, it won't look at the fellow.
        If recurse is true, it will look up all parents, page, desktop, session and application until found. If any of them is a space owner, the fellows will be searched.
      • getShadowVariable

        public java.lang.Object getShadowVariable​(java.lang.String s,
                                                  boolean b)
        Description copied from interface: Component
        Returns the shadow variable associated with this component or its parent component; or null if not found.

        Notice that it doesn't check any variable defined in VariableResolver (of Page.addVariableResolver(org.zkoss.xel.VariableResolver)).

        Specified by:
        getShadowVariable in interface Component
        b - whether to look up the parent component for the existence of the shadow variable.
        If recurse is true, it will look up all parents until found. If any of them is a shadow host.
      • getShadowVariable

        public java.lang.Object getShadowVariable​(Component component,
                                                  java.lang.String s,
                                                  boolean b)
        Description copied from interface: Component
        Returns the shadow variable enclosed with the base component, which associated with this component or its parent component; or null if not found.

        Notice that it doesn't check any variable defined in VariableResolver (of Page.addVariableResolver(org.zkoss.xel.VariableResolver)).

        Specified by:
        getShadowVariable in interface Component
        Parameters:
        component - the base component to seek the variable.
        b - whether to look up the parent component for the existence of the shadow variable.
        If recurse is true, it will look up all parents until found. If any of them is a shadow host.
        See Also:
        Component.getShadowVariable(String, boolean)
      • hasAttributeOrFellow

        public boolean hasAttributeOrFellow​(java.lang.String s,
                                            boolean b)
        Description copied from interface: Component
        Returns if a custom attribute is associated with this component, or the fellow of this component.

        Notice that it doesn't check any variable defined in VariableResolver (of Page.addVariableResolver(org.zkoss.xel.VariableResolver)).

        Specified by:
        hasAttributeOrFellow in interface Component
        b - whether to look up the parent component for the existence of the attribute.
        Notice that, if recurse is false and this component is not an ID space owner, it won't look at the fellow.
        If recurse is true, it will look up all parents, page, desktop, session and application until found. If any of them is a space owner, the fellows will be searched.
      • getStubonly

        public java.lang.String getStubonly()
        Description copied from interface: Component
        Returns whether this component is stub-only. By stub-only, we mean we don't need to maintain the states of the component at the server side.

        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.

        Specified by:
        getStubonly in interface Component
      • setStubonly

        public void setStubonly​(java.lang.String s)
        Description copied from interface: Component
        Sets whether this component is stub-only. By stub-only, we mean we don't need to maintain the states of the component at the server side.

        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.

        Specified by:
        setStubonly in interface Component
        Parameters:
        s - whether it is stub-only. The allowed values include "true", "false" and "inherit".
      • setStubonly

        public void setStubonly​(boolean b)
        Description copied from interface: Component
        Sets whether this component is stub-only. It is the same as setStubonly(stubonly ? "true": "false").
        Specified by:
        setStubonly in interface Component
      • getParent

        public Component getParent()
        Description copied from interface: Component
        Returns the parent component, or null if this is the root component.
        Specified by:
        getParent in interface Component
      • getChildren

        public <T extends Component> java.util.List<T> getChildren()
        Description copied from interface: Component
        Returns a live list of children. By live we mean the developer could add or remove a child by manipulating the returned list directly.
        Specified by:
        getChildren in interface Component
      • setVisible

        public boolean setVisible​(boolean b)
        Description copied from interface: Component
        Sets whether this component is visible. A component is visible by default. Both visible and invisible components are rendered in a browser's DOM. But an invisible component's DOM elements with CSS display:none. Since a DOM element will inherit its parent's CSS rules, a component is visible only if all of its parents are also visible.
        To remove a component's DOM elements, use Component.detach().
        Specified by:
        setVisible in interface Component
        Returns:
        the previous visibility
      • getMold

        public java.lang.String getMold()
        Description copied from interface: Component
        Returns the mold used to render this component.

        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.

        Specified by:
        getMold in interface Component
        See Also:
        ComponentDefinition
      • setMold

        public void setMold​(java.lang.String s)
        Description copied from interface: Component
        Sets the mold to render this component.
        Specified by:
        setMold in interface Component
        Parameters:
        s - the mold. If null or empty, "default" is assumed.
        See Also:
        ComponentDefinition
      • addEventListener

        public boolean addEventListener​(int i,
                                        java.lang.String s,
                                        EventListener<? extends Event> eventListener)
        Description copied from interface: Component
        Adds an event listener to specified event name for this component with the given priority.

        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>).

        Version Difference

        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.

        Specified by:
        addEventListener in interface Component
        Parameters:
        i - the priority of the event. The higher the priority is, the earlier it is invoked.
        Notice:
        • If the priority equals or is greater than 1000, the event listener will be invoked before the event handlers registered in a ZUML page (i.e., the onXxx attribute declared in ZUML). On the other hand, if the priority is lower than 1000, it is invoked after the ZUML's event handler.
        • The priority registered by Component.addEventListener(String, EventListener) is 0.
        • Applications shall not use the priority higher than 10,000 and lower than -10,000 since they are reserved for component development.
        s - what event to listen (never null)
        Returns:
        whether the listener is added successfully
        See Also:
        Page.addEventListener(java.lang.String, org.zkoss.zk.ui.event.EventListener<? extends org.zkoss.zk.ui.event.Event>)
      • removeEventListener

        public boolean removeEventListener​(java.lang.String s,
                                           EventListener<? extends Event> eventListener)
        Description copied from interface: Component
        Removes an event listener.
        Specified by:
        removeEventListener in interface Component
        Returns:
        whether the listener is removed; false if it was never added.
      • addForward

        public boolean addForward​(java.lang.String s,
                                  Component component,
                                  java.lang.String s1)
        Description copied from interface: Component
        Adds a forward condition to forward the event received by this component to another component.

        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.

        Specified by:
        addForward in interface Component
        Parameters:
        s - the original event that was received by this component. If null, "onClick" is assumed.
        component - the target component to receive the event. If null, the space owner Component.getSpaceOwner() is assumed. If null and the space owner is the page, the root component is assumed.
        s1 - the target event that the target component will receive. If null, it is the same as the original event.
        Returns:
        whether it is added successfully. It returns false if the condition was always added before.
        See Also:
        Component.removeForward(String, Component, String), Component.addForward(String, Component, String, Object)
      • addForward

        public boolean addForward​(java.lang.String s,
                                  java.lang.String s1,
                                  java.lang.String s2)
        Description copied from interface: Component
        Adds a forward condition to forward the event received by this component to another component, specified with a path.

        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.

        Specified by:
        addForward in interface Component
        Parameters:
        s - the original event that was received by this component. If null, "onClick" is assumed.
        s1 - 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.
        s2 - the target event that the target component will receive. If null, it is the same as the original event.
        Returns:
        whether it is added successfully. It returns false if the condition was always added before.
        See Also:
        Component.addForward(String, Component, String), Component.removeForward(String, String, String)
      • addForward

        public boolean addForward​(java.lang.String s,
                                  java.lang.String s1,
                                  java.lang.String s2,
                                  java.lang.Object o)
        Description copied from interface: Component
        Adds a forward condition to forward the event received by this component to another component of the specified path with extra event data.
        Specified by:
        addForward in interface Component
        o - the extra data that can be retrieve by Event.getData().
        See Also:
        Component.addForward(String, String, String)
      • isInvalidated

        public boolean isInvalidated()
        Description copied from interface: Component
        Returns if this component needs to be redrawn at the client.

        Application developers rarely need to call this method.

        Note:

        1. It always returns true if it doesn't belong to any page (since redraw is required if it is attached to a page later).
        2. It always returns true if the current execution is not an asynchronous update (so redrawn is always required).
        3. If its parent is invalidated, this component will be redrawn too, but this method returns false if Component.invalidate() was not called against this component.
        Specified by:
        isInvalidated in interface Component
      • invalidate

        public void invalidate()
        Description copied from interface: Component
        Invalidates this component by setting the dirty flag such that it will be redraw the whole content of this component and its dependencies later. And, the widget associated with this component and all its descendant at the client will be deleted and recreated, too.

        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.

        Specified by:
        invalidate in interface Component
      • applyProperties

        public void applyProperties()
        Description copied from interface: Component
        Initializes the properties (a.k.a. members) based on what are defined in the component definition.

        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.

        Specified by:
        applyProperties in interface Component
      • setWidgetListener

        public java.lang.String setWidgetListener​(java.lang.String s,
                                                  java.lang.String s1)
        Description copied from interface: Component
        Sets or removes an event listener of the peer widget. If there is an event listener associated with the same event, the previous one will be replaced and returned.
        Specified by:
        setWidgetListener in interface Component
        Parameters:
        s - the event name, such as onClick
        s1 - the script to handle the event. If null, the event handler is removed.
        Returns:
        the previous script if any
      • getWidgetListener

        public java.lang.String getWidgetListener​(java.lang.String s)
        Description copied from interface: Component
        Returns the script of the client event, or null if not found.
        Specified by:
        getWidgetListener in interface Component
      • getWidgetListenerNames

        public java.util.Set<java.lang.String> getWidgetListenerNames()
        Description copied from interface: Component
        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.
        Specified by:
        getWidgetListenerNames in interface Component
      • setWidgetOverride

        public java.lang.String setWidgetOverride​(java.lang.String s,
                                                  java.lang.String s1)
        Description copied from interface: Component
        Sets or removes a method or a property of the peer widget (at the client). If there is a method or a property associated with the same name, the previous one will be replaced and returned.

        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 Component.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.

        Specified by:
        setWidgetOverride in interface Component
        Parameters:
        s - the property name to override, such as setValue and miles.
        s1 - 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.
        Returns:
        the previous script if any
      • getWidgetOverride

        public java.lang.String getWidgetOverride​(java.lang.String s)
        Description copied from interface: Component
        Returns the script of the method definition to override widget's method, or null if not found.
        Specified by:
        getWidgetOverride in interface Component
      • getWidgetOverrideNames

        public java.util.Set<java.lang.String> getWidgetOverrideNames()
        Description copied from interface: Component
        Returns a read-only collection of the property names (String) that shall be overridden, or an empty collection if none is registered.
        Specified by:
        getWidgetOverrideNames in interface Component
      • setWidgetAttribute

        public java.lang.String setWidgetAttribute​(java.lang.String s,
                                                   java.lang.String s1)
        Specified by:
        setWidgetAttribute in interface Component
      • getWidgetAttribute

        public java.lang.String getWidgetAttribute​(java.lang.String s)
        Specified by:
        getWidgetAttribute in interface Component
      • getClientAttribute

        public java.lang.String getClientAttribute​(java.lang.String s)
        Description copied from interface: Component
        Returns the value of a DOM attribute
        Specified by:
        getClientAttribute in interface Component
      • setClientDataAttribute

        public java.lang.String setClientDataAttribute​(java.lang.String s,
                                                       java.lang.String s1)
        Description copied from interface: Component
        Sets a DOM data attribute of the peer widget (at the client). If it has previous value, the component will invalidate. ZK pass the attributes directly to the DOM attribute generated at the client.

        Notice that the parameter - name would be expanded by adding the prefix "data-" automatically.

        Specified by:
        setClientDataAttribute in interface Component
        Parameters:
        s - the attribute name to generate to the DOM element, such as mask.
        s1 - 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.
        Returns:
        the previous value if any
        See Also:
        Component.setClientDataAttribute(String, String)
      • setTemplate

        public Template setTemplate​(java.lang.String s,
                                    Template template)
        Description copied from interface: Component
        Sets a UI template which could be retrieved later with Component.getTemplate(java.lang.String).
        Specified by:
        setTemplate in interface Component
        Parameters:
        s - 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 removed
        Returns:
        the previous template, if any
      • getTemplateNames

        public java.util.Set<java.lang.String> getTemplateNames()
        Description copied from interface: Component
        Returns a readonly set of the names of all templates.
        Specified by:
        getTemplateNames in interface Component
      • getAuService

        public AuService getAuService()
        Description copied from interface: Component
        Returns an AU service to process the AU request before the component's default handling.

        Default: null

        Specified by:
        getAuService in interface Component
      • getAutag

        public java.lang.String getAutag()
        Description copied from interface: Component
        Returns the AU tag for this widget. The AU tag tag is used to tag the AU requests sent by the peer widget. For instance, if the AU tag is 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).

        Specified by:
        getAutag in interface Component
        See Also:
        Component.setAutag(java.lang.String)
      • setAutag

        public void setAutag​(java.lang.String s)
        Description copied from interface: Component
        Sets the AU tag for this widget. The AU tag tag is used to tag the AU requests sent by the peer widget.
        Specified by:
        setAutag in interface Component
        Parameters:
        s - the AU tag. Both an empty string and null are considered as null, i.e., no AU tag for this widget.
        See Also:
        Component.getAutag()
      • clone

        public java.lang.Object clone()
        Description copied from interface: Component
        Clones the component. All of its children and descendants are cloned. Also, ID are preserved.
        Specified by:
        clone in interface Component
        Overrides:
        clone in class java.lang.Object
        Returns:
        the new component. Notice that it doesn't belong to any page, nor desktop. It doesn't have a parent, either.
      • query

        public Component query​(java.lang.String s)
        Description copied from interface: Component
        Find the first component that matches the given CSS3 selector.
        Specified by:
        query in interface Component
        Parameters:
        s - the CSS3 selector. For example, comp.query("#id div").
        Returns:
        the first matched component, or null if not found
        See Also:
        Component.queryAll(java.lang.String)
      • queryAll

        public java.lang.Iterable<Component> queryAll​(java.lang.String s)
        Description copied from interface: Component
        Returns an iterable object for components that match the given CSS3 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.

        Specified by:
        queryAll in interface Component
        Parameters:
        s - the CSS3 selector. For example, comp.queryAll("#id div").
        Returns:
        a list of all matched component, or an empty list if none is found.
        See Also:
        Component.query(java.lang.String)
      • setDefinition

        public void setDefinition​(ComponentDefinition compdef)
        Description copied from interface: ComponentCtrl
        Sets the component definition.

        The component definition affects how a component behaves. Developers rarely need to call this method. If a wrong definition is assigned, the result is unpredictable (and hard to debug). It is mainly designed for developing tools.

        Specified by:
        setDefinition in interface ComponentCtrl
      • setDefinition

        public void setDefinition​(java.lang.String defname)
        Description copied from interface: ComponentCtrl
        Sets the component definition by specifying the name.
        Specified by:
        setDefinition in interface ComponentCtrl
        Parameters:
        defname - the name of the component definition
      • beforeChildAdded

        public void beforeChildAdded​(Component child,
                                     Component insertBefore)
        Description copied from interface: ComponentCtrl
        Called before adding a child. If a component accepts only certain types of children, it shall override this method and throw an exception for an illegal child.
        Specified by:
        beforeChildAdded in interface ComponentCtrl
        Parameters:
        child - the child to be added (never null).
        insertBefore - another child component that the new child will be inserted before it. If null, the new child will be the last child.
      • beforeChildRemoved

        public void beforeChildRemoved​(Component child)
        Description copied from interface: ComponentCtrl
        Called before removing a child. If a component denies a certain child to be removed, it shall override this method to avoid it.
        Specified by:
        beforeChildRemoved in interface ComponentCtrl
        Parameters:
        child - the child to be removed (never null)
      • beforeParentChanged

        public void beforeParentChanged​(Component parent)
        Description copied from interface: ComponentCtrl
        Called before changing the parent. If a component can be a child of certain parents, it shall override this method and throws an exception for an illegal parent.
        Specified by:
        beforeParentChanged in interface ComponentCtrl
        Parameters:
        parent - the new parent. If null, it means detachment.
      • onChildAdded

        public void onChildAdded​(Component child)
        Description copied from interface: ComponentCtrl
        Called when a child is added. If a component want to optimize the update, it might do something different. Otherwise, it does nothing.

        Note: ComponentCtrl.onChildAdded(org.zkoss.zk.ui.Component) is called in the request-processing phase.

        It is not a good idea to throw an exception in this method, since it is in the middle of modifying the component tree.

        Specified by:
        onChildAdded in interface ComponentCtrl
      • onChildRemoved

        public void onChildRemoved​(Component child)
        Description copied from interface: ComponentCtrl
        Called when a child is removed. If a component want to optimize the update, it might do something different. Otherwise, it simply does nothing.

        It is not a good idea to throw an exception in this method, since it is in the middle of modifying the component tree.

        Specified by:
        onChildRemoved in interface ComponentCtrl
      • getAnnotation

        public Annotation getAnnotation​(java.lang.String propName,
                                        java.lang.String annotName)
        Description copied from interface: ComponentCtrl
        Returns the annotation associated with the definition of the specified property, or null if not available.

        If there are multiple annotation with the given name, this method will merge them before return. If you prefer to get all of them without merging, please use ComponentCtrl.getAnnotations(String, String) instead. For example,

        <textbox value="@bind(abc, param1=foo1) @bind(xyz, param2=foo2)">

        This method will return a single annotation with three attributes: value=xyz, param1=foo1 and param2=foo2. On the other hand, ComponentCtrl.getAnnotations(String, String) will return a two-element collections.

        Notice that the property is not limited the 'real' property. For example, the following statement is correct though button doesn't have setFoo method. And, you can retrieve it by use of this method (getAnnotation("foo", "bind"))

        <button foo="@bind(whatever=123)"/>

        Furthermore, you can declare it as custom-attribute. For example, the following is equivalent to the above.

        <button>
          <custom-attribute foo="@bind(whatever=123}">
        </button>
        Specified by:
        getAnnotation in interface ComponentCtrl
        Parameters:
        propName - the property name, e.g., "value". If null, this method returns the annotation(s) associated with this component (rather than a particular property).
        annotName - the annotation name
        See Also:
        ComponentCtrl.getAnnotations(String, String)
      • getAnnotations

        public java.util.Collection<Annotation> getAnnotations​(java.lang.String propName,
                                                               java.lang.String annotName)
        Description copied from interface: ComponentCtrl
        Returns the annotations associated with the definition of the specified property. It never returns null.

        Notice that the property is not limited the 'real' property. For example, the following statement is correct though button doesn't have setFoo method. And, you can retrieve it by use of this method (getAnnotation("foo", "bind"))

        <button foo="@bind(whatever=123)"/>

        Furthermore, you can declare it as custom-attribute. For example, the following is equivalent to the above.

        <button>
          <custom-attribute foo="@bind(whatever=123}">
        </button>
        Specified by:
        getAnnotations in interface ComponentCtrl
        Parameters:
        propName - the property name, e.g., "value". If null, this method returns the annotation(s) associated with this component (rather than a particular property).
        annotName - the annotation name
        See Also:
        ComponentCtrl.getAnnotation(String, String)
      • getAnnotations

        public java.util.Collection<Annotation> getAnnotations​(java.lang.String propName)
        Description copied from interface: ComponentCtrl
        Returns a read-only collection of all annotations (Annotation) associated with the specified property. It never returns null.
        Specified by:
        getAnnotations in interface ComponentCtrl
        Parameters:
        propName - the property name, e.g., "value". If null, this method returns the annotation(s) associated with this component (rather than a particular property).
      • getAnnotatedPropertiesBy

        public java.util.List<java.lang.String> getAnnotatedPropertiesBy​(java.lang.String annotName)
        Description copied from interface: ComponentCtrl
        Returns a read-only list of the names of the properties that are associated with the specified annotation (never null).
        Specified by:
        getAnnotatedPropertiesBy in interface ComponentCtrl
      • getAnnotatedProperties

        public java.util.List<java.lang.String> getAnnotatedProperties()
        Description copied from interface: ComponentCtrl
        Returns a read-only list of the name of properties that are associated at least one annotation (never null).
        Specified by:
        getAnnotatedProperties in interface ComponentCtrl
      • addAnnotation

        public void addAnnotation​(java.lang.String annotName,
                                  java.util.Map<java.lang.String,​java.lang.String[]> annotAttrs)
        Specified by:
        addAnnotation in interface ComponentCtrl
      • addAnnotation

        public void addAnnotation​(java.lang.String propName,
                                  java.lang.String annotName,
                                  java.util.Map<java.lang.String,​java.lang.String[]> annotAttrs)
        Description copied from interface: ComponentCtrl
        Adds an annotation to the specified property of this component.

        If the given property is null, the annotation is associated to this component, rather than a particular property.

        Unlike Java, you can add annotations dynamically, and each component has its own annotations.

        Specified by:
        addAnnotation in interface ComponentCtrl
        Parameters:
        propName - the property name. If null, the annotation is associated with the component (rather than a particular property).
        annotName - the annotation name (never null, nor empty).
        annotAttrs - a map of attributes, or null if no attribute at all. This method will make a copy of annotAttrs, so the caller can use it after the invocation.
      • sessionWillPassivate

        public void sessionWillPassivate​(Page page)
        Description copied from interface: ComponentCtrl
        Notification that the session, which owns this component, is about to be passivated (a.k.a., serialized).

        Note: only root components are notified by this method.

        Specified by:
        sessionWillPassivate in interface ComponentCtrl
      • sessionDidActivate

        public void sessionDidActivate​(Page page)
        Description copied from interface: ComponentCtrl
        Notification that the session, which owns this component, has just been activated (a.k.a., deserialized).

        Note: only root components are notified by this method.

        Specified by:
        sessionDidActivate in interface ComponentCtrl
      • getExtraCtrl

        public java.lang.Object getExtraCtrl()
        Description copied from interface: ComponentCtrl
        Returns the extra controls that tell ZK how to handle this component specially.

        Application developers need NOT to access this method.

        There are a set of extra controls: org.zkoss.zk.ui.ext.render.

        The first package is used if the content of a component can be changed by the user at the client. It is so-called the client controls.

        The second package is used to control how to render a component specially.

        Override this method only if you want to return the extra controls.

        Specified by:
        getExtraCtrl in interface ComponentCtrl
        Returns:
        null if no special handling required. If the component requires some special controls, it could return an object that implements one or several interfaces in the org.zkoss.zk.ui.ext.render package. For example, Cropper.
      • getPropertyAccess

        public PropertyAccess getPropertyAccess​(java.lang.String prop)
        Description copied from interface: ComponentCtrl
        Returns the corresponding property access object from the given property name, if any.
        Specified by:
        getPropertyAccess in interface ComponentCtrl
        Parameters:
        prop - the name of the property
        Returns:
        null it means not to support for the property name.
      • disableClientUpdate

        public boolean disableClientUpdate​(boolean disable)
        Description copied from interface: ComponentCtrl
        Sets whether to disable the update of the client widgets of this component and its descendants.

        By default, if a component is attached to a page, modifications that change the visual representation will be sent to the client to ensure the consistency.

        Though rarely needed, you can disable the synchronization of the visual representation, if you prefer to update the client in a batch or the modification is caused by the client.

        Notice:

        • Once disabled, it not only affects the synchronization of this component but also all its descendants.
        • The disable remains until the end of this execution (or the invocation of this method with false). In other words, it is enabled automatically in the next execution.
        • The updates, if any, before calling this method will still be sent to the client.
        • It does nothing, if there is no current execution.

        Also notice that, with Component.invalidate(), it is easy to synchronize the content of a component (and its descendants) to the client.

        Specified by:
        disableClientUpdate in interface ComponentCtrl
        Returns:
        whether it has been disabled before this invocation, i.e., the previous disable status
      • getEventListenerMap

        public EventListenerMap getEventListenerMap()
        Description copied from interface: ComponentCtrl
        Returns the map of event handlers and listeners defined in this component. This method is rarely used, but it is useful if you'd like to retrieve the behavior of the event handling of this component (and if you don't have the reference to the component)
        Specified by:
        getEventListenerMap in interface ComponentCtrl
      • removeShadowRoot

        public boolean removeShadowRoot​(ShadowElement shadow)
        Description copied from interface: ComponentCtrl
        Removes the given shadow root from this host. (Shadow developer use only)
        Specified by:
        removeShadowRoot in interface ComponentCtrl
        Parameters:
        shadow - a shadow element
        Returns:
        true if child is removed successfully; false if it doesn't have the specified child
      • addShadowRoot

        public boolean addShadowRoot​(ShadowElement shadow)
        Description copied from interface: ComponentCtrl
        Adds the given shadow root from this host. (Shadow developer use only)
        Specified by:
        addShadowRoot in interface ComponentCtrl
        Parameters:
        shadow - a shadow element
        Returns:
        true if child is added successfully
      • addShadowRootBefore

        public boolean addShadowRootBefore​(ShadowElement shadow,
                                           ShadowElement insertBefore)
        Description copied from interface: ComponentCtrl
        Adds the given shadow root from this host. (Shadow developer use only)
        Specified by:
        addShadowRootBefore in interface ComponentCtrl
        Parameters:
        shadow - a shadow element
        insertBefore - the shadow before which you want the new child
        Returns:
        true if child is added successfully
      • enableBindingAnnotation

        public void enableBindingAnnotation()
        Description copied from interface: ComponentCtrl
        Set to enable the component with binding annotation. (Internal or component developer use only.)
        Specified by:
        enableBindingAnnotation in interface ComponentCtrl
      • disableBindingAnnotation

        public void disableBindingAnnotation()
        Description copied from interface: ComponentCtrl
        Set to disable the component with binding annotation. (Internal or component developer use only.)
        Specified by:
        disableBindingAnnotation in interface ComponentCtrl
      • hasBindingAnnotation

        public boolean hasBindingAnnotation()
        Description copied from interface: ComponentCtrl
        Returns whether the component itself has binding annotation or not. (Internal or component developer use only.)
        Specified by:
        hasBindingAnnotation in interface ComponentCtrl
        Returns:
        true if the component itself has binding annotation
      • hasSubBindingAnnotation

        public boolean hasSubBindingAnnotation()
        Description copied from interface: ComponentCtrl
        Returns whether the component and its children have binding annotation or not. (Internal or component developer use only.)
        Specified by:
        hasSubBindingAnnotation in interface ComponentCtrl
        Returns:
        true if the component and its children have binding annotation
      • getSubBindingAnnotationCount

        public int getSubBindingAnnotationCount()
        Description copied from interface: ComponentCtrl
        Returns the count of the component's subtree binding annotation. (Internal or component developer use only.)
        Specified by:
        getSubBindingAnnotationCount in interface ComponentCtrl
        Returns:
        0 if the component and its children have no binding annotation , more than 0 if they have binding annotation
      • addCallback

        public boolean addCallback​(java.lang.String name,
                                   Callback callback)
        Description copied from interface: ComponentCtrl
        Adds a callback at component in specific name
        Specified by:
        addCallback in interface ComponentCtrl
      • removeCallback

        public boolean removeCallback​(java.lang.String name,
                                      Callback callback)
        Description copied from interface: ComponentCtrl
        Removes a callback for component by specific name.
        Specified by:
        removeCallback in interface ComponentCtrl
      • getCallback

        public java.util.Collection<Callback> getCallback​(java.lang.String name)
        Description copied from interface: ComponentCtrl
        Returns all of callbacks by specific name
        Specified by:
        getCallback in interface ComponentCtrl
      • invalidatePartial

        public void invalidatePartial()
        Description copied from interface: ComponentCtrl
        Invalidates this component by setting the dirty flag such that it will be redraw the partial content of this component and its dependencies later. And, the widget associated with this component and all its descendant at the client will be deleted and recreated, too.

        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.

        Specified by:
        invalidatePartial in interface ComponentCtrl
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object o)
        Overrides:
        equals in class java.lang.Object