Index: /trunk/autoquest-ui-swt/src/main/java/de/ugoe/cs/autoquest/ui/swt/ShowTaskTreeDialog.java
===================================================================
--- /trunk/autoquest-ui-swt/src/main/java/de/ugoe/cs/autoquest/ui/swt/ShowTaskTreeDialog.java	(revision 1261)
+++ /trunk/autoquest-ui-swt/src/main/java/de/ugoe/cs/autoquest/ui/swt/ShowTaskTreeDialog.java	(revision 1262)
@@ -16,5 +16,8 @@
 
 import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashSet;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
@@ -197,8 +200,8 @@
         
         TreeItem root = new TreeItem(modelTree, SWT.NULL);
-        root.setText(tasks.size() + " tasks in model");
+        root.setText(tasks.size() + " tasks in model (showing only root tasks)");
         root.setData(taskModel);
 
-        tasks = determineRootTasks(tasks);
+        tasks = createSortedTaskList(tasks);
         
         for (ITask task : tasks) {
@@ -226,10 +229,33 @@
      *
      */
-    private Collection<ITask> determineRootTasks(Collection<ITask> tasks) {
-        Set<ITask> result = new HashSet<ITask>(tasks);
+    private List<ITask> createSortedTaskList(Collection<ITask> tasks) {
+        Set<ITask> resultSet = new HashSet<ITask>(tasks);
         
         for (ITask task : tasks) {
-            removeChildren(task, result);
-        }
+            removeChildren(task, resultSet);
+        }
+        
+        List<ITask> result = new LinkedList<ITask>(resultSet);
+        
+        Collections.sort(result, new Comparator<ITask>() {
+            @Override
+            public int compare(ITask task1, ITask task2) {
+                return depth(task1) - depth(task2);
+            }
+
+            private int depth(ITask task) {
+                int maxChildDepth = 0;
+                if (task instanceof IStructuringTemporalRelationship) {
+                    for (ITask child : ((IStructuringTemporalRelationship) task).getChildren()) {
+                        maxChildDepth = Math.max(maxChildDepth, depth(child));
+                    }
+                }
+                else if (task instanceof IMarkingTemporalRelationship) {
+                    maxChildDepth = Math.max
+                        (maxChildDepth, depth(((IMarkingTemporalRelationship) task).getMarkedTask()));
+                }
+                return maxChildDepth + 1;
+            }
+        });
         
         return result;
@@ -243,8 +269,10 @@
             for (ITask child : ((IStructuringTemporalRelationship) task).getChildren()) {
                 result.remove(child);
+                //removeChildren(child, result);
             }
         }
         else if (task instanceof IMarkingTemporalRelationship) {
             result.remove(((IMarkingTemporalRelationship) task).getMarkedTask());
+            //removeChildren(((IMarkingTemporalRelationship) task).getMarkedTask(), result);
         }
     }
