![JAR search and dependency download from the Maven repository](/logo.png)
com.extjs.gxt.ui.client.widget.ScrollContainer Maven / Gradle / Ivy
/*
* Sencha GXT 2.3.1a - Sencha for GWT
* Copyright(c) 2007-2013, Sencha, Inc.
* [email protected]
*
* http://www.sencha.com/products/gxt/license/
*/
package com.extjs.gxt.ui.client.widget;
import com.extjs.gxt.ui.client.GXT;
import com.extjs.gxt.ui.client.Style;
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.ScrollListener;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.Widget;
/**
* A Container
that scrolls its contents. The container is created
* with scrolling disabled.
*
*
* - Events:
* - Scroll : ComponentEvent(component)
* Fires when the container is scrolled.
*
* - component : this
*
*
*
*
*
* - Inherited Events:
* - Container BeforeAdd
* - Container Add
* - Container BeforeRemove
* - Container Remove
* - BoxComponent Move
* - BoxComponent Resize
* - Component Enable
* - Component Disable
* - Component BeforeHide
* - Component Hide
* - Component BeforeShow
* - Component Show
* - Component Attach
* - Component Detach
* - Component BeforeRender
* - Component Render
* - Component BrowserEvent
* - Component BeforeStateRestore
* - Component StateRestore
* - Component BeforeStateSave
* - Component SaveState
*
*/
public class ScrollContainer extends Container {
private Scroll scrollMode = Scroll.NONE;
private int scrollLeft = Style.DEFAULT;
private int scrollTop = Style.DEFAULT;
/**
* Adds a listener to receive scroll events.
*
* @param listener the listener to be added
*/
public void addScrollListener(ScrollListener listener) {
addListener(Events.Scroll, listener);
}
/**
* Returns the horizontal scroll position.
*
* @return the horizontal scroll position
*/
public int getHScrollPosition() {
if (rendered) {
return getLayoutTarget().getScrollLeft();
} else {
return scrollLeft != Style.DEFAULT ? scrollLeft : 0;
}
}
/**
* Returns the scroll model.
*
* @return the scroll mode
*/
public Scroll getScrollMode() {
return scrollMode;
}
/**
* Returns the vertical scroll position.
*
* @return the vertical scroll position
*/
public int getVScrollPosition() {
if (rendered) {
return getLayoutTarget().getScrollTop();
} else {
return scrollTop != Style.DEFAULT ? scrollTop : 0;
}
}
public void onComponentEvent(ComponentEvent ce) {
super.onComponentEvent(ce);
if (ce.getEventTypeInt() == Event.ONSCROLL) {
fireEvent(Events.Scroll, new ComponentEvent(this));
}
}
/**
* Removes a previously added listener.
*
* @param listener the listener to be removed
*/
public void removeScrollListener(ScrollListener listener) {
removeListener(Events.Scroll, listener);
}
/**
* Scroll the child into view.
*
* @param child the child widget
*/
public void scrollIntoView(Widget child) {
fly(child.getElement()).scrollIntoView(getLayoutTarget().dom, true);
}
/**
* Sets the horizontal scroll position.
*
* @param position the new horizontal scroll position
*/
public void setHScrollPosition(int position) {
scrollLeft = position;
if (rendered) {
getLayoutTarget().setScrollLeft(position);
}
}
/**
* Sets the container's scroll mode.
*
* @param scroll the scroll mode
*/
public void setScrollMode(Scroll scroll) {
this.scrollMode = scroll;
if (rendered) {
switch (scroll) {
case AUTO:
case ALWAYS:
case NONE:
getLayoutTarget().setStyleAttribute("overflowX", scrollMode.value().toLowerCase());
getLayoutTarget().setStyleAttribute("overflowY", scrollMode.value().toLowerCase());
break;
case AUTOX:
getLayoutTarget().setStyleAttribute("overflowX", scrollMode.value().toLowerCase());
getLayoutTarget().setStyleAttribute("overflowY", "hidden");
break;
case AUTOY:
getLayoutTarget().setStyleAttribute("overflowY", scrollMode.value().toLowerCase());
getLayoutTarget().setStyleAttribute("overflowX", "hidden");
break;
}
if ((GXT.isIE6 || GXT.isIE7) && GXT.isStrict && scrollMode != Scroll.NONE) {
getLayoutTarget().makePositionable();
}
}
}
/**
* Sets the vertical scroll position.
*
* @param position the new horizontal scroll position, in pixels
*/
public void setVScrollPosition(int position) {
scrollTop = position;
if (rendered) {
getLayoutTarget().setScrollTop(position);
}
}
protected void afterRender() {
if (scrollLeft != Style.DEFAULT) {
setHScrollPosition(scrollLeft);
}
if (scrollTop != Style.DEFAULT) {
setVScrollPosition(scrollTop);
}
if (scrollMode != Scroll.NONE) {
setScrollMode(scrollMode);
}
getLayoutTarget().addEventsSunk(Event.ONSCROLL);
super.afterRender();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy