Package org.zkoss.zul

## Class Window

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

- All Implemented Interfaces:
    `java.io.Serializable`, `java.lang.Cloneable`, `Component`, `Scope`, `IdSpace`, `ComponentCtrl`, `Framable`
  Direct Known Subclasses:
    `FileuploadDlg`, `MessageboxDlg`

      public class Window
      extends XulElement
      implements Framable, IdSpace

  A window.

  Unlike other elements, each `Window` is an independent ID space (by implementing `IdSpace`). It means a window and all its descendants forms a ID space and the ID of each of them is unique in this space. You could retrieve any of them in this space by calling `AbstractComponent.getFellow(java.lang.String)`.

  If a window X is a descendant of another window Y, X's descendants are not visible in Y's space. To retrieve a descendant, say Z, of X, you have to invoke Y.getFellow('X').getFellow('Z').

  Events:
  onMove, onOpen, onMaximize, onMinimize, and onClose.
  Note: to have better performance, onOpen is sent only if a non-deferrable event listener is registered (see `Deferrable`).

  `onMaximize` and `onMinimize` are supported. (since 3.5.0)

  `onClose` is sent when the close button is pressed (if `isClosable()` is true). The window has to detach or hide the window. By default, `onClose()` detaches the window. To prevent it from detached, you have to call `Event.stopPropagation()` to prevent `onClose()` is called.

  On the other hand, `onOpen` is sent when a popup window (i.e., `getMode()` is popup) is closed due to user's activity (such as press ESC). This event is only a notification. In other words, the popup is hidden before the event is sent to the server. The application cannot prevent the window from being hidden.

  Default `getZclass()`: z-window.(since 3.5.0)

  Author:
    tomyeh
  See Also:
    Serialized Form

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `Window.Mode` | The window's mode used with `setMode(Mode)`.

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

      `HtmlBasedComponent.ExtraCtrl`

    - ### 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` | `EMBEDDED` | Embeds the window as normal component.
    `static int` | `HIGHLIGHTED` | Makes the window as highlighted.
    `static int` | `MODAL` | Makes the window as a modal dialog. once `doModal()` is called, the execution of the event processing thread is suspended until one of the following occurs.
    `static int` | `OVERLAPPED` | Makes the window as overlapped other components.
    `static int` | `POPUP` | Makes the window as popup.

    - ### 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
    --- | ---
    `Window()` |
    `Window​(java.lang.String title, java.lang.String border, boolean closable)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `beforeChildAdded​(Component child, Component refChild)` | Default: does nothing.
    `java.lang.Object` | `clone()` | Clones the component.
    `void` | `doEmbedded()` | Makes this window as embedded with other components (Default).
    `void` | `doHighlighted()` | Makes this window as highlighted.
    `void` | `doModal()` | Makes this window as a modal dialog.
    `void` | `doOverlapped()` | Makes this window as overlapped with other components.
    `void` | `doPopup()` | Makes this window as popup, which is overlapped with other component and auto-hidden when user clicks outside of the window.
    `java.lang.String` | `getBorder()` | Returns the border.
    `Caption` | `getCaption()` | Returns the caption of this window.
    `java.lang.String` | `getContentSclass()` | Returns the style class used for the content block.
    `java.lang.String` | `getContentStyle()` | Returns the CSS style for the content block of the window.
    `int` | `getMinheight()` | Returns the minimum height.
    `int` | `getMinwidth()` | Returns the minimum width.
    `java.lang.String` | `getMode()` | Returns the current mode.
    `Window.Mode` | `getModeType()` | Returns the current mode.
    `java.lang.String` | `getPosition()` | Returns how to position the window at the client screen.
    `java.lang.String` | `getTitle()` | Returns the title.
    `java.lang.String` | `getZclass()` | Returns the ZK Cascading Style class for this component.
    `boolean` | `inEmbedded()` | Returns whether this is embedded with other components (Default).
    `boolean` | `inHighlighted()` | Returns whether this is a highlighted window.
    `boolean` | `inModal()` | Returns whether this is a modal dialog.
    `boolean` | `inOverlapped()` | Returns whether this is a overlapped window.
    `boolean` | `inPopup()` | Returns whether this is a popup window.
    `boolean` | `insertBefore​(Component child, Component refChild)` | Inserts a child before the reference child.
    `boolean` | `isClosable()` | Returns whether to show a close button on the title bar.
    `boolean` | `isCollapsible()` | Always return false.
    `boolean` | `isMaximizable()` | Returns whether to display the maximizing button and allow the user to maximize the window.
    `boolean` | `isMaximized()` | Returns whether the window is maximized.
    `boolean` | `isMinimizable()` | Returns whether to display the minimizing button and allow the user to minimize the window.
    `boolean` | `isMinimized()` | Returns whether the window is minimized.
    `boolean` | `isShadow()` | Returns whether to show the shadow of an overlapped/popup/modal window.
    `boolean` | `isSizable()` | Returns whether the window is sizable.
    `void` | `onChildRemoved​(Component child)` | Default: handles special event listeners.
    `void` | `onClose()` | Process the onClose event sent when the close button is pressed.
    `void` | `onModal()` | Process the onModal event by making itself a modal window.
    `void` | `onPageDetached​(Page page)` | Default: handles special event listeners.
    `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` | `setBorder​(boolean border)` | Enables or disables the border.
    `void` | `setBorder​(java.lang.String border)` | Sets the border (either none or normal).
    `void` | `setClosable​(boolean closable)` | Sets whether to show a close button on the title bar.
    `void` | `setContentSclass​(java.lang.String scls)` | Sets the style class used for the content block.
    `void` | `setContentStyle​(java.lang.String style)` | Sets the CSS style for the content block of the window.
    `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` | `setMaximizable​(boolean maximizable)` | Sets whether to display the maximizing button and allow the user to maximize the window, when a window is maximized, the button will automatically change to a restore button with the appropriate behavior already built-in that will restore the window to its previous size.
    `void` | `setMaximized​(boolean maximized)` | Sets whether the window is maximized, and then the size of the window will depend on it to show a appropriate size.
    `void` | `setMinheight​(int minheight)` | Sets the minimum height in pixels allowed for this window.
    `void` | `setMinimizable​(boolean minimizable)` | Sets whether to display the minimizing button and allow the user to minimize the window.
    `void` | `setMinimized​(boolean minimized)` | Sets whether the window is minimized.
    `void` | `setMinwidth​(int minwidth)` | Sets the minimum width in pixels allowed for this window.
    `void` | `setMode​(int mode)` | Sets the mode to overlapped, popup, modal, embedded or highlighted.
    `void` | `setMode​(java.lang.String name)` | Sets the mode to overlapped, popup, modal, embedded or highlighted.
    `void` | `setMode​(Window.Mode mode)` | Sets the mode.
    `void` | `setPosition​(java.lang.String pos)` | Sets how to position the window at the client screen.
    `void` | `setShadow​(boolean shadow)` | Sets whether to show the shadow of an overlapped/popup/modal window.
    `void` | `setSizable​(boolean sizable)` | Sets whether the window is sizable.
    `void` | `setTitle​(java.lang.String title)` | Sets the title.
    `void` | `setTopmost()` | Makes this window as topmost.
    `boolean` | `setVisible​(boolean visible)` | Changes the visibility of the window.

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

      `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, getExtraCtrl, getHeight, getHflex, getLeft, getRenderdefer, getSclass, getStyle, getTabindex, getTabindexInteger, getTooltiptext, getTop, getVflex, getWidth, getZindex, getZIndex, removeSclass, removeSclass, setAction, setClass, setClientAction, 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, invalidate, isChildable, isDisabledHostChanged, isInitialized, isInvalidated, isListenerAvailable, isVisible, onChildAdded, onPageAttached, 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, setVisibleDirectly, setWidgetClass, setWidgetListener, setWidgetOverride, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdateWidgetListener, smartUpdateWidgetOverride, toString, updateByClient, updateSubBindingAnnotationCount, willPassivate, willPassivate, willSerialize, willSerialize`

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

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

    - ### Methods inherited from interface org.zkoss.zk.ui.IdSpace

      `getFellow, getFellow, getFellowIfAny, getFellowIfAny, getFellows, hasFellow, hasFellow`

    - ### Methods inherited from interface org.zkoss.zk.ui.ext.Scope

      `addScopeListener, getAttribute, hasAttribute, removeAttribute, removeScopeListener, setAttribute`

- - ### Field Detail

    - #### EMBEDDED

          public static final int EMBEDDED

      Embeds the window as normal component.
      See Also:
        Constant Field Values

    - #### MODAL

          public static final int MODAL

      Makes the window as a modal dialog. once `doModal()` is called, the execution of the event processing thread is suspended until one of the following occurs.
      1. `setMode(org.zkoss.zul.Window.Mode)` is called with a mode other than MODAL.
      2. Either `doOverlapped()`, `doPopup()`, `doEmbedded()`, or `doHighlighted()` is called.
      3. `setVisible(boolean)` is called with false.
      4. The window is detached from the window.

      Note: In the last two cases, the mode becomes `OVERLAPPED`. In other words, one might say a modal window is a special overlapped window.

      See Also:
        `HIGHLIGHTED`, Constant Field Values

    - #### OVERLAPPED

          public static final int OVERLAPPED

      Makes the window as overlapped other components.
      See Also:
        Constant Field Values

    - #### POPUP

          public static final int POPUP

      Makes the window as popup. It is similar to `OVERLAPPED`, except it is auto hidden when user clicks outside of the window.
      See Also:
        Constant Field Values

    - #### HIGHLIGHTED

          public static final int HIGHLIGHTED

      Makes the window as highlighted. Its visual effect is the same as `MODAL`. However, from the server side's viewpoint, it is similar to `OVERLAPPED`. The execution won't be suspended when `doHighlighted()` is called.
      See Also:
        `MODAL`, `OVERLAPPED`, Constant Field Values

  - ### Constructor Detail

    - #### Window

          public Window()

    - #### Window

          public Window​(java.lang.String title,
                        java.lang.String border,
                        boolean closable)

      Parameters:
        `title` - the window title (see `setTitle(java.lang.String)`).
        `border` - the border (see `setBorder(java.lang.String)`).
        `closable` - whether it is closable (see `setClosable(boolean)`).

  - ### Method Detail

    - #### isMaximized

          public boolean isMaximized()

      Returns whether the window is maximized.
      Specified by:
        `isMaximized` in interface `Framable`
      Since:
        3.5.0

    - #### setMaximized

          public void setMaximized​(boolean maximized)

      Sets whether the window is maximized, and then the size of the window will depend on it to show a appropriate size. In other words, if true, the size of the window will count on the size of its offset parent node whose position is absolute (by not `inEmbedded()`) or its parent node. Otherwise, its size will be original size. Note that the maximized effect will run at client's sizing phase not initial phase.

      Default: false.

      Throws:
        `UiException` - if `isMaximizable()` is false.
      Since:
        3.5.0

    - #### isMaximizable

          public boolean isMaximizable()

      Returns whether to display the maximizing button and allow the user to maximize the window.

      Default: false.

      Specified by:
        `isMaximizable` in interface `Framable`
      Since:
        3.5.0

    - #### setMaximizable

          public void setMaximizable​(boolean maximizable)

      Sets whether to display the maximizing button and allow the user to maximize the window, when a window is maximized, the button will automatically change to a restore button with the appropriate behavior already built-in that will restore the window to its previous size.

      Default: false.

      Note: the maximize button won't be displayed if no title or caption at all.

      Since:
        3.5.0

    - #### isMinimized

          public boolean isMinimized()

      Returns whether the window is minimized.

      Default: false.

      Since:
        3.5.0

    - #### setMinimized

          public void setMinimized​(boolean minimized)

      Sets whether the window is minimized.

      Default: false.

      Throws:
        `UiException` - if `isMinimizable()` is false.
      Since:
        3.5.0

    - #### isMinimizable

          public boolean isMinimizable()

      Returns whether to display the minimizing button and allow the user to minimize the window.

      Default: false.

      Specified by:
        `isMinimizable` in interface `Framable`
      Since:
        3.5.0

    - #### setMinimizable

          public void setMinimizable​(boolean minimizable)

      Sets whether to display the minimizing button and allow the user to minimize the window. Note that this button provides no implementation -- the behavior of minimizing a window is implementation-specific, so the MinimizeEvent event must be handled and a custom minimize behavior implemented for this option to be useful.

      Default: false.

      Note: the maximize button won't be displayed if no title or caption at all.

      Since:
        3.5.0
      See Also:
        `MinimizeEvent`

    - #### setMinheight

          public void setMinheight​(int minheight)

      Sets the minimum height in pixels allowed for this window. If negative, 100 is assumed.

      Default: 100.

      Note: Only applies when `isSizable()` = true.

      Since:
        3.5.0

    - #### getMinheight

          public int getMinheight()

      Returns the minimum height.

      Default: 100.

      Since:
        3.5.0

    - #### setMinwidth

          public void setMinwidth​(int minwidth)

      Sets the minimum width in pixels allowed for this window. If negative, 200 is assumed.

      Default: 200.

      Note: Only applies when `isSizable()` = true.

      Since:
        3.5.0

    - #### getMinwidth

          public int getMinwidth()

      Returns the minimum width.

      Default: 200.

      Since:
        3.5.0

    - #### getCaption

          public Caption getCaption()

      Returns the caption of this window.

    - #### getBorder

          public java.lang.String getBorder()

      Returns the border.

      Default: "none".

    - #### setBorder

          public void setBorder​(java.lang.String border)

      Sets the border (either none or normal).
      Parameters:
        `border` - the border. If null, "0" or "false", "none" is assumed. If "true", "normal" is assumed (since 5.0.8).

    - #### setBorder

          public void setBorder​(boolean border)

      Enables or disables the border.
      Parameters:
        `border` - whether to have a border. If true is specified, it is the same as `setBorder("normal")`.
      Since:
        5.0.8

    - #### getTitle

          public java.lang.String getTitle()

      Returns the title. Besides this attribute, you could use `Caption` to define a more sophisticated caption (a.k.a., title).

      If a window has a caption whose label (`LabelElement.getLabel()`) is not empty, then this attribute is ignored.

      Default: empty.

      Specified by:
        `getTitle` in interface `Framable`

    - #### setTitle

          public void setTitle​(java.lang.String title)

      Sets the title.

    - #### getMode

          public java.lang.String getMode()

      Returns the current mode. One of "modal", "embedded", "overlapped", "popup", and "highlighted".
      See Also:
        `getModeType()`

    - #### setMode

          public void setMode​(Window.Mode mode)

      Sets the mode.
      Since:
        6.0.0

    - #### setMode

          public void setMode​(java.lang.String name)

      Sets the mode to overlapped, popup, modal, embedded or highlighted.

      Notice: `Events.ON_MODAL` is posted if you specify "modal" to this method. Unlike `doModal()`, `Events.ON_MODAL` is posted, so the window will become modal later (since 3.0.4). In other words, setMode("modal") never suspends the execution of the current thread. On the other hand, `doModal()` will suspends the execution if executed in an event listener, or throws an exception if not executed in an event listener.

      Refer to Overlapped, Popup, Modal, Highlighted and Embedded for more information.

      Parameters:
        `name` - the mode which could be one of "embedded", "overlapped", "popup", "modal", "highlighted". Note: it cannot be "modal". Use `doModal()` instead.

    - #### setMode

          public void setMode​(int mode)

      Sets the mode to overlapped, popup, modal, embedded or highlighted.
      See Also:
        `setMode(String)`

    - #### getModeType

          public Window.Mode getModeType()

      Returns the current mode.
      Since:
        6.0.0
      See Also:
        `getMode()`, `setMode(Mode)`

    - #### inModal

          public boolean inModal()

      Returns whether this is a modal dialog.

    - #### inEmbedded

          public boolean inEmbedded()

      Returns whether this is embedded with other components (Default).
      See Also:
        `doEmbedded()`

    - #### inOverlapped

          public boolean inOverlapped()

      Returns whether this is a overlapped window.

    - #### inPopup

          public boolean inPopup()

      Returns whether this is a popup window.

    - #### inHighlighted

          public boolean inHighlighted()

      Returns whether this is a highlighted window.

    - #### doModal

          public void doModal()

      Makes this window as a modal dialog. It will automatically center the window (ignoring `HtmlBasedComponent.getLeft()` and `HtmlBasedComponent.getTop()`).

      Notice: though both setMode("modal") and doModal() both causes the window to become modal, they are a bit different. doModal causes the event listener to suspend immediately, while setMode("modal") posts an event (`Events.ON_MODAL`). That is, `setMode(org.zkoss.zul.Window.Mode)` won't suspend the execution immediately, but `doModal()` will. `doModal()` can be called only in an event listener, while `setMode(org.zkoss.zul.Window.Mode)` can be called anytime.

      Since:
        3.0.4

    - #### doOverlapped

          public void doOverlapped()

      Makes this window as overlapped with other components.

    - #### doPopup

          public void doPopup()

      Makes this window as popup, which is overlapped with other component and auto-hidden when user clicks outside of the window.

    - #### doHighlighted

          public void doHighlighted()

      Makes this window as highlighted. The visual effect is the similar to the modal window, but, like overlapped, it doesn't suspend (block) the execution at the server. In other words, it is more like an overlapped window from the server side's viewpoint.

    - #### doEmbedded

          public void doEmbedded()

      Makes this window as embedded with other components (Default).

    - #### isClosable

          public boolean isClosable()

      Returns whether to show a close button on the title bar.
      Specified by:
        `isClosable` in interface `Framable`

    - #### setClosable

          public void setClosable​(boolean closable)

      Sets whether to show a close button on the title bar. If closable, a button is displayed and the onClose event is sent if an user clicks the button.

      Default: false.

      You can intercept the default behavior by either overriding `onClose()`, or listening the onClose event.

      Note: the close button won't be displayed if no title or caption at all.

    - #### isSizable

          public boolean isSizable()

      Returns whether the window is sizable.

    - #### setSizable

          public void setSizable​(boolean sizable)

      Sets whether the window is sizable. If true, an user can drag the border to change the window width.

      Default: false.

    - #### isShadow

          public boolean isShadow()

      Returns whether to show the shadow of an overlapped/popup/modal window. It is meaningless if it is an embedded window.
      Since:
        3.6.0

    - #### setShadow

          public void setShadow​(boolean shadow)

      Sets whether to show the shadow of an overlapped/popup/modal window. It is meaningless if it is an embedded window.

      Default: true.

      Since:
        3.6.0

    - #### getPosition

          public java.lang.String getPosition()

      Returns how to position the window at the client screen. It is meaningless if the embedded mode is used.

      Default: null which depends on `getMode()`: If overlapped or popup, `HtmlBasedComponent.setLeft(java.lang.String)` and `HtmlBasedComponent.setTop(java.lang.String)` are assumed. If modal or highlighted, it is centered.

    - #### setPosition

          public void setPosition​(java.lang.String pos)

      Sets how to position the window at the client screen. It is meaningless if the embedded mode is used.
      Parameters:
        `pos` - how to position. It can be null (the default), or a combination of the following values (by separating with comma).
        center
          Position the window at the center. `HtmlBasedComponent.setTop(java.lang.String)` and `HtmlBasedComponent.setLeft(java.lang.String)` are both ignored.
        nocenter
          Not to position the window at the center. A modal window, by default, will be position at the center. By specifying this value could prevent it and the real position depends on `HtmlBasedComponent.setTop(java.lang.String)` and `HtmlBasedComponent.setLeft(java.lang.String)` (since 5.0.4)
        left
          Position the window at the left edge. `HtmlBasedComponent.setLeft(java.lang.String)` is ignored.
        right
          Position the window at the right edge. `HtmlBasedComponent.setLeft(java.lang.String)` is ignored.
        top
          Position the window at the top edge. `HtmlBasedComponent.setTop(java.lang.String)` is ignored.
        bottom
          Position the window at the bottom edge. `HtmlBasedComponent.setTop(java.lang.String)` is ignored.
        parent
          Position the window relative to its parent. That is, the left and top (`HtmlBasedComponent.getTop()` and `HtmlBasedComponent.getLeft()`) is an offset to his parent's let-top corner. (since 3.0.2)

        For example, "left,center" means to position it at the center of the left edge.

    - #### onClose

          public void onClose()

      Process the onClose event sent when the close button is pressed.

      Default: detach itself.

    - #### onModal

          public void onModal()

      Process the onModal event by making itself a modal window.

    - #### getContentStyle

          public java.lang.String getContentStyle()

      Returns the CSS style for the content block of the window.

    - #### setContentStyle

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

      Sets the CSS style for the content block of the window.

      Default: null.

    - #### getContentSclass

          public java.lang.String getContentSclass()

      Returns the style class used for the content block.
      See Also:
        `setContentSclass(java.lang.String)`

    - #### setContentSclass

          public void setContentSclass​(java.lang.String scls)

      Sets the style class used for the content block.
      Since:
        3.0.0
      See Also:
        `getContentSclass()`

    - #### setTopmost

          public void setTopmost()

      Makes this window as topmost. It has no effect if this window is embedded.
      Since:
        5.0.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`

    - #### getZclass

          public java.lang.String getZclass()

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

      `HtmlBasedComponent.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 `HtmlBasedComponent.getZclass()`. Once it is changed, the default style won't be applied at all. If you want to perform small adjustments, use `HtmlBasedComponent.setSclass(java.lang.String)` instead.

      Overrides:
        `getZclass` in class `HtmlBasedComponent`
      See Also:
        `HtmlBasedComponent.getSclass()`

    - #### beforeChildAdded

          public void beforeChildAdded​(Component child,
                                       Component refChild)

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

    - #### insertBefore

          public boolean insertBefore​(Component child,
                                      Component refChild)

      Description copied from interface: `Component`
      Inserts a child before the reference child.

      You could use `Component.setParent(org.zkoss.zk.ui.Component)` or `Component.appendChild(org.zkoss.zk.ui.Component)` instead of this method, unless you want to control where to put the child.

      Note: `Component.setParent(org.zkoss.zk.ui.Component)` always calls back `Component.insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)` and/or `Component.removeChild(org.zkoss.zk.ui.Component)`, while `Component.insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)` and `Component.removeChild(org.zkoss.zk.ui.Component)` always calls back `Component.setParent(org.zkoss.zk.ui.Component)`, if the parent is changed. Thus, you don't need to override both `Component.insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)` and `Component.setParent(org.zkoss.zk.ui.Component)`, if you want to customize the behavior.

      If you would like to monitor if a component is attached or detached from a page, you could register a desktop listener implementing `UiLifeCycle`.

      Specified by:
        `insertBefore` in interface `Component`
      Overrides:
        `insertBefore` in class `AbstractComponent`
      Parameters:
        `child` - the new child to be inserted.
        `refChild` - the child before which you want the new child being inserted. If null, the new child is append to the end.
      Returns:
        true if newChild is added successfully or moved; false if it already has the specified child and the order doesn't change.

    - #### onChildRemoved

          public void onChildRemoved​(Component child)

      Description copied from class: `AbstractComponent`
      Default: handles special event listeners.
      Specified by:
        `onChildRemoved` in interface `ComponentCtrl`
      Overrides:
        `onChildRemoved` in class `AbstractComponent`
      See Also:
        `ComponentCtrl.onChildRemoved(org.zkoss.zk.ui.Component)`

    - #### onPageDetached

          public void onPageDetached​(Page page)

      Description copied from class: `AbstractComponent`
      Default: handles special event listeners.
      Specified by:
        `onPageDetached` in interface `ComponentCtrl`
      Overrides:
        `onPageDetached` in class `AbstractComponent`
      Parameters:
        `page` - the previous page (never null)
      See Also:
        `ComponentCtrl.onPageDetached(org.zkoss.zk.ui.Page)`

    - #### setVisible

          public boolean setVisible​(boolean visible)

      Changes the visibility of the window.

      Note if you turned on the event thread:
      If a modal dialog becomes invisible, the modal state will be ended automatically. In other words, the mode (`getMode()`) will become `OVERLAPPED` and the suspending thread is resumed. In other words, the modal window (`MODAL`) can not be invisible (while a window in other modes could be invisible).

      However, if the event thread is not enabled (default), there is no such limitation. In other words, it remains the same mode when becoming invisible.

      Specified by:
        `setVisible` in interface `Component`
      Overrides:
        `setVisible` in class `AbstractComponent`
      Returns:
        the previous visibility

    - #### setDraggable

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

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

      Overrides:
        `setDraggable` in class `HtmlBasedComponent`
      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.

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

    - #### service

          public void service​(AuRequest request,
                              boolean everError)

      Processes an AU request.

      Default: in addition to what are handled by `HtmlBasedComponent.service(org.zkoss.zk.au.AuRequest, boolean)`, it also handles onOpen.

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

    - #### isCollapsible

          public boolean isCollapsible()

      Always return false.
      Specified by:
        `isCollapsible` in interface `Framable`
      Since:
        3.6.2