Class PopupPanel
- All Implemented Interfaces:
HasAttachHandlers
,HasCloseHandlers<PopupPanel>
,HasHandlers
,EventListener
,EventPreview
,AcceptsOneWidget
,HasAnimation
,HasOneWidget
,HasVisibility
,HasWidgets
,HasWidgets.ForIsWidget
,IsWidget
,SourcesPopupEvents
,Iterable<Widget>
- Direct Known Subclasses:
DecoratedPopupPanel
,LoggingPopup
A PopupPanel should not generally be added to other panels; rather, it should
be shown and hidden using the show()
and hide()
methods.
The width and height of the PopupPanel cannot be explicitly set; they are
determined by the PopupPanel's widget. Calls to setWidth(String)
and
setHeight(String)
will call these methods on the PopupPanel's
widget.
The PopupPanel can be optionally displayed with a "glass" element behind it,
which is commonly used to gray out the widgets behind it. It can be enabled
using setGlassEnabled(boolean)
. It has a default style name of
"gwt-PopupPanelGlass", which can be changed using
setGlassStyleName(String)
.
Example
public class PopupPanelExample implements EntryPoint { private static class MyPopup extends PopupPanel { public MyPopup() { // PopupPanel's constructor takes 'auto-hide' as its boolean parameter. // If this is set, the panel closes itself automatically when the user // clicks outside of it. super(true); // PopupPanel is a SimplePanel, so you have to set it's widget property to // whatever you want its contents to be. setWidget(new Label("Click outside of this popup to close it")); } } public void onModuleLoad() { Button b1 = new Button("Click me to show popup"); b1.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { // Instantiate the popup and show it. new MyPopup().show(); } }); RootPanel.get().add(b1); Button b2 = new Button("Click me to show popup partway across the screen"); b2.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { // Create the new popup. final MyPopup popup = new MyPopup(); // Position the popup 1/3rd of the way down and across the screen, and // show the popup. Since the position calculation is based on the // offsetWidth and offsetHeight of the popup, you have to use the // setPopupPositionAndShow(callback) method. The alternative would // be to call show(), calculate the left and top positions, and // call setPopupPosition(left, top). This would have the ugly side // effect of the popup jumping from its original position to its // new position. popup.setPopupPositionAndShow(new PopupPanel.PositionCallback() { public void setPosition(int offsetWidth, int offsetHeight) { int left = (Window.getClientWidth() - offsetWidth) / 3; int top = (Window.getClientHeight() - offsetHeight) / 3; popup.setPopupPosition(left, top); } }); } }); RootPanel.get().add(b2); } }
CSS Style Rules
- .gwt-PopupPanel
- the outside of the popup
- .gwt-PopupPanel .popupContent
- the wrapper around the content
- .gwt-PopupPanelGlass
- the glass background behind the popup
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic enum
The type of animation to use when opening the popup.static interface
A callback that is used to set the position of aPopupPanel
right before it is shown.(package private) static class
AnAnimation
used to enlarge the popup into view.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
-
Field Summary
Fields inherited from class com.google.gwt.user.client.ui.SimplePanel
widget
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
ConstructorDescriptionCreates an empty popup panel.PopupPanel
(boolean autoHide) Creates an empty popup panel, specifying its "auto-hide" property.PopupPanel
(boolean autoHide, boolean modal) Creates an empty popup panel, specifying its "auto-hide" and "modal" properties. -
Method Summary
Modifier and TypeMethodDescriptionvoid
addAutoHidePartner
(Element partner) Mouse events that occur within an autoHide partner will not hide a panel set to autoHide.addCloseHandler
(CloseHandler<PopupPanel> handler) Adds aCloseEvent
handler.void
addPopupListener
(PopupListener listener) Deprecated.void
center()
Centers the popup in the browser window and shows it.Get the type of animation to use when opening and closing the popup.protected Element
Override this method to specify that an element other than the root element be the container for the panel's child widget.protected Element
Get the glass element used by thisPopupPanel
.Gets the style name to be used on the glass element.int
Gets the panel's offset height in pixels.int
Gets the panel's offset width in pixels.int
Gets the popup's left position relative to the browser's client area.int
Gets the popup's top position relative to the browser's client area.protected Element
Template method that returns the element to which style names will be applied.getTitle()
Gets the title associated with this object.void
hide()
Hides the popup and detaches it from the page.void
hide
(boolean autoClosed) Hides the popup and detaches it from the page.boolean
Returns true if animations are enabled, false if not.boolean
Returnstrue
if the popup should be automatically hidden when the user clicks outside of it.boolean
Returnstrue
if the popup should be automatically hidden when the history token changes, such as when the user presses the browser's back button.boolean
Returnstrue
if a glass element will be displayed under thePopupPanel
.boolean
isModal()
Returnstrue
if keyboard or mouse events that do not target the PopupPanel or its children should be ignored.boolean
Returnstrue
if the popup should preview all native events, even if the event has already been consumed by another popup.boolean
Determines whether or not this popup is showing.boolean
Determines whether or not this popup is visible.(package private) void
We control size by setting our child widget's size.boolean
onEventPreview
(Event event) Deprecated.boolean
onKeyDownPreview
(char key, int modifiers) Deprecated.boolean
onKeyPressPreview
(char key, int modifiers) Deprecated.boolean
onKeyUpPreview
(char key, int modifiers) Deprecated.protected void
protected void
onUnload()
This method is called immediately before a widget will be detached from the browser's document.void
removeAutoHidePartner
(Element partner) Remove an autoHide partner.void
removePopupListener
(PopupListener listener) Deprecated.Use theHandlerRegistration.removeHandler()
method on the object returned byaddCloseHandler(com.google.gwt.event.logical.shared.CloseHandler<com.google.gwt.user.client.ui.PopupPanel>)
instead(package private) void
setAnimation
(PopupPanel.ResizeAnimation animation) Sets the animation used to animate this popup.void
setAnimationEnabled
(boolean enable) Enable or disable animations.void
Set the type of animation to use when opening and closing the popup.void
setAutoHideEnabled
(boolean autoHide) Enable or disable the autoHide feature.void
setAutoHideOnHistoryEventsEnabled
(boolean enabled) Enable or disable autoHide on history change events.void
setGlassEnabled
(boolean enabled) When enabled, the background will be blocked with a semi-transparent pane the next time it is shown.void
setGlassStyleName
(String glassStyleName) Sets the style name to be used on the glass element.void
Sets the height of the panel's child widget.void
setModal
(boolean modal) When the popup is modal, keyboard or mouse events that do not target the PopupPanel or its children will be ignored.void
setPopupPosition
(int left, int top) Sets the popup's position relative to the browser's client area.void
Sets the popup's position using aPopupPanel.PositionCallback
, and shows the popup.void
setPreviewingAllNativeEvents
(boolean previewAllNativeEvents) When enabled, the popup will preview all native events, even if another popup was opened after this one.void
Sets the title associated with this object.void
setVisible
(boolean visible) Sets whether this object is visible.void
Sets this panel's widget.void
Sets the width of the panel's child widget.void
show()
Shows the popup and attach it to the page.final void
showRelativeTo
(UIObject target) Normally, the popup is positioned directly below the relative target, with its left edge aligned with the left edge of the target.Methods inherited from class com.google.gwt.user.client.ui.SimplePanel
add, getWidget, iterator, remove, setWidget
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, 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, getStyleName, getStyleName, getStylePrimaryName, getStylePrimaryName, isVisible, onEnsureDebugId, removeStyleDependentName, removeStyleName, resolvePotentialElement, setElement, setElement, setPixelSize, setSize, setStyleDependentName, setStyleName, setStyleName, setStyleName, setStyleName, setStylePrimaryName, setStylePrimaryName, setVisible, 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.event.shared.HasHandlers
fireEvent
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
Constructor Details
-
PopupPanel
public PopupPanel()Creates an empty popup panel. A child widget must be added to it before it is shown. -
PopupPanel
public PopupPanel(boolean autoHide) Creates an empty popup panel, specifying its "auto-hide" property.- Parameters:
autoHide
-true
if the popup should be automatically hidden when the user clicks outside of it or the history token changes.
-
PopupPanel
public PopupPanel(boolean autoHide, boolean modal) Creates an empty popup panel, specifying its "auto-hide" and "modal" properties.- Parameters:
autoHide
-true
if the popup should be automatically hidden when the user clicks outside of it or the history token changes.modal
-true
if keyboard or mouse events that do not target the PopupPanel or its children should be ignored
-
-
Method Details
-
addAutoHidePartner
Mouse events that occur within an autoHide partner will not hide a panel set to autoHide.- Parameters:
partner
- the auto hide partner to add
-
addPopupListener
Deprecated.Description copied from interface:SourcesPopupEvents
Adds a listener interface to receive popup events.- Specified by:
addPopupListener
in interfaceSourcesPopupEvents
- Parameters:
listener
- the listener interface to add.
-
center
public void center()Centers the popup in the browser window and shows it. If the popup was already showing, then the popup is centered. -
getGlassStyleName
Gets the style name to be used on the glass element. By default, this is "gwt-PopupPanelGlass".- Returns:
- the glass element's style name
-
getOffsetHeight
public int getOffsetHeight()Gets the panel's offset height in pixels. Calls tosetHeight(String)
before the panel's child widget is set will not influence the offset height.- Overrides:
getOffsetHeight
in classUIObject
- Returns:
- the object's offset height
-
getOffsetWidth
public int getOffsetWidth()Gets the panel's offset width in pixels. Calls tosetWidth(String)
before the panel's child widget is set will not influence the offset width.- Overrides:
getOffsetWidth
in classUIObject
- Returns:
- the object's offset width
-
getPopupLeft
public int getPopupLeft()Gets the popup's left position relative to the browser's client area.- Returns:
- the popup's left position
-
getPopupTop
public int getPopupTop()Gets the popup's top position relative to the browser's client area.- Returns:
- the popup's top position
-
getTitle
Description copied from class:UIObject
Gets the title associated with this object. The title is the 'tool-tip' displayed to users when they hover over the object. -
hide
public void hide()Hides the popup and detaches it from the page. This has no effect if it is not currently showing. -
hide
public void hide(boolean autoClosed) Hides the popup and detaches it from the page. This has no effect if it is not currently showing.- Parameters:
autoClosed
- the value that will be passed toCloseHandler.onClose(CloseEvent)
when the popup is closed
-
isAnimationEnabled
public boolean isAnimationEnabled()Description copied from interface:HasAnimation
Returns true if animations are enabled, false if not.- Specified by:
isAnimationEnabled
in interfaceHasAnimation
-
isAutoHideEnabled
public boolean isAutoHideEnabled()Returnstrue
if the popup should be automatically hidden when the user clicks outside of it.- Returns:
- true if autoHide is enabled, false if disabled
-
isAutoHideOnHistoryEventsEnabled
public boolean isAutoHideOnHistoryEventsEnabled()Returnstrue
if the popup should be automatically hidden when the history token changes, such as when the user presses the browser's back button.- Returns:
- true if enabled, false if disabled
-
isGlassEnabled
public boolean isGlassEnabled()Returnstrue
if a glass element will be displayed under thePopupPanel
.- Returns:
- true if enabled
-
isModal
public boolean isModal()Returnstrue
if keyboard or mouse events that do not target the PopupPanel or its children should be ignored.- Returns:
- true if popup is modal, false if not
-
isPreviewingAllNativeEvents
public boolean isPreviewingAllNativeEvents()Returnstrue
if the popup should preview all native events, even if the event has already been consumed by another popup.- Returns:
- true if previewAllNativeEvents is enabled, false if disabled
-
isShowing
public boolean isShowing()Determines whether or not this popup is showing.- Returns:
true
if the popup is showing- See Also:
-
isVisible
public boolean isVisible()Determines whether or not this popup is visible. Note that this just checks thevisibility
style attribute, which is set in thesetVisible(boolean)
method. If you want to know if the popup is attached to the page, useisShowing()
instead.- Specified by:
isVisible
in interfaceHasVisibility
- Overrides:
isVisible
in classUIObject
- Returns:
true
if the object is visible- See Also:
-
onEventPreview
Deprecated.Description copied from interface:EventPreview
Called when a browser event occurs and this event preview is on top of the preview stack.- Specified by:
onEventPreview
in interfaceEventPreview
- Parameters:
event
- the browser event- Returns:
false
to cancel the event- See Also:
-
onKeyDownPreview
Deprecated.Popups get an opportunity to preview keyboard events before they are passed to a widget contained by the Popup.- Parameters:
key
- the key code of the depressed keymodifiers
- keyboard modifiers, as specified inKeyCodes
.- Returns:
false
to suppress the event
-
onKeyPressPreview
Deprecated.Popups get an opportunity to preview keyboard events before they are passed to a widget contained by the Popup.- Parameters:
key
- the unicode character pressedmodifiers
- keyboard modifiers, as specified inKeyCodes
.- Returns:
false
to suppress the event
-
onKeyUpPreview
Deprecated.Popups get an opportunity to preview keyboard events before they are passed to a widget contained by the Popup.- Parameters:
key
- the key code of the released keymodifiers
- keyboard modifiers, as specified inKeyCodes
.- Returns:
false
to suppress the event
-
removeAutoHidePartner
Remove an autoHide partner.- Parameters:
partner
- the auto hide partner to remove
-
removePopupListener
Deprecated.Use theHandlerRegistration.removeHandler()
method on the object returned byaddCloseHandler(com.google.gwt.event.logical.shared.CloseHandler<com.google.gwt.user.client.ui.PopupPanel>)
insteadDescription copied from interface:SourcesPopupEvents
Removes a previously added popup listener.- Specified by:
removePopupListener
in interfaceSourcesPopupEvents
- Parameters:
listener
- the listener interface to remove.
-
setAnimationEnabled
public void setAnimationEnabled(boolean enable) Description copied from interface:HasAnimation
Enable or disable animations.- Specified by:
setAnimationEnabled
in interfaceHasAnimation
- Parameters:
enable
- true to enable, false to disable
-
setAutoHideEnabled
public void setAutoHideEnabled(boolean autoHide) Enable or disable the autoHide feature. When enabled, the popup will be automatically hidden when the user clicks outside of it.- Parameters:
autoHide
- true to enable autoHide, false to disable
-
setAutoHideOnHistoryEventsEnabled
public void setAutoHideOnHistoryEventsEnabled(boolean enabled) Enable or disable autoHide on history change events. When enabled, the popup will be automatically hidden when the history token changes, such as when the user presses the browser's back button. Disabled by default.- Parameters:
enabled
- true to enable, false to disable
-
setGlassEnabled
public void setGlassEnabled(boolean enabled) When enabled, the background will be blocked with a semi-transparent pane the next time it is shown. If the PopupPanel is already visible, the glass will not be displayed until it is hidden and shown again.- Parameters:
enabled
- true to enable, false to disable
-
setGlassStyleName
Sets the style name to be used on the glass element. By default, this is "gwt-PopupPanelGlass".- Parameters:
glassStyleName
- the glass element's style name
-
setHeight
Sets the height of the panel's child widget. If the panel's child widget has not been set, the height passed in will be cached and used to set the height immediately after the child widget is set.Note that subclasses may have a different behavior. A subclass may decide not to change the height of the child widget. It may instead decide to change the height of an internal panel widget, which contains the child widget.
-
setModal
public void setModal(boolean modal) When the popup is modal, keyboard or mouse events that do not target the PopupPanel or its children will be ignored.- Parameters:
modal
- true to make the popup modal
-
setPopupPosition
public void setPopupPosition(int left, int top) Sets the popup's position relative to the browser's client area. The popup's position may be set before callingshow()
.- Parameters:
left
- the left position, in pixelstop
- the top position, in pixels
-
setPopupPositionAndShow
Sets the popup's position using aPopupPanel.PositionCallback
, and shows the popup. The callback allows positioning to be performed based on the offsetWidth and offsetHeight of the popup, which are normally not available until the popup is showing. By positioning the popup before it is shown, the popup will not jump from its original position to the new position.- Parameters:
callback
- the callback to set the position of the popup- See Also:
-
setPreviewingAllNativeEvents
public void setPreviewingAllNativeEvents(boolean previewAllNativeEvents) When enabled, the popup will preview all native events, even if another popup was opened after this one.
If autoHide is enabled, enabling this feature will cause the popup to autoHide even if another non-modal popup was shown after it. If this feature is disabled, the popup will only autoHide if it was the last popup opened.
- Parameters:
previewAllNativeEvents
- true to enable, false to disable
-
setTitle
Description copied from class:UIObject
Sets the title associated with this object. The title is the 'tool-tip' displayed to users when they hover over the object. -
setVisible
public void setVisible(boolean visible) Sets whether this object is visible. This method just sets thevisibility
style attribute. You need to callshow()
to actually attached/detach thePopupPanel
to the page.- Specified by:
setVisible
in interfaceHasVisibility
- Overrides:
setVisible
in classUIObject
- Parameters:
visible
-true
to show the object,false
to hide it- See Also:
-
setWidget
Description copied from class:SimplePanel
Sets this panel's widget. Any existing child widget will be removed.- Specified by:
setWidget
in interfaceHasOneWidget
- Overrides:
setWidget
in classSimplePanel
- Parameters:
w
- the panel's new widget, ornull
to clear the panel
-
setWidth
Sets the width of the panel's child widget. If the panel's child widget has not been set, the width passed in will be cached and used to set the width immediately after the child widget is set.Note that subclasses may have a different behavior. A subclass may decide not to change the width of the child widget. It may instead decide to change the width of an internal panel widget, which contains the child widget.
-
show
public void show()Shows the popup and attach it to the page. It must have a child widget before this method is called. -
showRelativeTo
Normally, the popup is positioned directly below the relative target, with its left edge aligned with the left edge of the target. Depending on the width and height of the popup and the distance from the target to the bottom and right edges of the window, the popup may be displayed directly above the target, and/or its right edge may be aligned with the right edge of the target.- Parameters:
target
- the target to show the popup below
-
getContainerElement
Description copied from class:SimplePanel
Override this method to specify that an element other than the root element be the container for the panel's child widget. This can be useful when you want to create a simple panel that decorates its contents. Note that this method continues to return theElement
class defined in theUser
module to maintain backwards compatibility.- Overrides:
getContainerElement
in classSimplePanel
- Returns:
- the element to be used as the panel's container
-
getGlassElement
Get the glass element used by thisPopupPanel
. The element is not created until it is enabled viasetGlassEnabled(boolean)
.- Returns:
- the glass element, or null if not created
-
getStyleElement
Description copied from class:UIObject
Template method that returns the element to which style names will be applied. By default it returns the root element, but this method may be overridden to apply styles to a child element.- Overrides:
getStyleElement
in classUIObject
- Returns:
- the element to which style names will be applied
-
onPreviewNativeEvent
-
onUnload
protected void onUnload()Description copied from class:Widget
This method is called immediately before a widget will be detached from the browser's document. -
maybeUpdateSize
void maybeUpdateSize()We control size by setting our child widget's size. However, if we don't currently have a child, we record the size the user wanted so that when we do get a child, we can set it correctly. Until size is explicitly cleared, any child put into the popup will be given that size. -
setAnimation
Sets the animation used to animate this popup. Used by gwt-incubator to allow DropDownPanel to override the default popup animation. Not protected because the exact API may change in gwt 1.6.- Parameters:
animation
- the animation to use for this popup
-
setAnimationType
Set the type of animation to use when opening and closing the popup.- Parameters:
type
- the type of animation to use- See Also:
-
getAnimationType
Get the type of animation to use when opening and closing the popup.- Returns:
- the type of animation used
- See Also:
-
addCloseHandler(com.google.gwt.event.logical.shared.CloseHandler<com.google.gwt.user.client.ui.PopupPanel>)
instead