All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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