Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationProblem.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationProblem.cs	(revision 7682)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationProblem.cs	(revision 7683)
@@ -33,5 +33,5 @@
   [Creatable("Problems")]
   public class ClassificationProblem : DataAnalysisProblem<IClassificationProblemData>, IClassificationProblem, IStorableContent,
-    IProblemInstanceConsumer<ClassificationData>, IProblemInstanceExporter<ClassificationData>, IProblemInstanceConsumer {
+    IProblemInstanceConsumer<ClassificationData>, IProblemInstanceExporter<ClassificationData>, IProblemInstanceConsumer, IProblemInstanceExporter {
     public string Filename { get; set; }
 
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionProblem.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionProblem.cs	(revision 7682)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionProblem.cs	(revision 7683)
@@ -33,5 +33,5 @@
   [Creatable("Problems")]
   public class RegressionProblem : DataAnalysisProblem<IRegressionProblemData>, IRegressionProblem, IStorableContent,
-    IProblemInstanceConsumer<RegressionData>, IProblemInstanceExporter<RegressionData>, IProblemInstanceConsumer {
+    IProblemInstanceConsumer<RegressionData>, IProblemInstanceExporter<RegressionData> {
     public string Filename { get; set; }
 
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Classification/3.4/HeuristicLab.Problems.Instances.Classification-3.4.csproj
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Classification/3.4/HeuristicLab.Problems.Instances.Classification-3.4.csproj	(revision 7682)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Classification/3.4/HeuristicLab.Problems.Instances.Classification-3.4.csproj	(revision 7683)
@@ -54,4 +54,5 @@
     <Compile Include="ArtificialClassificationDataDescriptor.cs" />
     <Compile Include="ArtificialClassificationInstanceProvider.cs" />
+    <Compile Include="Plugin.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="ClassificationInstanceProvider.cs" />
@@ -61,5 +62,5 @@
   </ItemGroup>
   <ItemGroup>
-    <None Include="Data\RealWorld.zip" />
+    <EmbeddedResource Include="Data\RealWorld.zip" />
     <None Include="Properties\AssemblyInfo.cs.frame" />
     <None Include="HeuristicLab.snk" />
Index: anches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Classification/3.4/Properties/AssemblyInfo.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Classification/3.4/Properties/AssemblyInfo.cs	(revision 7682)
+++ 	(revision )
@@ -1,36 +1,0 @@
-﻿using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("HeuristicLab.Problems.Instances.Classification-3.4")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("HeuristicLab.Problems.Instances.Classification-3.4")]
-[assembly: AssemblyCopyright("Copyright ©  2012")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("e76e5928-97e3-45b1-879c-fb203d64041d")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers 
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Properties/AssemblyInfo.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Properties/AssemblyInfo.cs	(revision 7682)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Properties/AssemblyInfo.cs	(revision 7683)
@@ -55,3 +55,3 @@
 // [assembly: AssemblyVersion("1.0.*")]
 [assembly: AssemblyVersion("3.4.0.0")]
-[assembly: AssemblyFileVersion("3.4.0.7667")]
+[assembly: AssemblyFileVersion("3.4.0.7682")]
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/HeuristicLab.Problems.Instances.Views-3.4.csproj
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/HeuristicLab.Problems.Instances.Views-3.4.csproj	(revision 7682)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/HeuristicLab.Problems.Instances.Views-3.4.csproj	(revision 7683)
@@ -54,4 +54,10 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="ProblemInstanceProviderView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ProblemInstanceProviderView.Designer.cs">
+      <DependentUpon>ProblemInstanceProviderView.cs</DependentUpon>
+    </Compile>
     <Compile Include="Plugin.cs" />
     <Compile Include="ProblemInstanceConsumerView.cs">
@@ -61,9 +67,9 @@
       <DependentUpon>ProblemInstanceConsumerView.cs</DependentUpon>
     </Compile>
-    <Compile Include="ProblemInstanceProviderView.cs">
+    <Compile Include="ProblemInstanceProviderViewGeneric.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="ProblemInstanceProviderView.Designer.cs">
-      <DependentUpon>ProblemInstanceProviderView.cs</DependentUpon>
+    <Compile Include="ProblemInstanceProviderViewGeneric.Designer.cs">
+      <DependentUpon>ProblemInstanceProviderViewGeneric.cs</DependentUpon>
     </Compile>
     <Compile Include="Properties\AssemblyInfo.cs" />
@@ -78,4 +84,9 @@
       <Name>HeuristicLab.Problems.Instances-3.3</Name>
     </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="ProblemInstanceConsumerView.resx">
+      <DependentUpon>ProblemInstanceConsumerView.cs</DependentUpon>
+    </EmbeddedResource>
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Index: anches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/Plugin.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/Plugin.cs	(revision 7682)
+++ 	(revision )
@@ -1,34 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2012 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 HeuristicLab.PluginInfrastructure;
-
-namespace HeuristicLab.Problems.Instances.Views {
-  [Plugin("HeuristicLab.Problems.Instances.Views", "3.4.0.7667")]
-  [PluginFile("HeuristicLab.Problems.Instances.Views-3.4.dll", PluginFileType.Assembly)]
-  [PluginDependency("HeuristicLab.Common", "3.3")]
-  [PluginDependency("HeuristicLab.Common.Resources", "3.3")]
-  [PluginDependency("HeuristicLab.MainForm", "3.3")]
-  [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]
-  [PluginDependency("HeuristicLab.Problems.Instances", "3.3")]
-  public class HeuristicLabProblemsInstancesPlugin : PluginBase {
-  }
-}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceConsumerView.Designer.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceConsumerView.Designer.cs	(revision 7682)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceConsumerView.Designer.cs	(revision 7683)
@@ -45,8 +45,10 @@
     /// </summary>
     private void InitializeComponent() {
+      this.components = new System.ComponentModel.Container();
       this.problemInstanceProviderComboBox = new System.Windows.Forms.ComboBox();
       this.libraryInfoButton = new System.Windows.Forms.Button();
       this.libraryLabel = new System.Windows.Forms.Label();
       this.problemInstanceProviderViewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
+      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
       this.SuspendLayout();
       // 
@@ -117,4 +119,5 @@
     private System.Windows.Forms.Label libraryLabel;
     private MainForm.WindowsForms.ViewHost problemInstanceProviderViewHost;
+    private System.Windows.Forms.ToolTip toolTip;
   }
 }
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceConsumerView.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceConsumerView.cs	(revision 7682)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceConsumerView.cs	(revision 7683)
@@ -74,10 +74,10 @@
       if (problemInstanceProviderComboBox.SelectedIndex >= 0) {
         problemInstanceProviderViewHost.Content = SelectedProvider;
-        dynamic view = problemInstanceProviderViewHost.ActiveView;
-        dynamic content = Content;
-        view.Consumer = content;
-        if (CheckForIProblemInstanceExporter(Content))
-          view.Exporter = content;
-        //SetTooltip();
+        ProblemInstanceProviderView view = (ProblemInstanceProviderView)problemInstanceProviderViewHost.ActiveView;
+        view.Consumer = Content;
+        if (CheckForIProblemInstanceExporter(Content)) {
+          view.Exporter = (IProblemInstanceExporter)Content;
+        }
+        SetTooltip();
       }
       SetEnabledStateOfControls();
@@ -85,7 +85,6 @@
 
     private bool CheckForIProblemInstanceExporter(IProblemInstanceConsumer content) {
-      // no check if IProblemInstanceConsumer<T> and IProblemInstanceExporter<T> have the same generic type T
       return Content.GetType().GetInterfaces()
-                    .Any(x => x.IsGenericType && x.GetGenericTypeDefinition().Equals(typeof(IProblemInstanceExporter<>)));
+                    .Any(x => x.Equals(typeof(IProblemInstanceExporter)));
     }
 
@@ -120,28 +119,28 @@
     }
 
-    //protected void SetTooltip() {
-    //  toolTip.SetToolTip(problemInstanceProviderComboBox, GetProviderToolTip());
-    //  if (SelectedProvider.WebLink != null)
-    //    toolTip.SetToolTip(libraryInfoButton, "Browse to " + SelectedProvider.WebLink.ToString());
-    //  else toolTip.SetToolTip(libraryInfoButton, "Library does not have a web reference.");
-    //}
+    private void SetTooltip() {
+      toolTip.SetToolTip(problemInstanceProviderComboBox, GetProviderToolTip());
+      if (SelectedProvider.WebLink != null)
+        toolTip.SetToolTip(libraryInfoButton, "Browse to " + SelectedProvider.WebLink.ToString());
+      else toolTip.SetToolTip(libraryInfoButton, "Library does not have a web reference.");
+    }
 
-    //protected string GetProviderToolTip() {
-    //  var provider = SelectedProvider;
-    //  string toolTip = provider.Name;
+    private string GetProviderToolTip() {
+      var provider = SelectedProvider;
+      string toolTip = provider.Name;
 
-    //  if (!String.IsNullOrEmpty(provider.ReferencePublication)) {
-    //    toolTip = toolTip
-    //        + Environment.NewLine + Environment.NewLine
-    //        + provider.ReferencePublication;
-    //  }
-    //  if (provider.WebLink != null) {
-    //    toolTip = toolTip
-    //        + Environment.NewLine
-    //        + provider.WebLink.ToString();
-    //  }
+      if (!String.IsNullOrEmpty(provider.ReferencePublication)) {
+        toolTip = toolTip
+            + Environment.NewLine + Environment.NewLine
+            + provider.ReferencePublication;
+      }
+      if (provider.WebLink != null) {
+        toolTip = toolTip
+            + Environment.NewLine
+            + provider.WebLink.ToString();
+      }
 
-    //  return toolTip;
-    //}
+      return toolTip;
+    }
   }
 }
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceProviderView.Designer.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceProviderView.Designer.cs	(revision 7682)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceProviderView.Designer.cs	(revision 7683)
@@ -21,5 +21,5 @@
 
 namespace HeuristicLab.Problems.Instances.Views {
-  partial class ProblemInstanceProviderView<T> {
+  partial class ProblemInstanceProviderView {
     /// <summary> 
     /// Required designer variable.
@@ -45,108 +45,5 @@
     /// </summary>
     private void InitializeComponent() {
-      this.components = new System.ComponentModel.Container();
-      this.loadButton = new System.Windows.Forms.Button();
-      this.instanceLabel = new System.Windows.Forms.Label();
-      this.instancesComboBox = new System.Windows.Forms.ComboBox();
-      this.importButton = new System.Windows.Forms.Button();
-      this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
-      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
-      this.exportButton = new System.Windows.Forms.Button();
-      this.saveFileDialog = new System.Windows.Forms.SaveFileDialog();
-      this.problemInstanceProviderSplitContainer = new System.Windows.Forms.SplitContainer();
-      ((System.ComponentModel.ISupportInitialize)(this.problemInstanceProviderSplitContainer)).BeginInit();
-      this.problemInstanceProviderSplitContainer.Panel1.SuspendLayout();
-      this.problemInstanceProviderSplitContainer.Panel2.SuspendLayout();
-      this.problemInstanceProviderSplitContainer.SuspendLayout();
       this.SuspendLayout();
-      // 
-      // loadButton
-      // 
-      this.loadButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.loadButton.Location = new System.Drawing.Point(604, 0);
-      this.loadButton.Name = "loadButton";
-      this.loadButton.Size = new System.Drawing.Size(26, 23);
-      this.loadButton.TabIndex = 6;
-      this.loadButton.Text = "Load";
-      this.loadButton.UseVisualStyleBackColor = true;
-      this.loadButton.Click += new System.EventHandler(this.loadButton_Click);
-      // 
-      // instanceLabel
-      // 
-      this.instanceLabel.AutoSize = true;
-      this.instanceLabel.Location = new System.Drawing.Point(3, 4);
-      this.instanceLabel.Name = "instanceLabel";
-      this.instanceLabel.Size = new System.Drawing.Size(51, 13);
-      this.instanceLabel.TabIndex = 4;
-      this.instanceLabel.Text = "Instance:";
-      // 
-      // instancesComboBox
-      // 
-      this.instancesComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
-      this.instancesComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
-      this.instancesComboBox.FormattingEnabled = true;
-      this.instancesComboBox.Location = new System.Drawing.Point(60, 1);
-      this.instancesComboBox.Name = "instancesComboBox";
-      this.instancesComboBox.Size = new System.Drawing.Size(538, 21);
-      this.instancesComboBox.TabIndex = 7;
-      this.instancesComboBox.DataSourceChanged += new System.EventHandler(this.comboBox_DataSourceChanged);
-      // 
-      // importButton
-      // 
-      this.importButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.importButton.Location = new System.Drawing.Point(636, 0);
-      this.importButton.Name = "importButton";
-      this.importButton.Size = new System.Drawing.Size(26, 23);
-      this.importButton.TabIndex = 6;
-      this.importButton.Text = "Import";
-      this.importButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
-      this.importButton.UseVisualStyleBackColor = true;
-      this.importButton.Click += new System.EventHandler(this.importButton_Click);
-      // 
-      // openFileDialog
-      // 
-      this.openFileDialog.Filter = "All files|*.*";
-      // 
-      // exportButton
-      // 
-      this.exportButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.exportButton.Location = new System.Drawing.Point(-1, 0);
-      this.exportButton.Name = "exportButton";
-      this.exportButton.Size = new System.Drawing.Size(26, 23);
-      this.exportButton.TabIndex = 8;
-      this.exportButton.Text = "Export";
-      this.exportButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
-      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 RegressionInstance...";
-      // 
-      // problemInstanceProviderSplitContainer
-      // 
-      this.problemInstanceProviderSplitContainer.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
-            | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
-      this.problemInstanceProviderSplitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
-      this.problemInstanceProviderSplitContainer.IsSplitterFixed = true;
-      this.problemInstanceProviderSplitContainer.Location = new System.Drawing.Point(0, -1);
-      this.problemInstanceProviderSplitContainer.Name = "problemInstanceProviderSplitContainer";
-      // 
-      // problemInstanceProviderSplitContainer.Panel1
-      // 
-      this.problemInstanceProviderSplitContainer.Panel1.Controls.Add(this.instanceLabel);
-      this.problemInstanceProviderSplitContainer.Panel1.Controls.Add(this.instancesComboBox);
-      this.problemInstanceProviderSplitContainer.Panel1.Controls.Add(this.importButton);
-      this.problemInstanceProviderSplitContainer.Panel1.Controls.Add(this.loadButton);
-      // 
-      // problemInstanceProviderSplitContainer.Panel2
-      // 
-      this.problemInstanceProviderSplitContainer.Panel2.Controls.Add(this.exportButton);
-      this.problemInstanceProviderSplitContainer.Size = new System.Drawing.Size(694, 22);
-      this.problemInstanceProviderSplitContainer.SplitterDistance = 665;
-      this.problemInstanceProviderSplitContainer.TabIndex = 9;
       // 
       // ProblemInstanceProviderView
@@ -154,12 +51,6 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.problemInstanceProviderSplitContainer);
       this.Name = "ProblemInstanceProviderView";
       this.Size = new System.Drawing.Size(694, 21);
-      this.problemInstanceProviderSplitContainer.Panel1.ResumeLayout(false);
-      this.problemInstanceProviderSplitContainer.Panel1.PerformLayout();
-      this.problemInstanceProviderSplitContainer.Panel2.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.problemInstanceProviderSplitContainer)).EndInit();
-      this.problemInstanceProviderSplitContainer.ResumeLayout(false);
       this.ResumeLayout(false);
 
@@ -168,13 +59,4 @@
     #endregion
 
-    private System.Windows.Forms.OpenFileDialog openFileDialog;
-    private System.Windows.Forms.ToolTip toolTip;
-    protected System.Windows.Forms.Button loadButton;
-    protected System.Windows.Forms.Label instanceLabel;
-    protected System.Windows.Forms.ComboBox instancesComboBox;
-    protected System.Windows.Forms.Button importButton;
-    protected System.Windows.Forms.Button exportButton;
-    private System.Windows.Forms.SaveFileDialog saveFileDialog;
-    private System.Windows.Forms.SplitContainer problemInstanceProviderSplitContainer;
 
   }
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceProviderView.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceProviderView.cs	(revision 7682)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceProviderView.cs	(revision 7683)
@@ -20,111 +20,24 @@
 #endregion
 
