Class HtmlBasedComponent

java.lang.Object
org.zkoss.zk.ui.AbstractComponent
org.zkoss.zk.ui.HtmlBasedComponent
All Implemented Interfaces:
Serializable, Cloneable, Component, Scope, ComponentCtrl
Direct Known Subclasses:
HtmlMacroComponent

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

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:
  • Field Details

    • _zclass

      protected String _zclass
      The ZK CSS class.
  • Constructor Details

    • HtmlBasedComponent

      protected HtmlBasedComponent()
  • Method Details

    • getLeft

      public String getLeft()
      Returns the left position.
    • setLeft

      public void setLeft(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 String getTop()
      Returns the top position.
    • setTop

      public void setTop(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 String getHeight()
      Returns the height. If null, the best fit is used.

      Default: null.

    • setHeight

      public void setHeight(String height)
      Sets the height. If null, the best fit is used.
    • setHeight0

      protected void setHeight0(String height)
      Internal Use Only.
    • getWidth

      public String getWidth()
      Returns the width. If null, the best fit is used.

      Default: null.

    • setWidth

      public void setWidth(String width)
      Sets the width. If null, the best fit is used.
      See Also:
    • setWidth0

      protected void setWidth0(String width)
      Internal Use Only.
    • setWidthDirectly

      protected void setWidthDirectly(String width)
      Sets the width directly without sending back the result (smart update) to the client
      Since:
      5.0.4
    • setHeightDirectly

      protected void setHeightDirectly(String height)
      Sets the height directly without sending back the result (smart update) to the client
      Since:
      5.0.4
    • setLeftDirectly

      protected void setLeftDirectly(String left)
      Sets the left directly without sending back the result (smart update) to the client
      Since:
      5.0.4
    • setTopDirectly

      protected void setTopDirectly(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(String hflex)
      Sets the hflex directly without sending back the result (smart update) to the client
      Since:
      5.0.6
    • setVflexDirectly

      protected void setVflexDirectly(String vflex)
      Sets the vflex directly without sending back the result (smart update) to the client
      Since:
      8.0.1
    • getTooltiptext

      public String getTooltiptext()
      Returns the text as the tooltip.

      Default: null.

    • setTooltiptext

      public void setTooltiptext(String tooltiptext)
      Sets the text as the tooltip.
    • getZclass

      public 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:
    • setZclass

      public void setZclass(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:
    • getSclass

      public 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:
    • setSclass

      public void setSclass(String sclass)
      Sets the CSS class(es).
      See Also:
    • setClass

      public void setClass(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(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(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 String getStyle()
      Returns the CSS style.

      Default: null.

    • setStyle

      public void setStyle(String style)
      Sets the CSS style.
    • setDraggable

      public void setDraggable(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 String getDraggable()
      Returns the identifier of a draggable type of objects, or "false" if not draggable (never null nor empty).
    • setDroppable

      public void setDroppable(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 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(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:
    • setVflex0

      protected void setVflex0(String flex)
      Internal Use Only.
    • getVflex

      public String getVflex()
      Return vertical flex hint of this component.

      Default: null

      Returns:
      vertical flex hint of this component.
      Since:
      5.0.0
      See Also:
    • setHflex

      public void setHflex(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:
    • setHflex0

      protected void setHflex0(String flex)
      Internal Use Only.
    • getHflex

      public String getHflex()
      Returns horizontal flex hint of this component.

      Default: null

      Returns:
      horizontal flex hint of this component.
      Since:
      5.0.0
      See Also:
    • 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 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 String getClientAction()
      Returns the client-side action (CSA).

      Default: null (no CSA at all)

      Since:
      10.0.0
    • setAction

      public void setAction(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(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 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(Integer tabindex)
      Sets the tab order of this component. Removes the tabindex attribute if it's set to null.
      Parameters:
      tabindex -
    • getSkeleton

      public String getSkeleton()
      Returns the skeleton placeholder mode, or null when skeleton mode is off.

      Default: null.

      Since:
      11.0.0
    • setSkeleton

      public void setSkeleton(String skeleton) throws WrongValueException
      Sets the skeleton placeholder mode. When non-null, the component is rendered as a muted, animated placeholder block of the given shape until skeleton mode is cleared.

      The animated placeholder is drawn by ZK PE (zkex); on CE the value is stored and sent to the client, but no placeholder is rendered.

      Parameters:
      skeleton - one of "rect", "circle", "text" (case-sensitive); null or an empty string disables skeleton mode.
      Throws:
      WrongValueException
      Since:
      11.0.0
    • evalCSSFlex

      public boolean evalCSSFlex()
      Get whether css flex is enabled or not
      Returns:
      css flex is enabled
    • renderProperties

      protected void renderProperties(ContentRenderer renderer) throws 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:
      IOException
      Since:
      5.0.0
    • getPropertyAccess

      public PropertyAccess getPropertyAccess(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:
    • getExtraCtrl

      public 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:
    • clone

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