Index: trunk/sources/HeuristicLab.CEDMA.Core/3.3/Console.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Core/3.3/Console.cs	(revision 2275)
+++ trunk/sources/HeuristicLab.CEDMA.Core/3.3/Console.cs	(revision 2289)
@@ -30,8 +30,15 @@
 using HeuristicLab.PluginInfrastructure;
 using HeuristicLab.Modeling.Database.SQLServerCompact;
+using HeuristicLab.SparseMatrix;
+using HeuristicLab.Modeling.Database;
+using HeuristicLab.CEDMA.Charting;
 
 namespace HeuristicLab.CEDMA.Core {
   public class Console : ItemBase, IEditable {
     private static readonly string sqlServerCompactConnectionString = @"Data Source=";
+
+    public Console()
+      : base() {
+    }
 
     private string database;
@@ -43,18 +50,25 @@
         if (value != database) {
           database = value;
-          results = null;
+          matrix = null;
+          visualMatrix = null;
         }
       }
     }
 
-    private Results results;
-    public Results Results {
+    private Matrix matrix;
+    public Matrix Matrix {
       get {
-        if (results == null) ReloadResults();
-        return results;
+        if (matrix == null) LoadResults();
+        return matrix;
       }
     }
-    public Console()
-      : base() {
+
+    private VisualMatrix visualMatrix;
+    public VisualMatrix VisualMatrix {
+      get {
+        if (matrix == null)
+          visualMatrix = CreateVisualMatrix();
+        return visualMatrix;
+      }
     }
 
@@ -67,6 +81,44 @@
     }
 
-    private void ReloadResults() {
-      results = new Results(new DatabaseService(sqlServerCompactConnectionString + Database));
+    private void LoadResults() {
+      matrix = new Matrix();
+      DatabaseService db = new DatabaseService(sqlServerCompactConnectionString + database);
+      db.Connect();
+
+      foreach (var model in db.GetAllModels()) {
+        MatrixRow row = new MatrixRow();
+        foreach (var modelResult in db.GetModelResults(model)) {
+          row.Set(modelResult.Result.Name, modelResult.Value);
+        }
+        row.Set("PersistedData", db.GetModelData(model));
+        row.Set("TargetVariable", model.TargetVariable.Name);
+        row.Set("Algorithm", model.Algorithm.Name);
+        Dictionary<HeuristicLab.Modeling.Database.IVariable, MatrixRow> inputVariableResultsEntries =
+          new Dictionary<HeuristicLab.Modeling.Database.IVariable, MatrixRow>();
+
+        foreach (IInputVariableResult inputVariableResult in db.GetInputVariableResults(model)) {
+          if (!inputVariableResultsEntries.ContainsKey(inputVariableResult.Variable)) {
+            inputVariableResultsEntries[inputVariableResult.Variable] = new MatrixRow();
+            inputVariableResultsEntries[inputVariableResult.Variable].Set("InputVariableName", inputVariableResult.Variable.Name);
+          }
+          inputVariableResultsEntries[inputVariableResult.Variable].Set(inputVariableResult.Result.Name, inputVariableResult.Value);
+        }
+        row.Set("VariableImpacts", inputVariableResultsEntries.Values);
+        matrix.AddRow(row);
+      }
+      db.Disconnect();
+    }
+
+    private VisualMatrix CreateVisualMatrix() {      
+      DatabaseService db = new DatabaseService(sqlServerCompactConnectionString + database);
+      db.Connect();
+      string[] multiDimensionalCategoricalVariables = new string[] { "VariableImpacts: InputVariableName" };
+      string[] multiDimensionalOrdinalVariables = db.GetAllResultsForInputVariables().Select(x => "VariableImpacts: " + x.Name).ToArray();
+      string[] ordinalVariables = db.GetAllResults().Select(r => r.Name).ToArray();
+      string[] categoricalVariables = new string[] { "TargetVariable", "Algorithm" };
+
+      db.Disconnect();
+      VisualMatrix m = new VisualMatrix(Matrix, categoricalVariables, ordinalVariables, multiDimensionalCategoricalVariables, multiDimensionalOrdinalVariables);
+      return m;
     }
   }
Index: trunk/sources/HeuristicLab.CEDMA.Core/3.3/ConsoleEditor.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Core/3.3/ConsoleEditor.cs	(revision 2275)
+++ trunk/sources/HeuristicLab.CEDMA.Core/3.3/ConsoleEditor.cs	(revision 2289)
@@ -29,4 +29,5 @@
 using HeuristicLab.PluginInfrastructure;
 using System.Drawing;
+using HeuristicLab.CEDMA.Charting;
 
 namespace HeuristicLab.CEDMA.Core {
@@ -36,4 +37,5 @@
     private Button openButton;
     private Console console;
+    private VisualMatrix matrix;
 
     public ConsoleEditor(Console console) {
@@ -101,8 +103,7 @@
     }
 
-
     private void resultsButton_Click(object sender, EventArgs e) {
       IResultsViewFactory factory = (IResultsViewFactory)viewComboBox.SelectedItem;
-      IControl control = factory.CreateView(console.Results);
+      IControl control = factory.CreateView(console.VisualMatrix);
       PluginManager.ControlManager.ShowControl(control);
     }
Index: trunk/sources/HeuristicLab.CEDMA.Core/3.3/HeuristicLab.CEDMA.Core-3.3.csproj
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Core/3.3/HeuristicLab.CEDMA.Core-3.3.csproj	(revision 2275)
+++ trunk/sources/HeuristicLab.CEDMA.Core/3.3/HeuristicLab.CEDMA.Core-3.3.csproj	(revision 2289)
@@ -88,12 +88,4 @@
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="IResultsViewFactory.cs" />
-    <Compile Include="ResultsEntry.cs" />
-    <Compile Include="TableResultsView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="TableResultsView.Designer.cs">
-      <DependentUpon>TableResultsView.cs</DependentUpon>
-    </Compile>
     <Compile Include="Console.cs" />
     <Compile Include="ConsoleEditor.cs">
@@ -102,5 +94,4 @@
     <Compile Include="HeuristicLabCedmaCorePlugin.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Results.cs" />
   </ItemGroup>
   <ItemGroup>
@@ -108,15 +99,11 @@
   </ItemGroup>
   <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.CEDMA.Charting\3.3\HeuristicLab.CEDMA.Charting-3.3.csproj">
+      <Project>{1BF17271-5350-476A-8F6D-FC74FA3E82CA}</Project>
+      <Name>HeuristicLab.CEDMA.Charting-3.3</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Core\3.2\HeuristicLab.Core-3.2.csproj">
       <Project>{F43B59AB-2B8C-4570-BC1E-15592086517C}</Project>
       <Name>HeuristicLab.Core-3.2</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.DataAnalysis\3.2\HeuristicLab.DataAnalysis-3.2.csproj">
-      <Project>{7DD3A97A-56E9-462F-90E2-A351FE7AF5C2}</Project>
-      <Name>HeuristicLab.DataAnalysis-3.2</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Data\3.2\HeuristicLab.Data-3.2.csproj">
-      <Project>{F473D9AF-3F09-4296-9F28-3C65118DAFFA}</Project>
-      <Name>HeuristicLab.Data-3.2</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Modeling.Database.SQLServerCompact\3.2\HeuristicLab.Modeling.Database.SQLServerCompact-3.2.csproj">
@@ -128,17 +115,14 @@
       <Name>HeuristicLab.Modeling.Database-3.2</Name>
     </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Operators\3.2\HeuristicLab.Operators-3.2.csproj">
-      <Project>{A9983BA2-B3B2-475E-8E2C-62050B71D1C5}</Project>
-      <Name>HeuristicLab.Operators-3.2</Name>
-    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
       <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
       <Name>HeuristicLab.PluginInfrastructure</Name>
     </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.SparseMatrix\3.2\HeuristicLab.SparseMatrix-3.2.csproj">
+      <Project>{1263BB36-1F20-4960-A5CB-530746DBAD77}</Project>
+      <Name>HeuristicLab.SparseMatrix-3.2</Name>
+    </ProjectReference>
   </ItemGroup>
   <ItemGroup>
-    <EmbeddedResource Include="TableResultsView.resx">
-      <DependentUpon>TableResultsView.cs</DependentUpon>
-    </EmbeddedResource>
     <EmbeddedResource Include="ConsoleEditor.resx">
       <DependentUpon>ConsoleEditor.cs</DependentUpon>
Index: trunk/sources/HeuristicLab.CEDMA.Core/3.3/HeuristicLabCedmaCorePlugin.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Core/3.3/HeuristicLabCedmaCorePlugin.cs	(revision 2275)
+++ trunk/sources/HeuristicLab.CEDMA.Core/3.3/HeuristicLabCedmaCorePlugin.cs	(revision 2289)
@@ -28,10 +28,9 @@
   [ClassInfo(Name = "HeuristicLab.CEDMA.Core-3.3")]
   [PluginFile(Filename = "HeuristicLab.CEDMA.Core-3.3.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.DataAnalysis-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Operators-3.2")]
+  [Dependency(Dependency = "HeuristicLab.CEDMA.Charting-3.3")]
+  [Dependency(Dependency = "HeuristicLab.Core-3.2")]  
   [Dependency(Dependency = "HeuristicLab.Modeling.Database-3.2")]
   [Dependency(Dependency = "HeuristicLab.Modeling.Database.SQLServerCompact-3.2")]
+  [Dependency(Dependency = "HeuristicLab.SparseMatrix-3.2")]
   public class HeuristicLabCedmaCorePlugin : PluginBase {
   }
Index: trunk/sources/HeuristicLab.CEDMA.Core/3.3/IResultsViewFactory.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Core/3.3/IResultsViewFactory.cs	(revision 2275)
+++ 	(revision )
@@ -1,37 +1,0 @@
-﻿#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 System.Xml;
-using HeuristicLab.Operators;
-using System.Windows.Forms;
-using HeuristicLab.PluginInfrastructure;
-
-namespace HeuristicLab.CEDMA.Core {
-  public interface IResultsViewFactory {
-    string Name { get; }
-    IControl CreateView(Results results);
-  }
-}
Index: trunk/sources/HeuristicLab.CEDMA.Core/3.3/Results.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Core/3.3/Results.cs	(revision 2275)
+++ 	(revision )
@@ -1,145 +1,0 @@
-﻿#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 System.Collections;
-using System.Xml;
-using System.Runtime.Serialization;
-using System.IO;
-using HeuristicLab.PluginInfrastructure;
-using HeuristicLab.Data;
-using HeuristicLab.DataAnalysis;
-using System.Drawing;
-using HeuristicLab.Modeling.Database;
-
-namespace HeuristicLab.CEDMA.Core {
-  public class Results : ItemBase {
-    private string[] categoricalVariables = null;
-    public string[] CategoricalVariables {
-      get {
-        if (categoricalVariables == null) {
-          LoadModelAttributes();
-        }
-        return categoricalVariables;
-      }
-    }
-
-    private string[] ordinalVariables = null;
-    public string[] OrdinalVariables {
-      get {
-        if (ordinalVariables == null) {
-          LoadModelAttributes();
-        }
-        return ordinalVariables;
-      }
-    }
-
-    private string[] multiDimensionalOrdinalVariables;
-    public string[] MultiDimensionalOrdinalVariables {
-      get { return multiDimensionalOrdinalVariables; }
-    }
-
-    private string[] multiDimensionalCategoricalVariables = new string[] { "VariableImpacts: InputVariableName" };
-    public string[] MultiDimensionalCategoricalVariables {
-      get { return multiDimensionalCategoricalVariables; }
-    }
-
-    private IModelingDatabase database;
-
-    private Dictionary<string, Dictionary<object, double>> categoricalValueIndices = new Dictionary<string, Dictionary<object, double>>();
-
-    public Results(IModelingDatabase database) {
-      this.database = database;
-      multiDimensionalOrdinalVariables = database.GetAllResultsForInputVariables().Select(x => "VariableImpacts: " + x.Name).ToArray();
-    }
-
-    private List<ResultsEntry> entries = null;
-    private bool cached = false;
-    public IEnumerable<ResultsEntry> GetEntries() {
-      if (!cached)
-        return SelectRows();
-      return entries.AsEnumerable();
-    }
-
-    private IEnumerable<ResultsEntry> SelectRows() {
-      database.Connect();      
-      entries = new List<ResultsEntry>();
-      foreach (var model in database.GetAllModels()) {
-        ResultsEntry modelEntry = new ResultsEntry();
-        foreach (var modelResult in database.GetModelResults(model)) {
-          modelEntry.Set(modelResult.Result.Name, modelResult.Value);
-        }
-        modelEntry.Set("PersistedData", database.GetModelData(model));
-        modelEntry.Set("TargetVariable", model.TargetVariable.Name);
-        modelEntry.Set("Algorithm", model.Algorithm.Name);
-        Dictionary<HeuristicLab.Modeling.Database.IVariable, ResultsEntry> inputVariableResultsEntries =
-          new Dictionary<HeuristicLab.Modeling.Database.IVariable, ResultsEntry>();
-
-        foreach (IInputVariableResult inputVariableResult in database.GetInputVariableResults(model)) {
-          if (!inputVariableResultsEntries.ContainsKey(inputVariableResult.Variable)) {
-            inputVariableResultsEntries[inputVariableResult.Variable] = new ResultsEntry();
-            inputVariableResultsEntries[inputVariableResult.Variable].Set("InputVariableName", inputVariableResult.Variable.Name);
-          }
-          inputVariableResultsEntries[inputVariableResult.Variable].Set(inputVariableResult.Result.Name, inputVariableResult.Value);
-        }
-        modelEntry.Set("VariableImpacts", inputVariableResultsEntries.Values);
-        entries.Add(modelEntry);
-      }
-      database.Disconnect();
-      FireChanged();
-      cached = true;
-      return entries;
-    }
-
-    private bool IsAlmost(double x, double y) {
-      return Math.Abs(x - y) < 1.0E-12;
-    }
-
-    internal IEnumerable<string> SelectModelAttributes() {
-      return CategoricalVariables.Concat(OrdinalVariables);
-    }
-
-    private void LoadModelAttributes() {
-      ordinalVariables = database.GetAllResults().Select(r => r.Name).ToArray();
-      categoricalVariables = new string[] { "TargetVariable", "Algorithm" };
-    }
-
-    public double IndexOfCategoricalValue(string variable, object value) {
-      if (value == null) return double.NaN;
-      Dictionary<object, double> valueToIndexMap;
-      if (categoricalValueIndices.ContainsKey(variable)) {
-        valueToIndexMap = categoricalValueIndices[variable];
-      } else {
-        valueToIndexMap = new Dictionary<object, double>();
-        categoricalValueIndices[variable] = valueToIndexMap;
-      }
-      if (!valueToIndexMap.ContainsKey(value)) {
-        if (valueToIndexMap.Values.Count == 0) valueToIndexMap[value] = 1.0;
-        else valueToIndexMap[value] = 1.0 + valueToIndexMap.Values.Max();
-      }
-      return valueToIndexMap[value];
-    }
-  }
-}
Index: trunk/sources/HeuristicLab.CEDMA.Core/3.3/ResultsEntry.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Core/3.3/ResultsEntry.cs	(revision 2275)
+++ 	(revision )
@@ -1,80 +1,0 @@
-﻿#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 System.Collections;
-using System.Xml;
-using System.Runtime.Serialization;
-using System.IO;
-using HeuristicLab.PluginInfrastructure;
-
-namespace HeuristicLab.CEDMA.Core {
-  public class ResultsEntry {
-    private Dictionary<string, object> values = new Dictionary<string, object>();
-
-    private bool selected = false;
-    public bool Selected {
-      get { return selected; }
-      set { selected = value; }
-    }
-
-    private bool visible = true;
-    public bool Visible {
-      get { return visible; }
-      set { visible = value; }
-    }
-
-    private string uri;
-    public string Uri {
-      get { return uri; }
-      set { uri = value; }
-    }
-
-    public void Set(string name, object value) {
-      values.Add(name, value);
-    }
-
-    public object Get(string name) {
-      if (name == null || !values.ContainsKey(name)) return null;
-      return values[name];
-    }
-
-    public void ToggleSelected() {
-      selected = !selected;
-    }
-
-    public string GetToolTipText() {
-      StringBuilder b = new StringBuilder();
-      foreach (KeyValuePair<string, object> v in values) {
-        if (v.Value is string || v.Value is double || v.Value is int) {
-          string val = v.Value.ToString();
-          if (val.Length > 40) val = val.Substring(0, 38) + "...";
-          b.Append(v.Key).Append(" = ").Append(val).AppendLine();
-        }
-      }
-      return b.ToString();
-    }
-  }
-}
Index: trunk/sources/HeuristicLab.CEDMA.Core/3.3/TableResultsView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Core/3.3/TableResultsView.Designer.cs	(revision 2275)
+++ 	(revision )
@@ -1,61 +1,0 @@
-﻿namespace HeuristicLab.CEDMA.Core {
-  partial class TableResultsView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if(disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.dataGridView = new System.Windows.Forms.DataGridView();
-      ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).BeginInit();
-      this.SuspendLayout();
-      // 
-      // dataGridView
-      // 
-      this.dataGridView.AllowUserToAddRows = false;
-      this.dataGridView.AllowUserToDeleteRows = false;
-      this.dataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
-      this.dataGridView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.dataGridView.Location = new System.Drawing.Point(0, 0);
-      this.dataGridView.Name = "dataGridView";
-      this.dataGridView.ReadOnly = true;
-      this.dataGridView.Size = new System.Drawing.Size(450, 459);
-      this.dataGridView.TabIndex = 0;
-      this.dataGridView.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.dataGridView_MouseDoubleClick);
-      this.dataGridView.SelectionChanged += new System.EventHandler(this.dataGridView_SelectionChanged);
-      // 
-      // TableResultsView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.dataGridView);
-      this.Name = "TableResultsView";
-      this.Size = new System.Drawing.Size(450, 459);
-      ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).EndInit();
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.DataGridView dataGridView;
-
-  }
-}
Index: trunk/sources/HeuristicLab.CEDMA.Core/3.3/TableResultsView.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Core/3.3/TableResultsView.cs	(revision 2275)
+++ 	(revision )
@@ -1,90 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Linq;
-using System.Text;
-using System.Windows.Forms;
-using HeuristicLab.Core;
-using HeuristicLab.CEDMA.Core;
-using HeuristicLab.PluginInfrastructure;
-
-namespace HeuristicLab.CEDMA.Core {
-
-  public partial class TableResultsView : ViewBase {
-    private Results Results {
-      get { return (Results)Item; }
-      set { Item = value; }
-    }
-    private bool suppressEvents;
-    public TableResultsView(Results results) {
-      suppressEvents = false;
-      InitializeComponent();
-      Results = results;
-      results.Changed += new EventHandler(results_Changed);
-    }
-
-    void results_Changed(object sender, EventArgs e) {
-      if (suppressEvents) return;
-      UpdateControls();
-    }
-
-    protected override void UpdateControls() {
-      suppressEvents = true;
-      dataGridView.Rows.Clear();
-      dataGridView.Columns.Clear();
-      List<string> attributeNames = Results.SelectModelAttributes().ToList();
-      foreach (var attribute in attributeNames) {
-        dataGridView.Columns.Add(attribute, attribute);
-      }
-
-      var entries = Results.GetEntries();
-      foreach (var entry in entries) {
-        if (entry.Visible) {
-          int rowIndex = dataGridView.Rows.Add();
-          dataGridView.Rows[rowIndex].Tag = entry;
-          foreach (string attrName in attributeNames) {
-            dataGridView.Rows[rowIndex].Cells[attrName].Value = entry.Get(attrName);
-          }
-          if (entry.Selected) dataGridView.Rows[rowIndex].Selected = true;
-        }
-      }
-      dataGridView.Update();
-      suppressEvents = false;
-    }
-
-    private void dataGridView_SelectionChanged(object sender, EventArgs e) {
-      if (suppressEvents) return;
-      foreach (DataGridViewRow row in dataGridView.Rows) {
-        ((ResultsEntry)row.Tag).Selected = row.Selected;
-      }
-      suppressEvents = true;
-      Results.FireChanged();
-      suppressEvents = false;
-    }
-
-    private void dataGridView_MouseDoubleClick(object sender, MouseEventArgs e) {
-      if (e.Button == MouseButtons.Left && e.Clicks == 2) {
-        DataGridView.HitTestInfo hitInfo = dataGridView.HitTest(e.X, e.Y);
-        ResultsEntry entry = (ResultsEntry)dataGridView.Rows[hitInfo.RowIndex].Tag;        
-        var model = (IItem)PersistenceManager.RestoreFromGZip((byte[])entry.Get("PersistedData"));
-        PluginManager.ControlManager.ShowControl(model.CreateView());
-      }
-    }
-  }
-
-  public class TablesResultsViewFactory : IResultsViewFactory {
-    #region IResultsViewFactory Members
-
-    public string Name {
-      get { return "Table"; }
-    }
-
-    public IControl CreateView(Results results) {
-      return new TableResultsView(results);
-    }
-
-    #endregion
-  }
-}
Index: trunk/sources/HeuristicLab.CEDMA.Core/3.3/TableResultsView.resx
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Core/3.3/TableResultsView.resx	(revision 2275)
+++ 	(revision )
@@ -1,120 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-</root>
