Class DeckPanel

All Implemented Interfaces:
HasAttachHandlers, HasHandlers, EventListener, HasAnimation, HasVisibility, HasWidgets, HasWidgets.ForIsWidget, IndexedPanel, IndexedPanel.ForIsWidget, InsertPanel, InsertPanel.ForIsWidget, IsWidget, Iterable<Widget>

public class DeckPanel extends ComplexPanel implements HasAnimation, InsertPanel.ForIsWidget
A panel that displays all of its child widgets in a 'deck', where only one can be visible at a time. It is used by TabPanel.

Once a widget has been added to a DeckPanel, its visibility, width, and height attributes will be manipulated. When the widget is removed from the DeckPanel, it will be visible, and its width and height attributes will be cleared.

  • Constructor Details

    • DeckPanel

      public DeckPanel()
      Creates an empty deck panel.
  • Method Details

    • add

      public void add(Widget w)
      Description copied from class: Panel
      Adds a child widget.

      How to Override this Method

      There are several important things that must take place in the correct order to properly add or insert a Widget to a Panel. Not all of these steps will be relevant to every Panel, but all of the steps must be considered.

      1. Validate: Perform any sanity checks to ensure the Panel can accept a new Widget. Examples: checking for a valid index on insertion; checking that the Panel is not full if there is a max capacity.
      2. Adjust for Reinsertion: Some Panels need to handle the case where the Widget is already a child of this Panel. Example: when performing a reinsert, the index might need to be adjusted to account for the Widget's removal. See ComplexPanel.adjustIndex(Widget, int).
      3. Detach Child: Remove the Widget from its existing parent, if any. Most Panels will simply call Widget.removeFromParent() on the Widget.
      4. Logical Attach: Any state variables of the Panel should be updated to reflect the addition of the new Widget. Example: the Widget is added to the Panel's WidgetCollection at the appropriate index.
      5. Physical Attach: The Widget's Element must be physically attached to the Panel's Element, either directly or indirectly.
      6. Adopt: Call Panel.adopt(Widget) to finalize the add as the very last step.

      Specified by:
      add in interface HasWidgets
      Specified by:
      add in interface InsertPanel
      Overrides:
      add in class Panel
      Parameters:
      w - the widget to be added
      See Also:
    • getVisibleWidget

      public int getVisibleWidget()
      Gets the index of the currently-visible widget, if any.
      Returns:
      the visible widget's index, or -1 if there is no such widget
    • insert

      public void insert(IsWidget w, int beforeIndex)
      Specified by:
      insert in interface InsertPanel.ForIsWidget
    • insert

      public void insert(Widget w, int beforeIndex)
      Description copied from interface: InsertPanel
      Inserts a child widget before the specified index. If the widget is already a child of this panel, it will be moved to the specified index.
      Specified by:
      insert in interface InsertPanel
      Parameters:
      w - the child widget to be inserted
      beforeIndex - the index before which it will be inserted
    • isAnimationEnabled

      public boolean isAnimationEnabled()
      Description copied from interface: HasAnimation
      Returns true if animations are enabled, false if not.
      Specified by:
      isAnimationEnabled in interface HasAnimation
    • remove

      public boolean remove(Widget w)
      Description copied from class: Panel
      Removes a child widget.

      How to Override this Method

      There are several important things that must take place in the correct order to properly remove a Widget from a Panel. Not all of these steps will be relevant to every Panel, but all of the steps must be considered.

      1. Validate: Make sure this Panel is actually the parent of the child Widget; return false if it is not.
      2. Orphan: Call Panel.orphan(Widget) first while the child Widget is still attached.
      3. Physical Detach: Adjust the DOM to account for the removal of the child Widget. The Widget's Element must be physically removed from the DOM.
      4. Logical Detach: Update the Panel's state variables to reflect the removal of the child Widget. Example: the Widget is removed from the Panel's WidgetCollection.

      Specified by:
      remove in interface HasWidgets
      Overrides:
      remove in class ComplexPanel
      Parameters:
      w - the widget to be removed
      Returns:
      true if the child was present
    • 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
    • showWidget

      public void showWidget(int index)
      Shows the widget at the specified index. This causes the currently- visible widget to be hidden.
      Parameters:
      index - the index of the widget to be shown