package com.gettingmobile.android.widget; import android.content.Context; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.webkit.WebViewClassic.TitleBarDelegate; final class JellyBeanWebViewWithTitle extends WebViewWithTitle implements TitleBarDelegate { private static final String LOG_TAG = "goodnews.JellyBeanWebViewWithTitle"; public JellyBeanWebViewWithTitle(Context context) { super(context); } public JellyBeanWebViewWithTitle(Context context, AttributeSet attrs) { super(context, attrs); } public JellyBeanWebViewWithTitle(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } private void scrollToTop() { scrollTo(0, 0); } @Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { Log.d(LOG_TAG, "onScrollChanged(" + l + ", " + t + ", " + oldl + ", " + oldt + ")"); if (mTitleBar != null && oldt == 0 && t == mTitleBar.getHeight()) { Log.d(LOG_TAG, "automatic title bar scrolling? Calling scrollToTop"); scrollToTop(); } super.onScrollChanged(l, t, oldl, oldt); } /** * <i>Makes sure that the title bar view gets touch events</i> * <p> * {@inheritDoc} */ @Override public boolean dispatchTouchEvent(MotionEvent event) { if(mTitleBar != null) { final int sy = getScrollY(); final int visTitleHeight = getVisibleTitleHeightCompat(); final float x = event.getX(); float y = event.getY(); switch(event.getActionMasked()) { case MotionEvent.ACTION_DOWN: if(y <= visTitleHeight) { mTouchInTitleBar = true; } break; case MotionEvent.ACTION_MOVE: mTouchMove = true; break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: mTouchMove = false; break; default: } if(mTouchInTitleBar) { y += sy; event.setLocation(x, y); return mTitleBar.dispatchTouchEvent(event); } } return super.dispatchTouchEvent(event); } @Override public int getTitleHeight() { final int titleHeight = mTitleBar != null ? mTitleBar.getHeight() : 0; Log.i("goodnews.JellyBeanWebViewWithTitle", "titleHeight = " + titleHeight); return titleHeight; } @Override public void onSetEmbeddedTitleBar(View title) { } }