-using System;
-using System.IO;
-using System.Linq;
 using System.Windows.Forms;
-using HeuristicLab.Common.Resources;
 using HeuristicLab.MainForm;
 using HeuristicLab.MainForm.WindowsForms;
-using HeuristicLab.PluginInfrastructure;
 
 namespace HeuristicLab.Problems.Instances.Views {
   [View("ProblemInstanceProviderView")]
-  [Content(typeof(IProblemInstanceProvider<>), IsDefaultView = true)]
-  public partial class ProblemInstanceProviderView<T> : AsynchronousContentView {
+  [Content(typeof(IProblemInstanceProvider), IsDefaultView = true)]
+  public abstract partial class ProblemInstanceProviderView : AsynchronousContentView {
 
-    public new IProblemInstanceProvider<T> Content {
-      get { return (IProblemInstanceProvider<T>)base.Content; }
+    public new IProblemInstanceProvider Content {
+      get { return (IProblemInstanceProvider)base.Content; }
       set { base.Content = value; }
     }
 
-    public IProblemInstanceConsumer<T> Consumer { get; set; }
+    public abstract IProblemInstanceConsumer Consumer { set; }
 
-    public IProblemInstanceExporter<T> Exporter { get; set; }
+    public abstract IProblemInstanceExporter Exporter { set; }
 
     public ProblemInstanceProviderView() {
       InitializeComponent();
-      importButton.Text = String.Empty;
-      importButton.Image = VSImageLibrary.Open;
-      toolTip.SetToolTip(importButton, "Import a " + GetProblemType() + " instance from file.");
-      exportButton.Text = String.Empty;
-      exportButton.Image = VSImageLibrary.Save;
-      toolTip.SetToolTip(exportButton, "Export a " + GetProblemType() + " instance to a file.");
-      loadButton.Text = String.Empty;
-      loadButton.Image = VSImageLibrary.RefreshDocument;
-      toolTip.SetToolTip(loadButton, "Load the selected instance.");
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      if (Content == null) {
-        instancesComboBox.DataSource = null;
-      } else {
-        instancesComboBox.DisplayMember = "Name";
-        instancesComboBox.DataSource = Content.GetDataDescriptors().ToList();
-      }
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-      instancesComboBox.Enabled = !ReadOnly && !Locked && Content != null && Consumer != null;
-      loadButton.Enabled = !ReadOnly && !Locked && Content != null && Consumer != null;
-      exportButton.Enabled = !ReadOnly && !Locked && Content != null && Exporter != null;
-      problemInstanceProviderSplitContainer.Panel2Collapsed = !exportButton.Enabled;
-    }
-
-    protected virtual void loadButton_Click(object sender, EventArgs e) {
-      var descriptor = (IDataDescriptor)instancesComboBox.SelectedItem;
-      var instance = Content.LoadData(descriptor);
-      try {
-        Consumer.Load(instance);
-      }
-      catch (Exception ex) {
-        MessageBox.Show(String.Format("This problem does not support loading the instance {0}: {1}", descriptor.Name, Environment.NewLine + ex.Message), "Cannot load instance");
-      }
-    }
-
-    protected virtual void importButton_Click(object sender, EventArgs e) {
-      openFileDialog.FileName = GetProblemType() + " instance";
-      if (openFileDialog.ShowDialog() == DialogResult.OK) {
-        T instance = default(T);
-        try {
-          instance = Content.LoadData(openFileDialog.FileName);
-        }
-        catch (Exception ex) {
-          MessageBox.Show(String.Format("There was an error parsing the file: {0}", Environment.NewLine + ex.Message), "Error while parsing", MessageBoxButtons.OK, MessageBoxIcon.Error);
-          return;
-        }
-        try {
-          Consumer.Load(instance);
-        }
-        catch (Exception ex) {
-          MessageBox.Show(String.Format("This problem does not support loading the instance {0}: {1}", Path.GetFileName(openFileDialog.FileName), Environment.NewLine + ex.Message), "Cannot load instance");
-        }
-      }
-    }
-
-    protected virtual void exportButton_Click(object sender, EventArgs e) {
-      if (saveFileDialog.ShowDialog(this) == DialogResult.OK) {
-        try {
-          Content.SaveData(Exporter.Export(), saveFileDialog.FileName);
-        }
-        catch (Exception ex) {
-          ErrorHandling.ShowErrorDialog(this, ex);
-        }
-      }
-    }
-
-    private void comboBox_DataSourceChanged(object sender, EventArgs e) {
-      var comboBox = (ComboBox)sender;
-      if (comboBox.DataSource == null)
-        comboBox.Items.Clear();
-    }
-
-    protected virtual string GetProblemType() {
-      string dataTypeName = typeof(T).Name.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries).Last();
-      if (dataTypeName.EndsWith("Data"))
-        return dataTypeName.Substring(0, dataTypeName.Length - "Data".Length);
-      else return dataTypeName;
     }
   }
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceProviderViewGeneric.Designer.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceProviderViewGeneric.Designer.cs	(revision 7683)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceProviderViewGeneric.Designer.cs	(revision 7683)
@@ -0,0 +1,181 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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
+
+namespace HeuristicLab.Problems.Instances.Views {
+  partial class ProblemInstanceProviderView<T> {
+    /// <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.components = new System.ComponentModel.Container();
+      this.loadButton = new System.Windows.Forms.Button();
+      this.instanceLabel = new System.Windows.Forms.Label();
+      this.instancesComboBox = new System.Windows.Forms.ComboBox();
+      this.importButton = new System.Windows.Forms.Button();
+      this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
+      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
+      this.exportButton = new System.Windows.Forms.Button();
+      this.saveFileDialog = new System.Windows.Forms.SaveFileDialog();
+      this.problemInstanceProviderSplitContainer = new System.Windows.Forms.SplitContainer();
+      ((System.ComponentModel.ISupportInitialize)(this.problemInstanceProviderSplitContainer)).BeginInit();
+      this.problemInstanceProviderSplitContainer.Panel1.SuspendLayout();
+      this.problemInstanceProviderSplitContainer.Panel2.SuspendLayout();
+      this.problemInstanceProviderSplitContainer.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // loadButton
+      // 
+      this.loadButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.loadButton.Location = new System.Drawing.Point(604, 0);
+      this.loadButton.Name = "loadButton";
+      this.loadButton.Size = new System.Drawing.Size(26, 23);
+      this.loadButton.TabIndex = 6;
+      this.loadButton.Text = "Load";
+      this.loadButton.UseVisualStyleBackColor = true;
+      this.loadButton.Click += new System.EventHandler(this.loadButton_Click);
+      // 
+      // instanceLabel
+      // 
+      this.instanceLabel.AutoSize = true;
+      this.instanceLabel.Location = new System.Drawing.Point(3, 4);
+      this.instanceLabel.Name = "instanceLabel";
+      this.instanceLabel.Size = new System.Drawing.Size(51, 13);
+      this.instanceLabel.TabIndex = 4;
+      this.instanceLabel.Text = "Instance:";
+      // 
+      // instancesComboBox
+      // 
+      this.instancesComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.instancesComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+      this.instancesComboBox.FormattingEnabled = true;
+      this.instancesComboBox.Location = new System.Drawing.Point(60, 1);
+      this.instancesComboBox.Name = "instancesComboBox";
+      this.instancesComboBox.Size = new System.Drawing.Size(538, 21);
+      this.instancesComboBox.TabIndex = 7;
+      this.instancesComboBox.DataSourceChanged += new System.EventHandler(this.comboBox_DataSourceChanged);
+      // 
+      // importButton
+      // 
+      this.importButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.importButton.Location = new System.Drawing.Point(636, 0);
+      this.importButton.Name = "importButton";
+      this.importButton.Size = new System.Drawing.Size(26, 23);
+      this.importButton.TabIndex = 6;
+      this.importButton.Text = "Import";
+      this.importButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
+      this.importButton.UseVisualStyleBackColor = true;
+      this.importButton.Click += new System.EventHandler(this.importButton_Click);
+      // 
+      // openFileDialog
+      // 
+      this.openFileDialog.Filter = "All files|*.*";
+      // 
+      // exportButton
+      // 
+      this.exportButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.exportButton.Location = new System.Drawing.Point(-1, 0);
+      this.exportButton.Name = "exportButton";
+      this.exportButton.Size = new System.Drawing.Size(26, 23);
+      this.exportButton.TabIndex = 8;
+      this.exportButton.Text = "Export";
+      this.exportButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
+      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 RegressionInstance...";
+      // 
+      // problemInstanceProviderSplitContainer
+      // 
+      this.problemInstanceProviderSplitContainer.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.problemInstanceProviderSplitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
+      this.problemInstanceProviderSplitContainer.IsSplitterFixed = true;
+      this.problemInstanceProviderSplitContainer.Location = new System.Drawing.Point(0, -1);
+      this.problemInstanceProviderSplitContainer.Name = "problemInstanceProviderSplitContainer";
+      // 
+      // problemInstanceProviderSplitContainer.Panel1
+      // 
+      this.problemInstanceProviderSplitContainer.Panel1.Controls.Add(this.instanceLabel);
+      this.problemInstanceProviderSplitContainer.Panel1.Controls.Add(this.instancesComboBox);
+      this.problemInstanceProviderSplitContainer.Panel1.Controls.Add(this.importButton);
+      this.problemInstanceProviderSplitContainer.Panel1.Controls.Add(this.loadButton);
+      // 
+      // problemInstanceProviderSplitContainer.Panel2
+      // 
+      this.problemInstanceProviderSplitContainer.Panel2.Controls.Add(this.exportButton);
+      this.problemInstanceProviderSplitContainer.Size = new System.Drawing.Size(694, 22);
+      this.problemInstanceProviderSplitContainer.SplitterDistance = 665;
+      this.problemInstanceProviderSplitContainer.TabIndex = 9;
+      // 
+      // ProblemInstanceProviderView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.problemInstanceProviderSplitContainer);
+      this.Name = "ProblemInstanceProviderView";
+      this.Size = new System.Drawing.Size(694, 21);
+      this.problemInstanceProviderSplitContainer.Panel1.ResumeLayout(false);
+      this.problemInstanceProviderSplitContainer.Panel1.PerformLayout();
+      this.problemInstanceProviderSplitContainer.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.problemInstanceProviderSplitContainer)).EndInit();
+      this.problemInstanceProviderSplitContainer.ResumeLayout(false);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.OpenFileDialog openFileDialog;
+    private System.Windows.Forms.ToolTip toolTip;
+    protected System.Windows.Forms.Button loadButton;
+    protected System.Windows.Forms.Label instanceLabel;
+    protected System.Windows.Forms.ComboBox instancesComboBox;
+    protected System.Windows.Forms.Button importButton;
+    protected System.Windows.Forms.Button exportButton;
+    private System.Windows.Forms.SaveFileDialog saveFileDialog;
+    private System.Windows.Forms.SplitContainer problemInstanceProviderSplitContainer;
+
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceProviderViewGeneric.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceProviderViewGeneric.cs	(revision 7683)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceProviderViewGeneric.cs	(revision 7683)
@@ -0,0 +1,133 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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.IO;
+using System.Linq;
+using System.Windows.Forms;
+using HeuristicLab.Common.Resources;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Problems.Instances.Views {
+  [View("ProblemInstanceProviderView")]
+  [Content(typeof(IProblemInstanceProvider<>), IsDefaultView = true)]
+  public partial class ProblemInstanceProviderView<T> : ProblemInstanceProviderView {
+
+    public new IProblemInstanceProvider<T> Content {
+      get { return (IProblemInstanceProvider<T>)base.Content; }
+      set { base.Content = value; }
+    }
+
+    private IProblemInstanceConsumer<T> consumer;
+    public override IProblemInstanceConsumer Consumer { set { consumer = (IProblemInstanceConsumer<T>)value; } }
+
+    private IProblemInstanceExporter<T> exporter;
+    public override IProblemInstanceExporter Exporter { set { exporter = (IProblemInstanceExporter<T>)value; } }
+
+    public ProblemInstanceProviderView() {
+      InitializeComponent();
+      importButton.Text = String.Empty;
+      importButton.Image = VSImageLibrary.Open;
+      toolTip.SetToolTip(importButton, "Import a " + GetProblemType() + " instance from file.");
+      exportButton.Text = String.Empty;
+      exportButton.Image = VSImageLibrary.Save;
+      toolTip.SetToolTip(exportButton, "Export a " + GetProblemType() + " instance to a file.");
+      loadButton.Text = String.Empty;
+      loadButton.Image = VSImageLibrary.RefreshDocument;
+      toolTip.SetToolTip(loadButton, "Load the selected instance.");
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null) {
+        instancesComboBox.DataSource = null;
+      } else {
+        instancesComboBox.DisplayMember = "Name";
+        instancesComboBox.DataSource = Content.GetDataDescriptors().ToList();
+      }
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      instancesComboBox.Enabled = !ReadOnly && !Locked && Content != null && consumer != null;
+      loadButton.Enabled = !ReadOnly && !Locked && Content != null && consumer != null;
+      exportButton.Enabled = !ReadOnly && !Locked && Content != null && exporter != null;
+      problemInstanceProviderSplitContainer.Panel2Collapsed = !exportButton.Enabled;
+    }
+
+    protected virtual void loadButton_Click(object sender, EventArgs e) {
+      var descriptor = (IDataDescriptor)instancesComboBox.SelectedItem;
+      var instance = Content.LoadData(descriptor);
+      try {
+        consumer.Load(instance);
+      }
+      catch (Exception ex) {
+        MessageBox.Show(String.Format("This problem does not support loading the instance {0}: {1}", descriptor.Name, Environment.NewLine + ex.Message), "Cannot load instance");
+      }
+    }
+
+    protected virtual void importButton_Click(object sender, EventArgs e) {
+      openFileDialog.FileName = GetProblemType() + " instance";
+      if (openFileDialog.ShowDialog() == DialogResult.OK) {
+        T instance = default(T);
+        try {
+          instance = Content.LoadData(openFileDialog.FileName);
+        }
+        catch (Exception ex) {
+          MessageBox.Show(String.Format("There was an error parsing the file: {0}", Environment.NewLine + ex.Message), "Error while parsing", MessageBoxButtons.OK, MessageBoxIcon.Error);
+          return;
+        }
+        try {
+          consumer.Load(instance);
+        }
+        catch (Exception ex) {
+          MessageBox.Show(String.Format("This problem does not support loading the instance {0}: {1}", Path.GetFileName(openFileDialog.FileName), Environment.NewLine + ex.Message), "Cannot load instance");
+        }
+      }
+    }
+
+    protected virtual void exportButton_Click(object sender, EventArgs e) {
+      if (saveFileDialog.ShowDialog(this) == DialogResult.OK) {
+        try {
+          Content.SaveData(exporter.Export(), saveFileDialog.FileName);
+        }
+        catch (Exception ex) {
+          ErrorHandling.ShowErrorDialog(this, ex);
+        }
+      }
+    }
+
+    private void comboBox_DataSourceChanged(object sender, EventArgs e) {
+      var comboBox = (ComboBox)sender;
+      if (comboBox.DataSource == null)
+        comboBox.Items.Clear();
+    }
+
+    protected virtual string GetProblemType() {
+      string dataTypeName = typeof(T).Name.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries).Last();
+      if (dataTypeName.EndsWith("Data"))
+        return dataTypeName.Substring(0, dataTypeName.Length - "Data".Length);
+      else return dataTypeName;
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/Properties/AssemblyInfo.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/Properties/AssemblyInfo.cs	(revision 7682)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/Properties/AssemblyInfo.cs	(revision 7683)
@@ -53,3 +53,3 @@
 // by using the '*' as shown below:
 [assembly: AssemblyVersion("3.4.0.0")]
-[assembly: AssemblyFileVersion("3.4.2.7667")]
+[assembly: AssemblyFileVersion("3.4.2.7682")]
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances/3.3/IProblemInstanceConsumer.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances/3.3/IProblemInstanceConsumer.cs	(revision 7682)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances/3.3/IProblemInstanceConsumer.cs	(revision 7683)
@@ -25,5 +25,5 @@
   public interface IProblemInstanceConsumer : IContent { }
 
-  public interface IProblemInstanceConsumer<TData> {
+  public interface IProblemInstanceConsumer<TData> : IProblemInstanceConsumer {
     /// <summary>
     /// Loads the given instance data.
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances/3.3/IProblemInstanceExporter.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances/3.3/IProblemInstanceExporter.cs	(revision 7682)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances/3.3/IProblemInstanceExporter.cs	(revision 7683)
@@ -21,5 +21,7 @@
 
 namespace HeuristicLab.Problems.Instances {
-  public interface IProblemInstanceExporter<TData> {
+  public interface IProblemInstanceExporter { }
+
+  public interface IProblemInstanceExporter<TData> : IProblemInstanceExporter {
     TData Export();
   }
