Google Web Toolkit
Search Google Code:

# Class Widget

public class Widget
extends UIObject
implements EventListener
// Superclass of `Composite`, `FileUpload`, `FocusWidget`, `Frame`, `Hidden`, `Hyperlink`, `Image`, `Label`, `MenuBar`, `Panel`, `Tree`
The base class for the majority of user-interface objects. Widget adds support for receiving events from the browser and being added directly to panels.

## Methods

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.
getParent() | Gets this widget's parent panel.
isAttached() | Determines whether this widget is currently attached to the browser's document (i.e., there is an unbroken chain of widgets between this widget and the underlying browser document).
onAttach() | This method is called when a widget is attached to the browser's document.
onBrowserEvent(Event) | Fired whenever a browser event is received.
onDetach() | This method is called when a widget is detached from the browser's document.
onLoad() | This method is called immediately after a widget becomes attached to the browser's document.
onUnload() | This method is called immediately before a widget will be detached from the browser's document.
removeFromParent() | Removes this widget from its parent widget.
setElement(Element) | Sets this object's browser element.

## Method Detail

### 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()

### getParent

public Widget getParent()
Gets this widget's parent panel.

#### Return Value

the widget's parent panel

### isAttached

public boolean isAttached()
Determines whether this widget is currently attached to the browser's document (i.e., there is an unbroken chain of widgets between this widget and the underlying browser document).

#### Return Value

`true` if the widget is attached

### onAttach

protected void onAttach()
This method is called when a widget is attached to the browser's document. To receive notification after a Widget has been added to the document, override the onLoad method.

Subclasses that override this method must call `super.onAttach()` to ensure that the Widget has been attached to its underlying Element.

### onBrowserEvent

public void onBrowserEvent(Event event)
Fired whenever a browser event is received.

#### Parameters

event
  the event received

### onDetach

protected void onDetach()
This method is called when a widget is detached from the browser's document. To receive notification before a Widget is removed from the document, override the onUnload method.

Subclasses that override this method must call `super.onDetach()` to ensure that the Widget has been detached from the underlying Element. Failure to do so will result in application memory leaks due to circular references between DOM Elements and JavaScript objects.

### onLoad

protected void onLoad()
This method is called immediately after a widget becomes attached to the browser's document.

### onUnload

protected void onUnload()
This method is called immediately before a widget will be detached from the browser's document.

### removeFromParent

public void removeFromParent()
Removes this widget from its parent widget. If it has no parent, this method does nothing.

### setElement

protected void setElement(Element elem)
Sets this object's browser element. Widget subclasses must call this method before attempting to call any other methods. If a browser element has already been attached, then it is replaced with the new element. The old event listeners are removed from the old browser element, and the event listeners are set up on the new browser element.

#### Parameters

elem
  the object's new element