Class CustomScrollPanel
- java.lang.Object
-
- com.google.gwt.user.client.ui.UIObject
-
- com.google.gwt.user.client.ui.Widget
-
- com.google.gwt.user.client.ui.Panel
-
- com.google.gwt.user.client.ui.SimplePanel
-
- com.google.gwt.user.client.ui.ScrollPanel
-
- com.google.gwt.user.client.ui.CustomScrollPanel
-
- All Implemented Interfaces:
HasScrollHandlers
,HasAttachHandlers
,HasHandlers
,EventListener
,AcceptsOneWidget
,HasHorizontalScrolling
,HasOneWidget
,HasScrolling
,HasVerticalScrolling
,HasVisibility
,HasWidgets
,HasWidgets.ForIsWidget
,IsWidget
,ProvidesResize
,RequiresResize
,SourcesScrollEvents
,java.lang.Iterable<Widget>
public class CustomScrollPanel extends ScrollPanel
A custom version of theScrollPanel
that allows user provided scrollbars.The postion of scrollbars in a
CustomScrollPanel
differs from that of a native scrollable element. In a native element, scrollbars appear adjacent to the content, shrinking the content client height and width when they appear.CustomScrollPanel
instead overlays scrollbars on top of the content, so the content does not change size when scrollbars appear. If the scrollbars obscures the content, you can set thepadding-top
andpadding-bottom
of the content to shift the content out from under the scrollbars.NOTE: Unlike
ScrollPanel
, which implementsRequiresResize
but doesn't really require it,CustomScrollPanel
actually does require resize and should only be added to a panel that implementsProvidesResize
, such as most layout panels andResizeLayoutPanel
.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
CustomScrollPanel.Resources
A ClientBundle of resources used by this widget.static interface
CustomScrollPanel.Style
Styles used by this widget.-
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
Constructors Constructor Description CustomScrollPanel()
Creates an emptyCustomScrollPanel
.CustomScrollPanel(CustomScrollPanel.Resources resources)
CustomScrollPanel(Widget child)
Creates aCustomScrollPanel
with the specified child widget.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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 callWidget.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 callWidget.onDetach()
for each of its child widgets.HorizontalScrollbar
getHorizontalScrollbar()
Get the scrollbar used for horizontal scrolling.VerticalScrollbar
getVerticalScrollbar()
Get the scrollbar used for vertical scrolling.protected void
onAttach()
This method is called when a widget is attached to the browser's document.void
onBrowserEvent(Event event)
Fired whenever a browser event is received.protected void
onDetach()
This method is called when a widget is detached from the browser's document.protected void
onLoad()
This method is called immediately after a widget becomes attached to the browser's document.void
onResize()
This method must be called whenever the implementor's size has been modified.boolean
remove(Widget w)
Removes a child widget.void
removeHorizontalScrollbar()
Remove theHorizontalScrollbar
, if one exists.void
removeVerticalScrollbar()
Remove theVerticalScrollbar
, if one exists.void
setAlwaysShowScrollBars(boolean alwaysShow)
Sets whether this panel always shows its scroll bars, or only when necessary.void
setHorizontalScrollbar(HorizontalScrollbar scrollbar, int height)
Set the scrollbar used for horizontal scrolling.void
setVerticalScrollbar(VerticalScrollbar scrollbar, int width)
Set the scrollbar used for vertical scrolling.void
setWidget(Widget w)
Sets this panel's widget.-
Methods inherited from class com.google.gwt.user.client.ui.ScrollPanel
addScrollHandler, addScrollListener, ensureVisible, getContainerElement, getHorizontalScrollPosition, getMaximumHorizontalScrollPosition, getMaximumVerticalScrollPosition, getMinimumHorizontalScrollPosition, getMinimumVerticalScrollPosition, getScrollableElement, getScrollPosition, getVerticalScrollPosition, isTouchScrollingDisabled, removeScrollListener, scrollToBottom, scrollToLeft, scrollToRight, scrollToTop, setHeight, setHorizontalScrollPosition, setScrollPosition, setSize, setTouchScrollingDisabled, setVerticalScrollPosition, setWidth
-
Methods inherited from class com.google.gwt.user.client.ui.SimplePanel
add, getWidget, iterator, setWidget
-
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, 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, setPixelSize, setStyleDependentName, setStyleName, setStyleName, setStyleName, setStyleName, setStylePrimaryName, setStylePrimaryName, setTitle, setVisible, 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
-
-
-
-
Constructor Detail
-
CustomScrollPanel
public CustomScrollPanel()
Creates an emptyCustomScrollPanel
.
-
CustomScrollPanel
public CustomScrollPanel(CustomScrollPanel.Resources resources)
-
CustomScrollPanel
public CustomScrollPanel(Widget child)
Creates aCustomScrollPanel
with the specified child widget.- Parameters:
child
- the widget to be wrapped by the scroll panel
-
-
Method Detail
-
getHorizontalScrollbar
public HorizontalScrollbar getHorizontalScrollbar()
Get the scrollbar used for horizontal scrolling.- Returns:
- the horizontal scrollbar, or null if none specified
-
getVerticalScrollbar
public VerticalScrollbar getVerticalScrollbar()
Get the scrollbar used for vertical scrolling.- Returns:
- the vertical scrollbar, or null if none specified
-
onBrowserEvent
public void onBrowserEvent(Event event)
Description copied from interface:EventListener
Fired whenever a browser event is received.- Specified by:
onBrowserEvent
in interfaceEventListener
- Overrides:
onBrowserEvent
in classWidget
- Parameters:
event
- the event received
-
onResize
public void onResize()
Description copied from interface:RequiresResize
This method must be called whenever the implementor's size has been modified.- Specified by:
onResize
in interfaceRequiresResize
- Overrides:
onResize
in classScrollPanel
-
remove
public boolean remove(Widget w)
Description copied from class:Panel
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
Panel.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
.
- Specified by:
remove
in interfaceHasWidgets
- Overrides:
remove
in classSimplePanel
- Parameters:
w
- the widget to be removed- Returns:
true
if the child was present
- Validate: Make sure this Panel is actually the parent of the
child Widget; return
-
removeHorizontalScrollbar
public void removeHorizontalScrollbar()
Remove theHorizontalScrollbar
, if one exists.
-
removeVerticalScrollbar
public void removeVerticalScrollbar()
Remove theVerticalScrollbar
, if one exists.
-
setAlwaysShowScrollBars
public void setAlwaysShowScrollBars(boolean alwaysShow)
Description copied from class:ScrollPanel
Sets whether this panel always shows its scroll bars, or only when necessary.- Overrides:
setAlwaysShowScrollBars
in classScrollPanel
- Parameters:
alwaysShow
-true
to show scroll bars at all times
-
setHorizontalScrollbar
public void setHorizontalScrollbar(HorizontalScrollbar scrollbar, int height)
Set the scrollbar used for horizontal scrolling.- Parameters:
scrollbar
- the scrollbar, or null to clear itheight
- the height of the scrollbar in pixels
-
setVerticalScrollbar
public void setVerticalScrollbar(VerticalScrollbar scrollbar, int width)
Set the scrollbar used for vertical scrolling.- Parameters:
scrollbar
- the scrollbar, or null to clear itwidth
- the width of the scrollbar in pixels
-
setWidget
public void setWidget(Widget w)
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
-
doAttachChildren
protected void doAttachChildren()
Description copied from class:Widget
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 callWidget.onAttach()
for each of its child widgets.- Overrides:
doAttachChildren
in classPanel
- See Also:
Widget.onAttach()
-
doDetachChildren
protected void doDetachChildren()
Description copied from class:Widget
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 callWidget.onDetach()
for each of its child widgets.- Overrides:
doDetachChildren
in classPanel
- See Also:
Widget.onDetach()
-
onAttach
protected void onAttach()
Description copied from class:Widget
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
Widget.onLoad()
method or useWidget.addAttachHandler(com.google.gwt.event.logical.shared.AttachEvent.Handler)
.It is strongly recommended that you override
Widget.onLoad()
orWidget.doAttachChildren()
instead of this method to avoid inconsistencies between logical and physical attachment states.Subclasses that override this method must call
super.onAttach()
to ensure that the Widget has been attached to its underlying Element.- Overrides:
onAttach
in classScrollPanel
- See Also:
Widget.onLoad()
,Widget.doAttachChildren()
-
onDetach
protected void onDetach()
Description copied from class:Widget
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
Widget.onUnload()
method or useWidget.addAttachHandler(com.google.gwt.event.logical.shared.AttachEvent.Handler)
.It is strongly recommended that you override
Widget.onUnload()
orWidget.doDetachChildren()
instead of this method to avoid inconsistencies between logical and physical attachment states.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.- Overrides:
onDetach
in classScrollPanel
- See Also:
Widget.onUnload()
,Widget.doDetachChildren()
-
-