Index: trunk/sources/HeuristicLab.CEDMA.Core/Agent.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Core/Agent.cs	(revision 388)
+++ trunk/sources/HeuristicLab.CEDMA.Core/Agent.cs	(revision 389)
@@ -34,4 +34,5 @@
     public string Name { get; set; }
     public ProcessStatus Status { get; set; }
+    public bool Terminated { get; set; }
     private OperatorGraph operatorGraph;
 
@@ -57,8 +58,24 @@
     }
 
-    public void Activate() {
+    public void Start() {
       Status = ProcessStatus.Waiting;
       Save();
     }
+
+    public ICollection<IAgent> SubAgents {
+      get {
+        List<IAgent> runs = new List<IAgent>();
+        // TASK
+        return runs;
+      }
+    }
+
+    public ICollection<IResult> Results {
+      get {
+        List<IResult> results = new List<IResult>();
+        // TASK
+        return results;
+      }
+    } 
 
     #region persistence
Index: trunk/sources/HeuristicLab.CEDMA.Core/AgentListView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Core/AgentListView.Designer.cs	(revision 388)
+++ trunk/sources/HeuristicLab.CEDMA.Core/AgentListView.Designer.cs	(revision 389)
@@ -50,8 +50,7 @@
       this.splitContainer1 = new System.Windows.Forms.SplitContainer();
       this.agentsGroupBox = new System.Windows.Forms.GroupBox();
-      this.agentsListView = new System.Windows.Forms.ListView();
-      this.columnHeader1 = new System.Windows.Forms.ColumnHeader();
       this.detailsGroupBox = new System.Windows.Forms.GroupBox();
       this.addButton = new System.Windows.Forms.Button();
+      this.agentTreeView = new System.Windows.Forms.TreeView();
       this.splitContainer1.Panel1.SuspendLayout();
       this.splitContainer1.Panel2.SuspendLayout();
@@ -82,5 +81,5 @@
       // agentsGroupBox
       // 
-      this.agentsGroupBox.Controls.Add(this.agentsListView);
+      this.agentsGroupBox.Controls.Add(this.agentTreeView);
       this.agentsGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
       this.agentsGroupBox.Location = new System.Drawing.Point(0, 0);
@@ -90,21 +89,4 @@
       this.agentsGroupBox.TabStop = false;
       this.agentsGroupBox.Text = "&Agents";
-      // 
-      // agentsListView
-      // 
-      this.agentsListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
-            this.columnHeader1});
-      this.agentsListView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.agentsListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
-      this.agentsListView.HideSelection = false;
-      this.agentsListView.Location = new System.Drawing.Point(3, 16);
-      this.agentsListView.Name = "agentsListView";
-      this.agentsListView.Size = new System.Drawing.Size(129, 136);
-      this.agentsListView.Sorting = System.Windows.Forms.SortOrder.Ascending;
-      this.agentsListView.TabIndex = 0;
-      this.agentsListView.UseCompatibleStateImageBehavior = false;
-      this.agentsListView.View = System.Windows.Forms.View.Details;
-      this.agentsListView.SelectedIndexChanged += new System.EventHandler(this.variablesListView_SelectedIndexChanged);
-      this.agentsListView.SizeChanged += new System.EventHandler(this.variablesListView_SizeChanged);
       // 
       // detailsGroupBox
@@ -129,10 +111,19 @@
       this.addButton.Click += new System.EventHandler(this.addButton_Click);
       // 
-      // AgentView
+      // agentTreeView
+      // 
+      this.agentTreeView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.agentTreeView.Location = new System.Drawing.Point(3, 16);
+      this.agentTreeView.Name = "agentTreeView";
+      this.agentTreeView.Size = new System.Drawing.Size(129, 136);
+      this.agentTreeView.TabIndex = 0;
+      this.agentTreeView.BeforeExpand += new System.Windows.Forms.TreeViewCancelEventHandler(this.agentTreeView_BeforeExpand);
+      // 
+      // AgentListView
       // 
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.Controls.Add(this.addButton);
       this.Controls.Add(this.splitContainer1);
-      this.Name = "AgentView";
+      this.Name = "AgentListView";
       this.Size = new System.Drawing.Size(276, 184);
       this.splitContainer1.Panel1.ResumeLayout(false);
@@ -148,8 +139,7 @@
     private System.Windows.Forms.SplitContainer splitContainer1;
     private System.Windows.Forms.GroupBox agentsGroupBox;
-    private System.Windows.Forms.ListView agentsListView;
-    private System.Windows.Forms.ColumnHeader columnHeader1;
     private System.Windows.Forms.GroupBox detailsGroupBox;
     private System.Windows.Forms.Button addButton;
+    private TreeView agentTreeView;
   }
 }
Index: trunk/sources/HeuristicLab.CEDMA.Core/AgentListView.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Core/AgentListView.cs	(revision 388)
+++ trunk/sources/HeuristicLab.CEDMA.Core/AgentListView.cs	(revision 389)
@@ -56,13 +56,13 @@
       if(AgentList == null) {
         Caption = "Agents View";
-        agentsListView.Enabled = false;
+        agentTreeView.Enabled = false;
       } else {
-        agentsListView.Enabled = true;
-        agentsListView.Items.Clear();
+        agentTreeView.Enabled = true;
+        agentTreeView.Nodes.Clear();
         foreach(IAgent agent in AgentList) {
-          ListViewItem item = new ListViewItem();
-          item.Text = agent.Name;
-          item.Tag = agent;
-          agentsListView.Items.Add(item);
+          TreeNode node = new TreeNode();
+          node.Text = agent.Name;
+          node.Tag = agent;
+          agentTreeView.Nodes.Add(node);
         }
       }
@@ -74,6 +74,6 @@
       detailsGroupBox.Controls.Clear();
       detailsGroupBox.Enabled = false;
-      if(agentsListView.SelectedItems.Count == 1) {
-        IAgent agent = (IAgent)agentsListView.SelectedItems[0].Tag;
+      if(agentTreeView.SelectedNode!=null) {
+        IAgent agent = (IAgent)agentTreeView.SelectedNode.Tag;
         Control control = (Control)new AgentView(agent);
         detailsGroupBox.Controls.Add(control);
@@ -83,11 +83,4 @@
     }
 
-    #region Size Changed Events
-    private void variablesListView_SizeChanged(object sender, EventArgs e) {
-      if(agentsListView.Columns.Count > 0)
-        agentsListView.Columns[0].Width = Math.Max(0, agentsListView.Width - 25);
-    }
-    #endregion
-
     #region Button Events
     private void addButton_Click(object sender, EventArgs e) {
@@ -96,4 +89,7 @@
     }
     #endregion
+
+    private void agentTreeView_BeforeExpand(object sender, TreeViewCancelEventArgs e) {
+    }
   }
 }
Index: trunk/sources/HeuristicLab.CEDMA.Core/AgentView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Core/AgentView.Designer.cs	(revision 388)
+++ trunk/sources/HeuristicLab.CEDMA.Core/AgentView.Designer.cs	(revision 389)
@@ -80,5 +80,5 @@
       this.activateButton.Size = new System.Drawing.Size(75, 23);
       this.activateButton.TabIndex = 2;
-      this.activateButton.Text = "&Activate";
+      this.activateButton.Text = "&Start";
       this.activateButton.UseVisualStyleBackColor = true;
       this.activateButton.Click += new System.EventHandler(this.activateButton_Click);
Index: trunk/sources/HeuristicLab.CEDMA.Core/AgentView.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Core/AgentView.cs	(revision 388)
+++ trunk/sources/HeuristicLab.CEDMA.Core/AgentView.cs	(revision 389)
@@ -68,5 +68,5 @@
 
     private void activateButton_Click(object sender, EventArgs e) {
-      Agent.Activate();
+      Agent.Start();
       activateButton.Enabled = false;
     }
Index: trunk/sources/HeuristicLab.CEDMA.Core/ConsoleEditor.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Core/ConsoleEditor.cs	(revision 388)
+++ trunk/sources/HeuristicLab.CEDMA.Core/ConsoleEditor.cs	(revision 389)
@@ -33,7 +33,5 @@
     private System.Windows.Forms.Label uriLabel;
     private System.Windows.Forms.TabControl tabControl;
-    private System.Windows.Forms.TabPage overviewPage;
     private System.Windows.Forms.TabPage agentsPage;
-    private System.Windows.Forms.TabPage resultsPage;
     private Button connectButton;
     private ComboBox comboBox1;
