Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Views/3.4/DataAnalysisProblemView.Designer.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Views/3.4/DataAnalysisProblemView.Designer.cs	(revision 7308)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Views/3.4/DataAnalysisProblemView.Designer.cs	(revision 7309)
@@ -47,7 +47,8 @@
       this.ImportButton = new System.Windows.Forms.Button();
       this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
-      this.BenchmarkComboBox = new System.Windows.Forms.ComboBox();
       this.LoadButton = new System.Windows.Forms.Button();
       this.BenchmarkTableLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
+      this.ExportButton = new System.Windows.Forms.Button();
+      this.saveFileDialog = new System.Windows.Forms.SaveFileDialog();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
       this.BenchmarkTableLayoutPanel.SuspendLayout();
@@ -56,6 +57,6 @@
       // parameterCollectionView
       // 
-      this.parameterCollectionView.Location = new System.Drawing.Point(3, 80);
-      this.parameterCollectionView.Size = new System.Drawing.Size(490, 254);
+      this.parameterCollectionView.Location = new System.Drawing.Point(3, 56);
+      this.parameterCollectionView.Size = new System.Drawing.Size(490, 278);
       this.parameterCollectionView.TabIndex = 4;
       // 
@@ -74,9 +75,9 @@
       this.ImportButton.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
-      this.ImportButton.Location = new System.Drawing.Point(3, 24);
+      this.ImportButton.Location = new System.Drawing.Point(3, 3);
       this.ImportButton.Name = "ImportButton";
-      this.ImportButton.Size = new System.Drawing.Size(487, 23);
+      this.ImportButton.Size = new System.Drawing.Size(158, 21);
       this.ImportButton.TabIndex = 3;
-      this.ImportButton.Text = "Import from CSV file";
+      this.ImportButton.Text = "Import ProblemData from CSV file";
       this.ImportButton.UseVisualStyleBackColor = true;
       this.ImportButton.Click += new System.EventHandler(this.ImportButton_Click);
@@ -85,16 +86,5 @@
       // 
       this.openFileDialog.Filter = "CSV files|*.csv|Text files|*.txt|All files|*.*";
-      this.openFileDialog.Title = "Import data...";
-      // 
-      // BenchmarkComboBox
-      // 
-      this.BenchmarkComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
-      this.BenchmarkComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
-      this.BenchmarkComboBox.FormattingEnabled = true;
-      this.BenchmarkComboBox.Location = new System.Drawing.Point(3, 3);
-      this.BenchmarkComboBox.Name = "BenchmarkComboBox";
-      this.BenchmarkComboBox.Size = new System.Drawing.Size(240, 21);
-      this.BenchmarkComboBox.TabIndex = 5;
+      this.openFileDialog.Title = "Import ProblemData...";
       // 
       // LoadButton
@@ -102,12 +92,12 @@
       this.LoadButton.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
-      this.LoadButton.Location = new System.Drawing.Point(249, 2);
+      this.LoadButton.Location = new System.Drawing.Point(167, 2);
       this.LoadButton.Margin = new System.Windows.Forms.Padding(3, 2, 3, 3);
       this.LoadButton.Name = "LoadButton";
-      this.LoadButton.Size = new System.Drawing.Size(241, 23);
+      this.LoadButton.Size = new System.Drawing.Size(158, 23);
       this.LoadButton.TabIndex = 6;
-      this.LoadButton.Text = "Load";
+      this.LoadButton.Text = "Generate Benchmark ProblemData";
       this.LoadButton.UseVisualStyleBackColor = true;
-      this.LoadButton.Click += new System.EventHandler(this.loadButton_Click);
+      this.LoadButton.Click += new System.EventHandler(this.LoadButton_Click);
       // 
       // BenchmarkTableLayoutPanel
@@ -115,15 +105,34 @@
       this.BenchmarkTableLayoutPanel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
-      this.BenchmarkTableLayoutPanel.ColumnCount = 2;
-      this.BenchmarkTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
-      this.BenchmarkTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
-      this.BenchmarkTableLayoutPanel.Controls.Add(this.BenchmarkComboBox, 0, 0);
+      this.BenchmarkTableLayoutPanel.ColumnCount = 3;
+      this.BenchmarkTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
+      this.BenchmarkTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
+      this.BenchmarkTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
       this.BenchmarkTableLayoutPanel.Controls.Add(this.LoadButton, 1, 0);
-      this.BenchmarkTableLayoutPanel.Location = new System.Drawing.Point(0, 51);
+      this.BenchmarkTableLayoutPanel.Controls.Add(this.ImportButton, 0, 0);
+      this.BenchmarkTableLayoutPanel.Controls.Add(this.ExportButton, 2, 0);
+      this.BenchmarkTableLayoutPanel.Location = new System.Drawing.Point(0, 26);
       this.BenchmarkTableLayoutPanel.Name = "BenchmarkTableLayoutPanel";
       this.BenchmarkTableLayoutPanel.RowCount = 1;
-      this.BenchmarkTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
+      this.BenchmarkTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
       this.BenchmarkTableLayoutPanel.Size = new System.Drawing.Size(493, 28);
       this.BenchmarkTableLayoutPanel.TabIndex = 7;
+      // 
+      // ExportButton
+      // 
+      this.ExportButton.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.ExportButton.Location = new System.Drawing.Point(331, 3);
+      this.ExportButton.Name = "ExportButton";
+      this.ExportButton.Size = new System.Drawing.Size(159, 22);
+      this.ExportButton.TabIndex = 7;
+      this.ExportButton.Text = "Export ProblemData to CSV file";
+      this.ExportButton.UseVisualStyleBackColor = true;
+      this.ExportButton.Click += new System.EventHandler(this.ExportButton_Click);
+      // 
+      // saveFileDialog
+      // 
+      this.saveFileDialog.Filter = "CSV files|*.csv|All files|*.*";
+      this.saveFileDialog.Title = "Save ProblemData...";
       // 
       // DataAnalysisProblemView
@@ -131,10 +140,8 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.ImportButton);
       this.Controls.Add(this.BenchmarkTableLayoutPanel);
       this.Name = "DataAnalysisProblemView";
       this.Size = new System.Drawing.Size(493, 334);
       this.Controls.SetChildIndex(this.BenchmarkTableLayoutPanel, 0);
-      this.Controls.SetChildIndex(this.ImportButton, 0);
       this.Controls.SetChildIndex(this.parameterCollectionView, 0);
       this.Controls.SetChildIndex(this.infoLabel, 0);
@@ -152,7 +159,8 @@
     private System.Windows.Forms.Button ImportButton;
     private System.Windows.Forms.OpenFileDialog openFileDialog;
-    private System.Windows.Forms.ComboBox BenchmarkComboBox;
     private System.Windows.Forms.Button LoadButton;
     private System.Windows.Forms.TableLayoutPanel BenchmarkTableLayoutPanel;
+    private System.Windows.Forms.Button ExportButton;
+    private System.Windows.Forms.SaveFileDialog saveFileDialog;
   }
 }
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Views/3.4/DataAnalysisProblemView.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Views/3.4/DataAnalysisProblemView.cs	(revision 7308)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Views/3.4/DataAnalysisProblemView.cs	(revision 7309)
@@ -21,8 +21,7 @@
 
 using System;
-using System.Collections.Generic;
-using System.Linq;
+using System.IO;
+using System.Text;
 using System.Windows.Forms;
-using HeuristicLab.Common;
 using HeuristicLab.MainForm;
 using HeuristicLab.Optimization.Views;
@@ -33,4 +32,7 @@
   [Content(typeof(IDataAnalysisProblem), true)]
   public partial class DataAnalysisProblemView : ProblemView {
+
+    private BenchmarkGeneratorDialog problemDataSelectorDialog;
+
     public DataAnalysisProblemView() {
       InitializeComponent();
@@ -46,5 +48,5 @@
       ImportButton.Enabled = !Locked && !ReadOnly && Content != null;
       LoadButton.Enabled = !Locked && !ReadOnly && Content != null;
-      BenchmarkComboBox.Enabled = !Locked && !ReadOnly && Content != null;
+      ExportButton.Enabled = !Locked && !ReadOnly && Content != null;
     }
 
@@ -60,25 +62,49 @@
     }
 
