Index: /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/AbstractInsertEventComposite.java
===================================================================
--- /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/AbstractInsertEventComposite.java	(revision 658)
+++ /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/AbstractInsertEventComposite.java	(revision 659)
@@ -1,17 +1,16 @@
 package de.ugoe.cs.quest.ui.swt;
-
-import java.util.SortedSet;
 
 import org.eclipse.swt.widgets.Composite;
 
 import de.ugoe.cs.quest.eventcore.Event;
+import de.ugoe.cs.quest.eventcore.guimodel.GUIModel;
 
 abstract public class AbstractInsertEventComposite extends Composite {
 
-    protected SortedSet<String> targets;
+    protected GUIModel guiModel;
 
-    public AbstractInsertEventComposite(Composite parent, int style, SortedSet<String> targets) {
+    public AbstractInsertEventComposite(Composite parent, int style, GUIModel guiModel) {
         super(parent, style);
-        this.targets = targets;
+        this.guiModel = guiModel;
     }
 
Index: /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/EditSequenceDialog.java
===================================================================
--- /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/EditSequenceDialog.java	(revision 658)
+++ /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/EditSequenceDialog.java	(revision 659)
@@ -1,5 +1,3 @@
 package de.ugoe.cs.quest.ui.swt;
-
-import java.util.SortedSet;
 
 import org.eclipse.swt.widgets.Dialog;
@@ -20,4 +18,5 @@
 
 import de.ugoe.cs.quest.eventcore.Event;
+import de.ugoe.cs.quest.eventcore.guimodel.GUIModel;
 
 public class EditSequenceDialog extends Dialog {
@@ -29,5 +28,5 @@
 
     private java.util.List<Event> sequence;
-    private SortedSet<String> targets;
+    private GUIModel guiModel;
 
     /**
@@ -37,8 +36,8 @@
      * @param style
      */
-    public EditSequenceDialog(Shell parent, int style, SortedSet<String> targets) {
+    public EditSequenceDialog(Shell parent, int style, GUIModel guiModel) {
         super(parent, style);
         setText("SWT Dialog");
-        this.targets = targets;
+        this.guiModel = guiModel;
     }
 
@@ -169,6 +168,8 @@
         for (Event event : sequence) {
             TableItem tableItem = new TableItem(table, SWT.NONE);
-            // TODO check if toString is sufficient
-            String target = event.getTarget().toString();
+            String target = null;
+            if( event.getTarget()!=null ) {
+                target = event.getTarget().toString();
+            }
             if (target != null) {
                 // the target is split into multiple lines, as one line may
@@ -185,5 +186,5 @@
 
     private void openInsertDialog(int position) {
-        InsertAssertionDialog insertDialog = new InsertAssertionDialog(shell, SWT.NONE, targets);
+        InsertAssertionDialog insertDialog = new InsertAssertionDialog(shell, SWT.NONE, guiModel);
         Event event = insertDialog.open();
         if (event != null) {
Index: /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/InsertAssertionDialog.java
===================================================================
--- /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/InsertAssertionDialog.java	(revision 658)
+++ /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/InsertAssertionDialog.java	(revision 659)
@@ -3,5 +3,4 @@
 import java.util.ArrayList;
 import java.util.List;
-import java.util.SortedSet;
 
 import org.eclipse.swt.widgets.Dialog;
@@ -18,4 +17,5 @@
 
 import de.ugoe.cs.quest.eventcore.Event;
+import de.ugoe.cs.quest.eventcore.guimodel.GUIModel;
 
 public class InsertAssertionDialog extends Dialog {
@@ -27,5 +27,5 @@
 
     List<AbstractInsertEventComposite> insertEventComposites;
-    SortedSet<String> targets;
+    GUIModel guiModel;
 
     /**
@@ -35,8 +35,8 @@
      * @param style
      */
-    public InsertAssertionDialog(Shell parent, int style, SortedSet<String> targets) {
+    public InsertAssertionDialog(Shell parent, int style, GUIModel guiModel) {
         super(parent, style);
         setText("SWT Dialog");
-        this.targets = targets;
+        this.guiModel = guiModel;
     }
 
@@ -76,5 +76,5 @@
         tbtmTextEquals.setText("TextEquals");
         AbstractInsertEventComposite compTextEquals =
-            new InsertTextEquals(tabFolder, SWT.NO_BACKGROUND, targets);
+            new InsertTextEquals(tabFolder, SWT.NO_BACKGROUND, guiModel);
         tbtmTextEquals.setControl(compTextEquals);
         insertEventComposites.add(compTextEquals);
@@ -83,5 +83,5 @@
         tbtmFileEquals.setText("FileEquals");
         AbstractInsertEventComposite compFileEquals =
-            new InsertFileEquals(tabFolder, SWT.NO_BACKGROUND, targets);
+            new InsertFileEquals(tabFolder, SWT.NO_BACKGROUND, guiModel);
         tbtmFileEquals.setControl(compFileEquals);
         insertEventComposites.add(compFileEquals);
Index: /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/InsertFileEquals.java
===================================================================
--- /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/InsertFileEquals.java	(revision 658)
+++ /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/InsertFileEquals.java	(revision 659)
@@ -1,5 +1,3 @@
 package de.ugoe.cs.quest.ui.swt;
-
-import java.util.SortedSet;
 
 import org.eclipse.swt.widgets.Composite;
@@ -15,4 +13,5 @@
 import de.ugoe.cs.quest.assertions.FileEqualsReplay;
 import de.ugoe.cs.quest.eventcore.Event;
+import de.ugoe.cs.quest.eventcore.guimodel.GUIModel;
 
 import org.eclipse.swt.events.SelectionAdapter;
@@ -33,6 +32,6 @@
      * @param style
      */
-    public InsertFileEquals(Composite parent, int style, SortedSet<String> targets) {
-        super(parent, style, targets);
+    public InsertFileEquals(Composite parent, int style, GUIModel guiModel) {
+        super(parent, style, guiModel);
         setLayout(new GridLayout(3, false));
 
Index: /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/InsertTextEquals.java
===================================================================
--- /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/InsertTextEquals.java	(revision 658)
+++ /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/InsertTextEquals.java	(revision 659)
@@ -1,5 +1,6 @@
+
 package de.ugoe.cs.quest.ui.swt;
 
-import java.util.SortedSet;
+import java.util.List;
 
 import org.eclipse.swt.widgets.Composite;
@@ -14,6 +15,9 @@
 
 import de.ugoe.cs.quest.assertions.TextEqualsAssertEventType;
+import de.ugoe.cs.quest.assertions.TextEqualsReplay;
 import de.ugoe.cs.quest.eventcore.Event;
-import de.ugoe.cs.util.ArrayTools;
+import de.ugoe.cs.quest.eventcore.IEventTarget;
+import de.ugoe.cs.quest.eventcore.guimodel.GUIModel;
+import de.ugoe.cs.quest.eventcore.guimodel.IGUIElement;
 
 import org.eclipse.swt.events.SelectionAdapter;
@@ -22,6 +26,5 @@
 public class InsertTextEquals extends AbstractInsertEventComposite {
     private Text expectedText;
-    private Tree targetTree;
-    private Text targetText;
+    private Tree guiTree;
 
     /**
@@ -31,6 +34,6 @@
      * @param style
      */
-    public InsertTextEquals(Composite parent, int style, SortedSet<String> targets) {
-        super(parent, style, targets);
+    public InsertTextEquals(Composite parent, int style, GUIModel guiModel) {
+        super(parent, style, guiModel);
         setLayout(new GridLayout(3, false));
 
@@ -42,32 +45,7 @@
         expectedText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
 
-        Label lblTargetWidget = new Label(this, SWT.NONE);
-        lblTargetWidget.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
-        lblTargetWidget.setText("Target Widget:");
-
-        targetText = new Text(this, SWT.BORDER);
-        targetText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
-        new Label(this, SWT.NONE);
-
-        targetTree = new Tree(this, SWT.BORDER);
-        targetTree.addSelectionListener(new SelectionAdapter() {
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                TreeItem[] selection = targetTree.getSelection();
-                if (selection.length == 1) {
-                    TreeItem item = selection[0];
-                    String targetString = item.getText();
-                    item = item.getParentItem();
-                    while (item != null) {
-                        // TODO the "." is hard coded for the JFCMonitor. should be flexible
-                        targetString = item.getText() + "." + targetString;
-                        item = item.getParentItem();
-                    }
-                    targetText.setText(targetString);
-                }
-            }
-        });
-        targetTree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
-        buildTargetTree();
+        guiTree = new Tree(this, SWT.BORDER);
+        guiTree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
+        buildGuiTree();
         new Label(this, SWT.NONE);
 
@@ -76,5 +54,5 @@
             @Override
             public void widgetSelected(SelectionEvent e) {
-                expandAll(targetTree, true);
+                expandAll(guiTree, true);
             }
         });
@@ -85,5 +63,5 @@
             @Override
             public void widgetSelected(SelectionEvent e) {
-                expandAll(targetTree, false);
+                expandAll(guiTree, false);
             }
         });
@@ -99,49 +77,39 @@
     @Override
     public Event getEvent() {
-        // TODO make compatible to new event core
-        /*
-         * IEventTarget target = targetText.getText(); TextEqualsReplay replay = new
-         * TextEqualsReplay(expectedText.getText(), target);
-         */
-        Event event = new Event(new TextEqualsAssertEventType());
-        /*
-         * event.setTarget(target); event.addReplayable(replay);
-         */
+        // TODO possibly display error if no target is selected
+        TreeItem[] selection = guiTree.getSelection();
+        IEventTarget target = null;
+        TextEqualsReplay replay = null;
+        if (selection.length == 1) {
+            target = (IEventTarget) selection[0].getData();
+            replay = new TextEqualsReplay(expectedText.getText(), target.toString());
+        }
+
+        Event event = new Event(new TextEqualsAssertEventType(), target);
+
+        event.setTarget(target);
+        if (replay != null) {
+            event.addReplayable(replay);
+        }
+
         return event;
     }
 
-    private void buildTargetTree() {
-        for (String target : targets) {
-            TreeItem currentParent = null;
-            TreeItem[] currentItems = targetTree.getItems();
+    private void buildGuiTree() {
+        for (IGUIElement element : guiModel.getRootElements()) {
+            TreeItem child = new TreeItem(guiTree, SWT.NULL);
+            child.setText(element.toString());
+            child.setData(element);
+            buildGuiTree(child, guiModel.getChildren(element));
+        }
+    }
 
-            // TODO needs rule for target splitting. currently its hard coded for JFCEvent targets.
-            String[] targetParts = target.split("\\.\\[");
-            for (String targetPart : targetParts) {
-                String[] currentTexts = new String[currentItems.length];
-                for (int i = 0; i < currentItems.length; i++) {
-                    currentTexts[i] = currentItems[i].getText();
-                }
-                if (currentParent != null) {
-                    targetPart = "[" + targetPart;
-                }
-                int index = ArrayTools.findIndex(currentTexts, targetPart);
-                if (index >= 0) {
-                    currentParent = currentItems[index];
-                }
-                else {
-                    if (currentParent == null) {
-                        currentParent = new TreeItem(targetTree, SWT.NULL);
-                        currentParent.setText(targetPart);
-                    }
-                    else {
-                        currentParent = new TreeItem(currentParent, SWT.NULL);
-                        currentParent.setText(targetPart);
-                    }
-                }
-                currentItems = currentParent.getItems();
-            }
+    private void buildGuiTree(TreeItem currentParent, List<IGUIElement> elements) {
+        for (IGUIElement element : elements) {
+            TreeItem child = new TreeItem(currentParent, SWT.NULL);
+            child.setText(element.toString());
+            child.setData(element);
+            buildGuiTree(child, guiModel.getChildren(element));
         }
-
     }
 
Index: /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/SequencesDialog.java
===================================================================
--- /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/SequencesDialog.java	(revision 658)
+++ /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/SequencesDialog.java	(revision 659)
@@ -2,6 +2,4 @@
 
 import java.util.Collection;
-import java.util.SortedSet;
-import java.util.TreeSet;
 
 import org.eclipse.swt.widgets.Dialog;
@@ -17,4 +15,5 @@
 import de.ugoe.cs.quest.SequenceInstanceOf;
 import de.ugoe.cs.quest.eventcore.Event;
+import de.ugoe.cs.quest.eventcore.guimodel.GUIModel;
 import de.ugoe.cs.quest.ui.GlobalDataContainer;
 
@@ -28,5 +27,5 @@
     private List sequenceList;
     private Collection<java.util.List<Event>> sequences;
-    private SortedSet<String> targets;
+    private GUIModel guiModel;
 
     protected Shell shell;
@@ -86,5 +85,5 @@
                 else {
                     EditSequenceDialog editSequenceDialog =
-                        new EditSequenceDialog(shell, SWT.NONE, targets);
+                        new EditSequenceDialog(shell, SWT.NONE, guiModel);
                     int counter = 0;
                     java.util.List<Event> selectedSequence = null;
@@ -130,23 +129,13 @@
             Object targetObject =
                 GlobalDataContainer.getInstance().getData(sequencesName + "_targets");
-            targets = null;
-            if (targetObject instanceof SortedSet) {
-                if (!((SortedSet<?>) targetObject).isEmpty()) {
-                    if (((SortedSet<?>) targetObject).first() instanceof String) {
-                        targets = (SortedSet<String>) targetObject;
-                    }
-                }
+            guiModel = null;
+            if (targetObject instanceof GUIModel) {
+                guiModel = (GUIModel) targetObject;
             }
-            if (targets == null) {
-                targets = new TreeSet<String>();
-                for (java.util.List<Event> sequence : sequences) {
-                    for (Event event : sequence) {
-                        // TODO check if toString() is sufficient
-                        String target = event.getTarget().toString();
-                        if (target != null) {
-                            targets.add(target);
-                        }
-                    }
-                }
+            if (guiModel == null) {
+                MessageBox messageBox = new MessageBox(shell, SWT.ERROR);
+                messageBox.setMessage("Operation not supported!\nOnly works for GUI sequences.");
+                messageBox.setText("Error");
+                messageBox.open();
             }
         }
