/*
* This file is part of the Remote Sensor Actuator Interface (ReSAI).
*
* Copyright(c) Andreas Kipp, Frederic Siepmann
* http://opensource.cit-ec.de/projects/resai
*
* This file may be licensed under the terms of of the
* GNU Lesser General Public License Version 3 (the ``LGPL''),
* or (at your option) any later version.
*
* Software distributed under the License is distributed
* on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
* express or implied. See the LGPL for the specific language
* governing rights and limitations.
*
* You should have received a copy of the LGPL along with this
* program. If not, go to http://www.gnu.org/licenses/lgpl.html
* or write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* The development of this software was supported by the
* Excellence Cluster EXC 277 Cognitive Interaction Technology.
* The Excellence Cluster EXC 277 is a grant of the Deutsche
* Forschungsgemeinschaft (DFG) in the context of the German
* Excellence Initiative.
*
*/

/**
 * Helper class to handle finger gestures. 
 *
 * @author akipp
 */

package de.unibi.airobots.resaidroid.helper;

import android.view.MotionEvent;

public class WrapMotionEvent {
   protected MotionEvent event;
   
   protected WrapMotionEvent(MotionEvent event) {
      this.event = event;
   }

   static public WrapMotionEvent wrap(MotionEvent event) {
      try {
         return new EclairMotionEvent(event);
      } catch (VerifyError e) {
         return new WrapMotionEvent(event);
      }
   }
   
   public int getAction() {
      return event.getAction();
   }

   public float getX() {
      return event.getX();
   }

   public float getX(int pointerIndex) {
      verifyPointerIndex(pointerIndex);
      return getX();
   }

   public float getY() {
      return event.getY();
   }

   public float getY(int pointerIndex) {
      verifyPointerIndex(pointerIndex);
      return getY();
   }

   public int getPointerCount() {
      return 1;
   }

   public int getPointerId(int pointerIndex) {
      verifyPointerIndex(pointerIndex);
      return 0;
   }

   private void verifyPointerIndex(int pointerIndex) {
      if (pointerIndex > 0) {
         throw new IllegalArgumentException(
               "Invalid pointer index");
      }
   }   
}