Package org.zkoss.zk.ui

## Class HtmlBasedComponent

- java.lang.Object
- - org.zkoss.zk.ui.AbstractComponent
  - - org.zkoss.zk.ui.HtmlBasedComponent

- All Implemented Interfaces:
    `java.io.Serializable`, `java.lang.Cloneable`, `Component`, `Scope`, `ComponentCtrl`
  Direct Known Subclasses:
    `Borderlayout`, `Cascader`, `Chosenbox`, `Cropper`, `HtmlMacroComponent`, `Iframe`, `Rating`, `Searchbox`, `Selectbox`, `Timer`, `XulElement`

      public abstract class HtmlBasedComponent
      extends AbstractComponent

  A skeletal implementation for HTML based components. It simplifies to implement methods common to HTML based components.

  Events:
  onClick, onDoubleClick, onRightClick, onDrop, onMouseOver, onMouseOut, onOK, onCancel, onCtrlKey and onSwipe.

  It supports

  - `getSclass()` and `getStyle()`.
  - `getWidth()`, `getHeight()`, `getLeft()`, `getTop()`, `getZIndex()`
  - `focus()`
  Since:
    5.0.0 supports onOK event., 5.0.0 supports onCancel event., 5.0.0 supports onCtrlKey event., 6.5.0 supports onSwipe event for tablet.
  Author:
    tomyeh
  See Also:
    Serialized Form

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `protected class` | `HtmlBasedComponent.ExtraCtrl` | A utility class to implement `getExtraCtrl()`.

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

      `AbstractComponent.Children, AbstractComponent.ForwardInfo, AbstractComponent.TargetInfo`

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected java.lang.String` | `_zclass` | The ZK CSS class.

    - ### 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`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `HtmlBasedComponent()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addSclass​(java.lang.String cssClass)` | Add the CSS class(es) to a component's sclass property if the component doesn't have this cssClass.
    `java.lang.Object` | `clone()` | Clones the component.
    `boolean` | `evalCSSFlex()` | Get whether css flex is enabled or not
    `void` | `focus()` | Sets focus to this element.
    `java.lang.String` | `getAction()` | Deprecated. As of release 10.0.0, using `setClientAction(String)` instead.
    `java.lang.String` | `getClientAction()` | Returns the client-side action (CSA).
    `java.lang.String` | `getDraggable()` | Returns the identifier of a draggable type of objects, or "false" if not draggable (never null nor empty).
    `java.lang.String` | `getDroppable()` | Returns the identifier, or a list of identifiers of a droppable type of objects, or "false" if not droppable (never null nor empty).
    `java.lang.Object` | `getExtraCtrl()` | Returns the client control for this component.
    `java.lang.String` | `getHeight()` | Returns the height.
    `java.lang.String` | `getHflex()` | Returns horizontal flex hint of this component.
    `java.lang.String` | `getLeft()` | Returns the left position.
    `PropertyAccess` | `getPropertyAccess​(java.lang.String prop)` | Returns the corresponding property access object from the given property name, if any.
    `int` | `getRenderdefer()` | Returns the number of milliseconds before rendering this component at the client.
    `java.lang.String` | `getSclass()` | Returns the CSS class(es).
    `java.lang.String` | `getStyle()` | Returns the CSS style.
    `int` | `getTabindex()` | Returns the tab order of this component.
    `java.lang.Integer` | `getTabindexInteger()` | Returns null if not set.
    `java.lang.String` | `getTooltiptext()` | Returns the text as the tooltip.
    `java.lang.String` | `getTop()` | Returns the top position.
    `java.lang.String` | `getVflex()` | Return vertical flex hint of this component.
    `java.lang.String` | `getWidth()` | Returns the width.
    `java.lang.String` | `getZclass()` | Returns the ZK Cascading Style class for this component.
    `int` | `getZindex()` | Returns the Z index.
    `int` | `getZIndex()` | Returns the Z index.
    `void` | `removeSclass()` | Remove all CSS classes from a component's sclass property.
    `void` | `removeSclass​(java.lang.String cssClass)` | Remove the CSS class(es) from a component's sclass property if the component has this cssClass.
    `protected void` | `renderProperties​(ContentRenderer renderer)` | Renders the content of this component, excluding the enclosing tags and children.
    `void` | `service​(AuRequest request, boolean everError)` | Processes an AU request.
    `void` | `setAction​(java.lang.String action)` | Deprecated. As of release 10.0.0, using `setClientAction(String)` instead.
    `void` | `setClass​(java.lang.String sclass)` | Sets the CSS class.
    `void` | `setClientAction​(java.lang.String action)` | Sets the client-side action (CSA).
    `void` | `setDraggable​(java.lang.String draggable)` | Sets "true" or "false" to denote whether a component is draggable, or an identifier of a draggable type of objects.
    `void` | `setDroppable​(java.lang.String droppable)` | Sets "true" or "false" to denote whether a component is droppable, or a list of identifiers of draggable types of objects that could be dropped to this component.
    `void` | `setFocus​(boolean focus)` | Sets focus to this element.
    `void` | `setHeight​(java.lang.String height)` | Sets the height.
    `protected void` | `setHeight0​(java.lang.String height)` | Internal Use Only.
    `protected void` | `setHeightDirectly​(java.lang.String height)` | Sets the height directly without sending back the result (smart update) to the client
    `void` | `setHflex​(java.lang.String flex)` | Sets horizontal flex hint of this component.
    `protected void` | `setHflex0​(java.lang.String flex)` | Internal Use Only.
    `protected void` | `setHflexDirectly​(java.lang.String hflex)` | Sets the hflex directly without sending back the result (smart update) to the client
    `void` | `setLeft​(java.lang.String left)` | Sets the left position.
    `protected void` | `setLeftDirectly​(java.lang.String left)` | Sets the left directly without sending back the result (smart update) to the client
    `void` | `setRenderdefer​(int ms)` | Sets the number of milliseconds before rendering this component at the client.
    `void` | `setSclass​(java.lang.String sclass)` | Sets the CSS class(es).
    `void` | `setStyle​(java.lang.String style)` | Sets the CSS style.
    `void` | `setTabindex​(int tabindex)` | Sets the tab order of this component.
    `void` | `setTabindex​(java.lang.Integer tabindex)` | Sets the tab order of this component.
    `void` | `setTooltiptext​(java.lang.String tooltiptext)` | Sets the text as the tooltip.
    `void` | `setTop​(java.lang.String top)` | Sets the top position.
    `protected void` | `setTopDirectly​(java.lang.String top)` | Sets the top directly without sending back the result (smart update) to the client
    `void` | `setVflex​(java.lang.String flex)` | Sets vertical flexibility hint of this component.
    `protected void` | `setVflex0​(java.lang.String flex)` | Internal Use Only.
    `protected void` | `setVflexDirectly​(java.lang.String vflex)` | Sets the vflex directly without sending back the result (smart update) to the client
    `void` | `setWidth​(java.lang.String width)` | Sets the width.
    `protected void` | `setWidth0​(java.lang.String width)` | Internal Use Only.
    `protected void` | `setWidthDirectly​(java.lang.String width)` | Sets the width directly without sending back the result (smart update) to the client
    `void` | `setZclass​(java.lang.String zclass)` | Sets the ZK Cascading Style class for this component.
    `void` | `setZindex​(int zIndex)` | Sets the Z index.
    `void` | `setZIndex​(int zIndex)` | Sets the Z index.
    `protected void` | `setZIndexDirectly​(int zIndex)` | Sets the z-index directly without sending back the result (smart update) to the client

    - ### 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, 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, getSubBindingAnnotationCount, getTemplate, getTemplateNames, getUuid, getWidgetAttributeNames, getWidgetClass, getWidgetListener, getWidgetListenerNames, getWidgetOverride, getWidgetOverrideNames, hasAttribute, hasAttribute, hasAttribute, hasAttributeOrFellow, hasBindingAnnotation, hasFellow, hasFellow, hasSubBindingAnnotation, initIndexCacheMap, insertBefore, invalidate, isChildable, 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, setPage, setPageBefore, setParent, 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`