-    private void loadButton_Click(object sender, EventArgs e) {
-      if (BenchmarkComboBox.SelectedItem != null)
-        Content.ProblemData = ((IDataAnalysisBenchmarkProblemDataGenerator)BenchmarkComboBox.SelectedItem).GenerateProblemData();
+    private void LoadButton_Click(object sender, EventArgs e) {
+      if (problemDataSelectorDialog == null) {
+        problemDataSelectorDialog = new BenchmarkGeneratorDialog(Content);
+      }
+      if (problemDataSelectorDialog.ShowDialog(this) == DialogResult.OK) {
+        try {
+          Content.ProblemData = problemDataSelectorDialog.ProblemData;
+        }
+        catch (Exception ex) {
+          ErrorHandling.ShowErrorDialog(this, ex);
+        }
+      }
     }
 
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      BenchmarkComboBox.Items.Clear();
-      BenchmarkComboBox.Items.AddRange(GetBenchmarkProblemDataGenerators().OrderBy(b => b.Name, new NaturalStringComparer()).ToArray());
-      if (BenchmarkComboBox.Items.Count > 0)
-        BenchmarkComboBox.SelectedIndex = 0;
+    private void ExportButton_Click(object sender, EventArgs e) {
+      if (saveFileDialog.ShowDialog(this) == DialogResult.OK) {
+        try {
+          ExportProblemData(Content.ProblemData.Dataset, saveFileDialog.FileName);
+        }
+        catch (Exception ex) {
+          ErrorHandling.ShowErrorDialog(this, ex);
+        }
+      }
     }
 
-    protected IEnumerable<IDataAnalysisBenchmarkProblemDataGenerator> GetBenchmarkProblemDataGenerators() {
-      if (Content is IRegressionProblem)
-        return ApplicationManager.Manager.GetInstances<IRegressionBenchmarkProblemDataGenerator>();
-      else if (Content is IClassificationProblem)
-        return ApplicationManager.Manager.GetInstances<IClassificationBenchmarkProblemDataGenerator>();
-      else if (Content is IClusteringProblem)
-        return ApplicationManager.Manager.GetInstances<IClusteringBenchmarkProblemDataGenerator>();
-      return new List<IDataAnalysisBenchmarkProblemDataGenerator>();
+    private void ExportProblemData(Dataset dataset, string file) {
+      StringBuilder strBuilder = new StringBuilder();
+
+      foreach (var variable in dataset.VariableNames) {
+        strBuilder.Append(variable + ";");
+      }
+      strBuilder.Remove(strBuilder.Length - 1, 1);
+      strBuilder.AppendLine();
+
+      for (int i = 0; i < dataset.Rows; i++) {
+        for (int j = 0; j < dataset.Columns; j++) {
+          strBuilder.Append(dataset.GetValue(i, j) + ";");
+        }
+        strBuilder.Remove(strBuilder.Length - 1, 1);
+        strBuilder.AppendLine();
+      }
+
+      using (StreamWriter writer = new StreamWriter(file)) {
+        writer.Write(strBuilder);
+      }
     }
   }
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Views/3.4/DataAnalysisProblemView.resx
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Views/3.4/DataAnalysisProblemView.resx	(revision 7308)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Views/3.4/DataAnalysisProblemView.resx	(revision 7309)
@@ -121,4 +121,7 @@
     <value>107, 17</value>
   </metadata>
+  <metadata name="errorProvider.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>107, 17</value>
+  </metadata>
   <metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
@@ -127,3 +130,6 @@
     <value>230, 17</value>
   </metadata>
+  <metadata name="saveFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>363, 17</value>
+  </metadata>
 </root>
