private void detectGesture()
 {
     if (newGesturePoints.Count > 0)
     {
         // the code that you want to measure comes here
         Gesture_Event_Linking.Detect(newGesturePoints, this);
         //Gesture_Event_Copying.Detect(newGesturePoints, this);
         Gesture_Event_Sorting.Detect(newGesturePoints, this);
         //Gesture_Event_Emphasizing.Detect(newGesturePoints, this);
         //Gesture_Event_Grouping.Detect(newGesturePoints,this);
         //Gesture_Event_Sorting_Group.Detect(newGesturePoints, this);
         Gesture_Event_Showing.Detect(newGesturePoints, this);
         Gesture_Event_Showing_Sorting.Detect(newGesturePoints, this);
         Gesture_Event_Cutting_Sorting.Detect(newGesturePoints, this);
         Gesture_Event_Cutting_Link.Detect(newGesturePoints, this);
         Gesture_Event_Deleting_Bin.Detect(newGesturePoints, this);
         Gesture_Event_Collaborative_Zoon.Detect(newGesturePoints, this);
     }
 }
        public static Gesture_Event_Sorting Detect(List <My_Point> points, Gesture_Controler controler)
        {
            List <My_Point>       result    = new List <My_Point>();
            Gesture_Event_Sorting sortEvent = null;

            foreach (My_Point p in points)
            {
                if (!result.Contains(p) && p.Sender is Card && Calculator.CalDistance(p.StartPoint, p.CurrentPoint) >= STATICS.MIN_DISTANCE_FOR_MOVE)
                {
                    Card c = p.Sender as Card;
                    foreach (Menu_Sort_Box box in Group_List.GroupBox)
                    {
                        if (c.Contain(box.CurrentPosition))
                        {
                            foreach (My_Point p2 in points)
                            {
                                if (p.Sender == p2.Sender && !result.Contains(p2))
                                {
                                    result.Add(p2);
                                }
                            }
                            My_Point[] argPoints = result.ToArray();
                            object[]   objects   = new object[2];
                            objects[0]       = c;
                            objects[1]       = box;
                            sortEvent        = new Gesture_Event_Sorting();
                            sortEvent.Points = argPoints;
                            Gesture_List.addGesture(sortEvent);
                            Gesture_Sorting_Listener gestureListener = new Gesture_Sorting_Listener(controler, sortEvent);
                            sortEvent.Register(objects, argPoints);
                        }
                    }
                }
            }
            foreach (My_Point p in result)
            {
                points.Remove(p);
            }
            return(sortEvent);
        }
 public static Gesture_Event_Sorting Detect(List<My_Point> points, Gesture_Controler controler)
 {
     List<My_Point> result = new List<My_Point>();
     Gesture_Event_Sorting sortEvent = null;
     foreach (My_Point p in points)
     {
         if (!result.Contains(p) && p.Sender is Card && Calculator.CalDistance(p.StartPoint, p.CurrentPoint) >= STATICS.MIN_DISTANCE_FOR_MOVE)
         {
             Card c = p.Sender as Card;
             foreach (Menu_Sort_Box box in Group_List.GroupBox)
             {
                 if (c.Contain(box.CurrentPosition))
                 {
                     foreach (My_Point p2 in points)
                     {
                         if (p.Sender == p2.Sender && !result.Contains(p2))
                             result.Add(p2);
                     }
                     My_Point[] argPoints = result.ToArray();
                     object[] objects = new object[2];
                     objects[0] = c;
                     objects[1] = box;
                     sortEvent = new Gesture_Event_Sorting();
                     sortEvent.Points = argPoints;
                     Gesture_List.addGesture(sortEvent);
                     Gesture_Sorting_Listener gestureListener = new Gesture_Sorting_Listener(controler, sortEvent);
                     sortEvent.Register(objects, argPoints);
                 }
             }
         }
     }
     foreach (My_Point p in result)
     {
         points.Remove(p);
     }
     return sortEvent;
 }
 /// <param name="gestureControler">Should be the one created in the MainWindow</param>
 /// <param name="gestureEvent">The gesture variable which fire the event</param>
 public Gesture_Sorting_Listener(Gesture_Controler gestureControler, Gesture_Event_Sorting gestureEvent)
     : base(gestureControler, gestureEvent)
 {
 }
 /// <param name="gestureControler">Should be the one created in the MainWindow</param>
 /// <param name="gestureEvent">The gesture variable which fire the event</param>
 public Gesture_Sorting_Listener(Gesture_Controler gestureControler, Gesture_Event_Sorting gestureEvent)
     : base(gestureControler, gestureEvent)
 {
 }
 private Gesture_Event_Sorting detectSortingRegister(List<My_Point> points)
 {
     List<My_Point> result = new List<My_Point>();
     Gesture_Event_Sorting groupEvent=null;
     foreach (My_Point p in points) {
         if (!result.Contains(p) && p.Sender is Card && Calculator.CalDistance(p.StartPoint, p.CurrentPoint) >= STATICS.MIN_DISTANCE_FOR_MOVE)
         {
             Card c=p.Sender as Card;
             foreach (Menu_Sort_Button button in Group_List.GroupButtons.Values)
             {
                 if (c.Contain(button.CurrentPosition))
                 {
                     foreach (My_Point p2 in points)
                     {
                         if (p.Sender == p2.Sender && !result.Contains(p2))
                             result.Add(p2);
                     }
                     My_Point[] argPoints = result.ToArray();
                     object[] objects = new object[2];
                     objects[0] = c;
                     objects[1] = button;
                     groupEvent = new Gesture_Event_Sorting();
                     groupEvent.Points = argPoints;
                     Gesture_List.addGesture(groupEvent);
                     Gesture_Sorting_Listener gestureListener = new Gesture_Sorting_Listener(this, groupEvent);
                     groupEvent.Register(objects, argPoints);
                 }
             }
         }
     }
     foreach (My_Point p in result) {
         points.Remove(p);
     }
     return groupEvent;
 }