1 package org.robolectric.shadows; 2 3 import static android.view.GestureDetector.OnDoubleTapListener; 4 import static org.robolectric.shadow.api.Shadow.directlyOn; 5 import static org.robolectric.util.ReflectionHelpers.ClassParameter.from; 6 7 import android.content.Context; 8 import android.os.Handler; 9 import android.view.GestureDetector; 10 import android.view.MotionEvent; 11 import org.robolectric.annotation.Implementation; 12 import org.robolectric.annotation.Implements; 13 import org.robolectric.annotation.RealObject; 14 import org.robolectric.shadow.api.Shadow; 15 16 @SuppressWarnings({"UnusedDeclaration"}) 17 @Implements(GestureDetector.class) 18 public class ShadowGestureDetector { 19 @RealObject 20 private GestureDetector realObject; 21 22 private static GestureDetector lastActiveGestureDetector; 23 24 private MotionEvent onTouchEventMotionEvent; 25 private GestureDetector.OnGestureListener listener; 26 private OnDoubleTapListener onDoubleTapListener; 27 28 @Implementation 29 public void __constructor__( 30 Context context, GestureDetector.OnGestureListener listener, Handler handler) { 31 Shadow.invokeConstructor(GestureDetector.class, realObject, 32 from(Context.class, context), 33 from(GestureDetector.OnGestureListener.class, listener), 34 from(Handler.class, handler)); 35 this.listener = listener; 36 } 37 38 @Implementation 39 public boolean onTouchEvent(MotionEvent ev) { 40 lastActiveGestureDetector = realObject; 41 onTouchEventMotionEvent = ev; 42 43 return directlyOn(realObject, GestureDetector.class).onTouchEvent(ev); 44 } 45 46 @Implementation 47 public void setOnDoubleTapListener(OnDoubleTapListener onDoubleTapListener) { 48 directlyOn(realObject, GestureDetector.class).setOnDoubleTapListener(onDoubleTapListener); 49 this.onDoubleTapListener = onDoubleTapListener; 50 } 51 52 public MotionEvent getOnTouchEventMotionEvent() { 53 return onTouchEventMotionEvent; 54 } 55 56 public void reset() { 57 onTouchEventMotionEvent = null; 58 } 59 60 public GestureDetector.OnGestureListener getListener() { 61 return listener; 62 } 63 64 public static GestureDetector getLastActiveDetector() { 65 return lastActiveGestureDetector; 66 } 67 68 public OnDoubleTapListener getOnDoubleTapListener() { 69 return onDoubleTapListener; 70 } 71 } 72