Index: unk/quest-core-tasktrees-test/src/test/java/de/ugoe/cs/quest/tasktrees/temporalrelation/DefaultMouseClickReductionRuleTest.java
===================================================================
--- /trunk/quest-core-tasktrees-test/src/test/java/de/ugoe/cs/quest/tasktrees/temporalrelation/DefaultMouseClickReductionRuleTest.java	(revision 721)
+++ 	(revision )
@@ -1,161 +1,0 @@
-package de.ugoe.cs.quest.tasktrees.temporalrelation;
-
-import org.junit.Test;
-
-import de.ugoe.cs.quest.eventcore.gui.MouseButtonDown;
-import de.ugoe.cs.quest.eventcore.gui.MouseButtonInteraction;
-import de.ugoe.cs.quest.eventcore.gui.MouseButtonUp;
-import de.ugoe.cs.quest.eventcore.gui.MouseClick;
-import de.ugoe.cs.quest.eventcore.guimodel.IGUIElement;
-import de.ugoe.cs.quest.tasktrees.testutils.TaskTreeChecker;
-import de.ugoe.cs.quest.test.DummyGUIElement;
-import de.ugoe.cs.quest.test.DummyInteraction;
-
-/**
- * TODO comment
- * 
- * @version $Revision: $ $Date: $
- * @author 2011, last modified by $Author: $
- */
-public class DefaultMouseClickReductionRuleTest extends AbstractTemporalRelationshipTC {
-
-    /**
-     *
-     */
-    @Test
-    public void testMouseClickInOneSequenceElement() {
-        MouseButtonInteraction.Button leftBtn = MouseButtonInteraction.Button.LEFT;
-        MouseButtonInteraction.Button middleBtn = MouseButtonInteraction.Button.MIDDLE;
-        MouseButtonInteraction.Button rightBtn = MouseButtonInteraction.Button.RIGHT;
-
-        IGUIElement element1 = new DummyGUIElement("elem1");
-        IGUIElement element2 = new DummyGUIElement("elem1");
-
-        simulateEvent(new MouseButtonDown(leftBtn), element1);
-        simulateEvent(new MouseButtonUp(leftBtn), element1);
-        simulateEvent(new MouseClick(leftBtn), element1);
-
-        new TaskTreeChecker().assertTaskTree
-            ("Sequence sequence {" +
-             "  Event LeftMouseClick {}" +
-             "}", getTaskTree());
-
-        simulateEvent(new DummyInteraction("bla", 1), element1);
-        simulateEvent(new DummyInteraction("bli", 1), element1);
-        simulateEvent(new MouseButtonDown(middleBtn), element1);
-        simulateEvent(new MouseButtonUp(middleBtn), element1);
-        simulateEvent(new MouseClick(middleBtn), element1);
-        simulateEvent(new DummyInteraction("blo", 1), element1);
-        simulateEvent(new DummyInteraction("blu", 1), element1);
-
-        new TaskTreeChecker().assertTaskTree
-            ("Sequence sequence {" +
-             "  Event LeftMouseClick {}" +
-             "  Event bla {}" +
-             "  Event bli {}" +
-             "  Event MiddleMouseClick {}" +
-             "  Event blo {}" +
-             "  Event blu {}" +
-             "}", getTaskTree());
-
-        simulateEvent(new DummyInteraction("bla", 1), element2);
-        simulateEvent(new DummyInteraction("bli", 1), element2);
-        simulateEvent(new MouseButtonDown(rightBtn), element2);
-        simulateEvent(new MouseButtonUp(rightBtn), element2);
-        simulateEvent(new MouseClick(rightBtn), element2);
-        simulateEvent(new DummyInteraction("blo", 1), element2);
-        simulateEvent(new DummyInteraction("blu", 1), element2);
-
-        new TaskTreeChecker().assertTaskTree
-            ("Sequence sequence0 {" +
-             "  Sequence sequence1 {" +
-             "    Event LeftMouseClick {}" +
-             "    Event bla {}" +
-             "    Event bli {}" +
-             "    Event MiddleMouseClick {}" +
-             "    Event blo {}" +
-             "    Event blu {}" +
-             "  }" +
-             "  Sequence sequence2 {" +
-             "    Event bla {}" +
-             "    Event bli {}" +
-             "    Event RightMouseClick {}" +
-             "    Event blo {}" +
-             "    Event blu {}" +
-             "  }" +
-             "}", getTaskTree());
-
-        simulateEvent(new MouseButtonDown(leftBtn), element1);
-        simulateEvent(new MouseButtonUp(leftBtn), element1);
-        simulateEvent(new MouseClick(leftBtn), element2);
-
-        new TaskTreeChecker().assertTaskTree
-            ("Sequence sequence0 {" +
-             "  Sequence sequence1 {" +
-             "    Event LeftMouseClick {}" +
-             "    Event bla {}" +
-             "    Event bli {}" +
-             "    Event MiddleMouseClick {}" +
-             "    Event blo {}" +
-             "    Event blu {}" +
-             "  }" +
-             "  Sequence sequence2 {" +
-             "    Event bla {}" +
-             "    Event bli {}" +
-             "    Event RightMouseClick {}" +
-             "    Event blo {}" +
-             "    Event blu {}" +
-             "  }" +
-             "  Sequence sequence3 {" +
-             "    Event LeftMouseButtonDown {}" +
-             "    Event LeftMouseButtonUp {}" +
-             "  }" +
-             "  Sequence sequence4 {" +
-             "    Event LeftMouseClick {}" +
-             "  }" +
-             "}", getTaskTree());
-
-        simulateEvent(new MouseButtonDown(middleBtn), element1);
-        simulateEvent(new MouseButtonUp(middleBtn), element1);
-        simulateEvent(new MouseClick(rightBtn), element1);
-        simulateEvent(new DummyInteraction("bla", 1), element2);
-
-        new TaskTreeChecker().assertTaskTree
-            ("Sequence sequence0 {" +
-             "  Sequence sequence1 {" +
-             "    Event LeftMouseClick {}" +
-             "    Event bla {}" +
-             "    Event bli {}" +
-             "    Event MiddleMouseClick {}" +
-             "    Event blo {}" +
-             "    Event blu {}" +
-             "  }" +
-             "  Sequence sequence2 {" +
-             "    Event bla {}" +
-             "    Event bli {}" +
-             "    Event RightMouseClick {}" +
-             "    Event blo {}" +
-             "    Event blu {}" +
-             "  }" +
-             "  Sequence sequence3 {" +
-             "    Event LeftMouseButtonDown {}" +
-             "    Event LeftMouseButtonUp {}" +
-             "  }" +
-             "  Sequence sequence4 {" +
-             "    Event LeftMouseClick {}" +
-             "  }" +
-             "  Sequence sequence5 {" +
-             "    Sequence sequence6 {" +
-             "      Event MiddleMouseButtonDown {}" +
-             "      Event MiddleMouseButtonUp {}" +
-             "    }" +
-             "    Event RightMouseClick {}" +
-             "  }" +
-             "  Sequence sequence7 {" +
-             "    Event bla {}" +
-             "  }" +
-             "}", getTaskTree());
-
-    }
-
-}
Index: /trunk/quest-ui-core/src/main/java/de/ugoe/cs/quest/ui/commands/CMDcondenseMouseClicks.java
===================================================================
--- /trunk/quest-ui-core/src/main/java/de/ugoe/cs/quest/ui/commands/CMDcondenseMouseClicks.java	(revision 722)
+++ /trunk/quest-ui-core/src/main/java/de/ugoe/cs/quest/ui/commands/CMDcondenseMouseClicks.java	(revision 722)
@@ -0,0 +1,87 @@
+
+package de.ugoe.cs.quest.ui.commands;
+
+import java.security.InvalidParameterException;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+
+import de.ugoe.cs.quest.CommandHelpers;
+import de.ugoe.cs.quest.SequenceInstanceOf;
+import de.ugoe.cs.quest.eventcore.Event;
+import de.ugoe.cs.quest.eventcore.gui.MouseClickCondenser;
+import de.ugoe.cs.util.console.Command;
+import de.ugoe.cs.util.console.GlobalDataContainer;
+
+/**
+ * <p>
+ * This command condenses mouse clicks, i.e. it reduces a sequence of mouse button down,
+ * mouse button up and mouse click with the same button on the same event target to a single
+ * mouse click with that button on that target. The mouse button down and mouse button up events
+ * are discarded.
+ * </p>
+ * 
+ * @author Patrick Harms
+ * @version 1.0
+ */
+public class CMDcondenseMouseClicks implements Command {
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see de.ugoe.cs.util.console.Command#help()
+     */
+    @Override
+    public String help() {
+        return "condenseMouseClicks <sequences> {<new sequences>}";
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see de.ugoe.cs.util.console.Command#run(java.util.List)
+     */
+    @SuppressWarnings("unchecked")
+    @Override
+    public void run(List<Object> parameters) {
+        String sequencesName;
+        String newSequencesName;
+        try {
+            sequencesName = (String) parameters.get(0);
+            if (parameters.size() > 1) {
+                newSequencesName = (String) parameters.get(1);
+            }
+            else {
+                newSequencesName = sequencesName;
+            }
+        }
+        catch (Exception e) {
+            throw new InvalidParameterException("must provide a sequences name");
+        }
+
+        Collection<List<Event>> sequences = null;
+        Object dataObject = GlobalDataContainer.getInstance().getData(sequencesName);
+        if (dataObject == null) {
+            CommandHelpers.objectNotFoundMessage(sequencesName);
+            return;
+        }
+        if (!SequenceInstanceOf.isCollectionOfSequences(dataObject)) {
+            CommandHelpers.objectNotType(sequencesName, "Collection<List<Event<?>>>");
+            return;
+        }
+
+        sequences = (Collection<List<Event>>) dataObject;
+
+        Collection<List<Event>> newSequences = new LinkedList<List<Event>>();
+        
+        for (List<Event> sequence : sequences) {
+            newSequences.add(new MouseClickCondenser().condenseMouseClicks(sequence));
+        }
+
+        if (GlobalDataContainer.getInstance().addData(newSequencesName, newSequences)) {
+            CommandHelpers.dataOverwritten(sequencesName);
+        }
+        
+    }
+
+}
