Index: trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/ResultsView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/ResultsView.Designer.cs	(revision 3975)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/ResultsView.Designer.cs	(revision 3979)
@@ -44,9 +44,32 @@
     /// </summary>
     private void InitializeComponent() {
-      components = new System.ComponentModel.Container();
+      this.matrixView = new HeuristicLab.Data.Views.StringConvertibleMatrixView();
+      this.SuspendLayout();
+      // 
+      // matrixView
+      // 
+      this.matrixView.Caption = "StringConvertibleMatrix View";
+      this.matrixView.Content = null;
+      this.matrixView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.matrixView.Location = new System.Drawing.Point(0, 0);
+      this.matrixView.Name = "matrixView";
+      this.matrixView.ReadOnly = true;
+      this.matrixView.Size = new System.Drawing.Size(494, 317);
+      this.matrixView.TabIndex = 0;
+      // 
+      // ResultsView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.matrixView);
+      this.Name = "ResultsView";
+      this.Size = new System.Drawing.Size(494, 317);
+      this.ResumeLayout(false);
+
     }
 
     #endregion
+
+    private HeuristicLab.Data.Views.StringConvertibleMatrixView matrixView;
   }
 }
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/ResultsView.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/ResultsView.cs	(revision 3975)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/ResultsView.cs	(revision 3979)
@@ -30,9 +30,14 @@
 using HeuristicLab.MainForm.WindowsForms;
 using HeuristicLab.Data.Views;
+using HeuristicLab.Data;
+using HeuristicLab.Problems.DataAnalysis.Evaluators;
 
 namespace HeuristicLab.Problems.DataAnalysis.Views {
   [Content(typeof(DataAnalysisSolution),false)]
   [View("Results View")]
-  public partial class ResultsView : StringConvertibleMatrixView {
+  public partial class ResultsView : AsynchronousContentView {
+    private List<string> rowNames = new List<string>() { "MeanSquaredError", "CoefficientOfDetermination", "MeanAbsolutePercentageError" };
+    private List<string> columnNames = new List<string>() { "Training", "Test" };
+
     public ResultsView() {
       InitializeComponent();
@@ -43,4 +48,52 @@
       set { base.Content = value; }
     }
+
+    protected override void RegisterContentEvents() {
+      base.RegisterContentEvents();
+      Content.ModelChanged += new EventHandler(Content_ModelChanged);
+      Content.ProblemDataChanged += new EventHandler(Content_ProblemDataChanged);
+      Content.EstimatedValuesChanged += new EventHandler(Content_EstimatedValuesChanged);
+    }
+    protected override void DeregisterContentEvents() {
+      base.DeregisterContentEvents();
+      Content.ModelChanged -= new EventHandler(Content_ModelChanged);
+      Content.ProblemDataChanged -= new EventHandler(Content_ProblemDataChanged);
+      Content.EstimatedValuesChanged -= new EventHandler(Content_EstimatedValuesChanged);
+    }
+
+    private void Content_ModelChanged(object sender, EventArgs e) {
+      UpdateView();
+    }
+    private void Content_ProblemDataChanged(object sender, EventArgs e) {
+      UpdateView();
+    }
+    private void Content_EstimatedValuesChanged(object sender, EventArgs e) {
+      UpdateView();
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      UpdateView();
+    }
+    private void UpdateView() {
+      if (Content != null) {
+        DoubleMatrix matrix = new DoubleMatrix(rowNames.Count, columnNames.Count);
+        matrix.RowNames = rowNames;
+        matrix.ColumnNames = columnNames;
+        matrix.SortableView = false;
+
+        IEnumerable<double> originalTrainingValues = Content.ProblemData.Dataset.GetVariableValues(Content.ProblemData.TargetVariable.Value, Content.ProblemData.TrainingSamplesStart.Value, Content.ProblemData.TrainingSamplesEnd.Value);
+        IEnumerable<double> originalTestValues = Content.ProblemData.Dataset.GetVariableValues(Content.ProblemData.TargetVariable.Value, Content.ProblemData.TestSamplesStart.Value, Content.ProblemData.TestSamplesEnd.Value);
+        matrix[0, 0] = SimpleMSEEvaluator.Calculate(originalTrainingValues, Content.EstimatedTrainingValues);
+        matrix[0, 1] = SimpleMSEEvaluator.Calculate(originalTestValues, Content.EstimatedTestValues);
+        matrix[1, 0] = SimpleRSquaredEvaluator.Calculate(originalTrainingValues, Content.EstimatedTrainingValues);
+        matrix[1, 1] = SimpleRSquaredEvaluator.Calculate(originalTestValues, Content.EstimatedTestValues);
+        matrix[2, 0] = SimpleMeanAbsolutePercentageErrorEvaluator.Calculate(originalTrainingValues, Content.EstimatedTrainingValues);
+        matrix[2, 1] = SimpleMeanAbsolutePercentageErrorEvaluator.Calculate(originalTestValues, Content.EstimatedTestValues);
+
+        matrixView.Content = matrix;
+      } else
+        matrixView.Content = null;
+    }
   }
 }
