public abstract class

Panel

extends Widget
implements HasWidgets.ForIsWidget
java.lang.Object
   ↳ com.google.gwt.user.client.ui.UIObject
     ↳ com.google.gwt.user.client.ui.Widget
       ↳ com.google.gwt.user.client.ui.Panel
Known Direct Subclasses
Known Indirect Subclasses

Class Overview

Abstract base class for all panels, which are widgets that can contain other widgets.

Summary

[Expand]
Inherited Constants
From class com.google.gwt.user.client.ui.UIObject
Public Constructors
Panel()
Public Methods
void add(IsWidget child)
void add(Widget child)
Adds a child widget.
void clear()
Removes all child widgets.
abstract boolean remove(Widget child)
Removes a child widget.
boolean remove(IsWidget child)
Protected Methods
final void adopt(Widget child)
Finalize the attachment of a Widget to this Panel.
void adopt(Widget w, Element container)
This method is deprecated. Use adopt(Widget).
void disown(Widget w)
This method is deprecated. Use orphan(Widget).
void doAttachChildren()
If a widget contains one or more child widgets that are not in the logical widget hierarchy (the child is physically connected only on the DOM level), it must override this method and call onAttach() for each of its child widgets.
void doDetachChildren()
If a widget contains one or more child widgets that are not in the logical widget hierarchy (the child is physically connected only on the DOM level), it must override this method and call onDetach() for each of its child widgets.
final void orphan(Widget child)

This method must be called as part of the remove method of any Panel.

[Expand]
Inherited Methods
From class com.google.gwt.user.client.ui.Widget
From class com.google.gwt.user.client.ui.UIObject
From class java.lang.Object
From interface com.google.gwt.event.logical.shared.HasAttachHandlers
From interface com.google.gwt.event.shared.HasHandlers
From interface com.google.gwt.user.client.EventListener
From interface com.google.gwt.user.client.ui.HasWidgets
From interface com.google.gwt.user.client.ui.HasWidgets.ForIsWidget
From interface com.google.gwt.user.client.ui.IsWidget
From interface java.lang.Iterable

Public Constructors

public Panel ()

Public Methods

public void add (IsWidget child)

public void add (Widget child)

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 adjustIndex(Widget, int).
  3. Detach Child: Remove the Widget from its existing parent, if any. Most Panels will simply call 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 adopt(Widget) to finalize the add as the very last step.

Parameters
child the widget to be added
Throws
UnsupportedOperationException if this method is not supported (most often this means that a specific overload must be called)
See Also

public void clear ()

Removes all child widgets.

public abstract boolean remove (Widget child)

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 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.

Parameters
child the widget to be removed
Returns
  • true if the child was present

public boolean remove (IsWidget child)

Protected Methods

protected final void adopt (Widget child)

Finalize the attachment of a Widget to this Panel. This method is the last step in adding or inserting a Widget into a Panel, and should be called after physical attachment in the DOM is complete. This Panel becomes the parent of the child Widget, and the child will now fire its onAttach() event if this Panel is currently attached.

Parameters
child the widget to be adopted
See Also

protected void adopt (Widget w, Element container)

This method is deprecated.
Use adopt(Widget).

This method was formerly part of the process of adding a Widget to a Panel but has been deprecated in favor of adopt(Widget).

protected void disown (Widget w)

This method is deprecated.
Use orphan(Widget).

This method was formerly part of the process of removing a Widget from a Panel but has been deprecated in favor of orphan(Widget).

protected void doAttachChildren ()

If a widget contains one or more child widgets that are not in the logical widget hierarchy (the child is physically connected only on the DOM level), it must override this method and call onAttach() for each of its child widgets.

protected void doDetachChildren ()

If a widget contains one or more child widgets that are not in the logical widget hierarchy (the child is physically connected only on the DOM level), it must override this method and call onDetach() for each of its child widgets.

protected final void orphan (Widget child)

This method must be called as part of the remove method of any Panel. It ensures that the Widget's parent is cleared. This method should be called after verifying that the child Widget is an existing child of the Panel, but before physically removing the child Widget from the DOM. The child will now fire its onDetach() event if this Panel is currently attached.

Calls to orphan(Widget) should be wrapped in a try/finally block to ensure that the widget is physically detached even if orphan throws an exception.

Parameters
child the widget to be disowned
See Also