/**
 * Copyright (c) 2015-present, Facebook, Inc.
 * All rights reserved.
 *
 * This source code is licensed under the BSD-style license found in the
 * LICENSE file in the root directory of this source tree. An additional grant
 * of patent rights can be found in the PATENTS file in the same directory.
 */

package com.facebook.react.touch;


/**
 * This interface should be implemented by all {@link ViewGroup} subviews that can be instantiating
 * by {@link NativeViewHierarchyManager}. It is used to configure onInterceptTouch event listener
 * which then is used to control touch event flow in cases in which they requested to be intercepted
 * by some parent view based on a JS gesture detector.
 */
public interface ReactInterceptingViewGroup {

  /**
   * A {@link ViewGroup} instance that implement this interface is responsible for storing the
   * listener passed as an argument and then calling
   * {@link OnInterceptTouchEventListener#onInterceptTouchEvent} from
   * {@link ViewGroup#onInterceptTouchEvent} and returning the result. If some custom handling of
   * this method apply for the view, it should be called after the listener returns and only in
   * a case when it returns false.
   *
   * @param listener A callback that {@link ViewGroup} should delegate calls for
   * {@link ViewGroup#onInterceptTouchEvent} to
   */
  public void setOnInterceptTouchEventListener(OnInterceptTouchEventListener listener);

}
