GWT 2.7.0

com.google.gwt.user.client.ui
Class CustomScrollPanel

java.lang.Object
  extended by com.google.gwt.user.client.ui.UIObject
      extended by com.google.gwt.user.client.ui.Widget
          extended by com.google.gwt.user.client.ui.Panel
              extended by com.google.gwt.user.client.ui.SimplePanel
                  extended by com.google.gwt.user.client.ui.ScrollPanel
                      extended by 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 the ScrollPanel 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 the padding-top and padding-bottom of the content to shift the content out from under the scrollbars.

NOTE: Unlike ScrollPanel, which implements RequiresResize but doesn't really require it, CustomScrollPanel actually does require resize and should only be added to a panel that implements ProvidesResize, such as most layout panels and ResizeLayoutPanel.


Nested Class Summary
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
CustomScrollPanel()
          Creates an empty CustomScrollPanel.
CustomScrollPanel(CustomScrollPanel.Resources resources)
           
CustomScrollPanel(Widget child)
          Creates a CustomScrollPanel with the specified child widget.
 
Method Summary
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 call Widget.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 call Widget.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 the HorizontalScrollbar, if one exists.
 void removeVerticalScrollbar()
          Remove the VerticalScrollbar, 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.Panel
add, adopt, clear, 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, 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
 
Methods inherited from interface com.google.gwt.user.client.ui.IsWidget
asWidget
 

Constructor Detail

CustomScrollPanel

public CustomScrollPanel()
Creates an empty CustomScrollPanel.


CustomScrollPanel

public CustomScrollPanel(CustomScrollPanel.Resources resources)

CustomScrollPanel

public CustomScrollPanel(Widget child)
Creates a CustomScrollPanel 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 interface EventListener
Overrides:
onBrowserEvent in class Widget
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 interface RequiresResize
Overrides:
onResize in class ScrollPanel

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.

  1. Validate: Make sure this Panel is actually the parent of the child Widget; return false if it is not.
  2. Orphan: Call Panel.orphan(Widget) first while the child Widget is still attached.
  3. 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.
  4. 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 interface HasWidgets
Overrides:
remove in class SimplePanel
Parameters:
w - the widget to be removed
Returns:
true if the child was present

removeHorizontalScrollbar

public void removeHorizontalScrollbar()
Remove the HorizontalScrollbar, if one exists.


removeVerticalScrollbar

public void removeVerticalScrollbar()
Remove the VerticalScrollbar, 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 class ScrollPanel
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 it
height - 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 it
width - 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 interface HasOneWidget
Overrides:
setWidget in class SimplePanel
Parameters:
w - the panel's new widget, or null 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 call Widget.onAttach() for each of its child widgets.

Overrides:
doAttachChildren in class Panel
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 call Widget.onDetach() for each of its child widgets.

Overrides:
doDetachChildren in class Panel
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 use Widget.addAttachHandler(com.google.gwt.event.logical.shared.AttachEvent.Handler).

It is strongly recommended that you override Widget.onLoad() or Widget.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 class ScrollPanel
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 use Widget.addAttachHandler(com.google.gwt.event.logical.shared.AttachEvent.Handler).

It is strongly recommended that you override Widget.onUnload() or Widget.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 class ScrollPanel
See Also:
Widget.onUnload(), Widget.doDetachChildren()

onLoad

protected void onLoad()
Description copied from class: Widget
This method is called immediately after a widget becomes attached to the browser's document.

Overrides:
onLoad in class Widget

GWT 2.7.0