Package com.extjs.gxt.ui.client.widget

Source Code of com.extjs.gxt.ui.client.widget.ScrollContainer

/*
* Ext GWT 2.2.4 - Ext for GWT
* Copyright(c) 2007-2010, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/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 <code>Container</code> that scrolls its contents. The container is created
* with scrolling disabled.
*
* <dl>
* <dt><b>Events:</b></dt>
* <dd><b>Scroll</b> : ComponentEvent(component)<br>
* <div>Fires when the container is scrolled.</div>
* <ul>
* <li>component : this</li>
* </ul>
* </dd>
* </dl>
*
* <dl>
* <dt>Inherited Events:</dt>
* <dd>Container BeforeAdd</dd>
* <dd>Container Add</dd>
* <dd>Container BeforeRemove</dd>
* <dd>Container Remove</dd>
* <dd>BoxComponent Move</dd>
* <dd>BoxComponent Resize</dd>
* <dd>Component Enable</dd>
* <dd>Component Disable</dd>
* <dd>Component BeforeHide</dd>
* <dd>Component Hide</dd>
* <dd>Component BeforeShow</dd>
* <dd>Component Show</dd>
* <dd>Component Attach</dd>
* <dd>Component Detach</dd>
* <dd>Component BeforeRender</dd>
* <dd>Component Render</dd>
* <dd>Component BrowserEvent</dd>
* <dd>Component BeforeStateRestore</dd>
* <dd>Component StateRestore</dd>
* <dd>Component BeforeStateSave</dd>
* <dd>Component SaveState</dd>
* </dl>
*/
public class ScrollContainer<T extends Component> extends Container<T> {

  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();
  }

}
TOP

Related Classes of com.extjs.gxt.ui.client.widget.ScrollContainer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.