Advertisement
themz

MSGestureListener

Jul 12th, 2012
363
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (function () {
  2.     'use strict';
  3.     WinJS.Namespace.define('GS.Commons', {
  4.         GestureHandler: WinJS.Class.define(
  5.             function (element, ontapcallback) {
  6.                 this.element = element;
  7.                 this.ontap = ontapcallback;
  8.                 this.prepareTarget();
  9.             },
  10.             {
  11.                 prepareTarget: function () {
  12.                     var gestureObject = new MSGesture();     // Creating a gesture object for each element
  13.                     gestureObject.target = this.element;
  14.                     this.element.gesture = gestureObject;   // Expando gesture poroperty for each element.
  15.                     this.element.gesture.pointerType = null;
  16.                     this.element.freeCapture = 0;  // Expando property for releasing capture
  17.                 },
  18.  
  19.                 onMSPointerDown: function (e) {
  20.                     if (e.currentTarget.gesture.pointerType === null) {     // First contact
  21.                         e.currentTarget.gesture.addPointer(e.pointerId);    //Attaches pointer to element(e.target is the element)
  22.                         e.currentTarget.gesture.pointerType = e.pointerType;
  23.                         e.currentTarget.freeCapture = 1;
  24.                     }
  25.                     else if (e.currentTarget.gesture.pointerType === e.pointerType) {// Contacts of similar type
  26.                         e.currentTarget.gesture.addPointer(e.pointerId); //Attaches pointer to element(e.target is the element)
  27.                     }
  28.                     else if (e.currentTarget.freeCapture === 0) {
  29.                         var gestureObject = new MSGesture();     // Creating a gesture object for each element
  30.                         gestureObject.target = this.element;
  31.                         e.currentTarget.gesture = gestureObject;
  32.                         e.currentTarget.gesture.pointerType = e.pointerType;
  33.                         e.currentTarget.gesture.addPointer(e.pointerId);
  34.                         e.currentTarget.freeCapture = 1;
  35.                     }
  36.                 },
  37.  
  38.                 onMSGestureTap: function (e) {
  39.                     var handler = e.currentTarget.myGestureHandler;
  40.                     handler.ontap(e);
  41.                 },
  42.  
  43.                 onPointerUp: function (e) {
  44.                     // This is to prevent pointerUp being called by another gesture
  45.                     if (e.currentTarget.gesture.pointerType === e.pointerType) {
  46.                         e.currentTarget.gesture.pointerType = null;
  47.                         e.currentTarget.freeCapture = 0;
  48.                     }
  49.                 },
  50.  
  51.                 clickInEffect: function (e) {
  52.                     if (e.which == 3) return false; // Do nothing on right click
  53.                     WinJS.UI.Animation.pointerDown(e.currentTarget);
  54.                 },
  55.  
  56.                 clickOutEffect: function (e) {
  57.                     if (e.which == 3) return false; // Do nothing on right click
  58.                     WinJS.UI.Animation.pointerUp(e.currentTarget);
  59.                 }
  60.             }),
  61.  
  62.         onTap: function (element, tapcallback) {
  63.             var gestureHandler = new GS.Commons.GestureHandler(element, tapcallback);
  64.             element.SchoolAppGestureHandler = gestureHandler;
  65.             element.addEventListener('MSPointerDown', gestureHandler.onMSPointerDown, false);
  66.             element.addEventListener("MSPointerDown", gestureHandler.clickInEffect, false);
  67.             element.addEventListener("MSGestureTap", gestureHandler.onMSGestureTap, false);
  68.  
  69.             element.addEventListener("MSPointerUp", gestureHandler.onPointerUp, false);
  70.             element.addEventListener("MSPointerUp", gestureHandler.clickOutEffect, false);
  71.  
  72.             element.addEventListener("MSPointerOut", gestureHandler.clickOutEffect, false);
  73.         }
  74.     });
  75. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement