Package org.zkoss.zkmax.zul

## Class Video

- java.lang.Object
- - org.zkoss.zk.ui.AbstractComponent
  - - org.zkoss.zk.ui.HtmlBasedComponent
    - - org.zkoss.zul.impl.XulElement
      - - org.zkoss.zkmax.zul.Video

- All Implemented Interfaces:
    `java.io.Serializable`, `java.lang.Cloneable`, `Component`, `Scope`, `ComponentCtrl`, `MediaElement`

      public class Video
      extends XulElement
      implements MediaElement

  A video player.

  Only works for browsers supporting HTML5 video tag

  Since:
    8.6.0
  Author:
    charlesqiu
  See Also:
    Serialized Form

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `protected class` | `Video.ExtraCtrl` | A utility class to implement `HtmlBasedComponent.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
    --- | --- | ---
    `static int` | `END` | Represent the end state
    `static int` | `PAUSE` | Represent the pause state
    `static int` | `PLAY` | Represent the play state
    `static int` | `STOP` | Represent the stop state

    - ### Fields inherited from class org.zkoss.zk.ui.HtmlBasedComponent

      `_zclass`

    - ### 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
    Constructor | Description
    --- | ---
    `Video()` |
    `Video​(java.lang.String src)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `beforeChildAdded​(Component child, Component insertBefore)` | Default: does nothing.
    `Video` | `getContent()` | Note: it won't fetch what is set thru by `setSrc(java.lang.String)`.
    `java.lang.String` | `getCrossorigin()` | Returns the crossorigin of this video tag, could be "anonymous", "use-credentials" or null.
    `java.lang.Object` | `getExtraCtrl()` | Returns the client control for this component.
    `double` | `getPlaybackRate()` | Returns the video play speed.
    `java.lang.String` | `getPoster()` | Returns the image source, if didn't set the image, return null.
    `java.lang.String` | `getPreload()` | Returns "none" or "metadata" or "auto" or null
    `java.util.List<java.lang.String>` | `getSrc()` | Returns the video source as List.
    `double` | `getVolume()` | Returns the volume of video.
    `boolean` | `isAutoplay()` | Returns whether to auto start playing the video.
    `boolean` | `isClipToFit()` | Return whether to clip video when the source size doesn't fit the tag size setting, for example: if video source is 1280 * 720, but the video tag is
    `boolean` | `isControls()` | Returns whether to display the video controls.
    `boolean` | `isDimBackground()` | Returns whether to turn whole page to be covered by translucent black except the Video, also called theater mode.
    `boolean` | `isEnded()` | Return whether the video is ended.
    `boolean` | `isLoop()` | Returns whether to play the video repeatedly.
    `boolean` | `isMuted()` | Returns whether the video is muted.
    `boolean` | `isPaused()` | Return whether the video is paused.
    `boolean` | `isPlaying()` | Return whether the video is playing.
    `boolean` | `isPlaysinline()` | Returns the playsinline of this video tag.
    `boolean` | `isStopped()` | Return whether the video is stopped.
    `void` | `pause()` | Pause the video at the client.
    `void` | `play()` | Play the video at the client.
    `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` | `setAutoplay​(boolean autoplay)` | Sets whether to auto start playing the video.
    `void` | `setClipToFit​(boolean clipToFit)` | Set whether to clip video when the source size doesn't fit the tag size setting, for example: if video source is 1280 * 720, but the video tag is
    `void` | `setContent​(Video content)` | Calling this method implies setSrc(null).
    `void` | `setControls​(boolean controls)` | Sets whether to display the video controls.
    `void` | `setCrossorigin​(java.lang.String crossorigin)` | Could be "anonymous" or "use-credentials", an invalid string and an empty string will be handled as the "anonymous".
    `void` | `setCurrentTime​(double currentTime)` | Sets which part of video to play.
    `void` | `setDimBackground​(boolean dimBackground)` | Sets whether to turn whole page to be covered by translucent black except Video, also called theater mode.
    `void` | `setLoop​(boolean loop)` | Sets whether to play the video repeatedly.
    `void` | `setMuted​(boolean muted)` | Sets whether to mute the video.
    `void` | `setPlaybackRate​(double playbackRate)` | Sets the video play speed, type of value is in double, valid value is depending on browser.
    `void` | `setPlaying​(boolean playing)` | Ture to indicate the same as `play()` False to indicate the same as `pause()`
    `void` | `setPlaysinline​(boolean playsinline)` | Sets the playsinline of this video tag.
    `void` | `setPoster​(java.lang.String poster)` | Sets an image to be shown while the video is downloading, or until the user hits the play button.
    `void` | `setPreload​(java.lang.String preload)` | Sets whether and how the video should be loaded, which could be one of "none", "metadata", "auto".
    `void` | `setSrc​(java.lang.String src)` | Calling this method implies setContent(null).
    `void` | `setSrcList​(java.util.List<java.lang.String> src)` | Sets the source list, be invoked by the `setSrc(String)`.
    `void` | `setVolume​(double volume)` | Sets the volume of video.
    `void` | `stop()` | Stop the video at the client.
    `protected void` | `updateByClient​(java.lang.String name, java.lang.Object value)` | Called when the widget running at the client asks the server to update a value.

    - ### Methods inherited from class org.zkoss.zul.impl.XulElement

      `clone, getContext, getCtrlKeys, getPopup, getPropertyAccess, getTooltip, setContext, setContext, setContextAttributes, setCtrlKeys, setPopup, setPopup, setPopupAttributes, setTooltip, setTooltip, setTooltipAttributes`

    - ### Methods inherited from class org.zkoss.zk.ui.HtmlBasedComponent

      `addSclass, evalCSSFlex, focus, getAction, getClientAction, getDraggable, getDroppable, getHeight, getHflex, getLeft, getRenderdefer, getSclass, getStyle, getTabindex, getTabindexInteger, getTooltiptext, getTop, getVflex, getWidth, getZclass, getZindex, getZIndex, removeSclass, removeSclass, setAction, setClass, setClientAction, setDraggable, setDroppable, setFocus, setHeight, setHeight0, setHeightDirectly, setHflex, setHflex0, setHflexDirectly, setLeft, setLeftDirectly, setRenderdefer, setSclass, setStyle, setTabindex, setTabindex, setTooltiptext, setTop, setTopDirectly, setVflex, setVflex0, setVflexDirectly, setWidth, setWidth0, setWidthDirectly, setZclass, setZindex, setZIndex, setZIndexDirectly`

    - ### 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, 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, updateSubBindingAnnotationCount, willPassivate, willPassivate, willSerialize, willSerialize`

    - ### Methods inherited from class java.lang.Object

      `equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### STOP

          public static final int STOP

      Represent the stop state
      See Also:
        Constant Field Values

    - #### PLAY

          public static final int PLAY

      Represent the play state
      See Also:
        Constant Field Values

    - #### PAUSE

          public static final int PAUSE

      Represent the pause state
      See Also:
        Constant Field Values

    - #### END

          public static final int END

      Represent the end state
      Since:
        9.6.0
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### Video

          public Video()

    - #### Video

          public Video​(java.lang.String src)

  - ### Method Detail

    - #### isAutoplay

          public boolean isAutoplay()

      Returns whether to auto start playing the video.

      Default: false.

      Returns:
        true if video enable autoplay function.

    - #### setAutoplay

          public void setAutoplay​(boolean autoplay)

      Sets whether to auto start playing the video.
      Parameters:
        `autoplay` - whether to enable autoplay function.

    - #### isControls

          public boolean isControls()

      Returns whether to display the video controls.

      Default: false.

      Returns:
        true if video display the controls.

    - #### setControls

          public void setControls​(boolean controls)

      Sets whether to display the video controls.
      Parameters:
        `controls` - whether to display the video controls.

    - #### isLoop

          public boolean isLoop()

      Returns whether to play the video repeatedly.

      Default: false.

      Returns:
        true if video enable loop function.

    - #### setLoop

          public void setLoop​(boolean loop)

      Sets whether to play the video repeatedly.
      Parameters:
        `loop` - whether to enable loop function.

    - #### isDimBackground

          public boolean isDimBackground()

      Returns whether to turn whole page to be covered by translucent black except the Video, also called theater mode. When theater mode is enabled, user can click anywhere on the page except the Video to disable theater mode.

      Default: false.

      Returns:
        true if theater mode is enabled.

    - #### setDimBackground

          public void setDimBackground​(boolean dimBackground)

      Sets whether to turn whole page to be covered by translucent black except Video, also called theater mode. When theater mode is enabled, user can click anywhere on the page except the Video to disable theater mode.
      Parameters:
        `dimBackground` - whether to enable theater mode.

    - #### getPreload

          public java.lang.String getPreload()

      Returns "none" or "metadata" or "auto" or null

      Default: null.

      Returns:
        whether and how the video should be loaded.

    - #### setPreload

          public void setPreload​(java.lang.String preload)

      Sets whether and how the video should be loaded, which could be one of "none", "metadata", "auto". Refer to Preload Attribute Description for details.
      Parameters:
        `preload` - which could be one of "none", "metadata", "auto".

    - #### getPoster

          public java.lang.String getPoster()

      Returns the image source, if didn't set the image, return null.

      Default: null.

      Returns:
        the image source.

    - #### setPoster

          public void setPoster​(java.lang.String poster)

      Sets an image to be shown while the video is downloading, or until the user hits the play button.
      Parameters:
        `poster` - the image source.

    - #### getSrc

          public java.util.List<java.lang.String> getSrc()

      Returns the video source as List.

      Default: [].

      Returns:
        the video source.

    - #### setSrc

          public void setSrc​(java.lang.String src)

      Calling this method implies setContent(null). In other words, the last invocation of `setSrc(java.lang.String)` overrides the previous `setContent(org.zkoss.video.Video)`, if any.

      Parameters:
        `src` - the video sources separated by ','.
      See Also:
        `setContent(org.zkoss.video.Video)`

    - #### setSrcList

          public void setSrcList​(java.util.List<java.lang.String> src)

      Sets the source list, be invoked by the `setSrc(String)`.
      Parameters:
        `src` - the source list.

    - #### getCrossorigin

          public java.lang.String getCrossorigin()

      Returns the crossorigin of this video tag, could be "anonymous", "use-credentials" or null.

      Default: null.

      Returns:
        the crossorigin of this video tag.

    - #### setCrossorigin

          public void setCrossorigin​(java.lang.String crossorigin)

      Could be "anonymous" or "use-credentials", an invalid string and an empty string will be handled as the "anonymous". Notice that this attribute refers to the corresponding attribute of the HTML5 specification. Hence, it would still be rendered to client-side as a DOM attribute even if the browser doesn’t support it.

      Parameters:
        `crossorigin` - the crossorigin of this video tag.

    - #### isPlaysinline

          public boolean isPlaysinline()

      Returns the playsinline of this video tag.

      Default: false.

      Returns:
        true if the video enable playsinline function.

    - #### setPlaysinline

          public void setPlaysinline​(boolean playsinline)

      Sets the playsinline of this video tag. Notice that this attribute refers to the corresponding attribute of the HTML5 specification. Hence, it would still be rendered to client-side as a DOM attribute even if the browser doesn’t support it.

      Parameters:
        `playsinline` - whether to enable the playsinline function.

    - #### getPlaybackRate

          public double getPlaybackRate()

      Returns the video play speed.

      Default: 1.0.

      Returns:
        video play speed.

    - #### setPlaybackRate

          public void setPlaybackRate​(double playbackRate)

      Sets the video play speed, type of value is in double, valid value is depending on browser.
      Parameters:
        `playbackRate` - video play speed.

    - #### isClipToFit

          public boolean isClipToFit()

      Return whether to clip video when the source size doesn't fit the tag size setting, for example: if video source is 1280 * 720, but the video tag is

          <video width="1000px" height="720px" />

      , it will cut off the sides of the video, preserving the aspect ratio, and also filling in the space.

      Default: false.

      Returns:
        whether to clip video when the source size doesn't fit the tag size setting.

    - #### setClipToFit

          public void setClipToFit​(boolean clipToFit)

      Set whether to clip video when the source size doesn't fit the tag size setting, for example: if video source is 1280 * 720, but the video tag is

          <video width="1000px" height="720px" />

      , it will cut off the sides of the video, preserving the aspect ratio, and also filling in the space.
      Parameters:
        `clipToFit` - whether to clip video when the source size doesn't fit the tag size setting.

    - #### isMuted

          public boolean isMuted()

      Returns whether the video is muted.
      Returns:
        whether the video is muted.

    - #### setMuted

          public void setMuted​(boolean muted)

      Sets whether to mute the video.
      Parameters:
        `muted` - whether to mute the video.

    - #### setPlaying

          public void setPlaying​(boolean playing)

      Ture to indicate the same as `play()` False to indicate the same as `pause()`

    - #### setCurrentTime

          public void setCurrentTime​(double currentTime)

      Sets which part of video to play.
      Parameters:
        `currentTime` - which part of video to play, the value is in seconds.

    - #### getVolume

          public double getVolume()

      Returns the volume of video. Default: 1.0
      Returns:
        the volume of video, type of value is in double, valid value is between 0.0 and 1.0.

    - #### setVolume

          public void setVolume​(double volume)

      Sets the volume of video.
      Parameters:
        `volume` - the volume of video, type of value is in double, valid value is between 0.0 and 1.0.

    - #### getContent

          public Video getContent()

      Note: it won't fetch what is set thru by `setSrc(java.lang.String)`. It simply returns what is passed to `setContent(org.zkoss.video.Video)`.

      Default: null.

      Returns:
        the content set by `setContent(org.zkoss.video.Video)`.

    - #### setContent

          public void setContent​(Video content)

      Calling this method implies setSrc(null). In other words, the last invocation of `setContent(org.zkoss.video.Video)` overrides the previous `setSrc(java.lang.String)`, if any.

      Parameters:
        `content` - sets the content directly.
      See Also:
        `setSrc(java.lang.String)`

    - #### play

          public void play()

      Play the video at the client.

    - #### pause

          public void pause()

      Pause the video at the client.

    - #### stop

          public void stop()

      Stop the video at the client.

    - #### isPlaying

          public boolean isPlaying()

      Return whether the video is playing.
      Returns:
        true if video is playing;

    - #### isPaused

          public boolean isPaused()

      Return whether the video is paused.
      Returns:
        true if video is paused;

    - #### isStopped

          public boolean isStopped()

      Return whether the video is stopped. While the video is ended, also means it is stopped.
      Returns:
        true if video is stopped or ended;

    - #### isEnded

          public boolean isEnded()

      Return whether the video is ended.
      Returns:
        true if video is ended;
      Since:
        9.6.0

    - #### renderProperties

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

      Description copied from class: `HtmlBasedComponent`
      Renders the content of this component, excluding the enclosing tags and children.

      See also ZK Client-side Reference: Property Rendering

      Overrides:
        `renderProperties` in class `XulElement`
      Throws:
        `java.io.IOException`

    - #### beforeChildAdded

          public void beforeChildAdded​(Component child,
                                       Component insertBefore)

      Description copied from class: `AbstractComponent`
      Default: does nothing.
      Specified by:
        `beforeChildAdded` in interface `ComponentCtrl`
      Overrides:
        `beforeChildAdded` in class `AbstractComponent`
      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.
      See Also:
        `ComponentCtrl.beforeChildAdded(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)`

    - #### getExtraCtrl

          public java.lang.Object getExtraCtrl()

      Description copied from class: `HtmlBasedComponent`
      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 `HtmlBasedComponent`
      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()`

    - #### updateByClient

          protected void updateByClient​(java.lang.String name,
                                        java.lang.Object value)

      Description copied from class: `AbstractComponent`
      Called when the widget running at the client asks the server to update a value. The update is caused by an AU request named `setAttr` (by invoking zk.Widget's smartUpdate at client).

      By default, it does nothing but log a warning message, since it is not safe to allow the client to update a field arbitrary.

      However, if you'd like to allow the update for a particular component you could do one of the following

      1. For component developers: override this method to update the field directly. For example,

             protected void updateByClient(String name, Object value) {
                     if ("disabled".equals(name))
                             setDisabled(name, ((Boolean)value).booleanValue());
                     else
                             super.updateByClient(name, value);

      2. For application developers: set an attribute called `org.zkoss.zk.ui.updateByClient` to be true. Then, this method will use reflection to find out the setter to update the value. Nothing happens if the method is not found.

      Notice: this method will invoke `AbstractComponent.disableClientUpdate(boolean)` to disable any update to the client, when calling the setter.

      If you want to enable the client update for all instances of a given component (though not recommended for the security reason), you could refer to here.

      See also zk.Widget.smartUpdate().

      Overrides:
        `updateByClient` in class `AbstractComponent`

    - #### service

          public void service​(AuRequest request,
                              boolean everError)

      Description copied from class: `HtmlBasedComponent`
      Processes an AU request.

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

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