Class Panel
Abstract base class for all panels, which are widgets that can contain other
widgets.
Methods
add(Widget) | Adds a child widget. |
adopt(Widget) | Finalize the attachment of a Widget to this Panel. |
adopt(Widget, Element) | This method was formerly part of the process of adding a Widget to a Panel
but has been deprecated in favor of adopt(Widget). |
clear() | Removes all child widgets. |
disown(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). |
doAttachChildren() | If a widget implements HasWidgets, it must override this method and call
onAttach() for each of its child widgets. |
doDetachChildren() | If a widget implements HasWidgets, it must override this method and call
onDetach() for each of its child widgets. |
onLoad() | A Panel's onLoad method will be called after all of its children are
attached. |
onUnload() | A Panel's onUnload method will be called before its children become
detached themselves. |
orphan(Widget) | This method must be called as part of the remove method of any Panel. |
remove(Widget) | Removes a child widget. |
Method Detail
add
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.
-
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.
-
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).
-
Detach Child: Remove the Widget from its existing parent, if
any. Most Panels will simply call Widget.removeFromParent() on the
Widget.
-
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.
-
Physical Attach: The Widget's Element must be physically
attached to the Panel's Element, either directly or indirectly.
-
Adopt: Call adopt(Widget) to finalize the add as the
very last step.
Parameters
- child
- the widget to be added
See Also
HasWidgets.add(Widget)
adopt
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
Widget.onAttach() event if this Panel is currently attached.
Parameters
- child
- the widget to be adopted
See Also
add(Widget)
adopt
This method was formerly part of the process of adding a Widget to a Panel
but has been deprecated in favor of
adopt(Widget).
Parameters
- w
-
- container
-
clear
public void clear()
Removes all child widgets.
disown
protected void
disown(
Widget w)
This method was formerly part of the process of removing a Widget from a
Panel but has been deprecated in favor of
orphan(Widget).
Parameters
- w
-
doAttachChildren
protected void doAttachChildren()
If a widget implements HasWidgets, it must override this method and call
onAttach() for each of its child widgets.
See Also
Panel.onAttach()
doDetachChildren
protected void doDetachChildren()
If a widget implements HasWidgets, it must override this method and call
onDetach() for each of its child widgets.
See Also
Panel.onDetach()
onLoad
protected void onLoad()
A Panel's onLoad method will be called after all of its children are
attached.
See Also
Widget.onLoad()
onUnload
protected void onUnload()
A Panel's onUnload method will be called before its children become
detached themselves.
See Also
Widget.onLoad()
orphan
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
Widget.onDetach() event if this Panel is
currently attached.
Parameters
- child
- the widget to be disowned
See Also
add(Widget)
remove
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.
-
Validate: Make sure this Panel is actually the parent of the
child Widget; return
false
if it is not.
-
Orphan: Call orphan(Widget) first while the child
Widget is still attached.
-
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.
-
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
Return Value
true
if the child was present