Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/swing/DlgInsert.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/swing/DlgInsert.java	(revision 212)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/swing/DlgInsert.java	(revision 213)
@@ -2,7 +2,8 @@
 
 import java.awt.BorderLayout;
-import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.List;
+import java.util.SortedSet;
+import java.util.TreeSet;
 
 import de.ugoe.cs.eventbench.assertions.AssertEvent;
@@ -20,5 +21,4 @@
 import javax.swing.JLabel;
 import javax.swing.JTextField;
-import javax.swing.DefaultComboBoxModel;
 import javax.swing.JOptionPane;
 import javax.swing.JFileChooser;
@@ -29,13 +29,21 @@
 import java.awt.event.ActionEvent;
 import javax.swing.JScrollPane;
-import javax.swing.JList;
 import javax.swing.border.EtchedBorder;
 import javax.swing.JTree;
 import javax.swing.tree.DefaultTreeModel;
 import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.TreeNode;
 import javax.swing.tree.TreePath;
-import javax.swing.event.TreeSelectionListener;
-import javax.swing.event.TreeSelectionEvent;
-
+import javax.swing.tree.TreeSelectionModel;
+
+/**
+ * <p>
+ * This class provides the dialog to insert one of the available assertion
+ * types.
+ * </p>
+ * 
+ * @author Jeffrey Hall
+ * @version 1.0
+ */
 public class DlgInsert extends JDialog {
 
@@ -51,5 +59,15 @@
 
 	/**
-	 * Launch the application.
+	 * <p>
+	 * Launch the dialog
+	 * </p>
+	 * 
+	 * @param sequences
+	 *            A list of the events where an assertion will be inserted.
+	 * @param selectedIndex
+	 *            The position for inserting an assertion.
+	 * @param insertBefore
+	 *            To decide if the user clicked 'insert before' or 'insert
+	 *            after'.
 	 */
 	public static void showDialog(List<Event<?>> sequences, int selectedIndex,
@@ -66,11 +84,38 @@
 
 	/**
+	 * <p>
 	 * Create the dialog.
-	 */
-	@SuppressWarnings("unchecked")
+	 * </p>
+	 * 
+	 * @param sequences
+	 *            A list of the events where an assertion will be inserted.
+	 * @param selectedIndex
+	 *            The position for inserting an assertion.
+	 * @param insertBefore
+	 *            To decide if the user clicked 'insert before' or 'insert
+	 *            after'.
+	 */
 	public DlgInsert(final List<Event<?>> sequences, final int selectedIndex,
 			final boolean insertBefore) {
-
-		final javax.swing.DefaultListModel modelListTargets = new javax.swing.DefaultListModel();
+		initialize(sequences, selectedIndex, insertBefore);
+	}
+
+	/**
+	 * <p>
+	 * Initialize the contents of the frame.
+	 * </p>
+	 * 
+	 * @param sequences
+	 *            A list of the events where an assertion will be inserted.
+	 * @param selectedIndex
+	 *            The position for inserting an assertion.
+	 * @param insertBefore
+	 *            To decide if the user clicked 'insert before' or 'insert
+	 *            after'.
+	 */
+	private void initialize(final List<Event<?>> sequences,
+			final int selectedIndex, final boolean insertBefore) {
+
+		setResizable(false);
 
 		setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
@@ -78,10 +123,10 @@
 
 		setModal(true);
-		setBounds(100, 100, 530, 631);
+		setBounds(100, 100, 676, 673);
 		getContentPane().setLayout(new BorderLayout());
 		contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
 		getContentPane().add(contentPanel, BorderLayout.CENTER);
 		contentPanel.setLayout(null);
-		final JComboBox comboBoxTestcase = new JComboBox();
+		final JComboBox comboBoxAssertionType = new JComboBox();
 		final JPanel panelTextEquals = new JPanel();
 		panelTextEquals.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null,
@@ -91,30 +136,40 @@
 				null));
 
-		// JComboBox: comboBoxTestcase
-		comboBoxTestcase.addActionListener(new ActionListener() {
+		// *****
+		// define your assertion types here
+		final int numberOfAssertionTypes = 2;
+		final JPanel[] panels = new JPanel[numberOfAssertionTypes];
+		String[] assertionTypes = new String[numberOfAssertionTypes];
+
+		panels[0] = panelTextEquals;
+		assertionTypes[0] = "TextEquals";
+		panels[1] = panelFileEquals;
+		assertionTypes[1] = "OutputFileEquals";
+		// *****
+
+		// add assertion types to comboBox
+		for (int i = 0; i < numberOfAssertionTypes; i++) {
+			comboBoxAssertionType.addItem(assertionTypes[i]);
+		}
+
+		comboBoxAssertionType.setSelectedIndex(0);
+		comboBoxAssertionType.setBounds(90, 11, 180, 20);
+		contentPanel.add(comboBoxAssertionType);
+
+		final JPanel buttonPane = new JPanel();
+		final JButton okButton = new JButton("Insert");
+
+		// selecting of another assertion type
+		comboBoxAssertionType.addActionListener(new ActionListener() {
 			public void actionPerformed(ActionEvent arg0) {
 				if ("comboBoxChanged".equals(arg0.getActionCommand())) {
 
-					// TextEquals
-					if (comboBoxTestcase.getSelectedIndex() == 0) {
-						panelTextEquals.setVisible(true);
-						panelFileEquals.setVisible(false);
-					}
-					// FileEquals
-					else if (comboBoxTestcase.getSelectedIndex() == 1) {
-						panelTextEquals.setVisible(false);
-						panelFileEquals.setVisible(true);
-					}
+					selectAssertionType(numberOfAssertionTypes, panels,
+							comboBoxAssertionType.getSelectedIndex(),
+							buttonPane, okButton);
 				}
 			}
 		});
-		comboBoxTestcase.setModel(new DefaultComboBoxModel(new String[] {
-				"TextEquals", "OutputFileEquals" }));
-		comboBoxTestcase.setSelectedIndex(0);
-		comboBoxTestcase.setBounds(91, 11, 178, 20);
-		contentPanel.add(comboBoxTestcase);
-		// ***
-
-		// JLabel
+
 		JLabel label = new JLabel("Testcase:");
 		label.setBounds(12, 14, 86, 14);
@@ -126,15 +181,11 @@
 		JLabel label_2 = new JLabel("Target:");
 		label_2.setBounds(10, 38, 86, 14);
-		// ***
-
-		// JTextField: textFieldExpectedValue
+
 		textFieldExpectedValue = new JTextField();
 		textFieldExpectedValue.setColumns(10);
-		textFieldExpectedValue.setBounds(116, 8, 368, 20);
-		// ***
-
-		// JPanel: panel
+		textFieldExpectedValue.setBounds(116, 8, 524, 20);
+
 		panelTextEquals.setLayout(null);
-		panelTextEquals.setBounds(10, 39, 494, 350);
+		panelTextEquals.setBounds(10, 40, 650, 401);
 		contentPanel.add(panelTextEquals);
 		panelTextEquals.add(label_1);
@@ -142,103 +193,43 @@
 		panelTextEquals.add(textFieldExpectedValue);
 
-		JScrollPane scrollPane = new JScrollPane();
-		scrollPane.setBounds(421, 36, 63, 14);
-		panelTextEquals.add(scrollPane);
-
-		final JList listTargets = new JList(modelListTargets);
-		scrollPane.setViewportView(listTargets);
-
 		JScrollPane scrollPane_1 = new JScrollPane();
-		scrollPane_1.setBounds(10, 63, 474, 276);
+		scrollPane_1.setBounds(10, 58, 630, 291);
 		panelTextEquals.add(scrollPane_1);
 
-		// JTree to hold the targets
 		final JTree tree = new JTree();
-		tree.addTreeSelectionListener(new TreeSelectionListener() {
-			public void valueChanged(TreeSelectionEvent arg0) {
-				TreePath path = tree.getSelectionPath();
-				textFieldExpectedValue.setText(path.toString());
-			}
-		});
 		DefaultTreeModel treeModel = new DefaultTreeModel(null);
-		DefaultMutableTreeNode root = new DefaultMutableTreeNode("Targets");
+		final DefaultMutableTreeNode root = new DefaultMutableTreeNode(
+				"Targets");
 		treeModel.setRoot(root);
 		tree.setModel(treeModel);
 
-		// List<DefaultMutableTreeNode> nodes = new
-		// ArrayList<DefaultMutableTreeNode>();
-		List<String> listTargets1 = new ArrayList<String>(); // targets out of
-																// GlobalDataContainer
-		List<String> sortedTargets = new ArrayList<String>(); // targets will be
-																// sorted by
-																// number of
-																// parts,
-																// splitted at
-																// "/>"
-
-		try {
-			listTargets1 = (List<String>) GlobalDataContainer.getInstance()
-					.getData("ListTargets");
-		} catch (ClassCastException e) {
-			Console.println("Not able to cast data in GlobalDataContainer to List of Strings");
-		}
-
-		int parts = 1;
-		while (sortedTargets.size() < listTargets1.size()) {
-			for (int i = 0; i < listTargets1.size(); i++) {
-				String splitted[] = listTargets1.get(i).split("/>");
-
-				// sort targets by number of parts
-				if (splitted.length != parts)
-					continue;
-
-				sortedTargets.add(listTargets1.get(i));
-
-				// insert in tree
-				DefaultMutableTreeNode node = compareTargetWithNode(root,
-						listTargets1.get(i));
-
-				if (node == null) {
-					DefaultMutableTreeNode newNode[] = new DefaultMutableTreeNode[splitted.length];
-
-					for (int j = 0; j < splitted.length; j++) {
-						newNode[j] = new DefaultMutableTreeNode(splitted[j]
-								+ "/>");
-
-						if (j == 0) {
-							root.add(newNode[0]);
-						} else {
-							newNode[j - 1].add(newNode[j]);
-						}
-					}
-				} else {
-					for (int j = 0; j < splitted.length; j++) {
-						if (node.toString().compareTo(splitted[j] + "/>") != 0)
-							continue;
-
-						DefaultMutableTreeNode newNode[] = new DefaultMutableTreeNode[splitted.length
-								- j - 1];
-						for (int k = 0; k < newNode.length; k++) {
-							newNode[k] = new DefaultMutableTreeNode(splitted[j
-									+ k + 1]
-									+ "/>");
-
-							if (k == 0) {
-								node.add(newNode[0]);
-							} else {
-								newNode[k - 1].add(newNode[k]);
-							}
-						}
-					}
-				}
-			}
-			parts++;
-		}
+		tree.getSelectionModel().setSelectionMode(
+				TreeSelectionModel.CONTIGUOUS_TREE_SELECTION);
+		buildTargetTree(root);
+
 		scrollPane_1.setViewportView(tree);
 
-		if (listTargets.getComponentCount() > 0)
-			listTargets.setSelectedIndex(0);
-
-		panelFileEquals.setBounds(12, 400, 494, 120);
+		// expand all targets
+		JButton btnExpandAll = new JButton("Expand all");
+		btnExpandAll.addMouseListener(new MouseAdapter() {
+			public void mouseClicked(MouseEvent arg0) {
+
+				expandAll(tree, new TreePath(root), true);
+			}
+		});
+		btnExpandAll.setBounds(10, 360, 112, 30);
+		panelTextEquals.add(btnExpandAll);
+
+		// collapse all targets
+		JButton btnCollapseAll = new JButton("Collapse all");
+		btnCollapseAll.addMouseListener(new MouseAdapter() {
+			public void mouseClicked(MouseEvent arg0) {
+				expandAll(tree, new TreePath(root), false);
+			}
+		});
+		btnCollapseAll.setBounds(132, 360, 112, 30);
+		panelTextEquals.add(btnCollapseAll);
+
+		panelFileEquals.setBounds(34, 452, 607, 120);
 		contentPanel.add(panelFileEquals);
 		panelFileEquals.setLayout(null);
@@ -250,10 +241,11 @@
 
 		textFieldActualFile = new JTextField();
-		textFieldActualFile.setBounds(10, 30, 474, 20);
+		textFieldActualFile.setBounds(10, 30, 587, 20);
 		panelFileEquals.add(textFieldActualFile);
 		textFieldActualFile.setColumns(10);
 
-		JButton btnNewButton = new JButton("Search file");
-		btnNewButton.addMouseListener(new MouseAdapter() {
+		// open search file dialog
+		JButton btnSearchFile = new JButton("Search file");
+		btnSearchFile.addMouseListener(new MouseAdapter() {
 			public void mouseClicked(MouseEvent arg0) {
 				final JFileChooser fc = new JFileChooser();
@@ -264,6 +256,6 @@
 			}
 		});
-		btnNewButton.setBounds(93, 61, 89, 23);
-		panelFileEquals.add(btnNewButton);
+		btnSearchFile.setBounds(93, 61, 89, 23);
+		panelFileEquals.add(btnSearchFile);
 
 		JLabel lblNewLabel_1 = new JLabel("Expected file:");
@@ -273,93 +265,21 @@
 		textFieldExpectedFile = new JTextField();
 		textFieldExpectedFile.setColumns(10);
-		textFieldExpectedFile.setBounds(10, 88, 474, 20);
+		textFieldExpectedFile.setBounds(10, 88, 587, 20);
 		panelFileEquals.add(textFieldExpectedFile);
+
 		{
-			JPanel buttonPane = new JPanel();
 			buttonPane.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null,
 					null));
-			buttonPane.setBounds(12, 531, 494, 51);
+			buttonPane.setBounds(12, 583, 607, 51);
 			contentPanel.add(buttonPane);
 			{
-				// JButton: okButton
-				JButton okButton = new JButton("Insert");
-				okButton.setBounds(349, 11, 135, 31);
+				// clicking 'Insert'
+				okButton.setBounds(462, 11, 135, 31);
 				okButton.addMouseListener(new MouseAdapter() {
 					public void mouseClicked(MouseEvent arg0) {
-
-						// FileEquals
-						if (panelFileEquals.isVisible()) {
-							if (textFieldActualFile.getText().length() == 0)
-								JOptionPane.showMessageDialog(null,
-										"Please declare an actual file.",
-										"No actual file declared",
-										JOptionPane.OK_OPTION);
-							else if (!new File(textFieldExpectedFile.getText())
-									.exists()) {
-								if (textFieldExpectedFile.getText().length() == 0)
-									JOptionPane.showMessageDialog(null,
-											"Please choose an expected file.",
-											"No expected file chosen",
-											JOptionPane.OK_OPTION);
-								else
-									JOptionPane.showMessageDialog(
-											null,
-											"The expected file \""
-													+ textFieldActualFile
-															.getText()
-													+ "\" does not exist.",
-											"Expected file does not exist",
-											JOptionPane.OK_OPTION);
-								return;
-							} else {
-								FileEqualsReplay file = new FileEqualsReplay();
-								file.setActualFile(textFieldActualFile
-										.getText());
-								file.setExpectedFile(textFieldExpectedFile
-										.getText());
-
-								AssertEvent<FileEqualsReplay> e = new AssertEvent<FileEqualsReplay>(
-										"FileEquals");
-								e.addReplayEvent(file);
-								e.setTarget(" ");
-								if (insertBefore)
-									sequences.add(selectedIndex, e);
-								else
-									sequences.add(selectedIndex + 1, e);
-							}
-						}
-						// TextEquals
-						else {
-							if (textFieldExpectedValue.getText().length() == 0) {
-								JOptionPane
-										.showMessageDialog(
-												null,
-												"\"Expected value\" is missing.",
-												"Expected value",
-												JOptionPane.OK_OPTION);
-								return;
-							} else if (listTargets.getSelectedIndex() == -1) {
-								JOptionPane.showMessageDialog(null,
-										"Please select a target.",
-										"No target selected",
-										JOptionPane.OK_OPTION);
-								return;
-							} else {
-								TextEqualsReplay text = new TextEqualsReplay();
-								text.setExpectedValue(textFieldExpectedValue
-										.getText());
-								text.setTarget(modelListTargets.get(
-										listTargets.getSelectedIndex())
-										.toString());
-
-								AssertEvent<TextEqualsReplay> e = new AssertEvent<TextEqualsReplay>(
-										"TextEquals");
-								e.addReplayEvent(text);
-								e.setTarget(" ");
-								if (insertBefore)
-									sequences.add(selectedIndex, e);
-								else
-									sequences.add(selectedIndex + 1, e);
-							}
+						if (insertAssertion(sequences, selectedIndex,
+								insertBefore, tree, comboBoxAssertionType
+										.getSelectedItem().toString()) == false) {
+							return;
 						}
 
@@ -371,9 +291,8 @@
 				buttonPane.add(okButton);
 				getRootPane().setDefaultButton(okButton);
-				// ***
 			}
 
 			{
-				// JButton: cancelButton
+				// clicking 'Cancel'
 				JButton cancelButton = new JButton("Cancel");
 				cancelButton.setBounds(10, 11, 135, 31);
@@ -386,10 +305,60 @@
 				cancelButton.setActionCommand("Cancel");
 				buttonPane.add(cancelButton);
-				// ***
-			}
-		}
-		// ***
-	}
-
+			}
+		}
+		
+		selectAssertionType(numberOfAssertionTypes, panels,
+				comboBoxAssertionType.getSelectedIndex(),
+				buttonPane, okButton);
+	}
+
+	/**
+	 * Build up the tree containing all available targets.
+	 * 
+	 * @param root
+	 *            The tree root.
+	 */
+	@SuppressWarnings("unchecked")
+	private void buildTargetTree(final DefaultMutableTreeNode root) {
+		// get targets from GlobalDataContainer
+		SortedSet<String> listTargets = new TreeSet<String>();
+		try {
+			listTargets = (SortedSet<String>) GlobalDataContainer.getInstance()
+					.getData("ListTargets");
+		} catch (ClassCastException e) {
+			Console.println("Not able to cast data in GlobalDataContainer to SortedSet of Strings");
+		}
+
+		// build the tree
+		for (String target : listTargets) {
+			DefaultMutableTreeNode currentParent = root;
+
+			String splitted[] = target.split("/>");
+
+			for (String targetPart : splitted) {
+				DefaultMutableTreeNode node = compareTargetWithNode(
+						currentParent, targetPart + "/>");
+
+				if (node != null) {
+					currentParent = node;
+				} else {
+					node = new DefaultMutableTreeNode(targetPart + "/>");
+					currentParent.add(node);
+					currentParent = node;
+				}
+			}
+		}
+	}
+
+	/**
+	 * Check if there is a child equal to 'target'.
+	 * 
+	 * @param node
+	 *            The parent node which is browsed for a node equal to 'target'.
+	 * @param target
+	 *            'node' is browsed for this String.
+	 * @return If there was no fitting node found, the return value is null.
+	 *         Otherwise it is the node.
+	 */
 	DefaultMutableTreeNode compareTargetWithNode(DefaultMutableTreeNode node,
 			String target) {
@@ -407,8 +376,10 @@
 						e.nextElement(), target);
 				if (nodeReturn == null) {
-					if (target.contains(node.toString()))
+					if (target.contains(node.toString())) {
 						return node;
-				} else
+					}
+				} else {
 					return nodeReturn;
+				}
 			}
 		}
@@ -416,3 +387,179 @@
 		return null;
 	}
+
+	/**
+	 * Expand or collapse the target tree.
+	 * 
+	 * @param tree
+	 *            The tree itself.
+	 * @param parent
+	 *            The parent node which has to be expanded/collapsed.
+	 * @param expand
+	 *            To choose wether it is expanded or collapsed.
+	 */
+	private void expandAll(JTree tree, TreePath parent, boolean expand) {
+		// Traverse children
+		TreeNode node = (TreeNode) parent.getLastPathComponent();
+		if (node.getChildCount() >= 0) {
+			for (@SuppressWarnings("unchecked")
+			Enumeration<DefaultMutableTreeNode> e = node.children(); e
+					.hasMoreElements();) {
+				TreeNode n = (TreeNode) e.nextElement();
+				TreePath path = parent.pathByAddingChild(n);
+				expandAll(tree, path, expand);
+			}
+		}
+
+		// Expansion or collapse must be done bottom-up
+		if (expand) {
+			tree.expandPath(parent);
+		} else {
+			tree.collapsePath(parent);
+		}
+	}
+
+	/**
+	 * Select another assertion type in the comboBox.
+	 * 
+	 * @param numberOfAssertionTypes
+	 *            Number of available assertion types.
+	 * @param panels
+	 *            The corresponding panels of the types.
+	 * @param selectedIndex
+	 *            The index of the selected type.
+	 * @param buttonPane
+	 *            The buttonPane of the dialog.
+	 * @param okButton
+	 *            The okButton of the buttonPane.
+	 */
+	private void selectAssertionType(final int numberOfAssertionTypes,
+			final JPanel[] panels, int selectedIndex, final JPanel buttonPane,
+			final JButton okButton) {
+		for (int i = 0; i < numberOfAssertionTypes; i++) {
+			panels[i].setVisible(false);
+		}
+
+		JPanel activePanel = panels[selectedIndex];
+		activePanel.setVisible(true);
+		activePanel.setLocation(10, 40);
+
+		buttonPane.setLocation(activePanel.getX(), activePanel.getY()
+				+ activePanel.getHeight() + 15);
+		buttonPane.setSize(activePanel.getWidth(), buttonPane.getHeight());
+		setSize(activePanel.getX() + activePanel.getSize().width + 15,
+				buttonPane.getY() + buttonPane.getSize().height + 35);
+		okButton.setLocation(buttonPane.getWidth() - okButton.getWidth() - 10,
+				okButton.getY());
+
+	}
+
+	/**
+	 * To check if all the parameters needed where entered correctly.
+	 * 
+	 * @param sequences
+	 *            A list of the events where an assertion will be inserted.
+	 * @param selectedIndex
+	 *            The position for inserting an assertion.
+	 * @param insertBefore
+	 *            To decide if the user clicked 'insert before' or 'insert
+	 *            after'.
+	 * @param tree
+	 *            The target tree.
+	 * @param selectedItem
+	 *            To identify the selected assertion type.
+	 * @return If the assertion was inserted, the return value is true.
+	 *         Otherwise it is false.
+	 */
+	private boolean insertAssertion(final List<Event<?>> sequences,
+			final int selectedIndex, final boolean insertBefore,
+			final JTree tree, final String selectedItem) {
+
+		// FileEquals
+		if (selectedItem == "OutputFileEquals") {
+			if (textFieldActualFile.getText().length() == 0) {
+				JOptionPane.showMessageDialog(null,
+						"Please declare an actual file.",
+						"No actual file declared", JOptionPane.OK_OPTION);
+
+				return false;
+			} else if (!new File(textFieldExpectedFile.getText()).exists()) {
+				if (textFieldExpectedFile.getText().length() == 0) {
+					JOptionPane.showMessageDialog(null,
+							"Please choose an expected file.",
+							"No expected file chosen", JOptionPane.OK_OPTION);
+				} else {
+					JOptionPane.showMessageDialog(null, "The expected file \""
+							+ textFieldActualFile.getText()
+							+ "\" does not exist.",
+							"Expected file does not exist",
+							JOptionPane.OK_OPTION);
+				}
+
+				return false;
+			} else {
+				FileEqualsReplay file = new FileEqualsReplay();
+				file.setActualFile(textFieldActualFile.getText());
+				file.setExpectedFile(textFieldExpectedFile.getText());
+
+				AssertEvent<FileEqualsReplay> e = new AssertEvent<FileEqualsReplay>(
+						"FileEquals");
+				e.addReplayEvent(file);
+				e.setTarget(" ");
+				if (insertBefore)
+					sequences.add(selectedIndex, e);
+				else
+					sequences.add(selectedIndex + 1, e);
+			}
+		}
+		// TextEquals
+		else if (selectedItem == "TextEquals") {
+			if (textFieldExpectedValue.getText().length() == 0) {
+				JOptionPane.showMessageDialog(null,
+						"\"Expected value\" is missing.", "Expected value",
+						JOptionPane.OK_OPTION);
+				return false;
+			} else if (tree.getSelectionCount() == 0
+					|| tree.getSelectionPath().toString()
+							.compareTo("[Targets]") == 0) {
+				JOptionPane.showMessageDialog(null, "Please select a target.",
+						"No target selected", JOptionPane.OK_OPTION);
+				return false;
+			} else {
+
+				// get target ***
+				String selectionPath = tree.getSelectionPath().toString();
+
+				// remove leading and ending brackets
+				selectionPath = selectionPath.substring(1);
+				selectionPath = selectionPath.substring(0,
+						selectionPath.length() - 1);
+				// remove leading string "targets"
+				selectionPath = selectionPath.substring(7);
+
+				String splitted[] = selectionPath.toString().split(", ");
+
+				// get all parents
+				String target = "";
+				for (int i = 0; i < splitted.length; i++) {
+					target += splitted[i];
+				}
+				// ***
+
+				TextEqualsReplay text = new TextEqualsReplay();
+				text.setExpectedValue(textFieldExpectedValue.getText());
+				text.setTarget(target);
+
+				AssertEvent<TextEqualsReplay> e = new AssertEvent<TextEqualsReplay>(
+						"TextEquals");
+				e.addReplayEvent(text);
+				e.setTarget(" ");
+				if (insertBefore)
+					sequences.add(selectedIndex, e);
+				else
+					sequences.add(selectedIndex + 1, e);
+			}
+		}
+
+		return true;
+	}
 }
