Home | History | Annotate | Download | only in shadows
      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