Class AbsolutePanel
- All Implemented Interfaces:
HasAttachHandlers
,HasHandlers
,EventListener
,HasVisibility
,HasWidgets
,HasWidgets.ForIsWidget
,IndexedPanel
,IndexedPanel.ForIsWidget
,InsertPanel
,InsertPanel.ForIsWidget
,IsWidget
,Iterable<Widget>
- Direct Known Subclasses:
RootPanel
Note that this panel will not automatically resize itself to allow enough room for its absolutely-positioned children. It must be explicitly sized in order to make room for them.
Once a widget has been added to an absolute panel, the panel effectively "owns" the positioning of the widget. Any existing positioning attributes on the widget may be modified by the panel.
Use in UiBinder Templates
AbsolutePanel elements in UiBinder
templates lay out their children with absolute position, using
<g:at> elements. Each at element should have left
and
top
attributes in pixels. They also can contain widget children
directly, with no position specified.
For example:
<g:AbsolutePanel> <g:at left='10' top='20'> <g:Label>Lorem ipsum...</g:Label> </g:at> <g:Label>...dolores est.</g:Label> </g:AbsolutePanel>
-
Nested Class Summary
Nested classes/interfaces inherited from class com.google.gwt.user.client.ui.UIObject
UIObject.DebugIdImpl, UIObject.DebugIdImplEnabled
Nested classes/interfaces inherited from interface com.google.gwt.user.client.ui.HasWidgets
HasWidgets.ForIsWidget
Nested classes/interfaces inherited from interface com.google.gwt.user.client.ui.IndexedPanel
IndexedPanel.ForIsWidget
Nested classes/interfaces inherited from interface com.google.gwt.user.client.ui.InsertPanel
InsertPanel.ForIsWidget
-
Field Summary
Fields inherited from class com.google.gwt.user.client.ui.Widget
eventsToSink
Fields inherited from class com.google.gwt.user.client.ui.UIObject
DEBUG_ID_PREFIX, MISSING_ELEMENT_ERROR, SETELEMENT_TWICE_ERROR
-
Constructor Summary
ModifierConstructorDescriptionCreates an empty absolute panel.protected
AbsolutePanel
(Element elem) Creates an AbsolutePanel with the given element. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Overloaded version for IsWidget.void
Adds a child widget.void
Adds a widget to the panel at the specified position.int
Gets the position of the left outer border edge of the widget relative to the left outer border edge of the panel.int
Gets the position of the top outer border edge of the widget relative to the top outer border edge of the panel.void
Convenience overload to allowIsWidget
to be used directly.void
Inserts a child widget before the specified index.void
Inserts a child widget at the specified position before the specified index.boolean
OverridesComplexPanel.remove(Widget)
to change the removed Widget's element back to static positioning.This is done so that any positioning changes to the widget that were done by the panel are undone when the widget is disowned from the panel.void
setWidgetPosition
(Widget w, int left, int top) Sets the position of the specified child widget.protected void
setWidgetPositionImpl
(Widget w, int left, int top) Methods inherited from class com.google.gwt.user.client.ui.ComplexPanel
add, add, adjustIndex, checkIndexBoundsForAccess, checkIndexBoundsForInsertion, doLogicalClear, getChildren, getWidget, getWidgetCount, getWidgetIndex, getWidgetIndex, insert, insert, iterator, remove
Methods inherited from class com.google.gwt.user.client.ui.Panel
add, adopt, clear, doAttachChildren, doDetachChildren, orphan, remove
Methods inherited from class com.google.gwt.user.client.ui.Widget
addAttachHandler, addBitlessDomHandler, addDomHandler, addHandler, asWidget, asWidgetOrNull, createHandlerManager, delegateEvent, ensureHandlers, fireEvent, getHandlerCount, getHandlerManager, getLayoutData, getParent, isAttached, isOrWasAttached, onAttach, onBrowserEvent, onDetach, onLoad, onUnload, removeFromParent, replaceElement, setLayoutData, setParent, sinkEvents, unsinkEvents
Methods inherited from class com.google.gwt.user.client.ui.UIObject
addStyleDependentName, addStyleName, ensureDebugId, ensureDebugId, ensureDebugId, getAbsoluteLeft, getAbsoluteTop, getElement, getOffsetHeight, getOffsetWidth, getStyleElement, getStyleName, getStyleName, getStylePrimaryName, getStylePrimaryName, getTitle, isVisible, isVisible, onEnsureDebugId, removeStyleDependentName, removeStyleName, resolvePotentialElement, setElement, setElement, setHeight, setPixelSize, setSize, setStyleDependentName, setStyleName, setStyleName, setStyleName, setStyleName, setStylePrimaryName, setStylePrimaryName, setTitle, setVisible, setVisible, setWidth, sinkBitlessEvent, toString
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface com.google.gwt.user.client.ui.IndexedPanel
getWidget, getWidgetCount, getWidgetIndex, remove
Methods inherited from interface com.google.gwt.user.client.ui.IndexedPanel.ForIsWidget
getWidgetIndex
Methods inherited from interface com.google.gwt.user.client.ui.InsertPanel.ForIsWidget
add
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
Constructor Details
-
AbsolutePanel
public AbsolutePanel()Creates an empty absolute panel. -
AbsolutePanel
Creates an AbsolutePanel with the given element. This is protected so that it can be used byRootPanel
or a subclass that wants to substitute another element. The element is presumed to be a <div>.- Parameters:
elem
- the element to be used for this panel
-
-
Method Details
-
add
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.
- 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
Panel.adopt(Widget)
to finalize the add as the very last step.
- Specified by:
add
in interfaceHasWidgets
- Specified by:
add
in interfaceInsertPanel
- Overrides:
add
in classPanel
- Parameters:
w
- the widget to be added- See Also:
-
add
Adds a widget to the panel at the specified position. Setting a position of(-1, -1)
will cause the child widget to be positioned statically.- Parameters:
w
- the widget to be addedleft
- the widget's left positiontop
- the widget's top position
-
add
Overloaded version for IsWidget.- See Also:
-
getWidgetLeft
Gets the position of the left outer border edge of the widget relative to the left outer border edge of the panel.- Parameters:
w
- the widget whose position is to be retrieved- Returns:
- the widget's left position
-
getWidgetTop
Gets the position of the top outer border edge of the widget relative to the top outer border edge of the panel.- Parameters:
w
- the widget whose position is to be retrieved- Returns:
- the widget's top position
-
insert
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 interfaceInsertPanel
- Parameters:
w
- the child widget to be insertedbeforeIndex
- the index before which it will be inserted
-
insert
Convenience overload to allowIsWidget
to be used directly.- Specified by:
insert
in interfaceInsertPanel.ForIsWidget
-
insert
Inserts a child widget at the specified position before the specified index. Setting a position of(-1, -1)
will cause the child widget to be positioned statically. If the widget is already a child of this panel, it will be moved to the specified index.- Parameters:
w
- the child widget to be insertedleft
- the widget's left positiontop
- the widget's top positionbeforeIndex
- the index before which it will be inserted- Throws:
IndexOutOfBoundsException
- ifbeforeIndex
is out of range
-
remove
OverridesComplexPanel.remove(Widget)
to change the removed Widget's element back to static positioning.This is done so that any positioning changes to the widget that were done by the panel are undone when the widget is disowned from the panel.- Specified by:
remove
in interfaceHasWidgets
- Overrides:
remove
in classComplexPanel
- Parameters:
w
- the widget to be removed- Returns:
true
if the child was present
-
setWidgetPosition
Sets the position of the specified child widget. Setting a position of(-1, -1)
will cause the child widget to be positioned statically.- Parameters:
w
- the child widget to be positionedleft
- the widget's left positiontop
- the widget's top position
-
setWidgetPositionImpl
-