Class ComplexPanel

All Implemented Interfaces:
HasAttachHandlers, HasHandlers, EventListener, HasVisibility, HasWidgets, HasWidgets.ForIsWidget, IndexedPanel, IndexedPanel.ForIsWidget, IsWidget, Iterable<Widget>
Direct Known Subclasses:
AbsolutePanel, CellPanel, DeckLayoutPanel, DeckPanel, DockLayoutPanel, FlowPanel, HTMLPanel, LayoutPanel, RenderablePanel, StackPanel

public abstract class ComplexPanel extends Panel implements IndexedPanel.ForIsWidget
Abstract base class for panels that can contain multiple child widgets.
  • Constructor Details

    • ComplexPanel

      public ComplexPanel()
  • Method Details

    • getWidget

      public Widget getWidget(int index)
      Description copied from interface: IndexedPanel
      Gets the child widget at the specified index.
      Specified by:
      getWidget in interface IndexedPanel
      Parameters:
      index - the child widget's index
      Returns:
      the child widget
    • getWidgetCount

      public int getWidgetCount()
      Description copied from interface: IndexedPanel
      Gets the number of child widgets in this panel.
      Specified by:
      getWidgetCount in interface IndexedPanel
      Returns:
      the number of children
    • getWidgetIndex

      public int getWidgetIndex(Widget child)
      Description copied from interface: IndexedPanel
      Gets the index of the specified child widget.
      Specified by:
      getWidgetIndex in interface IndexedPanel
      Parameters:
      child - the widget to be found
      Returns:
      the widget's index, or -1 if it is not a child of this panel
    • getWidgetIndex

      public int getWidgetIndex(IsWidget child)
      Specified by:
      getWidgetIndex in interface IndexedPanel.ForIsWidget
    • iterator

      public 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 Iterable<Widget>
    • remove

      public boolean remove(int index)
      Description copied from interface: IndexedPanel
      Removes the widget at the specified index.
      Specified by:
      remove in interface IndexedPanel
      Parameters:
      index - the index of the widget to be removed
      Returns:
      false if the widget is not present
    • 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
      Specified by:
      remove in class Panel
      Parameters:
      w - the widget to be removed
      Returns:
      true if the child was present
    • add

      protected void add(Widget child, Element container)
      Adds a new child widget to the panel, attaching its Element to the specified container Element.
      Parameters:
      child - the child widget to be added
      container - the element within which the child will be contained
    • add

      @Deprecated protected void add(Widget child, Element container)
      Deprecated.
      Call and override add(Widget, Element) instead.
    • adjustIndex

      protected int adjustIndex(Widget child, int beforeIndex)
      Adjusts beforeIndex to account for the possibility that the given widget is already a child of this panel.
      Parameters:
      child - the widget that might be an existing child
      beforeIndex - the index at which it will be added to this panel
      Returns:
      the modified index
    • checkIndexBoundsForAccess

      protected void checkIndexBoundsForAccess(int index)
      Checks that index is in the range [0, getWidgetCount()), which is the valid range on accessible indexes.
      Parameters:
      index - the index being accessed
    • checkIndexBoundsForInsertion

      protected void checkIndexBoundsForInsertion(int index)
      Checks that index is in the range [0, getWidgetCount()], which is the valid range for indexes on an insertion.
      Parameters:
      index - the index where insertion will occur
    • getChildren

      protected WidgetCollection getChildren()
      Gets the list of children contained in this panel.
      Returns:
      a collection of child widgets
    • insert

      protected void insert(Widget child, Element container, int beforeIndex, boolean domInsert)
      Insert a new child Widget into this Panel at a specified index, attaching its Element to the specified container Element. The child Element will either be attached to the container at the same index, or simply appended to the container, depending on the value of domInsert.
      Parameters:
      child - the child Widget to be added
      container - the Element within which child will be contained
      beforeIndex - the index before which child will be inserted
      domInsert - if true, insert child into container at beforeIndex; otherwise append child to the end of container.
    • insert

      @Deprecated protected void insert(Widget child, Element container, int beforeIndex, boolean domInsert)
    • doLogicalClear

      void doLogicalClear()