com.google.gwt.user.client.ui

## Class DisclosurePanel

- java.lang.Object
- - com.google.gwt.user.client.ui.UIObject
  - - com.google.gwt.user.client.ui.Widget
    - - com.google.gwt.user.client.ui.Composite
      - - com.google.gwt.user.client.ui.DisclosurePanel

- All Implemented Interfaces:
    HasAttachHandlers, HasCloseHandlers<DisclosurePanel>, HasOpenHandlers<DisclosurePanel>, HasHandlers, EventListener, FiresDisclosureEvents, HasAnimation, HasVisibility, HasWidgets, HasWidgets.ForIsWidget, IsRenderable, IsWidget, java.lang.Iterable<Widget>

      public final class DisclosurePanel
      extends Composite
      implements FiresDisclosureEvents, HasWidgets.ForIsWidget, HasAnimation, HasOpenHandlers<DisclosurePanel>, HasCloseHandlers<DisclosurePanel>

  A widget that consists of a header and a content panel that discloses the content when a user clicks on the header.

  ### CSS Style Rules

  .gwt-DisclosurePanel
    the panel's primary style
  .gwt-DisclosurePanel-open
    dependent style set when panel is open
  .gwt-DisclosurePanel-closed
    dependent style set when panel is closed

  The header and content sections can be easily selected using css with a child selector:
  .gwt-DisclosurePanel-open .header { ... }

  ### Use in UiBinder Templates

  DisclosurePanel elements in `UiBinder` templates can have one widget child and one of two types of header elements. A <g:header> element can hold text (not html), or a <g:customHeader> element can hold a widget. (Note that the tags of the header elements are not capitalized. This is meant to signal that the header is not a runtime object, and so cannot have a `ui:field` attribute.)

  For example:

       <g:DisclosurePanel>
         <g:header>Text header</g:header>
         <g:Label>Widget body</g:Label>
       </g:DisclosurePanel>

       <g:DisclosurePanel>
         <g:customHeader>
           <g:Label>Widget header</g:Label>
         </g:customHeader>
         <g:Label>Widget body</g:Label>
       </g:DisclosurePanel>

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `(package private) static interface` | `DisclosurePanel.DefaultImages`

    - ### Nested classes/interfaces inherited from class com.google.gwt.user.client.ui.UIObject

      `UIObject.DebugIdImpl, UIObject.DebugIdImplEnabled`

    - ### Nested classes/interfaces inherited from interface com.google.gwt.user.client.ui.HasWidgets

      `HasWidgets.ForIsWidget`

  - ### Field Summary

    - ### Fields inherited from class com.google.gwt.user.client.ui.Widget

      `eventsToSink`

    - ### Fields inherited from class com.google.gwt.user.client.ui.UIObject

      `DEBUG_ID_PREFIX, MISSING_ELEMENT_ERROR, SETELEMENT_TWICE_ERROR`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DisclosurePanel()` Creates an empty DisclosurePanel that is initially closed.
    `DisclosurePanel(DisclosurePanelImages images, java.lang.String headerText, boolean isOpen)` Deprecated. use `DisclosurePanel(ImageResource, ImageResource, String)` and `setOpen(boolean)`
    `DisclosurePanel(ImageResource openImage, ImageResource closedImage, java.lang.String headerText)` Creates a DisclosurePanel with the specified header text, an initial open/close state and a bundle of images to be used in the default header widget.
    `DisclosurePanel(java.lang.String headerText)` Creates a DisclosurePanel that will be initially closed using the specified text in the header.
    `DisclosurePanel(java.lang.String headerText, boolean isOpen)` Deprecated. use `DisclosurePanel(String)` and `setOpen(boolean)`
    `DisclosurePanel(Widget header)` Deprecated. use `DisclosurePanel()` and `setHeader(Widget)`
    `DisclosurePanel(Widget header, boolean isOpen)` Deprecated. use `DisclosurePanel()`, `setOpen(boolean)` and `setHeader(Widget)` instead

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `add(IsWidget w)` Overloaded version for IsWidget.
    `void` | `add(Widget w)` Adds a child widget.
    `HandlerRegistration` | `addCloseHandler(CloseHandler<DisclosurePanel> handler)` Adds a `CloseEvent` handler.
    `void` | `addEventHandler(DisclosureHandler handler)` Deprecated. Use `addOpenHandler(OpenHandler)` and `addCloseHandler(CloseHandler)` instead
    `HandlerRegistration` | `addOpenHandler(OpenHandler<DisclosurePanel> handler)` Adds an `OpenEvent` handler.
    `void` | `clear()` Removes all child widgets.
    `Widget` | `getContent()` Gets the widget that was previously set in `setContent(Widget)`.
    `Widget` | `getHeader()` Gets the widget that is currently being used as a header.
    `HasText` | `getHeaderTextAccessor()` Gets a `HasText` instance to provide access to the headers's text, if the header widget does provide such access.
    `boolean` | `isAnimationEnabled()` Returns true if animations are enabled, false if not.
    `boolean` | `isOpen()` Determines whether the panel is open.
    `java.util.Iterator<Widget>` | `iterator()` Gets an iterator for the contained widgets.
    `protected void` | `onEnsureDebugId(java.lang.String baseID)` Affected Elements: -header = the clickable header.
    `boolean` | `remove(IsWidget w)` Overloaded version for IsWidget.
    `boolean` | `remove(Widget w)` Removes a child widget.
    `void` | `removeEventHandler(DisclosureHandler handler)` Deprecated. Use the `HandlerRegistration.removeHandler()` method on the object returned by an add*Handler method instead
    `void` | `setAnimationEnabled(boolean enable)` Enable or disable animations.
    `void` | `setContent(Widget content)` Sets the content widget which can be opened and closed by this panel.
    `void` | `setHeader(Widget headerWidget)` Sets the widget used as the header for the panel.
    `void` | `setOpen(boolean isOpen)` Changes the visible state of this `DisclosurePanel`.

    - ### Methods inherited from class com.google.gwt.user.client.ui.Composite

      `claimElement, getWidget, initializeClaimedElement, initWidget, isAttached, onAttach, onBrowserEvent, onDetach, render, render, resolvePotentialElement, setWidget`

    - ### Methods inherited from class com.google.gwt.user.client.ui.Widget

      `addAttachHandler, addBitlessDomHandler, addDomHandler, addHandler, asWidget, asWidgetOrNull, createHandlerManager, delegateEvent, doAttachChildren, doDetachChildren, ensureHandlers, fireEvent, getHandlerCount, getHandlerManager, getLayoutData, getParent, isOrWasAttached, onLoad, onUnload, removeFromParent, replaceElement, setLayoutData, setParent, sinkEvents`

    - ### Methods inherited from class com.google.gwt.user.client.ui.UIObject

      `addStyleDependentName, addStyleName, ensureDebugId, ensureDebugId, ensureDebugId, getAbsoluteLeft, getAbsoluteTop, getElement, getOffsetHeight, getOffsetWidth, getStyleElement, getStyleName, getStyleName, getStylePrimaryName, getStylePrimaryName, getTitle, isVisible, isVisible, removeStyleDependentName, removeStyleName, setElement, setElement, setHeight, setPixelSize, setSize, setStyleDependentName, setStyleName, setStyleName, setStyleName, setStyleName, setStylePrimaryName, setStylePrimaryName, setTitle, setVisible, setVisible, setWidth, sinkBitlessEvent, toString, unsinkEvents`

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

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

    - ### Methods inherited from interface com.google.gwt.event.shared.HasHandlers

      `fireEvent`

- - ### Constructor Detail

    - #### DisclosurePanel

          public DisclosurePanel()

      Creates an empty DisclosurePanel that is initially closed.

    - #### DisclosurePanel

          @Deprecated
          public DisclosurePanel(DisclosurePanelImages images,
                                    java.lang.String headerText,
                                    boolean isOpen)

      Deprecated. use `DisclosurePanel(ImageResource, ImageResource, String)` and `setOpen(boolean)`
      Creates a DisclosurePanel with the specified header text, an initial open/close state and a bundle of images to be used in the default header widget.
      Parameters:
        `images` - a bundle that provides disclosure panel specific images
        `headerText` - the text to be displayed in the header
        `isOpen` - the initial open/close state of the content panel

    - #### DisclosurePanel

          public DisclosurePanel(ImageResource openImage,
                         ImageResource closedImage,
                         java.lang.String headerText)

      Creates a DisclosurePanel with the specified header text, an initial open/close state and a bundle of images to be used in the default header widget.
      Parameters:
        `openImage` - the open state image resource
        `closedImage` - the closed state image resource
        `headerText` - the text to be displayed in the header

    - #### DisclosurePanel

          public DisclosurePanel(java.lang.String headerText)

      Creates a DisclosurePanel that will be initially closed using the specified text in the header.
      Parameters:
        `headerText` - the text to be displayed in the header

    - #### DisclosurePanel

          @Deprecated
          public DisclosurePanel(java.lang.String headerText,
                                    boolean isOpen)

      Deprecated. use `DisclosurePanel(String)` and `setOpen(boolean)`
      Creates a DisclosurePanel with the specified header text and an initial open/close state.
      Parameters:
        `headerText` - the text to be displayed in the header
        `isOpen` - the initial open/close state of the content panel

    - #### DisclosurePanel

          @Deprecated
          public DisclosurePanel(Widget header)

      Deprecated. use `DisclosurePanel()` and `setHeader(Widget)`
      Creates a DisclosurePanel that will be initially closed using a widget as the header.
      Parameters:
        `header` - the widget to be used as a header

    - #### DisclosurePanel

          @Deprecated
          public DisclosurePanel(Widget header,
                                    boolean isOpen)

      Deprecated. use `DisclosurePanel()`, `setOpen(boolean)` and `setHeader(Widget)` instead
      Creates a DisclosurePanel using a widget as the header and an initial open/close state.
      Parameters:
        `header` - the widget to be used as a header
        `isOpen` - the initial open/close state of the content panel

  - ### Method Detail

    - #### add

          public void add(Widget w)

      Description copied from interface: `HasWidgets`
      Adds a child widget.
      Specified by:
        `add` in interface `HasWidgets`
      Parameters:
        `w` - the widget to be added

    - #### add

          public void add(IsWidget w)

      Overloaded version for IsWidget.
      Specified by:
        `add` in interface `HasWidgets.ForIsWidget`
      See Also:
        `add(Widget)`

    - #### addCloseHandler

          public HandlerRegistration addCloseHandler(CloseHandler<DisclosurePanel> handler)

      Description copied from interface: `HasCloseHandlers`
      Adds a `CloseEvent` handler.
      Specified by:
        `addCloseHandler` in interface `HasCloseHandlers<DisclosurePanel>`
      Parameters:
        `handler` - the handler
      Returns:
        the registration for the event

    - #### addEventHandler

          @Deprecated
          public void addEventHandler(DisclosureHandler handler)

      Deprecated. Use `addOpenHandler(OpenHandler)` and `addCloseHandler(CloseHandler)` instead
      Attaches an event handler to the panel to receive `DisclosureEvent` notification.
      Specified by:
        `addEventHandler` in interface `FiresDisclosureEvents`
      Parameters:
        `handler` - the handler to be added (should not be null)

    - #### addOpenHandler

          public HandlerRegistration addOpenHandler(OpenHandler<DisclosurePanel> handler)

      Description copied from interface: `HasOpenHandlers`
      Adds an `OpenEvent` handler.
      Specified by:
        `addOpenHandler` in interface `HasOpenHandlers<DisclosurePanel>`
      Parameters:
        `handler` - the handler
      Returns:
        the registration for the event

    - #### clear

          public void clear()

      Description copied from interface: `HasWidgets`
      Removes all child widgets.
      Specified by:
        `clear` in interface `HasWidgets`

    - #### getContent

          public Widget getContent()

      Gets the widget that was previously set in `setContent(Widget)`.
      Returns:
        the panel's current content widget

    - #### getHeader

          public Widget getHeader()

      Gets the widget that is currently being used as a header.
      Returns:
        the widget currently being used as a header

    - #### getHeaderTextAccessor

          public HasText getHeaderTextAccessor()

      Gets a `HasText` instance to provide access to the headers's text, if the header widget does provide such access.
      Returns:
        a reference to the header widget if it implements `HasText`, `null` otherwise

    - #### isAnimationEnabled

          public boolean isAnimationEnabled()

      Description copied from interface: `HasAnimation`
      Returns true if animations are enabled, false if not.
      Specified by:
        `isAnimationEnabled` in interface `HasAnimation`

    - #### isOpen

          public boolean isOpen()

      Determines whether the panel is open.
      Returns:
        `true` if panel is in open state

    - #### iterator

          public java.util.Iterator<Widget> iterator()

      Description copied from interface: `HasWidgets`
      Gets an iterator for the contained widgets. This iterator is required to implement `Iterator.remove()`.
      Specified by:
        `iterator` in interface `HasWidgets`
      Specified by:
        `iterator` in interface `java.lang.Iterable<Widget>`

    - #### remove

          public boolean remove(Widget w)

      Description copied from interface: `HasWidgets`
      Removes a child widget.
      Specified by:
        `remove` in interface `HasWidgets`
      Parameters:
        `w` - the widget to be removed
      Returns:
        `true` if the widget was present

    - #### remove

          public boolean remove(IsWidget w)

      Overloaded version for IsWidget.
      Specified by:
        `remove` in interface `HasWidgets.ForIsWidget`
      See Also:
        `remove(Widget)`

    - #### removeEventHandler

          @Deprecated
          public void removeEventHandler(DisclosureHandler handler)

      Deprecated. Use the `HandlerRegistration.removeHandler()` method on the object returned by an add*Handler method instead
      Removes an event handler from the panel.
      Specified by:
        `removeEventHandler` in interface `FiresDisclosureEvents`
      Parameters:
        `handler` - the handler to be removed

    - #### setAnimationEnabled

          public void setAnimationEnabled(boolean enable)

      Description copied from interface: `HasAnimation`
      Enable or disable animations.
      Specified by:
        `setAnimationEnabled` in interface `HasAnimation`
      Parameters:
        `enable` - true to enable, false to disable

    - #### setContent

          public void setContent(Widget content)

      Sets the content widget which can be opened and closed by this panel. If there is a preexisting content widget, it will be detached.
      Parameters:
        `content` - the widget to be used as the content panel

    - #### setHeader

          public void setHeader(Widget headerWidget)

      Sets the widget used as the header for the panel.
      Parameters:
        `headerWidget` - the widget to be used as the header

    - #### setOpen

          public void setOpen(boolean isOpen)

      Changes the visible state of this `DisclosurePanel`.
      Parameters:
        `isOpen` - `true` to open the panel, `false` to close

    - #### onEnsureDebugId

          protected void onEnsureDebugId(java.lang.String baseID)

      Affected Elements:
      - -header = the clickable header.
      Overrides:
        `onEnsureDebugId` in class `UIObject`
      Parameters:
        `baseID` - the base ID used by the main element
      See Also:
        `UIObject.onEnsureDebugId(String)`