/*
 *
 *  * Copyright (C) 2015 Ted xiong-wei@hotmail.com
 *  *
 *  * 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.ted.coder.sdlayout.content;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.ViewParent;
import android.widget.ScrollView;

import com.ted.coder.sdlayout.ScrollDownLayout;


public class ContentScrollView extends ScrollView {

  public interface OnScrollChangedListener {
    void onScrollChanged(int l, int t, int oldl, int oldt);
  }

  private OnScrollChangedListener listener;

  public ContentScrollView(Context context) {
    super(context);
  }

  public ContentScrollView(Context context, AttributeSet attrs) {
    super(context, attrs);
  }

  public ContentScrollView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
  }

  public void setOnScrollChangeListener(OnScrollChangedListener listener) {
    this.listener = listener;
  }

  @Override
  protected void onScrollChanged(int l, int t, int oldl, int oldt) {
    super.onScrollChanged(l, t, oldl, oldt);
    listener.onScrollChanged(l, t, oldl, oldt);
  }

  @Override
  protected void onAttachedToWindow() {
    super.onAttachedToWindow();
    ViewParent parent = this.getParent();
    while (parent != null) {
      if (parent instanceof ScrollDownLayout) {
        ((ScrollDownLayout) parent).setAssociatedScrollView(this);
        break;
      }
      parent = parent.getParent();
    }
  }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        ViewParent parent = this.getParent();
        if (parent instanceof ScrollDownLayout) {
            if(((ScrollDownLayout) parent).getCurrentStatus() == ScrollDownLayout.Status.OPENED)
                return false;
        }
        return super.onTouchEvent(ev);
    }
}
