Index: /branches/TestFunctionInstances/HeuristicLab.Problems.TestFunctions.Views/3.3/HeuristicLab.Problems.TestFunctions.Views-3.3.csproj
===================================================================
--- /branches/TestFunctionInstances/HeuristicLab.Problems.TestFunctions.Views/3.3/HeuristicLab.Problems.TestFunctions.Views-3.3.csproj	(revision 9876)
+++ /branches/TestFunctionInstances/HeuristicLab.Problems.TestFunctions.Views/3.3/HeuristicLab.Problems.TestFunctions.Views-3.3.csproj	(revision 9876)
@@ -0,0 +1,227 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{6AE0E1F5-D3FF-43A3-90E1-2435E7493FB5}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Problems.TestFunctions.Views</RootNamespace>
+    <AssemblyName>HeuristicLab.Problems.TestFunctions.Views-3.3</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <TargetFrameworkProfile>
+    </TargetFrameworkProfile>
+    <FileAlignment>512</FileAlignment>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>$(SolutionDir)\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>$(SolutionDir)\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>$(SolutionDir)\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>$(SolutionDir)\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>$(SolutionDir)\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>$(SolutionDir)\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Plugin.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="SingleObjectiveTestFunctionSolutionView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="SingleObjectiveTestFunctionSolutionView.Designer.cs">
+      <DependentUpon>SingleObjectiveTestFunctionSolutionView.cs</DependentUpon>
+    </Compile>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Plugin.cs.frame" />
+    <None Include="Properties\AssemblyInfo.cs.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Collections\3.3\HeuristicLab.Collections-3.3.csproj">
+      <Project>{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}</Project>
+      <Name>HeuristicLab.Collections-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Common\3.3\HeuristicLab.Common-3.3.csproj">
+      <Project>{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}</Project>
+      <Name>HeuristicLab.Common-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Core.Views\3.3\HeuristicLab.Core.Views-3.3.csproj">
+      <Project>{E226881D-315F-423D-B419-A766FE0D8685}</Project>
+      <Name>HeuristicLab.Core.Views-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
+      <Project>{C36BD924-A541-4A00-AFA8-41701378DDC5}</Project>
+      <Name>HeuristicLab.Core-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Data\3.3\HeuristicLab.Data-3.3.csproj">
+      <Project>{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}</Project>
+      <Name>HeuristicLab.Data-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Encodings.RealVectorEncoding\3.3\HeuristicLab.Encodings.RealVectorEncoding-3.3.csproj">
+      <Project>{BB6D334A-4BB6-4674-9883-31A6EBB32CAB}</Project>
+      <Name>HeuristicLab.Encodings.RealVectorEncoding-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.MainForm.WindowsForms\3.3\HeuristicLab.MainForm.WindowsForms-3.3.csproj">
+      <Project>{AB687BBE-1BFE-476B-906D-44237135431D}</Project>
+      <Name>HeuristicLab.MainForm.WindowsForms-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.MainForm\3.3\HeuristicLab.MainForm-3.3.csproj">
+      <Project>{3BD61258-31DA-4B09-89C0-4F71FEF5F05A}</Project>
+      <Name>HeuristicLab.MainForm-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Optimization.Views\3.3\HeuristicLab.Optimization.Views-3.3.csproj">
+      <Project>{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}</Project>
+      <Name>HeuristicLab.Optimization.Views-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj">
+      <Project>{14AB8D24-25BC-400C-A846-4627AA945192}</Project>
+      <Name>HeuristicLab.Optimization-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\3.3\HeuristicLab.PluginInfrastructure-3.3.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.TestFunctions\3.3\HeuristicLab.Problems.TestFunctions-3.3.csproj">
+      <Project>{88B9B0E3-344E-4196-82A3-0F9732506FE8}</Project>
+      <Name>HeuristicLab.Problems.TestFunctions-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+   <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd
+</PreBuildEvent>
+<PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+export ProjectDir=$(ProjectDir)
+export SolutionDir=$(SolutionDir)
+
+$SolutionDir/PreBuildEvent.sh
+</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: /branches/TestFunctionInstances/HeuristicLab.Problems.TestFunctions.Views/3.3/Plugin.cs.frame
===================================================================
--- /branches/TestFunctionInstances/HeuristicLab.Problems.TestFunctions.Views/3.3/Plugin.cs.frame	(revision 9876)
+++ /branches/TestFunctionInstances/HeuristicLab.Problems.TestFunctions.Views/3.3/Plugin.cs.frame	(revision 9876)
@@ -0,0 +1,41 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2013 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.TestFunctions.Views {
+  /// <summary>
+  /// Plugin class for HeuristicLab.Problems.TestFunctions.Views plugin
+  /// </summary>
+  [Plugin("HeuristicLab.Problems.TestFunctions.Views", "3.3.8.$WCREV$")]
+  [PluginFile("HeuristicLab.Problems.TestFunctions.Views-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Collections", "3.3")]
+  [PluginDependency("HeuristicLab.Common", "3.3")]
+  [PluginDependency("HeuristicLab.Core", "3.3")]
+  [PluginDependency("HeuristicLab.Core.Views", "3.3")]
+  [PluginDependency("HeuristicLab.Data", "3.3")]
+  [PluginDependency("HeuristicLab.Encodings.RealVectorEncoding", "3.3")]
+  [PluginDependency("HeuristicLab.MainForm", "3.3")]
+  [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]
+  [PluginDependency("HeuristicLab.Problems.TestFunctions", "3.3")]
+  public class HeuristicLabProblemsTestFunctionsViewsPlugin : PluginBase {
+  }
+}
Index: /branches/TestFunctionInstances/HeuristicLab.Problems.TestFunctions.Views/3.3/Properties/AssemblyInfo.cs.frame
===================================================================
--- /branches/TestFunctionInstances/HeuristicLab.Problems.TestFunctions.Views/3.3/Properties/AssemblyInfo.cs.frame	(revision 9876)
+++ /branches/TestFunctionInstances/HeuristicLab.Problems.TestFunctions.Views/3.3/Properties/AssemblyInfo.cs.frame	(revision 9876)
@@ -0,0 +1,55 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2013 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.Reflection;
+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.TestFunctions.Views")]
+[assembly: AssemblyDescription("Views of the HeuristicLab Test Functions classes")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2013 HEAL")]
+[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("7a942220-980c-456a-a656-2e05dfa1d9f3")]
+
+// 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 Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("3.3.0.0")]
+[assembly: AssemblyFileVersion("3.3.8.$WCREV$")]
Index: /branches/TestFunctionInstances/HeuristicLab.Problems.TestFunctions.Views/3.3/SingleObjectiveTestFunctionSolutionView.Designer.cs
===================================================================
--- /branches/TestFunctionInstances/HeuristicLab.Problems.TestFunctions.Views/3.3/SingleObjectiveTestFunctionSolutionView.Designer.cs	(revision 9876)
+++ /branches/TestFunctionInstances/HeuristicLab.Problems.TestFunctions.Views/3.3/SingleObjectiveTestFunctionSolutionView.Designer.cs	(revision 9876)
@@ -0,0 +1,235 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2013 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.TestFunctions.Views {
+  partial class SingleObjectiveTestFunctionSolutionView {
+    /// <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 Windows Form 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.qualityView = new HeuristicLab.MainForm.WindowsForms.ViewHost();
+      this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+      this.groupBox3 = new System.Windows.Forms.GroupBox();
+      this.groupBox4 = new System.Windows.Forms.GroupBox();
+      this.realVectorView = new HeuristicLab.MainForm.WindowsForms.ViewHost();
+      this.tabControl1 = new HeuristicLab.MainForm.WindowsForms.DragOverTabControl();
+      this.textualTabPage = new System.Windows.Forms.TabPage();
+      this.graphicalTabPage = new System.Windows.Forms.TabPage();
+      this.pictureBox = new System.Windows.Forms.PictureBox();
+      this.label1 = new System.Windows.Forms.Label();
+      this.splitContainer1.Panel1.SuspendLayout();
+      this.splitContainer1.Panel2.SuspendLayout();
+      this.splitContainer1.SuspendLayout();
+      this.groupBox3.SuspendLayout();
+      this.groupBox4.SuspendLayout();
+      this.tabControl1.SuspendLayout();
+      this.textualTabPage.SuspendLayout();
+      this.graphicalTabPage.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit();
+      this.SuspendLayout();
+      // 
+      // qualityView
+      // 
+      this.qualityView.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.qualityView.Content = null;
+      this.qualityView.Location = new System.Drawing.Point(6, 19);
+      this.qualityView.Name = "qualityView";
+      this.qualityView.ReadOnly = false;
+      this.qualityView.Size = new System.Drawing.Size(479, 32);
+      this.qualityView.TabIndex = 0;
+      this.qualityView.ViewType = null;
+      // 
+      // splitContainer1
+      // 
+      this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
+      this.splitContainer1.IsSplitterFixed = true;
+      this.splitContainer1.Location = new System.Drawing.Point(3, 3);
+      this.splitContainer1.Name = "splitContainer1";
+      this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
+      // 
+      // splitContainer1.Panel1
+      // 
+      this.splitContainer1.Panel1.Controls.Add(this.groupBox3);
+      this.splitContainer1.Panel1MinSize = 30;
+      // 
+      // splitContainer1.Panel2
+      // 
+      this.splitContainer1.Panel2.Controls.Add(this.groupBox4);
+      this.splitContainer1.Panel2MinSize = 30;
+      this.splitContainer1.Size = new System.Drawing.Size(491, 304);
+      this.splitContainer1.SplitterDistance = 60;
+      this.splitContainer1.TabIndex = 0;
+      // 
+      // groupBox3
+      // 
+      this.groupBox3.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.groupBox3.Controls.Add(this.qualityView);
+      this.groupBox3.Location = new System.Drawing.Point(0, 0);
+      this.groupBox3.Name = "groupBox3";
+      this.groupBox3.Size = new System.Drawing.Size(491, 57);
+      this.groupBox3.TabIndex = 0;
+      this.groupBox3.TabStop = false;
+      this.groupBox3.Text = "Quality";
+      // 
+      // groupBox4
+      // 
+      this.groupBox4.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.groupBox4.Controls.Add(this.realVectorView);
+      this.groupBox4.Location = new System.Drawing.Point(0, 3);
+      this.groupBox4.Name = "groupBox4";
+      this.groupBox4.Size = new System.Drawing.Size(491, 237);
+      this.groupBox4.TabIndex = 0;
+      this.groupBox4.TabStop = false;
+      this.groupBox4.Text = "Real vector";
+      // 
+      // realVectorView
+      // 
+      this.realVectorView.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.realVectorView.Content = null;
+      this.realVectorView.Location = new System.Drawing.Point(6, 19);
+      this.realVectorView.Name = "realVectorView";
+      this.realVectorView.ReadOnly = false;
+      this.realVectorView.Size = new System.Drawing.Size(479, 212);
+      this.realVectorView.TabIndex = 0;
+      this.realVectorView.ViewType = null;
+      // 
+      // tabControl1
+      // 
+      this.tabControl1.Controls.Add(this.textualTabPage);
+      this.tabControl1.Controls.Add(this.graphicalTabPage);
+      this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.tabControl1.Location = new System.Drawing.Point(0, 0);
+      this.tabControl1.Name = "tabControl1";
+      this.tabControl1.SelectedIndex = 0;
+      this.tabControl1.Size = new System.Drawing.Size(505, 336);
+      this.tabControl1.TabIndex = 0;
+      // 
+      // textualTabPage
+      // 
+      this.textualTabPage.Controls.Add(this.splitContainer1);
+      this.textualTabPage.Location = new System.Drawing.Point(4, 22);
+      this.textualTabPage.Name = "textualTabPage";
+      this.textualTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.textualTabPage.Size = new System.Drawing.Size(497, 310);
+      this.textualTabPage.TabIndex = 0;
+      this.textualTabPage.Text = "Textual";
+      this.textualTabPage.UseVisualStyleBackColor = true;
+      // 
+      // graphicalTabPage
+      // 
+      this.graphicalTabPage.Controls.Add(this.pictureBox);
+      this.graphicalTabPage.Controls.Add(this.label1);
+      this.graphicalTabPage.Location = new System.Drawing.Point(4, 22);
+      this.graphicalTabPage.Name = "graphicalTabPage";
+      this.graphicalTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.graphicalTabPage.Size = new System.Drawing.Size(497, 310);
+      this.graphicalTabPage.TabIndex = 1;
+      this.graphicalTabPage.Text = "Graphical";
+      this.graphicalTabPage.UseVisualStyleBackColor = true;
+      // 
+      // pictureBox
+      // 
+      this.pictureBox.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.pictureBox.BackColor = System.Drawing.Color.White;
+      this.pictureBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+      this.pictureBox.Location = new System.Drawing.Point(6, 6);
+      this.pictureBox.Name = "pictureBox";
+      this.pictureBox.Size = new System.Drawing.Size(485, 298);
+      this.pictureBox.TabIndex = 1;
+      this.pictureBox.TabStop = false;
+      // 
+      // label1
+      // 
+      this.label1.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.label1.AutoSize = true;
+      this.label1.Location = new System.Drawing.Point(118, 131);
+      this.label1.Name = "label1";
+      this.label1.Size = new System.Drawing.Size(253, 13);
+      this.label1.TabIndex = 0;
+      this.label1.Text = "The graphical view is only available for 2 dimensions";
+      // 
+      // SingleObjectiveTestFunctionSolutionView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.Controls.Add(this.tabControl1);
+      this.Name = "SingleObjectiveTestFunctionSolutionView";
+      this.Size = new System.Drawing.Size(505, 336);
+      this.splitContainer1.Panel1.ResumeLayout(false);
+      this.splitContainer1.Panel2.ResumeLayout(false);
+      this.splitContainer1.ResumeLayout(false);
+      this.groupBox3.ResumeLayout(false);
+      this.groupBox4.ResumeLayout(false);
+      this.tabControl1.ResumeLayout(false);
+      this.textualTabPage.ResumeLayout(false);
+      this.graphicalTabPage.ResumeLayout(false);
+      this.graphicalTabPage.PerformLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).EndInit();
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.SplitContainer splitContainer1;
+    private System.Windows.Forms.GroupBox groupBox4;
+    private HeuristicLab.MainForm.WindowsForms.ViewHost qualityView;
+    private System.Windows.Forms.GroupBox groupBox3;
+    private HeuristicLab.MainForm.WindowsForms.ViewHost realVectorView;
+    private HeuristicLab.MainForm.WindowsForms.DragOverTabControl tabControl1;
+    private System.Windows.Forms.TabPage textualTabPage;
+    private System.Windows.Forms.TabPage graphicalTabPage;
+    private System.Windows.Forms.Label label1;
+    private System.Windows.Forms.PictureBox pictureBox;
+
+
+
+  }
+}
Index: /branches/TestFunctionInstances/HeuristicLab.Problems.TestFunctions.Views/3.3/SingleObjectiveTestFunctionSolutionView.cs
===================================================================
--- /branches/TestFunctionInstances/HeuristicLab.Problems.TestFunctions.Views/3.3/SingleObjectiveTestFunctionSolutionView.cs	(revision 9876)
+++ /branches/TestFunctionInstances/HeuristicLab.Problems.TestFunctions.Views/3.3/SingleObjectiveTestFunctionSolutionView.cs	(revision 9876)
@@ -0,0 +1,213 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2013 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.Drawing;
+using System.Windows.Forms;
+using HeuristicLab.Core.Views;
+using HeuristicLab.Data;
+using HeuristicLab.Encodings.RealVectorEncoding;
+using HeuristicLab.MainForm;
+
+namespace HeuristicLab.Problems.TestFunctions.Views {
+  /// <summary>
+  /// A view for a SingleObjectiveTestFunctions solution.
+  /// </summary>
+  [View("Single Objective Test Functions View")]
+  [Content(typeof(SingleObjectiveTestFunctionSolution), true)]
+  public partial class SingleObjectiveTestFunctionSolutionView : ItemView {
+    private Bitmap backgroundImage;
+
+    public new SingleObjectiveTestFunctionSolution Content {
+      get { return (SingleObjectiveTestFunctionSolution)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public SingleObjectiveTestFunctionSolutionView() {
+      InitializeComponent();
+      pictureBox.SizeChanged += new EventHandler(pictureBox_SizeChanged);
+      qualityView.ReadOnly = true;
+      realVectorView.ReadOnly = true;
+      backgroundImage = null;
+    }
+
+    protected override void DeregisterContentEvents() {
+      Content.BestKnownRealVectorChanged -= new EventHandler(Content_BestKnownRealVectorChanged);
+      Content.BestRealVectorChanged -= new EventHandler(Content_BestRealVectorChanged);
+      Content.QualityChanged -= new EventHandler(Content_QualityChanged);
+      Content.PopulationChanged -= new EventHandler(Content_PopulationChanged);
+      Content.BoundsChanged -= new EventHandler(Content_BoundsChanged);
+      base.DeregisterContentEvents();
+    }
+    protected override void RegisterContentEvents() {
+      base.RegisterContentEvents();
+      Content.BestKnownRealVectorChanged += new EventHandler(Content_BestKnownRealVectorChanged);
+      Content.BestRealVectorChanged += new EventHandler(Content_BestRealVectorChanged);
+      Content.QualityChanged += new EventHandler(Content_QualityChanged);
+      Content.PopulationChanged += new EventHandler(Content_PopulationChanged);
+      Content.BoundsChanged += new EventHandler(Content_BoundsChanged);
+    }
+
+    private void Content_BestKnownRealVectorChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_BestKnownRealVectorChanged), sender, e);
+      else {
+        GenerateImage();
+      }
+    }
+
+    private void Content_BestRealVectorChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_BestRealVectorChanged), sender, e);
+      else {
+        realVectorView.Content = Content.BestRealVector;
+        pictureBox.Visible = Content.BestRealVector.Length == 2;
+        GenerateImage();
+      }
+    }
+
+    private void Content_QualityChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_QualityChanged), sender, e);
+      else {
+        qualityView.Content = Content.BestQuality;
+        pictureBox.Visible = Content.BestRealVector.Length == 2;
+        GenerateImage();
+      }
+    }
+
+    private void Content_PopulationChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_PopulationChanged), sender, e);
+      else {
+        GenerateImage();
+      }
+    }
+
+    private void Content_BoundsChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_BoundsChanged), sender, e);
+      else
+        GenerateImage();
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null) {
+        qualityView.Content = null;
+        realVectorView.Content = null;
+      } else {
+        qualityView.Content = Content.BestQuality;
+        realVectorView.Content = Content.BestRealVector;
+
+        pictureBox.Visible = Content.BestRealVector.Length == 2;
+        GenerateImage();
+      }
+    }
+
+    protected override void OnPaint(PaintEventArgs e) {
+      GenerateImage();
+      base.OnPaint(e);
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      qualityView.Enabled = Content != null;
+      realVectorView.Enabled = Content != null;
+    }
+
+    private void GenerateImage() {
+      if (pictureBox.Enabled && pictureBox.Width > 0 && pictureBox.Height > 0) {
+        if (Content == null) {
+          pictureBox.Image = null;
+        } else {
+          if (backgroundImage == null) {
+            GenerateBackgroundImage();
+            pictureBox.Image = backgroundImage;
+          }
+          pictureBox.Refresh();
+          DoubleMatrix bounds = Content.Bounds;
+          if (bounds == null) bounds = Content.Evaluator.Bounds;
+          double xMin = bounds[0, 0], xMax = bounds[0, 1], yMin = bounds[1 % bounds.Rows, 0], yMax = bounds[1 % bounds.Rows, 1];
+          double xStep = backgroundImage.Width / (xMax - xMin), yStep = backgroundImage.Height / (yMax - yMin);
+          using (Graphics graphics = pictureBox.CreateGraphics()) {
+            if (Content.BestKnownRealVector != null) {
+              Pen cross = new Pen(Brushes.Red, 2.0f);
+              float a = (float)((Content.BestKnownRealVector[0] - xMin) * xStep);
+              float b = (float)((Content.BestKnownRealVector[1] - yMin) * yStep);
+              graphics.DrawLine(cross, a - 4, b - 4, a + 4, b + 4);
+              graphics.DrawLine(cross, a - 4, b + 4, a + 4, b - 4);
+            }
+            if (Content.Population != null) {
+              foreach (RealVector vector in Content.Population)
+                graphics.FillEllipse(Brushes.Blue, (float)((vector[0] - xMin) * xStep - 4), (float)((vector[1] - yMin) * yStep - 4), 8.0f, 8.0f);
+            }
+            if (Content.BestRealVector != null) {
+              graphics.FillEllipse(Brushes.Green, (float)((Content.BestRealVector[0] - xMin) * xStep - 5), (float)((Content.BestRealVector[1] - yMin) * yStep - 5), 10.0f, 10.0f);
+            }
+          }
+        }
+      }
+    }
+
+    private void GenerateBackgroundImage() {
+      if (backgroundImage != null)
+        backgroundImage.Dispose();
+      backgroundImage = new Bitmap(pictureBox.Width, pictureBox.Height);
+      DoubleMatrix bounds = Content.Bounds;
+      if (bounds == null) bounds = Content.Evaluator.Bounds;
+      double xMin = bounds[0, 0], xMax = bounds[0, 1], yMin = bounds[1 % bounds.Rows, 0], yMax = bounds[1 % bounds.Rows, 1];
+      double xStep = (xMax - xMin) / backgroundImage.Width, yStep = (yMax - yMin) / backgroundImage.Height;
+      double minPoint = Double.MaxValue, maxPoint = Double.MinValue;
+      DoubleMatrix points = new DoubleMatrix(backgroundImage.Height, backgroundImage.Width);
+      for (int i = 0; i < backgroundImage.Width; i++)
+        for (int j = 0; j < backgroundImage.Height; j++) {
+          points[j, i] = Content.Evaluator.Evaluate2D(xMin + i * xStep, yMin + j * yStep);
+          if (points[j, i] < minPoint) minPoint = points[j, i];
+          if (points[j, i] > maxPoint) maxPoint = points[j, i];
+        }
+      double grayStep;
+      if (maxPoint == minPoint) grayStep = -1;
+      else grayStep = 100 / (maxPoint - minPoint);
+
+      for (int i = 0; i < backgroundImage.Width; i++)
+        for (int j = 0; j < backgroundImage.Height; j++) {
+          int luminosity = (grayStep > 0) ? (int)Math.Round((points[j, i] - minPoint) * grayStep) : (128);
+          backgroundImage.SetPixel(i, j, Color.FromArgb(255 - luminosity, 255 - luminosity, 255 - luminosity));
+        }
+    }
+
+    private void pictureBox_SizeChanged(object sender, EventArgs e) {
+      if (backgroundImage != null) backgroundImage.Dispose();
+      backgroundImage = null;
+      pictureBox.Image = null;
+      GenerateImage();
+    }
+
+    protected override void OnClosing(FormClosingEventArgs e) {
+      pictureBox.Enabled = false;
+      if (backgroundImage != null) backgroundImage.Dispose();
+      backgroundImage = null;
+      pictureBox.Image = null;
+      base.OnClosing(e);
+    }
+  }
+}