- - ### Field Detail

    - #### _zclass

          protected java.lang.String _zclass

      The ZK CSS class.

  - ### Constructor Detail

    - #### HtmlBasedComponent

          protected HtmlBasedComponent()

  - ### Method Detail

    - #### getLeft

          public java.lang.String getLeft()

      Returns the left position.

    - #### setLeft

          public void setLeft​(java.lang.String left)

      Sets the left position.

      If you want to specify `right`, use `setStyle(java.lang.String)` instead. For example, `setStyle("right: 0px");`

      Parameters:
        `left` - the left position. Remember to specify `px`, `pt` or `%`.

    - #### getTop

          public java.lang.String getTop()

      Returns the top position.

    - #### setTop

          public void setTop​(java.lang.String top)

      Sets the top position.

      If you want to specify `bottom`, use `setStyle(java.lang.String)` instead. For example, `setStyle("bottom: 0px");`

      Parameters:
        `top` - the top position. Remember to specify `px`, `pt` or `%`.

    - #### getZIndex

          public int getZIndex()

      Returns the Z index.

      Default: -1 (means system default;

    - #### setZIndex

          public void setZIndex​(int zIndex)

      Sets the Z index.

    - #### getZindex

          public int getZindex()

      Returns the Z index. It is the same as `getZIndex()`.
      Since:
        3.5.2

    - #### setZindex

          public void setZindex​(int zIndex)

      Sets the Z index. It is the same as `setZIndex(int)`.
      Since:
        3.5.2

    - #### getHeight

          public java.lang.String getHeight()

      Returns the height. If null, the best fit is used.

      Default: null.

    - #### setHeight

          public void setHeight​(java.lang.String height)

      Sets the height. If null, the best fit is used.

    - #### setHeight0

          protected void setHeight0​(java.lang.String height)

      Internal Use Only.

    - #### getWidth

          public java.lang.String getWidth()

      Returns the width. If null, the best fit is used.

      Default: null.

    - #### setWidth

          public void setWidth​(java.lang.String width)

      Sets the width. If null, the best fit is used.
      See Also:
        `setWidthDirectly(java.lang.String)`, `AbstractComponent.disableClientUpdate(boolean)`

    - #### setWidth0

          protected void setWidth0​(java.lang.String width)

      Internal Use Only.

    - #### setWidthDirectly

          protected void setWidthDirectly​(java.lang.String width)

      Sets the width directly without sending back the result (smart update) to the client
      Since:
        5.0.4

    - #### setHeightDirectly

          protected void setHeightDirectly​(java.lang.String height)

      Sets the height directly without sending back the result (smart update) to the client
      Since:
        5.0.4

    - #### setLeftDirectly

          protected void setLeftDirectly​(java.lang.String left)

      Sets the left directly without sending back the result (smart update) to the client
      Since:
        5.0.4

    - #### setTopDirectly

          protected void setTopDirectly​(java.lang.String top)

      Sets the top directly without sending back the result (smart update) to the client
      Since:
        5.0.4

    - #### setZIndexDirectly

          protected void setZIndexDirectly​(int zIndex)

      Sets the z-index directly without sending back the result (smart update) to the client
      Since:
        5.0.4

    - #### setHflexDirectly

          protected void setHflexDirectly​(java.lang.String hflex)

      Sets the hflex directly without sending back the result (smart update) to the client
      Since:
        5.0.6

    - #### setVflexDirectly

          protected void setVflexDirectly​(java.lang.String vflex)

      Sets the vflex directly without sending back the result (smart update) to the client
      Since:
        8.0.1

    - #### getTooltiptext

          public java.lang.String getTooltiptext()

      Returns the text as the tooltip.

      Default: null.

    - #### setTooltiptext

          public void setTooltiptext​(java.lang.String tooltiptext)

      Sets the text as the tooltip.

    - #### getZclass

          public java.lang.String getZclass()

      Returns the ZK Cascading Style class for this component. It usually depends on the implementation of the mold (`AbstractComponent.getMold()`).

      Default: null (the default value depends on element).

      `setZclass(java.lang.String)`) will completely replace the default style of a component. In other words, the default style of a component is associated with the default value of `getZclass()`. Once it is changed, the default style won't be applied at all. If you want to perform small adjustments, use `setSclass(java.lang.String)` instead.

      Since:
        3.5.1
      See Also:
        `getSclass()`

    - #### setZclass

          public void setZclass​(java.lang.String zclass)

      Sets the ZK Cascading Style class for this component. It usually depends on the implementation of the mold (`AbstractComponent.getMold()`).
      Parameters:
        `zclass` - the style class used to apply to the whole widget.
      Since:
        3.5.0
      See Also:
        `setSclass(java.lang.String)`, `getZclass()`

    - #### getSclass

          public java.lang.String getSclass()

      Returns the CSS class(es).

      Default: null.

      The default styles of ZK components doesn't depend on the value of `getSclass()`. Rather, `setSclass(java.lang.String)` is provided to perform small adjustment, e.g., only changing the font size. In other words, the default style is still applied if you change the value of `getSclass()`, unless you override it. To replace the default style completely, use `setZclass(java.lang.String)` instead.

      See Also:
        `getZclass()`

    - #### setSclass

          public void setSclass​(java.lang.String sclass)

      Sets the CSS class(es).
      See Also:
        `setZclass(java.lang.String)`

    - #### setClass

          public void setClass​(java.lang.String sclass)

      Sets the CSS class. This method is a bit confused with Java's class, but we provide it for XUL compatibility. The same as `setSclass(java.lang.String)`.

    - #### addSclass

          public void addSclass​(java.lang.String cssClass)

      Add the CSS class(es) to a component's sclass property if the component doesn't have this cssClass.
      Parameters:
        `cssClass` - One or more space-separated CSS className to be added to the component's sclass property.
      Since:
        8.6.1

    - #### removeSclass

          public void removeSclass​(java.lang.String cssClass)

      Remove the CSS class(es) from a component's sclass property if the component has this cssClass. If the component doesn't have the CSS class sclass, do nothing. If no class names are specified in the parameter, all classes will be removed.
      Parameters:
        `cssClass` - One or more space-separated CSS className to be removed from a component's sclass property.
      Since:
        8.6.1

    - #### removeSclass

          public void removeSclass()

      Remove all CSS classes from a component's sclass property.
      Since:
        8.6.1

    - #### getStyle

          public java.lang.String getStyle()

      Returns the CSS style.

      Default: null.

    - #### setStyle

          public void setStyle​(java.lang.String style)

      Sets the CSS style.

    - #### setDraggable

          public void setDraggable​(java.lang.String draggable)

      Sets "true" or "false" to denote whether a component is draggable, or an identifier of a draggable type of objects.

      The simplest way to make a component draggable is to set this attribute to true. To disable it, set this to false.

      If there are several types of draggable objects, you could assign an identifier for each type of draggable object. The identifier could be anything but empty.

      Parameters:
        `draggable` - "false", "" or null to denote non-draggable; "true" for draggable with anonymous identifier; others for an identifier of draggable.
        Notice that if the parent is `DragControl` and draggable is null, then it means draggable.

    - #### getDraggable

          public java.lang.String getDraggable()

      Returns the identifier of a draggable type of objects, or "false" if not draggable (never null nor empty).

    - #### setDroppable

          public void setDroppable​(java.lang.String droppable)

      Sets "true" or "false" to denote whether a component is droppable, or a list of identifiers of draggable types of objects that could be dropped to this component.

      The simplest way to make a component droppable is to set this attribute to true. To disable it, set this to false.

      If there are several types of draggable objects and this component accepts only some of them, you could assign a list of identifiers that this component accepts, separated by comma. For example, if this component accepts dg1 and dg2, then assign "dg1, dg2" to this attribute.

      Parameters:
        `droppable` - "false", null or "" to denote not-droppable; "true" for accepting any draggable types; a list of identifiers, separated by comma for identifiers of draggables this component accept (to be dropped in).

    - #### getDroppable

          public java.lang.String getDroppable()

      Returns the identifier, or a list of identifiers of a droppable type of objects, or "false" if not droppable (never null nor empty).

    - #### focus

          public void focus()

      Sets focus to this element. If an element does not accept focus, this method has no effect.

    - #### setFocus

          public void setFocus​(boolean focus)

      Sets focus to this element. It is same as `focus()`, but used to allow ZUML to set focus to particular component.

          <textbox focus="true"/>

      Parameters:
        `focus` - whether to set focus. If false, this method has no effect.
      Since:
        3.0.5

    - #### setVflex

          public void setVflex​(java.lang.String flex)

      Sets vertical flexibility hint of this component.

      Number flex indicates how this component's container distributes remaining empty space among its children vertically. Flexible component grow and shrink to fit their given space. Flexible components with larger flex values will be made larger than components with lower flex values, at the ratio determined by all flexible components. The actual flex value is not relevant unless there are other flexible components within the same container. Once the default sizes of components in a container are calculated, the remaining space in the container is divided among the flexible components, according to their flex ratios.

      Specify a flex value of negative value, 0, or "false" has the same effect as leaving the flex attribute out entirely. Specify a flex value of "true" has the same effect as a flex value of 1.

      Special flex hint, "min", indicates that the minimum space shall be given to this flexible component to enclose all of its children components. That is, the flexible component grow and shrink to fit its children components.

      Parameters:
        `flex` - the vertical flex hint.
      Since:
        5.0.0
      See Also:
        `setHflex(java.lang.String)`, `getVflex()`

    - #### setVflex0

          protected void setVflex0​(java.lang.String flex)

      Internal Use Only.

    - #### getVflex

          public java.lang.String getVflex()

      Return vertical flex hint of this component.

      Default: null

      Returns:
        vertical flex hint of this component.
      Since:
        5.0.0
      See Also:
        `setVflex(java.lang.String)`

    - #### setHflex

          public void setHflex​(java.lang.String flex)

      Sets horizontal flex hint of this component.

      Number flex indicates how this component's container distributes remaining empty space among its children horizontally. Flexible component grow and shrink to fit their given space. Flexible components with larger flex values will be made larger than components with lower flex values, at the ratio determined by all flexible components. The actual flex value is not relevant unless there are other flexible components within the same container. Once the default sizes of components in a container are calculated, the remaining space in the container is divided among the flexible components, according to their flex ratios.

      Specify a flex value of negative value, 0, or "false" has the same effect as leaving the flex attribute out entirely. Specify a flex value of "true" has the same effect as a flex value of 1.

      Special flex hint, "min", indicates that the minimum space shall be given to this flexible component to enclose all of its children components. That is, the flexible component grow and shrink to fit its children components.

      Parameters:
        `flex` - horizontal flex hint of this component.
      Since:
        5.0.0
      See Also:
        `setVflex(java.lang.String)`, `getHflex()`

    - #### setHflex0

          protected void setHflex0​(java.lang.String flex)

      Internal Use Only.

    - #### getHflex

          public java.lang.String getHflex()

      Returns horizontal flex hint of this component.

      Default: null

      Returns:
        horizontal flex hint of this component.
      Since:
        5.0.0
      See Also:
        `setHflex(java.lang.String)`

    - #### getRenderdefer

          public int getRenderdefer()

      Returns the number of milliseconds before rendering this component at the client.

      Default: -1 (don't wait).

      Since:
        5.0.2

    - #### setRenderdefer

          public void setRenderdefer​(int ms)

      Sets the number of milliseconds before rendering this component at the client.

      Default: -1 (don't wait).

      This method is useful if you have a sophisticated page that takes long to render at a slow client. You can specify a non-negative value as the render-defer delay such that the other part of the UI can appear earlier. The styling of the render-deferred widget is controlled by a CSS class called `z-renderdefer`.

      Notice that it has no effect if the component has been rendered at the client.

      Parameters:
        `ms` - time to wait in milliseconds before rendering. Notice: 0 also implies deferring the rendering (just right after all others are rendered).
      Since:
        5.0.2

    - #### getAction

          public java.lang.String getAction()

      Deprecated.
      As of release 10.0.0, using `setClientAction(String)` instead.
      Returns the client-side action (CSA).

      Default: null (no CSA at all)

      Since:
        5.0.6

    - #### getClientAction

          public java.lang.String getClientAction()

      Returns the client-side action (CSA).

      Default: null (no CSA at all)

      Since:
        10.0.0

    - #### setAction

          public void setAction​(java.lang.String action)

      Deprecated.
      As of release 10.0.0, using `setClientAction(String)` instead.
      Sets the client-side action (CSA).

      Default: null (no CSA at all)

      The format:
      `action1: action-effect1; action2: action-effect2`

      Currently, only two actions are `show` and `hide`. They are called when the widget is becoming visible (show) and invisible (hide).

      The action effect (`action-effect1`) is the name of a method defined in zk.eff.Actions, such as `show: slideDown; hide: slideUp`

      You could specify the effects as follows:
      `show: slideDown({duration:1000})`

      Security Tips: the action is not encoded and it is OK to embed JavaScript, so, if you want to allow users to specify the action, you have to encode it.

      Note for developers upgraded from ZK 3: CSA's format is different and limited. In additions, it is part of `HtmlBasedComponent`.

      Since:
        5.0.6

    - #### setClientAction

          public void setClientAction​(java.lang.String action)

      Sets the client-side action (CSA).

      Default: null (no CSA at all)

      The format:
      `action1: action-effect1; action2: action-effect2`

      Currently, only two actions are `show` and `hide`. They are called when the widget is becoming visible (show) and invisible (hide).

      The action effect (`action-effect1`) is the name of a method defined in zk.eff.Actions, such as `show: slideDown; hide: slideUp`

      You could specify the effects as follows:
      `show: slideDown({duration:1000})`

      Security Tips: the action is not encoded and it is OK to embed JavaScript, so, if you want to allow users to specify the action, you have to encode it.

      Note for developers upgraded from ZK 3: CSA's format is different and limited. In additions, it is part of `HtmlBasedComponent`.

      Since:
        10.0.0

    - #### getTabindex

          public int getTabindex()

      Returns the tab order of this component.

      Default: 0

    - #### getTabindexInteger

          public java.lang.Integer getTabindexInteger()

      Returns null if not set.
      Returns:
        the tab order of this component
      Since:
        8.0.2

    - #### setTabindex

          public void setTabindex​(int tabindex)
                           throws WrongValueException

      Sets the tab order of this component.
      Throws:
        `WrongValueException`

    - #### setTabindex

          public void setTabindex​(java.lang.Integer tabindex)

      Sets the tab order of this component. Removes the tabindex attribute if it's set to null.
      Parameters:
        `tabindex` -

    - #### evalCSSFlex

          public boolean evalCSSFlex()

      Get whether css flex is enabled or not
      Returns:
        css flex is enabled

    - #### renderProperties

          protected void renderProperties​(ContentRenderer renderer)
                                   throws java.io.IOException

      Renders the content of this component, excluding the enclosing tags and children.

      See also ZK Client-side Reference: Property Rendering

      Overrides:
        `renderProperties` in class `AbstractComponent`
      Throws:
        `java.io.IOException`
      Since:
        5.0.0

    - #### 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`
      Overrides:
        `getPropertyAccess` in class `AbstractComponent`
      Parameters:
        `prop` - the name of the property
      Returns:
        null it means not to support for the property name.

    - #### service

          public void service​(AuRequest request,
                              boolean everError)

      Processes an AU request.

      Default: it handles onClick, onDoubleClick, onRightClick onMove, onSize, onZIndex.

      Specified by:
        `service` in interface `ComponentCtrl`
      Overrides:
        `service` in class `AbstractComponent`
        `everError` - whether any error ever occurred before processing this request.
      Since:
        5.0.0
      See Also:
        `AbstractComponent.setAuService(org.zkoss.zk.au.AuService)`

    - #### getExtraCtrl

          public java.lang.Object getExtraCtrl()

      Returns the client control for this component. It is used only by component developers.

      Default: creates an instance of `HtmlBasedComponent.ExtraCtrl`.

      Specified by:
        `getExtraCtrl` in interface `ComponentCtrl`
      Overrides:
        `getExtraCtrl` in class `AbstractComponent`
      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`.
      See Also:
        `ComponentCtrl.getExtraCtrl()`

    - #### 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 `AbstractComponent`
      Returns:
        the new component. Notice that it doesn't belong to any page, nor desktop. It doesn't have a parent, either.