Index: trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/nodeequality/GUIEventTaskComparisonRule.java
===================================================================
--- trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/nodeequality/GUIEventTaskComparisonRule.java	(revision 993)
+++ trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/nodeequality/GUIEventTaskComparisonRule.java	(revision 1043)
@@ -2,4 +2,6 @@
 
 import de.ugoe.cs.autoquest.eventcore.gui.IInteraction;
+import de.ugoe.cs.autoquest.eventcore.gui.MouseClick;
+import de.ugoe.cs.autoquest.eventcore.gui.MouseDragAndDrop;
 import de.ugoe.cs.autoquest.eventcore.gui.TextInput;
 import de.ugoe.cs.autoquest.eventcore.gui.ValueSelection;
@@ -84,4 +86,15 @@
                 ((ValueSelection<?>) interaction1, (ValueSelection<?>) interaction2);
         }
+        else if ((interaction1 instanceof MouseClick) &&
+                 (interaction2 instanceof MouseClick))
+        {
+            return compareMouseClicks((MouseClick) interaction1, (MouseClick) interaction2);
+        }
+        else if ((interaction1 instanceof MouseDragAndDrop) &&
+                 (interaction2 instanceof MouseDragAndDrop))
+        {
+            return compareMouseDragAndDrops
+                ((MouseDragAndDrop) interaction1, (MouseDragAndDrop) interaction2);
+        }
         else if (interaction1.equals(interaction2)) {
             return NodeEquality.LEXICALLY_EQUAL;
@@ -145,3 +158,61 @@
     }
 
+    /**
+     * <p>
+     * compares two mouse clicks. If both clicks have the same coordinates, they are lexically
+     * equal. Otherwise, they are semantically equal.
+     * </p>
+     *
+     * @param interaction1 the first mouse click to compare
+     * @param interaction2 the second mouse click to compare
+     * 
+     * @return as described
+     */
+    private NodeEquality compareMouseClicks(MouseClick interaction1,
+                                            MouseClick interaction2)
+    {
+        int x1 = interaction1.getX();
+        int x2 = interaction2.getX();
+        int y1 = interaction1.getY();
+        int y2 = interaction2.getY();
+        
+        if ((x1 == x2) && (y1 == y2)) {
+            return NodeEquality.LEXICALLY_EQUAL;
+        }
+        else {
+            return NodeEquality.SEMANTICALLY_EQUAL;
+        }
+    }
+
+    /**
+     * <p>
+     * compares two mouse drag and drops. If both drag and drops have the same start and end
+     * coordinates, they are lexically equal. Otherwise, they are semantically equal.
+     * </p>
+     *
+     * @param interaction1 the first mouse drag and drop to compare
+     * @param interaction2 the second mouse drag and drop to compare
+     * 
+     * @return as described
+     */
+    private NodeEquality compareMouseDragAndDrops(MouseDragAndDrop interaction1,
+                                                  MouseDragAndDrop interaction2)
+    {
+        int x1 = interaction1.getX();
+        int x1Start = interaction1.getXStart();
+        int x2 = interaction2.getX();
+        int x2Start = interaction2.getXStart();
+        int y1 = interaction1.getY();
+        int y1Start = interaction1.getYStart();
+        int y2 = interaction2.getY();
+        int y2Start = interaction2.getYStart();
+        
+        if ((x1Start == x2Start) && (x1 == x2) && (y1Start == y2Start) && (y1 == y2)) {
+            return NodeEquality.LEXICALLY_EQUAL;
+        }
+        else {
+            return NodeEquality.SEMANTICALLY_EQUAL;
+        }
+    }
+
 }