@@ -51,7 +49,5 @@
       this.uriLabel = new System.Windows.Forms.Label();
       this.tabControl = new System.Windows.Forms.TabControl();
-      this.overviewPage = new System.Windows.Forms.TabPage();
       this.agentsPage = new System.Windows.Forms.TabPage();
-      this.resultsPage = new System.Windows.Forms.TabPage();
       this.connectButton = new System.Windows.Forms.Button();
       this.comboBox1 = new System.Windows.Forms.ComboBox();
@@ -82,7 +78,5 @@
                   | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.tabControl.Controls.Add(this.overviewPage);
       this.tabControl.Controls.Add(this.agentsPage);
-      this.tabControl.Controls.Add(this.resultsPage);
       this.tabControl.Enabled = false;
       this.tabControl.Location = new System.Drawing.Point(6, 56);
@@ -91,14 +85,4 @@
       this.tabControl.Size = new System.Drawing.Size(506, 407);
       this.tabControl.TabIndex = 2;
-      // 
-      // overviewPage
-      // 
-      this.overviewPage.Location = new System.Drawing.Point(4, 22);
-      this.overviewPage.Name = "overviewPage";
-      this.overviewPage.Padding = new System.Windows.Forms.Padding(3);
-      this.overviewPage.Size = new System.Drawing.Size(498, 381);
-      this.overviewPage.TabIndex = 0;
-      this.overviewPage.Text = "Overview";
-      this.overviewPage.UseVisualStyleBackColor = true;
       // 
       // agentsPage
@@ -111,14 +95,4 @@
       this.agentsPage.Text = "Agents";
       this.agentsPage.UseVisualStyleBackColor = true;
-      // 
-      // resultsPage
-      // 
-      this.resultsPage.Location = new System.Drawing.Point(4, 22);
-      this.resultsPage.Name = "resultsPage";
-      this.resultsPage.Padding = new System.Windows.Forms.Padding(3);
-      this.resultsPage.Size = new System.Drawing.Size(498, 381);
-      this.resultsPage.TabIndex = 2;
-      this.resultsPage.Text = "Results";
-      this.resultsPage.UseVisualStyleBackColor = true;
       // 
       // connectButton
Index: trunk/sources/HeuristicLab.CEDMA.Core/HeuristicLab.CEDMA.Core.csproj
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Core/HeuristicLab.CEDMA.Core.csproj	(revision 388)
+++ trunk/sources/HeuristicLab.CEDMA.Core/HeuristicLab.CEDMA.Core.csproj	(revision 389)
@@ -62,4 +62,5 @@
       <SubType>UserControl</SubType>
     </Compile>
+    <Compile Include="IResult.cs" />
     <Compile Include="DbPersistenceManager.cs" />
     <Compile Include="HeuristicLabCedmaCorePlugin.cs" />
Index: trunk/sources/HeuristicLab.CEDMA.Core/IAgent.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Core/IAgent.cs	(revision 388)
+++ trunk/sources/HeuristicLab.CEDMA.Core/IAgent.cs	(revision 389)
@@ -32,5 +32,9 @@
     ProcessStatus Status { get; }
     IOperatorGraph OperatorGraph { get; }
-    void Activate();
+    ICollection<IAgent> SubAgents { get; }
+    ICollection<IResult> Results { get; }
+    bool Terminated { get; }
+    
+    void Start();
   }
 }
Index: trunk/sources/HeuristicLab.CEDMA.Core/IResult.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Core/IResult.cs	(revision 389)
+++ trunk/sources/HeuristicLab.CEDMA.Core/IResult.cs	(revision 389)
@@ -0,0 +1,35 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Core;
+using HeuristicLab.CEDMA.DB.Interfaces;
+
+namespace HeuristicLab.CEDMA.Core {
+  public interface IResult : IDatabaseItem {
+    string Summary { get; }
+    string Description { get; }
+    ICollection<IResult> SubResults { get; }
+  }
+}
Index: trunk/sources/HeuristicLab.CEDMA.DB.Interfaces/IDatabase.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.DB.Interfaces/IDatabase.cs	(revision 388)
+++ trunk/sources/HeuristicLab.CEDMA.DB.Interfaces/IDatabase.cs	(revision 389)
@@ -66,5 +66,5 @@
 
     [OperationContract]
