/* * Copyright 2011 Daniel Kurka * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package com.googlecode.mgwt.ui.client.widget.panel.scroll.impl; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HasWidgets; import com.google.gwt.user.client.ui.IsWidget; import com.google.web.bindery.event.shared.HandlerRegistration; import com.googlecode.mgwt.collection.shared.LightArrayInt; import com.googlecode.mgwt.ui.client.widget.panel.scroll.BeforeScrollEndEvent; import com.googlecode.mgwt.ui.client.widget.panel.scroll.BeforeScrollMoveEvent; import com.googlecode.mgwt.ui.client.widget.panel.scroll.BeforeScrollStartEvent; import com.googlecode.mgwt.ui.client.widget.panel.scroll.ScrollAnimationEndEvent; import com.googlecode.mgwt.ui.client.widget.panel.scroll.ScrollAnimationMoveEvent; import com.googlecode.mgwt.ui.client.widget.panel.scroll.ScrollAnimationStartEvent; import com.googlecode.mgwt.ui.client.widget.panel.scroll.ScrollEndEvent; import com.googlecode.mgwt.ui.client.widget.panel.scroll.ScrollMoveEvent; import com.googlecode.mgwt.ui.client.widget.panel.scroll.ScrollRefreshEvent; import com.googlecode.mgwt.ui.client.widget.panel.scroll.ScrollStartEvent; import com.googlecode.mgwt.ui.client.widget.panel.scroll.ScrollTouchEndEvent; import com.googlecode.mgwt.ui.client.widget.panel.scroll.ScrollAnimationStartEvent.Handler; /** * ScrollPanelImpl abstracts different implementations for scrolling behaviour * * @author Daniel Kurka */ public abstract class ScrollPanelImpl extends Composite implements HasWidgets { /** * instruct the panel to use position absolute instead of translate3d * * on android devices input fields behave strange when used with translate3d * * take a look into the mgwt docs * * @param pos true to use absolute position default: translate3d */ public abstract void setUsePos(boolean pos); /** * Scroll to a given position in the specified time * * @param destX the new position x * @param destY the new position y * @param newDuration the duration */ public abstract void scrollTo(int destX, int destY, int newDuration); public abstract void scrollToPage(int pageX, int pageY, int time, boolean issueEvent); /** * Is scrolling enabled in x-axis * * @return true if scrolling is enabled */ public abstract boolean isScrollingEnabledX(); /** * enable scrolling in x-axis * * @param scrollingEnabledX true to enable scrolling */ public abstract void setScrollingEnabledX(boolean scrollingEnabledX); /** * Is scrolling enabled in y-axis * * @return true if scrolling is enabled */ public abstract boolean isScrollingEnabledY(); /** * enable scrolling in y-axis * * @param scrollingEnabledY a boolean. */ public abstract void setScrollingEnabledY(boolean scrollingEnabledY); /** * set the content of the scrollable area * * @param child the content of the scrollable area */ public abstract void setWidget(IsWidget child); /** * Recalculate dimensions for scrolling * * (needs to be called when the content of the childarea changes without setting a new child) */ public abstract void refresh(); public abstract void setOffSetY(int y); public abstract void setMaxScrollY(int y); public abstract int getMaxScrollY(); public abstract void setMinScrollY(int y); public abstract int getMinScrollY(); public abstract void scrollTo(int x, int y, int time, boolean relative); public abstract void scrollToPage(int pageX, int pageY, int time); public abstract void setBounce(boolean bounce); public abstract void setMomentum(boolean momentum); public abstract void setSnap(boolean snap); public abstract void setSnapThreshold(int threshold); public HandlerRegistration addBeforeScrollStartHandler(BeforeScrollStartEvent.Handler handler) { return addHandler(handler, BeforeScrollStartEvent.getTYPE()); } public HandlerRegistration addBeforeScrollMoveHandler(BeforeScrollMoveEvent.Handler handler) { return addHandler(handler, BeforeScrollMoveEvent.getTYPE()); } public HandlerRegistration addBeforeScrollEndHandler(BeforeScrollEndEvent.Handler handler) { return addHandler(handler, BeforeScrollEndEvent.getTYPE()); } public HandlerRegistration addScrollEndHandler(ScrollEndEvent.Handler handler) { return addHandler(handler, ScrollEndEvent.getTYPE()); } public HandlerRegistration addScrollStartHandler(ScrollStartEvent.Handler handler) { return addHandler(handler, ScrollStartEvent.getTYPE()); } public HandlerRegistration addScrollMoveHandler(ScrollMoveEvent.Handler handler) { return addHandler(handler, ScrollMoveEvent.getTYPE()); } public HandlerRegistration addScrollRefreshHandler(ScrollRefreshEvent.Handler handler) { return addHandler(handler, ScrollRefreshEvent.getTYPE()); } public HandlerRegistration addScrollTouchEndHandler(ScrollTouchEndEvent.Handler handler) { return addHandler(handler, ScrollTouchEndEvent.getTYPE()); } public HandlerRegistration addScrollAnimationStartHandler(Handler handler) { return addHandler(handler, ScrollAnimationStartEvent.getTYPE()); } public HandlerRegistration addScrollAnimationMoveHandler(ScrollAnimationMoveEvent.Handler handler) { return addHandler(handler, ScrollAnimationMoveEvent.getTYPE()); } public HandlerRegistration addScrollAnimationEndHandler(ScrollAnimationEndEvent.Handler handler) { return addHandler(handler, ScrollAnimationEndEvent.getTYPE()); } public abstract int getY(); public abstract int getX(); public abstract void setBounceFactor(double factor); public abstract void setShowScrollBarX(boolean show); public abstract void setShowScrollBarY(boolean show); public abstract void setShowHorizontalScrollBar(boolean show); public abstract void setShowVerticalScrollBar(boolean show); public abstract int getCurrentPageX(); public abstract int getCurrentPageY(); public abstract void setAutoHandleResize(boolean handle); public abstract void setOffSetMaxY(int height); public abstract void setSnapSelector(String selector); public abstract LightArrayInt getPagesY(); public abstract LightArrayInt getPagesX(); public abstract void setHideScrollBar(boolean hideScrollBar); public abstract void setScrollLock(boolean lock); }