-    ICollection<RunEntry> GetRuns();
+    ICollection<RunEntry> GetRuns(long agentId);
 
     [OperationContract]
Index: trunk/sources/HeuristicLab.CEDMA.DB.Interfaces/ResultEntry.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.DB.Interfaces/ResultEntry.cs	(revision 388)
+++ trunk/sources/HeuristicLab.CEDMA.DB.Interfaces/ResultEntry.cs	(revision 389)
@@ -37,4 +37,8 @@
     public long ResultId { get; set; }
     [DataMember]
+    public string Summary { get; set; }
+    [DataMember]
+    public string Description { get; set; }
+    [DataMember]
     public DateTime CreationTime { get; set; }
     [DataMember]
Index: trunk/sources/HeuristicLab.CEDMA.DB.Interfaces/RunEntry.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.DB.Interfaces/RunEntry.cs	(revision 388)
+++ trunk/sources/HeuristicLab.CEDMA.DB.Interfaces/RunEntry.cs	(revision 389)
@@ -37,8 +37,4 @@
     public DateTime CreationTime { get; set; }
     [DataMember]
-    public DateTime? StartTime { get; set; }
-    [DataMember]
-    public DateTime? FinishedTime { get; set; }
-    [DataMember]
     public ProcessStatus Status { get; set; }
     [DataMember]
Index: trunk/sources/HeuristicLab.CEDMA.DB/Database.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.DB/Database.cs	(revision 388)
+++ trunk/sources/HeuristicLab.CEDMA.DB/Database.cs	(revision 389)
@@ -432,5 +432,5 @@
     }
 
-    public ICollection<RunEntry> GetRuns() {
+    public ICollection<RunEntry> GetRuns(long agentId) {
       List<RunEntry> runs = new List<RunEntry>();
       rwLock.EnterReadLock();
@@ -439,5 +439,10 @@
           cnn.Open();
           using(DbCommand c = cnn.CreateCommand()) {
-            c.CommandText = "Select Id, AgentId, CreationTime, StartTime, FinishedTime, Status, Rawdata from Run";
+            c.CommandText = "Select Id, AgentId, CreationTime, Status, Rawdata from Run where AgentId=@AgentId";
+            DbParameter agentParameter = c.CreateParameter();
+            agentParameter.ParameterName = "@AgentId";
+            agentParameter.Value = agentId;
+            c.Parameters.Add(agentParameter);
+
             using(DbDataReader r = c.ExecuteReader()) {
               while(r.Read()) {
@@ -446,8 +451,6 @@
                 run.AgentId = r.GetInt32(1);
                 run.CreationTime = r.GetDateTime(2);
-                run.StartTime = r.GetDateTime(3);
-                run.FinishedTime = r.GetDateTime(4);
-                run.Status = (ProcessStatus)Enum.Parse(typeof(ProcessStatus), r.GetString(5));
-                run.RawData = (byte[])r.GetValue(6);
+                run.Status = (ProcessStatus)Enum.Parse(typeof(ProcessStatus), r.GetString(3));
+                run.RawData = (byte[])r.GetValue(4);
                 runs.Add(run);
               }
@@ -468,5 +471,5 @@
           cnn.Open();
           using(DbCommand c = cnn.CreateCommand()) {
-            c.CommandText = "Select Id, AgentId, CreationTime, StartTime, FinishedTime, Status, Rawdata from Run where Status=@Status";
+            c.CommandText = "Select Id, AgentId, CreationTime, Status, Rawdata from Run where Status=@Status";
             DbParameter statusParameter = c.CreateParameter();
             statusParameter.ParameterName = "@Status";
@@ -480,8 +483,6 @@
                 run.AgentId = r.GetInt32(1);
                 run.CreationTime = r.GetDateTime(2);
-                run.StartTime = r.IsDBNull(3) ? null : new Nullable<DateTime>(r.GetDateTime(3));
-                run.FinishedTime = r.IsDBNull(4) ? null : new Nullable<DateTime>(r.GetDateTime(4));
-                run.Status = (ProcessStatus)Enum.Parse(typeof(ProcessStatus), r.GetString(5));
-                run.RawData = (byte[])r.GetValue(6);
+                run.Status = (ProcessStatus)Enum.Parse(typeof(ProcessStatus), r.GetString(3));
+                run.RawData = (byte[])r.GetValue(4);
                 runs.Add(run);
               }
