Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.App/JsonInterfaceForm.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.App/JsonInterfaceForm.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.App/JsonInterfaceForm.cs	(revision 17828)
@@ -37,4 +37,5 @@
       this.configOpenButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Open;
       this.outputOpenButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Save;
+      this.Icon = HeuristicLab.Common.Resources.HeuristicLab.Icon;
     }
 
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.App/Runner.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.App/Runner.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.App/Runner.cs	(revision 17828)
@@ -33,5 +33,7 @@
         WriteResultsToFile(outputFile, optimizer, configuredResultItem);
       } catch (Exception e) {
+        Console.Error.WriteLine($"{e.Message} \n\n\n\n {e.StackTrace}");
         File.WriteAllText(outputFile, e.Message + "\n\n\n\n" + e.StackTrace);
+        Environment.Exit(-1);
       }
     }
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/FileManager.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/FileManager.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/FileManager.cs	(revision 17828)
@@ -26,6 +26,10 @@
       IStorableContent content = view.Content as IStorableContent;
       if (!view.Locked && content != null) {
-        exportDialog.Content = content;
-        exportDialog.ShowDialog();
+        if(content is IOptimizer) {
+          exportDialog.Content = content;
+          exportDialog.ShowDialog();
+        } else {
+          MessageBox.Show("This cannot item cannot be converted.", "Unsupported Item", MessageBoxButtons.OK);
+        }
       }
     }
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/HeuristicLab.JsonInterface.OptimizerIntegration.csproj
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/HeuristicLab.JsonInterface.OptimizerIntegration.csproj	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/HeuristicLab.JsonInterface.OptimizerIntegration.csproj	(revision 17828)
@@ -95,4 +95,16 @@
       <DependentUpon>Resources.resx</DependentUpon>
     </Compile>
+    <Compile Include="Shared\ArrayJsonItemControl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Shared\ArrayJsonItemControl.Designer.cs">
+      <DependentUpon>ArrayJsonItemControl.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Shared\CompoundControl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Shared\CompoundControl.Designer.cs">
+      <DependentUpon>CompoundControl.cs</DependentUpon>
+    </Compile>
     <Compile Include="Shared\JsonItemBaseControl.cs">
       <SubType>UserControl</SubType>
@@ -101,4 +113,10 @@
       <DependentUpon>JsonItemBaseControl.cs</DependentUpon>
     </Compile>
+    <Compile Include="Shared\MatrixJsonItemControl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Shared\MatrixJsonItemControl.Designer.cs">
+      <DependentUpon>MatrixJsonItemControl.cs</DependentUpon>
+    </Compile>
     <Compile Include="Shared\NumericRangeControl.cs">
       <SubType>UserControl</SubType>
@@ -108,4 +126,5 @@
     </Compile>
     <Compile Include="ViewModels\ArrayValueVM.cs" />
+    <Compile Include="ViewModels\ConcreteRestrictedJsonItemVM.cs" />
     <Compile Include="ViewModels\DoubleVMs.cs" />
     <Compile Include="ViewModels\IntVMs.cs" />
@@ -132,50 +151,8 @@
     </Compile>
     <Compile Include="FileManager.cs" />
-    <Compile Include="Views\JsonItemConcreteItemArrayControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Views\JsonItemConcreteItemArrayControl.Designer.cs">
-      <DependentUpon>JsonItemConcreteItemArrayControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Views\JsonItemMultiValueControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Views\JsonItemMultiValueControl.Designer.cs">
-      <DependentUpon>JsonItemMultiValueControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Views\JsonItemBoolControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Views\JsonItemBoolControl.Designer.cs">
-      <DependentUpon>JsonItemBoolControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Views\JsonItemRangeControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Views\JsonItemRangeControl.Designer.cs">
-      <DependentUpon>JsonItemRangeControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Views\JsonItemValueControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Views\JsonItemValueControl.Designer.cs">
-      <DependentUpon>JsonItemValueControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Views\JsonItemValidValuesControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Views\JsonItemValidValuesControl.Designer.cs">
-      <DependentUpon>JsonItemValidValuesControl.cs</DependentUpon>
-    </Compile>
     <Compile Include="MenuItems\ImportJsonTemplateMenuItem.cs" />
     <Compile Include="MenuItems\ExportJsonTemplateMenuItem.cs" />
     <Compile Include="Plugin.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Views\LookupJsonItemControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Views\LookupJsonItemControl.Designer.cs">
-      <DependentUpon>LookupJsonItemControl.cs</DependentUpon>
-    </Compile>
     <Compile Include="Views\ValueLookupJsonItemControl.cs">
       <SubType>UserControl</SubType>
@@ -232,7 +209,16 @@
       <LastGenOutput>Resources.Designer.cs</LastGenOutput>
     </EmbeddedResource>
+    <EmbeddedResource Include="Shared\ArrayJsonItemControl.resx">
+      <DependentUpon>ArrayJsonItemControl.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Shared\CompoundControl.resx">
+      <DependentUpon>CompoundControl.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="Shared\JsonItemBaseControl.resx">
       <DependentUpon>JsonItemBaseControl.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="Shared\MatrixJsonItemControl.resx">
+      <DependentUpon>MatrixJsonItemControl.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="Shared\NumericRangeControl.resx">
       <DependentUpon>NumericRangeControl.cs</DependentUpon>
@@ -243,25 +229,4 @@
     <EmbeddedResource Include="Views\ExportJsonDialog.resx">
       <DependentUpon>ExportJsonDialog.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Views\JsonItemConcreteItemArrayControl.resx">
-      <DependentUpon>JsonItemConcreteItemArrayControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Views\JsonItemMultiValueControl.resx">
-      <DependentUpon>JsonItemMultiValueControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Views\JsonItemBoolControl.resx">
-      <DependentUpon>JsonItemBoolControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Views\JsonItemRangeControl.resx">
-      <DependentUpon>JsonItemRangeControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Views\JsonItemValueControl.resx">
-      <DependentUpon>JsonItemValueControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Views\JsonItemValidValuesControl.resx">
-      <DependentUpon>JsonItemValidValuesControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Views\LookupJsonItemControl.resx">
-      <DependentUpon>LookupJsonItemControl.cs</DependentUpon>
     </EmbeddedResource>
     <EmbeddedResource Include="Views\ValueLookupJsonItemControl.resx">
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/ArrayJsonItemControl.Designer.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/ArrayJsonItemControl.Designer.cs	(revision 17828)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/ArrayJsonItemControl.Designer.cs	(revision 17828)
@@ -0,0 +1,111 @@
+﻿
+namespace HeuristicLab.JsonInterface.OptimizerIntegration {
+  partial class ArrayJsonItemControl {
+    /// <summary> 
+    /// Erforderliche Designervariable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Verwendete Ressourcen bereinigen.
+    /// </summary>
+    /// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Vom Komponenten-Designer generierter Code
+
+    /// <summary> 
+    /// Erforderliche Methode für die Designerunterstützung. 
+    /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
+    /// </summary>
+    private void InitializeComponent() {
+      this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
+      this.groupBox2 = new System.Windows.Forms.GroupBox();
+      this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
+      this.checkBoxResizable = new System.Windows.Forms.CheckBox();
+      this.tableLayoutPanel1.SuspendLayout();
+      this.groupBox2.SuspendLayout();
+      this.tableLayoutPanel2.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // tableLayoutPanel1
+      // 
+      this.tableLayoutPanel1.ColumnCount = 1;
+      this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
+      this.tableLayoutPanel1.Controls.Add(this.groupBox2, 0, 0);
+      this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
+      this.tableLayoutPanel1.Name = "tableLayoutPanel1";
+      this.tableLayoutPanel1.RowCount = 2;
+      this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 41F));
+      this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+      this.tableLayoutPanel1.Size = new System.Drawing.Size(526, 41);
+      this.tableLayoutPanel1.TabIndex = 24;
+      // 
+      // groupBox2
+      // 
+      this.groupBox2.Controls.Add(this.tableLayoutPanel2);
+      this.groupBox2.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.groupBox2.Location = new System.Drawing.Point(0, 0);
+      this.groupBox2.Margin = new System.Windows.Forms.Padding(0);
+      this.groupBox2.Name = "groupBox2";
+      this.groupBox2.Size = new System.Drawing.Size(526, 41);
+      this.groupBox2.TabIndex = 19;
+      this.groupBox2.TabStop = false;
+      this.groupBox2.Text = "Array Properties";
+      // 
+      // tableLayoutPanel2
+      // 
+      this.tableLayoutPanel2.ColumnCount = 1;
+      this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
+      this.tableLayoutPanel2.Controls.Add(this.checkBoxResizable, 0, 0);
+      this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.tableLayoutPanel2.Location = new System.Drawing.Point(3, 16);
+      this.tableLayoutPanel2.Margin = new System.Windows.Forms.Padding(0);
+      this.tableLayoutPanel2.Name = "tableLayoutPanel2";
+      this.tableLayoutPanel2.RowCount = 1;
+      this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
+      this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+      this.tableLayoutPanel2.Size = new System.Drawing.Size(520, 22);
+      this.tableLayoutPanel2.TabIndex = 22;
+      // 
+      // checkBoxResizable
+      // 
+      this.checkBoxResizable.AutoSize = true;
+      this.checkBoxResizable.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.checkBoxResizable.Location = new System.Drawing.Point(0, 0);
+      this.checkBoxResizable.Margin = new System.Windows.Forms.Padding(0);
+      this.checkBoxResizable.Name = "checkBoxResizable";
+      this.checkBoxResizable.Size = new System.Drawing.Size(520, 22);
+      this.checkBoxResizable.TabIndex = 4;
+      this.checkBoxResizable.Text = "Resizable";
+      this.checkBoxResizable.UseVisualStyleBackColor = true;
+      // 
+      // ArrayJsonItemControl
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.tableLayoutPanel1);
+      this.Name = "ArrayJsonItemControl";
+      this.Size = new System.Drawing.Size(526, 41);
+      this.tableLayoutPanel1.ResumeLayout(false);
+      this.groupBox2.ResumeLayout(false);
+      this.tableLayoutPanel2.ResumeLayout(false);
+      this.tableLayoutPanel2.PerformLayout();
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
+    private System.Windows.Forms.GroupBox groupBox2;
+    private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
+    private System.Windows.Forms.CheckBox checkBoxResizable;
+  }
+}
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/ArrayJsonItemControl.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/ArrayJsonItemControl.cs	(revision 17828)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/ArrayJsonItemControl.cs	(revision 17828)
@@ -0,0 +1,16 @@
+﻿using System.Windows.Forms;
+
+namespace HeuristicLab.JsonInterface.OptimizerIntegration {
+  public partial class ArrayJsonItemControl : UserControl {
+
+    public ArrayJsonItemControl() {
+      InitializeComponent();
+    }
+
+    public static ArrayJsonItemControl Create(IJsonItemVM vm) {
+      var control = new ArrayJsonItemControl();
+      control.checkBoxResizable.DataBindings.Add("Checked", vm, nameof(IArrayJsonItemVM.Resizable));
+      return control;
+    }
+  }
+}
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/ArrayJsonItemControl.resx
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/ArrayJsonItemControl.resx	(revision 17828)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/ArrayJsonItemControl.resx	(revision 17828)
@@ -0,0 +1,120 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/CompoundControl.Designer.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/CompoundControl.Designer.cs	(revision 17828)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/CompoundControl.Designer.cs	(revision 17828)
@@ -0,0 +1,60 @@
+﻿
+namespace HeuristicLab.JsonInterface.OptimizerIntegration {
+  partial class CompoundControl {
+    /// <summary> 
+    /// Erforderliche Designervariable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Verwendete Ressourcen bereinigen.
+    /// </summary>
+    /// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Vom Komponenten-Designer generierter Code
+
+    /// <summary> 
+    /// Erforderliche Methode für die Designerunterstützung. 
+    /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
+    /// </summary>
+    private void InitializeComponent() {
+      this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
+      this.SuspendLayout();
+      // 
+      // tableLayoutPanel1
+      // 
+      this.tableLayoutPanel1.ColumnCount = 1;
+      this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
+      this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
+      this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(0);
+      this.tableLayoutPanel1.Name = "tableLayoutPanel1";
+      this.tableLayoutPanel1.RowCount = 2;
+      this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+      this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+      this.tableLayoutPanel1.Size = new System.Drawing.Size(526, 22);
+      this.tableLayoutPanel1.TabIndex = 0;
+      // 
+      // CompoundControl
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.tableLayoutPanel1);
+      this.Margin = new System.Windows.Forms.Padding(0);
+      this.Name = "CompoundControl";
+      this.Size = new System.Drawing.Size(526, 22);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
+  }
+}
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/CompoundControl.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/CompoundControl.cs	(revision 17828)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/CompoundControl.cs	(revision 17828)
@@ -0,0 +1,41 @@
+﻿using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace HeuristicLab.JsonInterface.OptimizerIntegration {
+  public partial class CompoundControl : UserControl {
+    private UserControl _topControl;
+    public UserControl TopControl {
+      get => _topControl;
+      set {
+        value.Margin = new Padding() { All = 0 };
+        tableLayoutPanel1.Controls.Add(value, 0, 0);
+        value.Dock = DockStyle.Fill;
+        _topControl = value;
+      } 
+    }
+
+    private UserControl _bottomControl;
+    public UserControl BottomControl {
+      get => _bottomControl;
+      set {
+        value.Margin = new Padding() { All = 0 };
+        tableLayoutPanel1.Controls.Add(value, 0, 0);
+        value.Dock = DockStyle.Fill;
+        _bottomControl = value;
+      }
+    }
+    public CompoundControl() {
+      InitializeComponent();
+    }
+
+    public static CompoundControl Create(UserControl top, UserControl bottom) 
+      => new CompoundControl() { TopControl = top, BottomControl = bottom };
+  }
+}
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/CompoundControl.resx
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/CompoundControl.resx	(revision 17828)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/CompoundControl.resx	(revision 17828)
@@ -0,0 +1,120 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/ConcreteItemsRestrictor.Designer.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/ConcreteItemsRestrictor.Designer.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/ConcreteItemsRestrictor.Designer.cs	(revision 17828)
@@ -25,4 +25,6 @@
     private void InitializeComponent() {
       this.tableOptions = new System.Windows.Forms.TableLayoutPanel();
+      this.groupBox1 = new System.Windows.Forms.GroupBox();
+      this.groupBox1.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -36,10 +38,23 @@
       this.tableOptions.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
       this.tableOptions.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.tableOptions.Location = new System.Drawing.Point(0, 0);
+      this.tableOptions.Location = new System.Drawing.Point(3, 16);
+      this.tableOptions.Margin = new System.Windows.Forms.Padding(0);
       this.tableOptions.Name = "tableOptions";
       this.tableOptions.RowCount = 1;
       this.tableOptions.RowStyles.Add(new System.Windows.Forms.RowStyle());
-      this.tableOptions.Size = new System.Drawing.Size(500, 200);
+      this.tableOptions.Size = new System.Drawing.Size(494, 181);
       this.tableOptions.TabIndex = 13;
+      // 
+      // groupBox1
+      // 
+      this.groupBox1.Controls.Add(this.tableOptions);
+      this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.groupBox1.Location = new System.Drawing.Point(0, 0);
+      this.groupBox1.Margin = new System.Windows.Forms.Padding(0);
+      this.groupBox1.Name = "groupBox1";
+      this.groupBox1.Size = new System.Drawing.Size(500, 200);
+      this.groupBox1.TabIndex = 0;
+      this.groupBox1.TabStop = false;
+      this.groupBox1.Text = "Allowed Items";
       // 
       // ConcreteItemsRestrictor
@@ -47,8 +62,9 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.tableOptions);
+      this.Controls.Add(this.groupBox1);
       this.Margin = new System.Windows.Forms.Padding(0);
       this.Name = "ConcreteItemsRestrictor";
       this.Size = new System.Drawing.Size(500, 200);
+      this.groupBox1.ResumeLayout(false);
       this.ResumeLayout(false);
 
@@ -58,4 +74,5 @@
 
     private System.Windows.Forms.TableLayoutPanel tableOptions;
+    private System.Windows.Forms.GroupBox groupBox1;
   }
 }
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/JsonItemBaseControl.Designer.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/JsonItemBaseControl.Designer.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/JsonItemBaseControl.Designer.cs	(revision 17828)
@@ -30,8 +30,6 @@
       this.tableLayoutPanel5 = new System.Windows.Forms.TableLayoutPanel();
       this.textBoxDescription = new System.Windows.Forms.TextBox();
-      this.checkBoxActive = new System.Windows.Forms.CheckBox();
       this.label1 = new System.Windows.Forms.Label();
       this.labelDescription = new System.Windows.Forms.Label();
-      this.labelEnable = new System.Windows.Forms.Label();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
       this.tableLayoutPanel1.SuspendLayout();
@@ -48,6 +46,6 @@
       this.textBoxName.Dock = System.Windows.Forms.DockStyle.Fill;
       this.errorProvider.SetIconAlignment(this.textBoxName, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
-      this.textBoxName.Location = new System.Drawing.Point(100, 25);
-      this.textBoxName.Margin = new System.Windows.Forms.Padding(0);
+      this.textBoxName.Location = new System.Drawing.Point(100, 2);
+      this.textBoxName.Margin = new System.Windows.Forms.Padding(0, 2, 0, 0);
       this.textBoxName.Name = "textBoxName";
       this.textBoxName.Size = new System.Drawing.Size(394, 20);
@@ -65,8 +63,6 @@
       this.tableLayoutPanel1.Name = "tableLayoutPanel1";
       this.tableLayoutPanel1.RowCount = 2;
-      this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 75F));
+      this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 50F));
       this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
-      this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
-      this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
       this.tableLayoutPanel1.Size = new System.Drawing.Size(494, 594);
       this.tableLayoutPanel1.TabIndex = 16;
@@ -77,20 +73,17 @@
       this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 100F));
       this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
-      this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
-      this.tableLayoutPanel5.Controls.Add(this.textBoxDescription, 1, 2);
-      this.tableLayoutPanel5.Controls.Add(this.textBoxName, 1, 1);
-      this.tableLayoutPanel5.Controls.Add(this.checkBoxActive, 1, 0);
-      this.tableLayoutPanel5.Controls.Add(this.label1, 0, 1);
-      this.tableLayoutPanel5.Controls.Add(this.labelDescription, 0, 2);
-      this.tableLayoutPanel5.Controls.Add(this.labelEnable, 0, 0);
+      this.tableLayoutPanel5.Controls.Add(this.textBoxDescription, 1, 1);
+      this.tableLayoutPanel5.Controls.Add(this.textBoxName, 1, 0);
+      this.tableLayoutPanel5.Controls.Add(this.label1, 0, 0);
+      this.tableLayoutPanel5.Controls.Add(this.labelDescription, 0, 1);
       this.tableLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Fill;
       this.tableLayoutPanel5.Location = new System.Drawing.Point(0, 0);
       this.tableLayoutPanel5.Margin = new System.Windows.Forms.Padding(0);
       this.tableLayoutPanel5.Name = "tableLayoutPanel5";
-      this.tableLayoutPanel5.RowCount = 3;
-      this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
-      this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
-      this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
-      this.tableLayoutPanel5.Size = new System.Drawing.Size(494, 75);
+      this.tableLayoutPanel5.RowCount = 1;
+      this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
+      this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
+      this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+      this.tableLayoutPanel5.Size = new System.Drawing.Size(494, 50);
       this.tableLayoutPanel5.TabIndex = 17;
       // 
@@ -98,5 +91,5 @@
       // 
       this.textBoxDescription.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.textBoxDescription.Location = new System.Drawing.Point(100, 52);
+      this.textBoxDescription.Location = new System.Drawing.Point(100, 27);
       this.textBoxDescription.Margin = new System.Windows.Forms.Padding(0, 2, 0, 0);
       this.textBoxDescription.Name = "textBoxDescription";
@@ -104,20 +97,9 @@
       this.textBoxDescription.TabIndex = 14;
       // 
-      // checkBoxActive
-      // 
-      this.checkBoxActive.AutoSize = true;
-      this.checkBoxActive.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.checkBoxActive.Location = new System.Drawing.Point(100, 0);
-      this.checkBoxActive.Margin = new System.Windows.Forms.Padding(0);
-      this.checkBoxActive.Name = "checkBoxActive";
-      this.checkBoxActive.Size = new System.Drawing.Size(394, 25);
-      this.checkBoxActive.TabIndex = 2;
-      this.checkBoxActive.UseVisualStyleBackColor = true;
-      // 
       // label1
       // 
       this.label1.AutoSize = true;
       this.label1.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.label1.Location = new System.Drawing.Point(0, 25);
+      this.label1.Location = new System.Drawing.Point(0, 0);
       this.label1.Margin = new System.Windows.Forms.Padding(0);
       this.label1.Name = "label1";
@@ -131,5 +113,5 @@
       this.labelDescription.AutoSize = true;
       this.labelDescription.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.labelDescription.Location = new System.Drawing.Point(0, 50);
+      this.labelDescription.Location = new System.Drawing.Point(0, 25);
       this.labelDescription.Margin = new System.Windows.Forms.Padding(0);
       this.labelDescription.Name = "labelDescription";
@@ -138,16 +120,4 @@
       this.labelDescription.Text = "Description";
       this.labelDescription.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
-      // 
-      // labelEnable
-      // 
-      this.labelEnable.AutoSize = true;
-      this.labelEnable.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.labelEnable.Location = new System.Drawing.Point(0, 0);
-      this.labelEnable.Margin = new System.Windows.Forms.Padding(0);
-      this.labelEnable.Name = "labelEnable";
-      this.labelEnable.Size = new System.Drawing.Size(100, 25);
-      this.labelEnable.TabIndex = 3;
-      this.labelEnable.Text = "Enable";
-      this.labelEnable.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
       // 
       // JsonItemBaseControl
@@ -170,6 +140,4 @@
     #endregion
     protected System.Windows.Forms.ErrorProvider errorProvider;
-    protected System.Windows.Forms.Label labelEnable;
-    protected System.Windows.Forms.CheckBox checkBoxActive;
     protected System.Windows.Forms.TextBox textBoxName;
     protected System.Windows.Forms.Label label1;
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/JsonItemBaseControl.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/JsonItemBaseControl.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/JsonItemBaseControl.cs	(revision 17828)
@@ -26,13 +26,13 @@
       InitializeComponent();
       VM = vm;
-      control.Margin = new Padding() { All = 0 };
-      tableLayoutPanel1.Controls.Add(control, 0, 1);
-      control.Dock = DockStyle.Fill;
+      if(control != null) {
+        control.Margin = new Padding() { All = 0 };
+        tableLayoutPanel1.Controls.Add(control, 0, 1);
+        control.Dock = DockStyle.Fill;
+      }
       Init();
     }
 
     private void Init() {
-      checkBoxActive.DataBindings.Add("Checked", VM, nameof(IJsonItemVM.Selected),
-        false, DataSourceUpdateMode.OnPropertyChanged);
       textBoxName.DataBindings.Add("Text", VM, nameof(IJsonItemVM.Name));
       textBoxDescription.DataBindings.Add("Text", VM, nameof(IJsonItemVM.Description));
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/MatrixJsonItemControl.Designer.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/MatrixJsonItemControl.Designer.cs	(revision 17828)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/MatrixJsonItemControl.Designer.cs	(revision 17828)
@@ -0,0 +1,127 @@
+﻿
+namespace HeuristicLab.JsonInterface.OptimizerIntegration {
+  partial class MatrixJsonItemControl {
+    /// <summary> 
+    /// Erforderliche Designervariable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Verwendete Ressourcen bereinigen.
+    /// </summary>
+    /// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Vom Komponenten-Designer generierter Code
+
+    /// <summary> 
+    /// Erforderliche Methode für die Designerunterstützung. 
+    /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
+    /// </summary>
+    private void InitializeComponent() {
+      this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
+      this.groupBox2 = new System.Windows.Forms.GroupBox();
+      this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
+      this.checkBoxColumnsResizable = new System.Windows.Forms.CheckBox();
+      this.checkBoxRowsResizable = new System.Windows.Forms.CheckBox();
+      this.tableLayoutPanel1.SuspendLayout();
+      this.groupBox2.SuspendLayout();
+      this.tableLayoutPanel2.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // tableLayoutPanel1
+      // 
+      this.tableLayoutPanel1.ColumnCount = 1;
+      this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
+      this.tableLayoutPanel1.Controls.Add(this.groupBox2, 0, 0);
+      this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
+      this.tableLayoutPanel1.Name = "tableLayoutPanel1";
+      this.tableLayoutPanel1.RowCount = 2;
+      this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 63F));
+      this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+      this.tableLayoutPanel1.Size = new System.Drawing.Size(526, 63);
+      this.tableLayoutPanel1.TabIndex = 24;
+      // 
+      // groupBox2
+      // 
+      this.groupBox2.Controls.Add(this.tableLayoutPanel2);
+      this.groupBox2.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.groupBox2.Location = new System.Drawing.Point(0, 0);
+      this.groupBox2.Margin = new System.Windows.Forms.Padding(0);
+      this.groupBox2.Name = "groupBox2";
+      this.groupBox2.Size = new System.Drawing.Size(526, 63);
+      this.groupBox2.TabIndex = 19;
+      this.groupBox2.TabStop = false;
+      this.groupBox2.Text = "Matrix Properties";
+      // 
+      // tableLayoutPanel2
+      // 
+      this.tableLayoutPanel2.ColumnCount = 1;
+      this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
+      this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+      this.tableLayoutPanel2.Controls.Add(this.checkBoxRowsResizable, 0, 0);
+      this.tableLayoutPanel2.Controls.Add(this.checkBoxColumnsResizable, 0, 1);
+      this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.tableLayoutPanel2.Location = new System.Drawing.Point(3, 16);
+      this.tableLayoutPanel2.Margin = new System.Windows.Forms.Padding(0);
+      this.tableLayoutPanel2.Name = "tableLayoutPanel2";
+      this.tableLayoutPanel2.RowCount = 2;
+      this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
+      this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
+      this.tableLayoutPanel2.Size = new System.Drawing.Size(520, 44);
+      this.tableLayoutPanel2.TabIndex = 22;
+      // 
+      // checkBoxColumnsResizable
+      // 
+      this.checkBoxColumnsResizable.AutoSize = true;
+      this.checkBoxColumnsResizable.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.checkBoxColumnsResizable.Location = new System.Drawing.Point(0, 22);
+      this.checkBoxColumnsResizable.Margin = new System.Windows.Forms.Padding(0);
+      this.checkBoxColumnsResizable.Name = "checkBoxColumnsResizable";
+      this.checkBoxColumnsResizable.Size = new System.Drawing.Size(520, 22);
+      this.checkBoxColumnsResizable.TabIndex = 7;
+      this.checkBoxColumnsResizable.Text = "Columns Resizable";
+      this.checkBoxColumnsResizable.UseVisualStyleBackColor = true;
+      // 
+      // checkBoxRowsResizable
+      // 
+      this.checkBoxRowsResizable.AutoSize = true;
+      this.checkBoxRowsResizable.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.checkBoxRowsResizable.Location = new System.Drawing.Point(0, 0);
+      this.checkBoxRowsResizable.Margin = new System.Windows.Forms.Padding(0);
+      this.checkBoxRowsResizable.Name = "checkBoxRowsResizable";
+      this.checkBoxRowsResizable.Size = new System.Drawing.Size(520, 22);
+      this.checkBoxRowsResizable.TabIndex = 4;
+      this.checkBoxRowsResizable.Text = "Rows Resizable";
+      this.checkBoxRowsResizable.UseVisualStyleBackColor = true;
+      // 
+      // MatrixJsonItemControl
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.tableLayoutPanel1);
+      this.Name = "MatrixJsonItemControl";
+      this.Size = new System.Drawing.Size(526, 63);
+      this.tableLayoutPanel1.ResumeLayout(false);
+      this.groupBox2.ResumeLayout(false);
+      this.tableLayoutPanel2.ResumeLayout(false);
+      this.tableLayoutPanel2.PerformLayout();
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
+    private System.Windows.Forms.GroupBox groupBox2;
+    private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
+    private System.Windows.Forms.CheckBox checkBoxRowsResizable;
+    private System.Windows.Forms.CheckBox checkBoxColumnsResizable;
+  }
+}
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/MatrixJsonItemControl.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/MatrixJsonItemControl.cs	(revision 17828)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/MatrixJsonItemControl.cs	(revision 17828)
@@ -0,0 +1,16 @@
+﻿using System.Windows.Forms;
+
+namespace HeuristicLab.JsonInterface.OptimizerIntegration {
+  public partial class MatrixJsonItemControl : UserControl {
+    public MatrixJsonItemControl() {
+      InitializeComponent();
+    }
+
+    public static MatrixJsonItemControl Create(IJsonItemVM vm) {
+      var control = new MatrixJsonItemControl();
+      control.checkBoxRowsResizable.DataBindings.Add("Checked", vm, nameof(IMatrixJsonItemVM.RowsResizable));
+      control.checkBoxColumnsResizable .DataBindings.Add("Checked", vm, nameof(IMatrixJsonItemVM.ColumnsResizable));
+      return control;
+    }
+  }
+}
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/MatrixJsonItemControl.resx
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/MatrixJsonItemControl.resx	(revision 17828)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/MatrixJsonItemControl.resx	(revision 17828)
@@ -0,0 +1,120 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/NumericRangeControl.Designer.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/NumericRangeControl.Designer.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/NumericRangeControl.Designer.cs	(revision 17828)
@@ -26,13 +26,15 @@
       this.components = new System.ComponentModel.Container();
       this.groupBox2 = new System.Windows.Forms.GroupBox();
-      this.checkBoxTo = new System.Windows.Forms.CheckBox();
+      this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
       this.textBoxTo = new System.Windows.Forms.TextBox();
-      this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
       this.textBoxFrom = new System.Windows.Forms.TextBox();
       this.checkBoxFrom = new System.Windows.Forms.CheckBox();
-      this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
+      this.checkBoxTo = new System.Windows.Forms.CheckBox();
+      this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
+      this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
       this.groupBox2.SuspendLayout();
+      this.tableLayoutPanel2.SuspendLayout();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
-      this.tableLayoutPanel2.SuspendLayout();
+      this.tableLayoutPanel1.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -49,15 +51,23 @@
       this.groupBox2.Text = "Range";
       // 
-      // checkBoxTo
+      // tableLayoutPanel2
       // 
-      this.checkBoxTo.AutoSize = true;
-      this.checkBoxTo.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.checkBoxTo.Location = new System.Drawing.Point(0, 22);
-      this.checkBoxTo.Margin = new System.Windows.Forms.Padding(0);
-      this.checkBoxTo.Name = "checkBoxTo";
-      this.checkBoxTo.Size = new System.Drawing.Size(100, 22);
-      this.checkBoxTo.TabIndex = 7;
-      this.checkBoxTo.Text = "To:";
-      this.checkBoxTo.UseVisualStyleBackColor = true;
+      this.tableLayoutPanel2.ColumnCount = 2;
+      this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 100F));
+      this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
+      this.tableLayoutPanel2.Controls.Add(this.textBoxTo, 1, 1);
+      this.tableLayoutPanel2.Controls.Add(this.textBoxFrom, 1, 0);
+      this.tableLayoutPanel2.Controls.Add(this.checkBoxFrom, 0, 0);
+      this.tableLayoutPanel2.Controls.Add(this.checkBoxTo, 0, 1);
+      this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.tableLayoutPanel2.Location = new System.Drawing.Point(3, 16);
+      this.tableLayoutPanel2.Margin = new System.Windows.Forms.Padding(0);
+      this.tableLayoutPanel2.Name = "tableLayoutPanel2";
+      this.tableLayoutPanel2.RowCount = 2;
+      this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
+      this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
+      this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+      this.tableLayoutPanel2.Size = new System.Drawing.Size(520, 44);
+      this.tableLayoutPanel2.TabIndex = 22;
       // 
       // textBoxTo
@@ -72,9 +82,4 @@
       this.textBoxTo.TabIndex = 6;
       this.textBoxTo.Validating += new System.ComponentModel.CancelEventHandler(this.textBoxTo_Validating);
-      // 
-      // errorProvider
-      // 
-      this.errorProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink;
-      this.errorProvider.ContainerControl = this;
       // 
       // textBoxFrom
@@ -102,22 +107,34 @@
       this.checkBoxFrom.UseVisualStyleBackColor = true;
       // 
-      // tableLayoutPanel2
+      // checkBoxTo
       // 
-      this.tableLayoutPanel2.ColumnCount = 2;
-      this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 100F));
-      this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
-      this.tableLayoutPanel2.Controls.Add(this.textBoxTo, 1, 1);
-      this.tableLayoutPanel2.Controls.Add(this.textBoxFrom, 1, 0);
-      this.tableLayoutPanel2.Controls.Add(this.checkBoxFrom, 0, 0);
-      this.tableLayoutPanel2.Controls.Add(this.checkBoxTo, 0, 1);
-      this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.tableLayoutPanel2.Location = new System.Drawing.Point(3, 16);
-      this.tableLayoutPanel2.Margin = new System.Windows.Forms.Padding(0);
-      this.tableLayoutPanel2.Name = "tableLayoutPanel2";
-      this.tableLayoutPanel2.RowCount = 2;
-      this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
-      this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
-      this.tableLayoutPanel2.Size = new System.Drawing.Size(520, 44);
-      this.tableLayoutPanel2.TabIndex = 22;
+      this.checkBoxTo.AutoSize = true;
+      this.checkBoxTo.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.checkBoxTo.Location = new System.Drawing.Point(0, 22);
+      this.checkBoxTo.Margin = new System.Windows.Forms.Padding(0);
+      this.checkBoxTo.Name = "checkBoxTo";
+      this.checkBoxTo.Size = new System.Drawing.Size(100, 22);
+      this.checkBoxTo.TabIndex = 7;
+      this.checkBoxTo.Text = "To:";
+      this.checkBoxTo.UseVisualStyleBackColor = true;
+      // 
+      // errorProvider
+      // 
+      this.errorProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink;
+      this.errorProvider.ContainerControl = this;
+      // 
+      // tableLayoutPanel1
+      // 
+      this.tableLayoutPanel1.ColumnCount = 1;
+      this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
+      this.tableLayoutPanel1.Controls.Add(this.groupBox2, 0, 0);
+      this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
+      this.tableLayoutPanel1.Name = "tableLayoutPanel1";
+      this.tableLayoutPanel1.RowCount = 2;
+      this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 63F));
+      this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+      this.tableLayoutPanel1.Size = new System.Drawing.Size(526, 63);
+      this.tableLayoutPanel1.TabIndex = 23;
       // 
       // NumericRangeControl
@@ -125,11 +142,12 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.groupBox2);
+      this.Controls.Add(this.tableLayoutPanel1);
       this.Name = "NumericRangeControl";
       this.Size = new System.Drawing.Size(526, 63);
       this.groupBox2.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
       this.tableLayoutPanel2.ResumeLayout(false);
       this.tableLayoutPanel2.PerformLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
+      this.tableLayoutPanel1.ResumeLayout(false);
       this.ResumeLayout(false);
 
@@ -144,4 +162,5 @@
     private System.Windows.Forms.TextBox textBoxFrom;
     private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
+    private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
   }
 }
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/NumericRangeControl.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/NumericRangeControl.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/NumericRangeControl.cs	(revision 17828)
@@ -51,4 +51,15 @@
       }
     }
+
+    public static UserControl Create(IJsonItemVM vm) {
+      NumericRangeControl numericRangeControl = new NumericRangeControl();
+      numericRangeControl.TBMinRange.DataBindings.Add("Text", vm, nameof(RangedValueBaseVM<int, IntJsonItem>.MinRange));
+      numericRangeControl.TBMaxRange.DataBindings.Add("Text", vm, nameof(RangedValueBaseVM<int, IntJsonItem>.MaxRange));
+      numericRangeControl.EnableMinRange.DataBindings.Add("Checked", vm, nameof(RangedValueBaseVM<int, IntJsonItem>.EnableMinRange),
+        false, DataSourceUpdateMode.OnPropertyChanged);
+      numericRangeControl.EnableMaxRange.DataBindings.Add("Checked", vm, nameof(RangedValueBaseVM<int, IntJsonItem>.EnableMaxRange),
+        false, DataSourceUpdateMode.OnPropertyChanged);
+      return numericRangeControl;
+    }
   }
 }
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/ArrayValueVM.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/ArrayValueVM.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/ArrayValueVM.cs	(revision 17828)
@@ -9,34 +9,10 @@
 namespace HeuristicLab.JsonInterface.OptimizerIntegration {
 
-  
-
-
-
-  /*
-  public class StringArrayValueVM : ArrayValueVM<int, IntArrayJsonItem> {
-    public override Type TargetedJsonItemType => typeof(StringArrayJsonItem);
-
-    protected override int MinTypeValue => int.MinValue;
-
-    protected override int MaxTypeValue => int.MaxValue;
-
-    public override UserControl Control =>
-      new JsonItemBaseControl(this, new JsonItemIntArrayValueControl(this));
-
-    public override int[] Value {
-      get => Item.Value;
-      set {
-        Item.Value = value;
-        OnPropertyChange(this, nameof(Value));
-      }
-    }
-  }
-  */
-
-
   public abstract class ArrayValueVM<T, JsonItemType> : RangedValueBaseVM<T, JsonItemType>, IArrayJsonItemVM
     where T : IComparable
     where JsonItemType : class, IArrayJsonItem, IIntervalRestrictedJsonItem<T> {
-    
+
+    public override UserControl Control => CompoundControl.Create(base.Control, ArrayJsonItemControl.Create(this));
+
     public ArrayValueVM() { }
     
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/ConcreteRestrictedJsonItemVM.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/ConcreteRestrictedJsonItemVM.cs	(revision 17828)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/ConcreteRestrictedJsonItemVM.cs	(revision 17828)
@@ -0,0 +1,79 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace HeuristicLab.JsonInterface.OptimizerIntegration {
+  /// <summary>
+  /// Abstract VM class for concreted restricted JsonItems
+  /// </summary>
+  /// <typeparam name="T">JsonItemType</typeparam>
+  /// <typeparam name="X">Type of the range array (ConcreteRestrictedItemArray)</typeparam>
+  /// <typeparam name="V">Type of the value property</typeparam>
+  public abstract class ConcreteRestrictedJsonItemVM<T, X, V> : JsonItemVMBase<T>
+    where T : class, IConcreteRestrictedJsonItem<X>, IValueJsonItem<V> {
+    public override UserControl Control {
+      get {
+        var control = new ConcreteItemsRestrictor();
+        control.Init(Item.ConcreteRestrictedItems);
+        control.OnChecked += AddComboOption;
+        control.OnUnchecked += RemoveComboOption;
+        return control;
+      }
+    }
+
+    public V Value {
+      get => Item.Value;
+      set {
+        Item.Value = value;
+        OnPropertyChange(this, nameof(Value));
+      }
+    }
+
+    public IEnumerable<X> Range {
+      get => Item.ConcreteRestrictedItems;
+      set {
+        Item.ConcreteRestrictedItems = value;
+        //check if value is still in range
+
+        if (!RangeContainsValue()) {
+          Value = GetDefaultValue();
+
+          //if no elements exists -> deselect item
+          if (Range.Count() == 0)
+            base.Selected = false;
+
+          OnPropertyChange(this, nameof(Value));
+        }
+
+        OnPropertyChange(this, nameof(Range));
+      }
+    }
+
+    /// <summary>
+    /// Method to check if the value exists in the allowed range array.
+    /// </summary>
+    /// <returns></returns>
+    protected abstract bool RangeContainsValue();
+
+    /// <summary>
+    /// Method to get or generate a default value for property "Value".
+    /// </summary>
+    /// <returns></returns>
+    protected abstract V GetDefaultValue();
+
+    private void AddComboOption(object opt) {
+      var items = new List<X>(Range);
+      items.Add((X)opt);
+      Range = items;
+    }
+
+    private void RemoveComboOption(object opt) {
+      var items = new List<X>(Range);
+      items.Remove((X)opt);
+      Range = items;
+    }
+  }
+}
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/DoubleVMs.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/DoubleVMs.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/DoubleVMs.cs	(revision 17828)
@@ -8,22 +8,11 @@
 namespace HeuristicLab.JsonInterface.OptimizerIntegration {
   public class DoubleRangeVM : RangeVM<double, DoubleRangeJsonItem> {
-
     protected override double MinTypeValue => double.MinValue;
-
     protected override double MaxTypeValue => double.MaxValue;
-
-    public override UserControl Control =>
-      new JsonItemRangeControl(this);
   }
 
   public class DoubleArrayValueVM : ArrayValueVM<double, DoubleArrayJsonItem> {
-
     protected override double MinTypeValue => double.MinValue;
-
     protected override double MaxTypeValue => double.MaxValue;
-
-    public override UserControl Control =>
-      new JsonItemDoubleArrayValueControl(this);
-
     public override double[] Value {
       get => Item.Value;
@@ -36,7 +25,4 @@
 
   public class DoubleMatrixValueVM : MatrixValueVM<double, DoubleMatrixJsonItem> {
-    public override UserControl Control =>
-      new JsonItemDoubleMatrixValueControl(this);
-
     public override double[][] Value {
       get => Item.Value;
@@ -46,17 +32,11 @@
       }
     }
-
     protected override double MinTypeValue => double.MinValue;
-
     protected override double MaxTypeValue => double.MaxValue;
   }
 
   public class DoubleValueVM : SingleValueVM<double, DoubleJsonItem> {
-
     protected override double MinTypeValue => double.MinValue;
     protected override double MaxTypeValue => double.MaxValue;
-
-    public override UserControl Control =>
-       new JsonItemDoubleValueControl(this);
   }
 }
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/IntVMs.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/IntVMs.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/IntVMs.cs	(revision 17828)
@@ -8,11 +8,6 @@
 namespace HeuristicLab.JsonInterface.OptimizerIntegration {
   public class IntArrayValueVM : ArrayValueVM<int, IntArrayJsonItem> {
-
     protected override int MinTypeValue => int.MinValue;
-
     protected override int MaxTypeValue => int.MaxValue;
-
-    public override UserControl Control =>
-      new JsonItemBaseControl(this, new JsonItemIntArrayValueControl(this));
 
     public override int[] Value {
@@ -26,20 +21,11 @@
 
   public class IntRangeVM : RangeVM<int, IntRangeJsonItem> {
-
     protected override int MinTypeValue => int.MinValue;
-
     protected override int MaxTypeValue => int.MaxValue;
-
-    public override UserControl Control =>
-      new JsonItemRangeControl(this);
   }
 
   public class IntValueVM : SingleValueVM<int, IntJsonItem> {
-
     protected override int MinTypeValue => int.MinValue;
     protected override int MaxTypeValue => int.MaxValue;
-
-    public override UserControl Control =>
-      new JsonItemIntValueControl(this);
   }
 
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/JsonItemVMBase.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/JsonItemVMBase.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/JsonItemVMBase.cs	(revision 17828)
@@ -9,5 +9,5 @@
 
 namespace HeuristicLab.JsonInterface.OptimizerIntegration {
-  public abstract class JsonItemVMBase<JsonItemType> : IJsonItemVM<JsonItemType> //TODO: RENAME, oder vlt JsonItems direkt als VM?
+  public abstract class JsonItemVMBase<JsonItemType> : IJsonItemVM<JsonItemType>
     where JsonItemType : class, IJsonItem 
   {
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/LookupJsonItemVM.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/LookupJsonItemVM.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/LookupJsonItemVM.cs	(revision 17828)
@@ -8,7 +8,5 @@
 namespace HeuristicLab.JsonInterface.OptimizerIntegration {
   public class LookupJsonItemVM : JsonItemVMBase<LookupJsonItem>, ILookupJsonItemVM {
-
-    public override UserControl Control => new LookupJsonItemControl(this);
-
+    public override UserControl Control => null;
     public string ActualName {
       get => Item.ActualName;
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/MatrixValueVM.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/MatrixValueVM.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/MatrixValueVM.cs	(revision 17828)
@@ -13,4 +13,7 @@
     where T : IComparable
     where JsonItemType : class, IMatrixJsonItem, IIntervalRestrictedJsonItem<T> {
+
+    public override UserControl Control => CompoundControl.Create(base.Control, MatrixJsonItemControl.Create(this));
+
     public abstract T[][] Value { get; set; }
     public bool RowsResizable {
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/RangedValueBaseVM.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/RangedValueBaseVM.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/RangedValueBaseVM.cs	(revision 17828)
@@ -4,4 +4,5 @@
 using System.Text;
 using System.Threading.Tasks;
+using System.Windows.Forms;
 
 namespace HeuristicLab.JsonInterface.OptimizerIntegration {
@@ -11,4 +12,6 @@
     where JsonItemType : class, IIntervalRestrictedJsonItem<T> 
   {
+    public override UserControl Control => NumericRangeControl.Create(this);
+
     public T MinRange {
       get => Item.Minimum;
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/SingleValueVM.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/SingleValueVM.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/SingleValueVM.cs	(revision 17828)
@@ -19,6 +19,5 @@
     }
     
-    public override UserControl Control =>
-       new JsonItemBoolControl(this);
+    public override UserControl Control => null;
   }
 
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/StringValueVM.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/StringValueVM.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/StringValueVM.cs	(revision 17828)
@@ -1,60 +1,16 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Windows.Forms;
+﻿using System.Linq;
 
 namespace HeuristicLab.JsonInterface.OptimizerIntegration {
-  public class StringValueVM : JsonItemVMBase<StringJsonItem> {
-    public override UserControl Control =>
-       new JsonItemValidValuesControl(this);
 
-    public string Value {
-      get => Item.Value?.ToString();
-      set {
-        Item.Value = value;
-        OnPropertyChange(this, nameof(Value));
-      }
-    }
+  public class StringValueVM : ConcreteRestrictedJsonItemVM<StringJsonItem, string, string> {
+    protected override string GetDefaultValue() => Range.FirstOrDefault();
 
-    public IEnumerable<string> Range {
-      get => Item.ConcreteRestrictedItems;
-      set {
-        Item.ConcreteRestrictedItems = value;
-        //check if value is still in range
-        if (!Range.Contains(Value)) {
-          Value = Range.FirstOrDefault();
-          if (Range.Count() == 0)
-            //if no elements exists -> deselect item
-            base.Selected = false;
-          OnPropertyChange(this, nameof(Value));
-        }
-        
-        OnPropertyChange(this, nameof(Range));
-      }
-    }
+    protected override bool RangeContainsValue() => Range.Contains(Value);
   }
 
-  public class StringArrayVM : JsonItemVMBase<StringArrayJsonItem> {
-    public override UserControl Control =>
-       new JsonItemConcreteItemArrayControl(this);
+  public class StringArrayVM : ConcreteRestrictedJsonItemVM<StringArrayJsonItem, string, string[]> {
+    protected override string[] GetDefaultValue() => Range.ToArray();
 
-    public string[] Value {
-      get => Item.Value;
-      set {
-        Item.Value = value;
-        OnPropertyChange(this, nameof(Value));
-      }
-    }
-
-    public IEnumerable<string> Range {
-      get => Item.ConcreteRestrictedItems;
-      set {
-        Item.ConcreteRestrictedItems = value;
-        OnPropertyChange(this, nameof(Range));
-      }
-    }
+    protected override bool RangeContainsValue() => Value.All(x => Range.Any(y => x == y));
   }
 }
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/ExportJsonDialog.Designer.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/ExportJsonDialog.Designer.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/ExportJsonDialog.Designer.cs	(revision 17828)
@@ -249,5 +249,4 @@
       this.Name = "ExportJsonDialog";
       this.RightToLeft = System.Windows.Forms.RightToLeft.No;
-      this.ShowIcon = false;
       this.Text = "Export Json";
       this.groupBoxDetails.ResumeLayout(false);
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/ExportJsonDialog.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/ExportJsonDialog.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/ExportJsonDialog.cs	(revision 17828)
@@ -40,13 +40,15 @@
 
         Optimizer = content as IOptimizer;
-        Root = JsonItemConverter.Extract(Optimizer);
-        TreeNode parent = new TreeNode(Root.Name);
-        treeView.AfterCheck += TreeView_AfterCheck;
-        BuildTreeNode(parent, Root);
-        treeView.Nodes.Add(parent);
-        treeView.ExpandAll();
-        panelParameterDetails.Controls.Clear();
-        panelResultDetails.Controls.Clear();
-
+        if(Optimizer != null) {
+          Optimizer = (IOptimizer)Optimizer.Clone(); // clone the optimizer
+          Root = JsonItemConverter.Extract(Optimizer);
+          TreeNode parent = new TreeNode(Root.Name);
+          treeView.AfterCheck += TreeView_AfterCheck;
+          BuildTreeNode(parent, Root);
+          treeView.Nodes.Add(parent);
+          treeView.ExpandAll();
+          panelParameterDetails.Controls.Clear();
+          panelResultDetails.Controls.Clear();
+        }
       } 
     }
@@ -62,31 +64,22 @@
     public ExportJsonDialog() {
       InitializeComponent();
+      this.Icon = HeuristicLab.Common.Resources.HeuristicLab.Icon;
       InitCache();
     }
 
     private void exportButton_Click(object sender, EventArgs e) {
-      // to set default value for disabled items
-      JsonItemConverter.Inject(Optimizer, Root);
+      if (FolderBrowserDialog == null) {
+        FolderBrowserDialog = new FolderBrowserDialog();
+        FolderBrowserDialog.Description = "Select .json-Template Directory";
+      }
 
-      // clear all runs
-      Optimizer.Runs.Clear();
-
-      var validationResult = Root.GetValidator().Validate();
-      if (!validationResult.Success) {
-        IList<Exception> list = new List<Exception>();
-        //print faultyItems
-        foreach (var x in validationResult.Errors) {
-          list.Add(new Exception(x));
-        }
-        ErrorHandling.ShowErrorDialog(this, new AggregateException(list));
-      } else {
-        if (FolderBrowserDialog == null) {
-          FolderBrowserDialog = new FolderBrowserDialog();
-          FolderBrowserDialog.Description = "Select .json-Template Dictionary";
-        }
-
-        if (FolderBrowserDialog.ShowDialog() == DialogResult.OK) {
-          JsonTemplateGenerator.GenerateTemplate(FolderBrowserDialog.SelectedPath, textBoxTemplateName.Text, Optimizer, Root);
+      if (FolderBrowserDialog.ShowDialog() == DialogResult.OK) {
+        try {
+          JsonTemplateGenerator.GenerateTemplate(
+            Path.Combine(FolderBrowserDialog.SelectedPath, textBoxTemplateName.Text), 
+            Optimizer, Root);
           Close();
+        } catch (Exception ex) {
+          ErrorHandling.ShowErrorDialog(this, ex);
         }
       }
@@ -98,13 +91,10 @@
         foreach (var c in item.Children) {
           if (IsDrawableItem(c)) {
+            TreeNode childNode = new TreeNode(c.Name);
             if (c is IResultJsonItem) {
-              TreeNode childNode = new TreeNode(c.Name);
               treeViewResults.Nodes.Add(childNode);
-              RegisterItem(childNode, c, treeViewResults);
-              if(Node2VM.TryGetValue(childNode, out IJsonItemVM vm))
-                vm.Selected = true;
-              
+              IJsonItemVM vm = RegisterItem(childNode, c, treeViewResults);
+              if (vm != null) vm.Selected = true;              
             } else {
-              TreeNode childNode = new TreeNode(c.Name);
               node.Nodes.Add(childNode);
               BuildTreeNode(childNode, c);
@@ -115,6 +105,6 @@
     }
 
-    private void RegisterItem(TreeNode node, IJsonItem item, TreeView tv) {
-      if (JI2VM.TryGetValue(item.GetType(), out Type vmType)) { // TODO: enhance for interfaces?
+    private IJsonItemVM RegisterItem(TreeNode node, IJsonItem item, TreeView tv) {
+      if (JI2VM.TryGetValue(item.GetType(), out Type vmType)) {
         IJsonItemVM vm = (IJsonItemVM)Activator.CreateInstance(vmType);
 
@@ -128,8 +118,10 @@
         UserControl control = new JsonItemBaseControl(vm, vm.Control);
         Node2Control.Add(node, control);
+        return vm;
       } else {
         node.ForeColor = Color.LightGray;
         node.NodeFont = new Font(SystemFonts.DialogFont, FontStyle.Italic);
       }
+      return null;
     }
 
@@ -142,5 +134,5 @@
       }
       
-      return b || !(item is EmptyJsonItem);
+      return b || !(item is EmptyJsonItem) || !(item is UnsupportedJsonItem);
     }
     
Index: anches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemBoolControl.Designer.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemBoolControl.Designer.cs	(revision 17827)
+++ 	(revision )
@@ -1,91 +1,0 @@
-﻿namespace HeuristicLab.JsonInterface.OptimizerIntegration {
-  partial class JsonItemBoolControl {
-    /// <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.checkBoxValue = new System.Windows.Forms.CheckBox();
-      this.label2 = new System.Windows.Forms.Label();
-      this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
-      this.tableLayoutPanel1.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // checkBoxValue
-      // 
-      this.checkBoxValue.AutoSize = true;
-      this.checkBoxValue.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.checkBoxValue.Location = new System.Drawing.Point(100, 0);
-      this.checkBoxValue.Margin = new System.Windows.Forms.Padding(0);
-      this.checkBoxValue.Name = "checkBoxValue";
-      this.checkBoxValue.Padding = new System.Windows.Forms.Padding(0, 0, 0, 1);
-      this.checkBoxValue.Size = new System.Drawing.Size(400, 22);
-      this.checkBoxValue.TabIndex = 19;
-      this.checkBoxValue.UseVisualStyleBackColor = true;
-      // 
-      // label2
-      // 
-      this.label2.AutoSize = true;
-      this.label2.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.label2.Location = new System.Drawing.Point(0, 0);
-      this.label2.Margin = new System.Windows.Forms.Padding(0);
-      this.label2.Name = "label2";
-      this.label2.Size = new System.Drawing.Size(100, 22);
-      this.label2.TabIndex = 20;
-      this.label2.Text = "Value";
-      this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
-      // 
-      // tableLayoutPanel1
-      // 
-      this.tableLayoutPanel1.ColumnCount = 2;
-      this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 100F));
-      this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
-      this.tableLayoutPanel1.Controls.Add(this.checkBoxValue, 1, 0);
-      this.tableLayoutPanel1.Controls.Add(this.label2, 0, 0);
-      this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Top;
-      this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
-      this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(0);
-      this.tableLayoutPanel1.Name = "tableLayoutPanel1";
-      this.tableLayoutPanel1.RowCount = 1;
-      this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
-      this.tableLayoutPanel1.Size = new System.Drawing.Size(500, 22);
-      this.tableLayoutPanel1.TabIndex = 22;
-      // 
-      // JsonItemBoolControl
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.tableLayoutPanel1);
-      this.Margin = new System.Windows.Forms.Padding(0);
-      this.Name = "JsonItemBoolControl";
-      this.Size = new System.Drawing.Size(500, 22);
-      this.tableLayoutPanel1.ResumeLayout(false);
-      this.tableLayoutPanel1.PerformLayout();
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-    private System.Windows.Forms.CheckBox checkBoxValue;
-    private System.Windows.Forms.Label label2;
-    private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
-  }
-}
Index: anches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemBoolControl.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemBoolControl.cs	(revision 17827)
+++ 	(revision )
@@ -1,18 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-
-namespace HeuristicLab.JsonInterface.OptimizerIntegration {
-  public partial class JsonItemBoolControl : UserControl {
-    public JsonItemBoolControl(BoolValueVM vm) {
-      InitializeComponent();
-      checkBoxValue.DataBindings.Add("Checked", vm, nameof(BoolValueVM.Value));
-    }
-  }
-}
Index: anches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemBoolControl.resx
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemBoolControl.resx	(revision 17827)
+++ 	(revision )
@@ -1,120 +1,0 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-</root>
Index: anches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemConcreteItemArrayControl.Designer.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemConcreteItemArrayControl.Designer.cs	(revision 17827)
+++ 	(revision )
@@ -1,122 +1,0 @@
-﻿namespace HeuristicLab.JsonInterface.OptimizerIntegration {
-  partial class JsonItemConcreteItemArrayControl {
-    /// <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.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
-      this.groupBox1 = new System.Windows.Forms.GroupBox();
-      this.dataGridView = new System.Windows.Forms.DataGridView();
-      this.groupBox2 = new System.Windows.Forms.GroupBox();
-      this.concreteItemsRestrictor = new HeuristicLab.JsonInterface.OptimizerIntegration.ConcreteItemsRestrictor();
-      this.tableLayoutPanel1.SuspendLayout();
-      this.groupBox1.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).BeginInit();
-      this.groupBox2.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // tableLayoutPanel1
-      // 
-      this.tableLayoutPanel1.ColumnCount = 1;
-      this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
-      this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
-      this.tableLayoutPanel1.Controls.Add(this.groupBox1, 0, 0);
-      this.tableLayoutPanel1.Controls.Add(this.groupBox2, 0, 1);
-      this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
-      this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(0);
-      this.tableLayoutPanel1.Name = "tableLayoutPanel1";
-      this.tableLayoutPanel1.RowCount = 2;
-      this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
-      this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
-      this.tableLayoutPanel1.Size = new System.Drawing.Size(682, 350);
-      this.tableLayoutPanel1.TabIndex = 0;
-      // 
-      // groupBox1
-      // 
-      this.groupBox1.Controls.Add(this.dataGridView);
-      this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.groupBox1.Location = new System.Drawing.Point(0, 0);
-      this.groupBox1.Margin = new System.Windows.Forms.Padding(0);
-      this.groupBox1.Name = "groupBox1";
-      this.groupBox1.Size = new System.Drawing.Size(682, 175);
-      this.groupBox1.TabIndex = 0;
-      this.groupBox1.TabStop = false;
-      this.groupBox1.Text = "Value";
-      // 
-      // dataGridView
-      // 
-      this.dataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
-      this.dataGridView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.dataGridView.Location = new System.Drawing.Point(3, 16);
-      this.dataGridView.Name = "dataGridView";
-      this.dataGridView.Size = new System.Drawing.Size(676, 156);
-      this.dataGridView.TabIndex = 0;
-      this.dataGridView.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView_CellEndEdit);
-      this.dataGridView.RowsRemoved += new System.Windows.Forms.DataGridViewRowsRemovedEventHandler(this.dataGridView_RowsRemoved);
-      // 
-      // groupBox2
-      // 
-      this.groupBox2.Controls.Add(this.concreteItemsRestrictor);
-      this.groupBox2.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.groupBox2.Location = new System.Drawing.Point(0, 175);
-      this.groupBox2.Margin = new System.Windows.Forms.Padding(0);
-      this.groupBox2.Name = "groupBox2";
-      this.groupBox2.Size = new System.Drawing.Size(682, 175);
-      this.groupBox2.TabIndex = 1;
-      this.groupBox2.TabStop = false;
-      this.groupBox2.Text = "Range";
-      // 
-      // concreteItemsRestrictor
-      // 
-      this.concreteItemsRestrictor.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.concreteItemsRestrictor.Location = new System.Drawing.Point(3, 16);
-      this.concreteItemsRestrictor.Margin = new System.Windows.Forms.Padding(0);
-      this.concreteItemsRestrictor.Name = "concreteItemsRestrictor";
-      this.concreteItemsRestrictor.Size = new System.Drawing.Size(676, 156);
-      this.concreteItemsRestrictor.TabIndex = 0;
-      // 
-      // JsonItemConcreteItemArrayControl
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.tableLayoutPanel1);
-      this.Margin = new System.Windows.Forms.Padding(0);
-      this.Name = "JsonItemConcreteItemArrayControl";
-      this.Size = new System.Drawing.Size(682, 350);
-      this.tableLayoutPanel1.ResumeLayout(false);
-      this.groupBox1.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).EndInit();
-      this.groupBox2.ResumeLayout(false);
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
-    private System.Windows.Forms.GroupBox groupBox1;
-    private System.Windows.Forms.DataGridView dataGridView;
-    private System.Windows.Forms.GroupBox groupBox2;
-    private ConcreteItemsRestrictor concreteItemsRestrictor;
-  }
-}
Index: anches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemConcreteItemArrayControl.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemConcreteItemArrayControl.cs	(revision 17827)
+++ 	(revision )
@@ -1,81 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-
-namespace HeuristicLab.JsonInterface.OptimizerIntegration {
-  public partial class JsonItemConcreteItemArrayControl : UserControl {
-    private StringArrayVM VM { get; set; }
-    private DataGridViewComboBoxColumn ComboBox { get; set; }
-    public JsonItemConcreteItemArrayControl(StringArrayVM vm) {
-      InitializeComponent();
-      dataGridView.AllowUserToDeleteRows = true;
-      VM = vm;
-      if (VM.Item.ConcreteRestrictedItems != null) {
-        ComboBox = new DataGridViewComboBoxColumn();
-        dataGridView.Columns.Add(ComboBox);
-        concreteItemsRestrictor.OnChecked += AddComboOption;
-        concreteItemsRestrictor.OnUnchecked += RemoveComboOption;
-        concreteItemsRestrictor.Init(VM.Item.ConcreteRestrictedItems);
-      } else {
-        dataGridView.AllowUserToAddRows = true;
-        dataGridView.Columns.Add(new DataGridViewTextBoxColumn());
-        groupBox2.Visible = false;
-        tableLayoutPanel1.RowStyles[0].SizeType = SizeType.Percent;
-        tableLayoutPanel1.RowStyles[0].Height = 100.0f;
-      }
-      if(VM.Value != null) {
-        foreach (var val in VM.Value) {
-          dataGridView.Rows.Add(val);
-        }
-      }
-    }
-
-    private void AddComboOption(object opt) {
-      ComboBox.Items.Add(opt);
-      IList<string> items = new List<string>();
-      foreach (var i in ComboBox.Items) {
-        items.Add((string)i);
-      }
-      VM.Range = items;
-      dataGridView.AllowUserToAddRows = true;
-    }
-
-    private void RemoveComboOption(object opt) {
-      ComboBox.Items.Remove(opt);
-      IList<string> items = new List<string>();
-      foreach (var i in ComboBox.Items) {
-        items.Add((string)i);
-      }
-      VM.Range = items;
-      
-      if (VM.Range.Count() <= 0) {
-        dataGridView.Rows.Clear();
-        dataGridView.AllowUserToAddRows = false;
-      }
-    }
-
-    private void BuildValue() {
-      IList<string> list = new List<string>();
-      for (int r = 0; r < dataGridView.Rows.Count; ++r) {
-        var value = dataGridView[0, r].Value;
-        if(value != null)
-          list.Add((string)value);
-      }
-      VM.Value = list.ToArray();
-    }
-    
-    private void dataGridView_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e) {
-      BuildValue();
-    }
-
-    private void dataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e) {
-      BuildValue();
-    }
-  }
-}
Index: anches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemConcreteItemArrayControl.resx
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemConcreteItemArrayControl.resx	(revision 17827)
+++ 	(revision )
@@ -1,120 +1,0 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-</root>
Index: anches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemMultiValueControl.Designer.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemMultiValueControl.Designer.cs	(revision 17827)
+++ 	(revision )
@@ -1,221 +1,0 @@
-﻿namespace HeuristicLab.JsonInterface.OptimizerIntegration {
-  partial class JsonItemMultiValueControl<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.dataGridView = new System.Windows.Forms.DataGridView();
-      this.numericRangeControl1 = new HeuristicLab.JsonInterface.OptimizerIntegration.NumericRangeControl();
-      this.groupBox1 = new System.Windows.Forms.GroupBox();
-      this.textBoxColumns = new System.Windows.Forms.TextBox();
-      this.textBoxRows = new System.Windows.Forms.TextBox();
-      this.checkBoxColumns = new System.Windows.Forms.CheckBox();
-      this.checkBoxRows = new System.Windows.Forms.CheckBox();
-      this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
-      this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
-      this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
-      this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
-      ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).BeginInit();
-      this.groupBox1.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
-      this.tableLayoutPanel1.SuspendLayout();
-      this.tableLayoutPanel2.SuspendLayout();
-      this.tableLayoutPanel3.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // dataGridView
-      // 
-      this.dataGridView.AllowUserToAddRows = false;
-      this.dataGridView.AllowUserToDeleteRows = false;
-      this.dataGridView.AllowUserToResizeColumns = false;
-      this.dataGridView.AllowUserToResizeRows = false;
-      this.dataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
-      this.dataGridView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.dataGridView.Location = new System.Drawing.Point(0, 44);
-      this.dataGridView.Margin = new System.Windows.Forms.Padding(0);
-      this.dataGridView.Name = "dataGridView";
-      this.dataGridView.Size = new System.Drawing.Size(475, 172);
-      this.dataGridView.TabIndex = 13;
-      // 
-      // numericRangeControl1
-      // 
-      this.numericRangeControl1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
-      this.numericRangeControl1.Location = new System.Drawing.Point(0, 235);
-      this.numericRangeControl1.Margin = new System.Windows.Forms.Padding(0);
-      this.numericRangeControl1.Name = "numericRangeControl1";
-      this.numericRangeControl1.Size = new System.Drawing.Size(481, 63);
-      this.numericRangeControl1.TabIndex = 14;
-      // 
-      // groupBox1
-      // 
-      this.groupBox1.Controls.Add(this.tableLayoutPanel2);
-      this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.groupBox1.Location = new System.Drawing.Point(0, 0);
-      this.groupBox1.Margin = new System.Windows.Forms.Padding(0);
-      this.groupBox1.Name = "groupBox1";
-      this.groupBox1.Size = new System.Drawing.Size(481, 235);
-      this.groupBox1.TabIndex = 15;
-      this.groupBox1.TabStop = false;
-      this.groupBox1.Text = "Value";
-      // 
-      // textBoxColumns
-      // 
-      this.textBoxColumns.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.errorProvider.SetIconAlignment(this.textBoxColumns, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
-      this.textBoxColumns.Location = new System.Drawing.Point(100, 22);
-      this.textBoxColumns.Margin = new System.Windows.Forms.Padding(0);
-      this.textBoxColumns.Name = "textBoxColumns";
-      this.textBoxColumns.ReadOnly = true;
-      this.textBoxColumns.Size = new System.Drawing.Size(375, 20);
-      this.textBoxColumns.TabIndex = 17;
-      this.textBoxColumns.Leave += new System.EventHandler(this.textBoxColumns_TextChanged);
-      this.textBoxColumns.Validating += new System.ComponentModel.CancelEventHandler(this.textBoxColumns_Validating);
-      // 
-      // textBoxRows
-      // 
-      this.textBoxRows.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.errorProvider.SetIconAlignment(this.textBoxRows, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
-      this.textBoxRows.Location = new System.Drawing.Point(100, 0);
-      this.textBoxRows.Margin = new System.Windows.Forms.Padding(0);
-      this.textBoxRows.Name = "textBoxRows";
-      this.textBoxRows.ReadOnly = true;
-      this.textBoxRows.Size = new System.Drawing.Size(375, 20);
-      this.textBoxRows.TabIndex = 16;
-      this.textBoxRows.Leave += new System.EventHandler(this.textBoxRows_TextChanged);
-      this.textBoxRows.Validating += new System.ComponentModel.CancelEventHandler(this.textBoxRows_Validating);
-      // 
-      // checkBoxColumns
-      // 
-      this.checkBoxColumns.AutoSize = true;
-      this.checkBoxColumns.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.checkBoxColumns.Location = new System.Drawing.Point(0, 22);
-      this.checkBoxColumns.Margin = new System.Windows.Forms.Padding(0);
-      this.checkBoxColumns.Name = "checkBoxColumns";
-      this.checkBoxColumns.Size = new System.Drawing.Size(100, 22);
-      this.checkBoxColumns.TabIndex = 15;
-      this.checkBoxColumns.Text = "Columns:";
-      this.checkBoxColumns.UseVisualStyleBackColor = true;
-      // 
-      // checkBoxRows
-      // 
-      this.checkBoxRows.AutoSize = true;
-      this.checkBoxRows.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.checkBoxRows.Location = new System.Drawing.Point(0, 0);
-      this.checkBoxRows.Margin = new System.Windows.Forms.Padding(0);
-      this.checkBoxRows.Name = "checkBoxRows";
-      this.checkBoxRows.Size = new System.Drawing.Size(100, 22);
-      this.checkBoxRows.TabIndex = 14;
-      this.checkBoxRows.Text = "Rows:";
-      this.checkBoxRows.UseVisualStyleBackColor = true;
-      // 
-      // errorProvider
-      // 
-      this.errorProvider.ContainerControl = this;
-      // 
-      // tableLayoutPanel1
-      // 
-      this.tableLayoutPanel1.ColumnCount = 2;
-      this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 100F));
-      this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
-      this.tableLayoutPanel1.Controls.Add(this.textBoxColumns, 1, 1);
-      this.tableLayoutPanel1.Controls.Add(this.checkBoxRows, 0, 0);
-      this.tableLayoutPanel1.Controls.Add(this.textBoxRows, 1, 0);
-      this.tableLayoutPanel1.Controls.Add(this.checkBoxColumns, 0, 1);
-      this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Top;
-      this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
-      this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(0);
-      this.tableLayoutPanel1.Name = "tableLayoutPanel1";
-      this.tableLayoutPanel1.RowCount = 2;
-      this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
-      this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
-      this.tableLayoutPanel1.Size = new System.Drawing.Size(475, 44);
-      this.tableLayoutPanel1.TabIndex = 16;
-      // 
-      // tableLayoutPanel2
-      // 
-      this.tableLayoutPanel2.ColumnCount = 1;
-      this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
-      this.tableLayoutPanel2.Controls.Add(this.dataGridView, 0, 1);
-      this.tableLayoutPanel2.Controls.Add(this.tableLayoutPanel1, 0, 0);
-      this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.tableLayoutPanel2.Location = new System.Drawing.Point(3, 16);
-      this.tableLayoutPanel2.Margin = new System.Windows.Forms.Padding(0);
-      this.tableLayoutPanel2.Name = "tableLayoutPanel2";
-      this.tableLayoutPanel2.RowCount = 2;
-      this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 44F));
-      this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
-      this.tableLayoutPanel2.Size = new System.Drawing.Size(475, 216);
-      this.tableLayoutPanel2.TabIndex = 17;
-      // 
-      // tableLayoutPanel3
-      // 
-      this.tableLayoutPanel3.ColumnCount = 1;
-      this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
-      this.tableLayoutPanel3.Controls.Add(this.numericRangeControl1, 0, 1);
-      this.tableLayoutPanel3.Controls.Add(this.groupBox1, 0, 0);
-      this.tableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.tableLayoutPanel3.Location = new System.Drawing.Point(0, 0);
-      this.tableLayoutPanel3.Margin = new System.Windows.Forms.Padding(0);
-      this.tableLayoutPanel3.Name = "tableLayoutPanel3";
-      this.tableLayoutPanel3.RowCount = 2;
-      this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
-      this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 63F));
-      this.tableLayoutPanel3.Size = new System.Drawing.Size(481, 298);
-      this.tableLayoutPanel3.TabIndex = 16;
-      // 
-      // JsonItemMultiValueControl
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.tableLayoutPanel3);
-      this.errorProvider.SetIconAlignment(this, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
-      this.Margin = new System.Windows.Forms.Padding(0);
-      this.Name = "JsonItemMultiValueControl";
-      this.Size = new System.Drawing.Size(481, 298);
-      ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).EndInit();
-      this.groupBox1.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
-      this.tableLayoutPanel1.ResumeLayout(false);
-      this.tableLayoutPanel1.PerformLayout();
-      this.tableLayoutPanel2.ResumeLayout(false);
-      this.tableLayoutPanel3.ResumeLayout(false);
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.DataGridView dataGridView;
-    private NumericRangeControl numericRangeControl1;
-    private System.Windows.Forms.GroupBox groupBox1;
-    private System.Windows.Forms.CheckBox checkBoxColumns;
-    private System.Windows.Forms.CheckBox checkBoxRows;
-    private System.Windows.Forms.TextBox textBoxRows;
-    private System.Windows.Forms.TextBox textBoxColumns;
-    private System.Windows.Forms.ErrorProvider errorProvider;
-    private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
-    private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
-    private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
-  }
-}
Index: anches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemMultiValueControl.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemMultiValueControl.cs	(revision 17827)
+++ 	(revision )
@@ -1,256 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-
-namespace HeuristicLab.JsonInterface.OptimizerIntegration {
-  
-  public class JsonItemDoubleMatrixValueControl : JsonItemMultiValueControl<double> {
-    public JsonItemDoubleMatrixValueControl(DoubleMatrixValueVM vm) : base(vm, vm.Value) { }
-    
-    protected override void Save() {
-      DoubleMatrixValueVM vm = VM as DoubleMatrixValueVM;
-      vm.Value = Matrix;
-    }
-    
-  }
-
-  public class JsonItemIntArrayValueControl : JsonItemMultiValueControl<int> {
-    public JsonItemIntArrayValueControl(IntArrayValueVM vm) : base(vm, vm.Value) { }
-    
-    protected override void Save() {
-      IntArrayValueVM vm = VM as IntArrayValueVM;
-      vm.Value = Matrix[0];
-    }
-    
-  }
-
-  public class JsonItemDoubleArrayValueControl : JsonItemMultiValueControl<double> {
-    public JsonItemDoubleArrayValueControl(DoubleArrayValueVM vm) : base(vm, vm.Value) { }
-    
-    protected override void Save() {
-      DoubleArrayValueVM vm = VM as DoubleArrayValueVM;
-      vm.Value = Matrix[0];
-    }
-    
-  }
-  
-  public abstract partial class JsonItemMultiValueControl<T> : UserControl {
-    protected IJsonItemVM VM { get; set; }
-    protected NumericRangeControl NumericRangeControl { get; set; }
-    private int Rows { get; set; }
-    private int Columns { get; set; }
-
-    protected T[][] Matrix { get; set; }
-    
-    protected IEnumerable<string> RowNames {
-      get {
-        if(VM is IMatrixJsonItemVM mVM)
-          return mVM.RowNames;
-        return null;
-      }
-      set {
-        if (VM is IMatrixJsonItemVM mVM)
-          mVM.RowNames = value;
-      }
-    }
-    protected IEnumerable<string> ColumnNames {
-      get {
-        if (VM is IMatrixJsonItemVM mVM)
-          return mVM.ColumnNames;
-        return null;
-      }
-      set {
-        if (VM is IMatrixJsonItemVM mVM)
-          mVM.ColumnNames = value;
-      }
-    }
-    
-    public JsonItemMultiValueControl(IMatrixJsonItemVM vm, T[][] matrix) {
-      InitializeComponent();
-      VM = vm;
-      checkBoxRows.DataBindings.Add("Checked", vm, nameof(IMatrixJsonItemVM.RowsResizable));
-      checkBoxColumns.DataBindings.Add("Checked", vm, nameof(IMatrixJsonItemVM.ColumnsResizable));
-
-      int cols = matrix.Length;
-      int rows = matrix.Max(x => x.Length);
-      
-      Matrix = matrix;
-      Columns = cols;
-      Rows = rows;
-      RefreshMatrix();
-      InitSizeConfiguration(rows, cols);
-      dataGridView.CellEndEdit += DataGridView_CellEndEdit;
-      InitRangeBinding();
-    }
-    
-    public JsonItemMultiValueControl(IArrayJsonItemVM vm, T[] array) {
-      InitializeComponent();
-      VM = vm;
-      checkBoxRows.DataBindings.Add("Checked", vm, nameof(IArrayJsonItemVM.Resizable));
-
-      int length = array.Length;
-
-      Matrix = new T[1][];
-      Matrix[0] = array;
-      Columns = 1;
-      Rows = length;
-      RefreshMatrix();
-
-      InitSizeConfiguration(length, null);
-      dataGridView.CellEndEdit += DataGridView_CellEndEdit;
-      InitRangeBinding();
-    }
-    
-    protected abstract void Save();
-
-    private void RefreshMatrix() {
-      dataGridView.Rows.Clear();
-      dataGridView.Columns.Clear();
-
-      T[][] tmp = Matrix;
-      Matrix = new T[Columns][];
-      
-      // add columns
-      for (int c = 0; c < Columns; ++c) {
-        string name = $"Column {c}";
-        if (RowNames != null && c < RowNames.Count())
-          name = RowNames.ElementAt(c);
-        dataGridView.Columns.Add(name, name);
-      }
-
-      // copy data from old matrix into new
-      for (int c = 0; c < Columns; ++c) {
-        T[] newCol = new T[Rows];
-        if(c < tmp.Length)
-          Array.Copy(tmp[c], 0, newCol, 0, Math.Min(tmp[c].Length, Rows));
-        Matrix[c] = newCol;
-      }
-
-      // add rows
-      if(Rows > 0 && Columns > 0) {
-        dataGridView.Rows.Add(Rows);
-        for (int c = 0; c < Columns; ++c) {
-          for (int r = 0; r < Rows; ++r) {
-            //col and row is switched for dataGridView
-            dataGridView[c, r].Value = Matrix[c][r];
-            string name = $"Row {r}";
-            if (ColumnNames != null && r < ColumnNames.Count())
-              name = ColumnNames.ElementAt(r);
-            dataGridView.Rows[r].HeaderCell.Value = name;
-          }
-        }
-      }
-      dataGridView.RowHeadersWidth = 100;
-    }
-
-    #region Init
-    private void InitSizeConfiguration(int? rows, int? columns) {
-      if (rows != null) {
-        checkBoxRows.CheckedChanged += CheckBoxRows_CheckedChanged;
-        textBoxRows.Text = rows.ToString();
-      } else {
-        checkBoxRows.Enabled = false;
-        textBoxRows.ReadOnly = true;
-      }
-
-      if (columns != null) {
-        checkBoxColumns.CheckedChanged += CheckBoxColumns_CheckedChanged;
-        textBoxColumns.Text = columns.ToString();
-      } else {
-        checkBoxColumns.Enabled = false;
-        textBoxColumns.ReadOnly = true;
-      }
-    }
-
-    private void InitRangeBinding() {
-      NumericRangeControl = numericRangeControl1;
-      NumericRangeControl.TBMinRange.DataBindings.Add("Text", VM, nameof(RangedValueBaseVM<int, IntJsonItem>.MinRange));
-      NumericRangeControl.TBMaxRange.DataBindings.Add("Text", VM, nameof(RangedValueBaseVM<int, IntJsonItem>.MaxRange));
-      NumericRangeControl.EnableMinRange.DataBindings.Add("Checked", VM, nameof(RangedValueBaseVM<int, IntJsonItem>.EnableMinRange),
-        false, DataSourceUpdateMode.OnPropertyChanged);
-      NumericRangeControl.EnableMaxRange.DataBindings.Add("Checked", VM, nameof(RangedValueBaseVM<int, IntJsonItem>.EnableMaxRange),
-        false, DataSourceUpdateMode.OnPropertyChanged);
-    }
-    #endregion
-
-    #region Validation
-    private void textBoxRows_Validating(object sender, CancelEventArgs e) {
-      if (textBoxRows.ReadOnly) {
-        errorProvider.SetError(textBoxRows, null);
-      } else {
-        if (string.IsNullOrWhiteSpace(textBoxRows.Text)) {
-          errorProvider.SetError(textBoxRows, "'Rows' must not be empty.");
-          e.Cancel = true;
-        } else if (!int.TryParse(textBoxRows.Text, out int r)) {
-          errorProvider.SetError(textBoxRows, "Value of 'Rows' must be an integer.");
-          e.Cancel = true;
-        } else if (r == 0) {
-          errorProvider.SetError(textBoxRows, "Value of 'Rows' must be an integer larger than 0.");
-          e.Cancel = true;
-        } else {
-          errorProvider.SetError(textBoxRows, null);
-        }
-      }
-    }
-
-    private void textBoxColumns_Validating(object sender, CancelEventArgs e) {
-      if (textBoxColumns.ReadOnly) {
-        errorProvider.SetError(textBoxColumns, null);
-      } else {
-        if (string.IsNullOrWhiteSpace(textBoxColumns.Text)) {
-          errorProvider.SetError(textBoxColumns, "'Columns' must not be empty.");
-          e.Cancel = true;
-        } else if (!int.TryParse(textBoxColumns.Text, out int r)) {
-          errorProvider.SetError(textBoxColumns, "Value of 'Columns' must be an integer.");
-          e.Cancel = true;
-        } else if (r == 0) {
-          errorProvider.SetError(textBoxColumns, "Value of 'Columns' must be an integer larger than 0.");
-          e.Cancel = true;
-        } else {
-          errorProvider.SetError(textBoxColumns, null);
-        }
-      }
-    }
-    #endregion
-
-    #region Events
-    private void textBoxRows_TextChanged(object sender, EventArgs e) {
-      if(!textBoxRows.ReadOnly && int.TryParse(textBoxRows.Text, out int r) && Rows != r) {
-        Rows = r;
-        RefreshMatrix();
-        Save();
-      }
-    }
-
-    private void textBoxColumns_TextChanged(object sender, EventArgs e) {
-      if (!textBoxColumns.ReadOnly && int.TryParse(textBoxColumns.Text, out int c) && Columns != c) {
-        Columns = c;
-        RefreshMatrix();
-        Save();
-      }
-    }
-
-    private void CheckBoxColumns_CheckedChanged(object sender, EventArgs e) {
-      textBoxColumns.ReadOnly = !checkBoxColumns.Checked;
-    }
-
-    private void CheckBoxRows_CheckedChanged(object sender, EventArgs e) {
-      textBoxRows.ReadOnly = !checkBoxRows.Checked;
-    }
-
-    private void DataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e) {
-      object val = dataGridView[e.ColumnIndex, e.RowIndex].Value;
-      Matrix[e.ColumnIndex][e.RowIndex] = (T)Convert.ChangeType(val.ToString().Replace(",", "."),
-                                            typeof(T),
-                                            System.Globalization.CultureInfo.InvariantCulture);
-      Save();
-    }
-    #endregion
-  }
-}
Index: anches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemMultiValueControl.resx
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemMultiValueControl.resx	(revision 17827)
+++ 	(revision )
@@ -1,123 +1,0 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <metadata name="errorProvider.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 17</value>
-  </metadata>
-</root>
Index: anches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemRangeControl.Designer.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemRangeControl.Designer.cs	(revision 17827)
+++ 	(revision )
@@ -1,157 +1,0 @@
-﻿namespace HeuristicLab.JsonInterface.OptimizerIntegration {
-  partial class JsonItemRangeControl {
-    /// <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.groupBox1 = new System.Windows.Forms.GroupBox();
-      this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
-      this.label2 = new System.Windows.Forms.Label();
-      this.textBoxValueTo = new System.Windows.Forms.TextBox();
-      this.textBoxValueFrom = new System.Windows.Forms.TextBox();
-      this.label4 = new System.Windows.Forms.Label();
-      this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
-      this.numericRangeControl = new HeuristicLab.JsonInterface.OptimizerIntegration.NumericRangeControl();
-      this.groupBox1.SuspendLayout();
-      this.tableLayoutPanel1.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
-      this.SuspendLayout();
-      // 
-      // groupBox1
-      // 
-      this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
-      this.groupBox1.Controls.Add(this.tableLayoutPanel1);
-      this.groupBox1.Location = new System.Drawing.Point(0, 0);
-      this.groupBox1.Margin = new System.Windows.Forms.Padding(0);
-      this.groupBox1.Name = "groupBox1";
-      this.groupBox1.Size = new System.Drawing.Size(500, 68);
-      this.groupBox1.TabIndex = 17;
-      this.groupBox1.TabStop = false;
-      this.groupBox1.Text = "Value";
-      // 
-      // tableLayoutPanel1
-      // 
-      this.tableLayoutPanel1.ColumnCount = 2;
-      this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 100F));
-      this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
-      this.tableLayoutPanel1.Controls.Add(this.label2, 0, 0);
-      this.tableLayoutPanel1.Controls.Add(this.textBoxValueTo, 1, 1);
-      this.tableLayoutPanel1.Controls.Add(this.textBoxValueFrom, 1, 0);
-      this.tableLayoutPanel1.Controls.Add(this.label4, 0, 1);
-      this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 16);
-      this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(0);
-      this.tableLayoutPanel1.Name = "tableLayoutPanel1";
-      this.tableLayoutPanel1.RowCount = 2;
-      this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
-      this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
-      this.tableLayoutPanel1.Size = new System.Drawing.Size(494, 49);
-      this.tableLayoutPanel1.TabIndex = 19;
-      // 
-      // label2
-      // 
-      this.label2.AutoSize = true;
-      this.label2.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.label2.Location = new System.Drawing.Point(0, 0);
-      this.label2.Margin = new System.Windows.Forms.Padding(0);
-      this.label2.Name = "label2";
-      this.label2.Size = new System.Drawing.Size(100, 24);
-      this.label2.TabIndex = 0;
-      this.label2.Text = "From:";
-      this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
-      // 
-      // textBoxValueTo
-      // 
-      this.textBoxValueTo.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.textBoxValueTo.Location = new System.Drawing.Point(100, 24);
-      this.textBoxValueTo.Margin = new System.Windows.Forms.Padding(0);
-      this.textBoxValueTo.Name = "textBoxValueTo";
-      this.textBoxValueTo.Size = new System.Drawing.Size(394, 20);
-      this.textBoxValueTo.TabIndex = 3;
-      // 
-      // textBoxValueFrom
-      // 
-      this.textBoxValueFrom.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.textBoxValueFrom.Location = new System.Drawing.Point(100, 0);
-      this.textBoxValueFrom.Margin = new System.Windows.Forms.Padding(0);
-      this.textBoxValueFrom.Name = "textBoxValueFrom";
-      this.textBoxValueFrom.Size = new System.Drawing.Size(394, 20);
-      this.textBoxValueFrom.TabIndex = 2;
-      // 
-      // label4
-      // 
-      this.label4.AutoSize = true;
-      this.label4.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.label4.Location = new System.Drawing.Point(0, 24);
-      this.label4.Margin = new System.Windows.Forms.Padding(0);
-      this.label4.Name = "label4";
-      this.label4.Size = new System.Drawing.Size(100, 25);
-      this.label4.TabIndex = 1;
-      this.label4.Text = "To:";
-      this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
-      // 
-      // errorProvider
-      // 
-      this.errorProvider.ContainerControl = this;
-      // 
-      // numericRangeControl
-      // 
-      this.numericRangeControl.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
-      this.numericRangeControl.Location = new System.Drawing.Point(0, 71);
-      this.numericRangeControl.Margin = new System.Windows.Forms.Padding(0);
-      this.numericRangeControl.Name = "numericRangeControl";
-      this.numericRangeControl.Size = new System.Drawing.Size(500, 74);
-      this.numericRangeControl.TabIndex = 18;
-      // 
-      // JsonItemRangeControl
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.numericRangeControl);
-      this.Controls.Add(this.groupBox1);
-      this.errorProvider.SetIconAlignment(this, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
-      this.Margin = new System.Windows.Forms.Padding(0);
-      this.Name = "JsonItemRangeControl";
-      this.Size = new System.Drawing.Size(500, 147);
-      this.groupBox1.ResumeLayout(false);
-      this.tableLayoutPanel1.ResumeLayout(false);
-      this.tableLayoutPanel1.PerformLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.GroupBox groupBox1;
-    private System.Windows.Forms.TextBox textBoxValueTo;
-    private System.Windows.Forms.Label label4;
-    private System.Windows.Forms.Label label2;
-    private NumericRangeControl numericRangeControl;
-    private System.Windows.Forms.ErrorProvider errorProvider;
-    private System.Windows.Forms.TextBox textBoxValueFrom;
-    private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
-  }
-}
Index: anches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemRangeControl.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemRangeControl.cs	(revision 17827)
+++ 	(revision )
@@ -1,72 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-using System.Globalization;
-
-namespace HeuristicLab.JsonInterface.OptimizerIntegration {
-  public partial class JsonItemRangeControl : UserControl {
-    IJsonItemVM VM { get; set; }
-
-
-    public JsonItemRangeControl(DoubleRangeVM vm) {
-      InitializeComponent();
-      VM = vm;
-      textBoxValueFrom.DataBindings.Add("Text", vm, nameof(vm.MinValue));
-      textBoxValueTo.DataBindings.Add("Text", vm, nameof(vm.MaxValue));
-      InitNumbericRangeControl();
-
-    }
-    public JsonItemRangeControl(IntRangeVM vm) {
-      InitializeComponent();
-      VM = vm;
-      textBoxValueFrom.DataBindings.Add("Text", vm, nameof(vm.MinValue));
-      textBoxValueTo.DataBindings.Add("Text", vm, nameof(vm.MaxValue));
-      InitNumbericRangeControl();
-    }
-
-    private void InitNumbericRangeControl() {
-      numericRangeControl.TBMinRange.DataBindings.Add("Text", VM, nameof(RangedValueBaseVM<int, IntJsonItem>.MinRange));
-      numericRangeControl.TBMaxRange.DataBindings.Add("Text", VM, nameof(RangedValueBaseVM<int, IntJsonItem>.MaxRange));
-      numericRangeControl.EnableMinRange.DataBindings.Add("Checked", VM, nameof(RangedValueBaseVM<int, IntJsonItem>.EnableMinRange),
-        false, DataSourceUpdateMode.OnPropertyChanged);
-      numericRangeControl.EnableMaxRange.DataBindings.Add("Checked", VM, nameof(RangedValueBaseVM<int, IntJsonItem>.EnableMaxRange),
-        false, DataSourceUpdateMode.OnPropertyChanged);
-    }
-
-    /*
-    protected abstract object Parse(string s);
-
-    private void SetValue() {
-      if (!string.IsNullOrWhiteSpace(textBoxValueFrom.Text))
-        value[0] = Parse(textBoxValueFrom.Text);
-      else
-        value[0] = ((Array)VM.Item.Value).GetValue(0);
-
-      if (!string.IsNullOrWhiteSpace(textBoxValueTo.Text))
-        value[1] = Parse(textBoxValueTo.Text);
-      else
-        value[1] = ((Array)VM.Item.Value).GetValue(1);
-      VM.Item.Value = value;
-    }
-    
-    private void textBoxValueFrom_Leave(object sender, EventArgs e) {
-      SetValue();
-    }
-
-    private void textBoxValueTo_Leave(object sender, EventArgs e) {
-      SetValue();
-    }
-
-    private void numericRangeControl1_Load(object sender, EventArgs e) {
-      numericRangeControl1.IsDouble = isDouble;
-      numericRangeControl1.VM = VM;
-    }
-    */
-  }
-}
Index: anches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemRangeControl.resx
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemRangeControl.resx	(revision 17827)
+++ 	(revision )
@@ -1,123 +1,0 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <metadata name="errorProvider.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 17</value>
-  </metadata>
-</root>
Index: anches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemValidValuesControl.Designer.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemValidValuesControl.Designer.cs	(revision 17827)
+++ 	(revision )
@@ -1,149 +1,0 @@
-﻿namespace HeuristicLab.JsonInterface.OptimizerIntegration {
-  partial class JsonItemValidValuesControl {
-    /// <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.comboBoxValues = new System.Windows.Forms.ComboBox();
-      this.label2 = new System.Windows.Forms.Label();
-      this.groupBoxRange = new System.Windows.Forms.GroupBox();
-      this.concreteItemsRestrictor = new HeuristicLab.JsonInterface.OptimizerIntegration.ConcreteItemsRestrictor();
-      this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
-      this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
-      this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
-      this.groupBoxRange.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
-      this.tableLayoutPanel1.SuspendLayout();
-      this.tableLayoutPanel2.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // comboBoxValues
-      // 
-      this.comboBoxValues.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.comboBoxValues.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
-      this.comboBoxValues.FormattingEnabled = true;
-      this.comboBoxValues.Location = new System.Drawing.Point(100, 0);
-      this.comboBoxValues.Margin = new System.Windows.Forms.Padding(0);
-      this.comboBoxValues.Name = "comboBoxValues";
-      this.comboBoxValues.Size = new System.Drawing.Size(400, 21);
-      this.comboBoxValues.TabIndex = 15;
-      // 
-      // label2
-      // 
-      this.label2.AutoSize = true;
-      this.label2.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.label2.Location = new System.Drawing.Point(0, 0);
-      this.label2.Margin = new System.Windows.Forms.Padding(0);
-      this.label2.Name = "label2";
-      this.label2.Size = new System.Drawing.Size(100, 22);
-      this.label2.TabIndex = 16;
-      this.label2.Text = "Value";
-      this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
-      // 
-      // groupBoxRange
-      // 
-      this.groupBoxRange.Controls.Add(this.concreteItemsRestrictor);
-      this.groupBoxRange.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.groupBoxRange.Location = new System.Drawing.Point(0, 22);
-      this.groupBoxRange.Margin = new System.Windows.Forms.Padding(0);
-      this.groupBoxRange.Name = "groupBoxRange";
-      this.groupBoxRange.Size = new System.Drawing.Size(500, 236);
-      this.groupBoxRange.TabIndex = 17;
-      this.groupBoxRange.TabStop = false;
-      this.groupBoxRange.Text = "Range";
-      // 
-      // concreteItemsRestrictor
-      // 
-      this.concreteItemsRestrictor.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.concreteItemsRestrictor.Location = new System.Drawing.Point(3, 16);
-      this.concreteItemsRestrictor.Margin = new System.Windows.Forms.Padding(0);
-      this.concreteItemsRestrictor.Name = "concreteItemsRestrictor";
-      this.concreteItemsRestrictor.Size = new System.Drawing.Size(494, 217);
-      this.concreteItemsRestrictor.TabIndex = 0;
-      // 
-      // errorProvider
-      // 
-      this.errorProvider.ContainerControl = this;
-      // 
-      // tableLayoutPanel1
-      // 
-      this.tableLayoutPanel1.ColumnCount = 1;
-      this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
-      this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel2, 0, 0);
-      this.tableLayoutPanel1.Controls.Add(this.groupBoxRange, 0, 1);
-      this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
-      this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(0);
-      this.tableLayoutPanel1.Name = "tableLayoutPanel1";
-      this.tableLayoutPanel1.RowCount = 2;
-      this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 22F));
-      this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
-      this.tableLayoutPanel1.Size = new System.Drawing.Size(500, 258);
-      this.tableLayoutPanel1.TabIndex = 18;
-      // 
-      // tableLayoutPanel2
-      // 
-      this.tableLayoutPanel2.ColumnCount = 2;
-      this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 100F));
-      this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
-      this.tableLayoutPanel2.Controls.Add(this.label2, 0, 0);
-      this.tableLayoutPanel2.Controls.Add(this.comboBoxValues, 1, 0);
-      this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.tableLayoutPanel2.Location = new System.Drawing.Point(0, 0);
-      this.tableLayoutPanel2.Margin = new System.Windows.Forms.Padding(0);
-      this.tableLayoutPanel2.Name = "tableLayoutPanel2";
-      this.tableLayoutPanel2.RowCount = 1;
-      this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
-      this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 22F));
-      this.tableLayoutPanel2.Size = new System.Drawing.Size(500, 22);
-      this.tableLayoutPanel2.TabIndex = 19;
-      // 
-      // JsonItemValidValuesControl
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.tableLayoutPanel1);
-      this.ForeColor = System.Drawing.Color.Black;
-      this.errorProvider.SetIconAlignment(this, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
-      this.Margin = new System.Windows.Forms.Padding(0);
-      this.Name = "JsonItemValidValuesControl";
-      this.Size = new System.Drawing.Size(500, 258);
-      this.groupBoxRange.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
-      this.tableLayoutPanel1.ResumeLayout(false);
-      this.tableLayoutPanel2.ResumeLayout(false);
-      this.tableLayoutPanel2.PerformLayout();
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-    private System.Windows.Forms.ComboBox comboBoxValues;
-    private System.Windows.Forms.Label label2;
-    private System.Windows.Forms.GroupBox groupBoxRange;
-    private System.Windows.Forms.ErrorProvider errorProvider;
-    private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
-    private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
-    private ConcreteItemsRestrictor concreteItemsRestrictor;
-  }
-}
Index: anches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemValidValuesControl.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemValidValuesControl.cs	(revision 17827)
+++ 	(revision )
@@ -1,62 +1,0 @@
-﻿using System.Collections.Generic;
-using System.Drawing;
-using System.Linq;
-using System.Windows.Forms;
-
-namespace HeuristicLab.JsonInterface.OptimizerIntegration {
-  public partial class JsonItemValidValuesControl : UserControl {
-
-    StringValueVM VM { get; set; }
-
-    public JsonItemValidValuesControl(StringValueVM vm) {
-      InitializeComponent();
-      VM = vm;
-      if (VM.Item.ConcreteRestrictedItems != null) {
-        string tmp = VM.Value;
-        concreteItemsRestrictor.OnChecked += AddComboOption;
-        concreteItemsRestrictor.OnUnchecked += RemoveComboOption;
-        concreteItemsRestrictor.Init(VM.Item.ConcreteRestrictedItems);
-        VM.Value = tmp;
-        comboBoxValues.DataBindings.Add("SelectedItem", VM, nameof(StringValueVM.Value));
-      } else {
-        groupBoxRange.Hide();
-        TextBox tb = new TextBox();
-        tableLayoutPanel2.Controls.Remove(comboBoxValues);
-        tableLayoutPanel2.Controls.Add(tb, 1, 0);
-
-        tb.Location = comboBoxValues.Location;
-        tb.Margin = new Padding(0);
-        tb.Size = new Size(comboBoxValues.Size.Width, 20);
-        tb.Anchor = AnchorStyles.Top | AnchorStyles.Left;
-        tb.Dock = DockStyle.Fill;
-
-        tb.DataBindings.Add("Text", VM, nameof(StringValueVM.Value));
-        tb.Show();
-      }
-    }
-
-    private void AddComboOption(object opt) {
-      comboBoxValues.Items.Add(opt);
-      IList<string> items = new List<string>();
-      foreach (var i in comboBoxValues.Items) {
-        items.Add((string)i);
-      }
-      VM.Range = items;
-      comboBoxValues.Enabled = true;
-    }
-
-    private void RemoveComboOption(object opt) {
-      comboBoxValues.Items.Remove(opt);
-      IList<string> items = new List<string>();
-      foreach (var i in comboBoxValues.Items) {
-        items.Add((string)i);
-      }
-      VM.Range = items;
-
-      if (VM.Range.Count() <= 0) {
-        comboBoxValues.Enabled = false;
-        comboBoxValues.SelectedIndex = -1;
-      }
-    }
-  }
-}
Index: anches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemValidValuesControl.resx
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemValidValuesControl.resx	(revision 17827)
+++ 	(revision )
@@ -1,123 +1,0 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <metadata name="errorProvider.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 17</value>
-  </metadata>
-</root>
Index: anches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemValueControl.Designer.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemValueControl.Designer.cs	(revision 17827)
+++ 	(revision )
@@ -1,132 +1,0 @@
-﻿namespace HeuristicLab.JsonInterface.OptimizerIntegration {
-  partial class JsonItemValueControl {
-    /// <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.textBoxValue = new System.Windows.Forms.TextBox();
-      this.label2 = new System.Windows.Forms.Label();
-      this.numericRangeControl1 = new HeuristicLab.JsonInterface.OptimizerIntegration.NumericRangeControl();
-      this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
-      this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
-      this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
-      this.tableLayoutPanel1.SuspendLayout();
-      this.tableLayoutPanel2.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // textBoxValue
-      // 
-      this.textBoxValue.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.textBoxValue.Location = new System.Drawing.Point(100, 0);
-      this.textBoxValue.Margin = new System.Windows.Forms.Padding(0);
-      this.textBoxValue.Name = "textBoxValue";
-      this.textBoxValue.Size = new System.Drawing.Size(577, 20);
-      this.textBoxValue.TabIndex = 14;
-      this.textBoxValue.Validating += new System.ComponentModel.CancelEventHandler(this.textBoxValue_Validating);
-      // 
-      // label2
-      // 
-      this.label2.AutoSize = true;
-      this.label2.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.label2.Location = new System.Drawing.Point(0, 0);
-      this.label2.Margin = new System.Windows.Forms.Padding(0);
-      this.label2.Name = "label2";
-      this.label2.Size = new System.Drawing.Size(100, 22);
-      this.label2.TabIndex = 15;
-      this.label2.Text = "Value";
-      this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
-      // 
-      // numericRangeControl1
-      // 
-      this.numericRangeControl1.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.numericRangeControl1.Location = new System.Drawing.Point(0, 22);
-      this.numericRangeControl1.Margin = new System.Windows.Forms.Padding(0);
-      this.numericRangeControl1.Name = "numericRangeControl1";
-      this.numericRangeControl1.Size = new System.Drawing.Size(677, 66);
-      this.numericRangeControl1.TabIndex = 16;
-      // 
-      // errorProvider
-      // 
-      this.errorProvider.ContainerControl = this;
-      // 
-      // tableLayoutPanel1
-      // 
-      this.tableLayoutPanel1.ColumnCount = 2;
-      this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 100F));
-      this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
-      this.tableLayoutPanel1.Controls.Add(this.label2, 0, 0);
-      this.tableLayoutPanel1.Controls.Add(this.textBoxValue, 1, 0);
-      this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Top;
-      this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
-      this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(0);
-      this.tableLayoutPanel1.Name = "tableLayoutPanel1";
-      this.tableLayoutPanel1.RowCount = 1;
-      this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
-      this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 22F));
-      this.tableLayoutPanel1.Size = new System.Drawing.Size(677, 22);
-      this.tableLayoutPanel1.TabIndex = 17;
-      // 
-      // tableLayoutPanel2
-      // 
-      this.tableLayoutPanel2.ColumnCount = 1;
-      this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
-      this.tableLayoutPanel2.Controls.Add(this.numericRangeControl1, 0, 1);
-      this.tableLayoutPanel2.Controls.Add(this.tableLayoutPanel1, 0, 0);
-      this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Top;
-      this.tableLayoutPanel2.Location = new System.Drawing.Point(0, 0);
-      this.tableLayoutPanel2.Margin = new System.Windows.Forms.Padding(0);
-      this.tableLayoutPanel2.Name = "tableLayoutPanel2";
-      this.tableLayoutPanel2.RowCount = 2;
-      this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 22F));
-      this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
-      this.tableLayoutPanel2.Size = new System.Drawing.Size(677, 88);
-      this.tableLayoutPanel2.TabIndex = 18;
-      // 
-      // JsonItemValueControl
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.tableLayoutPanel2);
-      this.errorProvider.SetIconAlignment(this, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
-      this.Margin = new System.Windows.Forms.Padding(0);
-      this.Name = "JsonItemValueControl";
-      this.Size = new System.Drawing.Size(677, 88);
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
-      this.tableLayoutPanel1.ResumeLayout(false);
-      this.tableLayoutPanel1.PerformLayout();
-      this.tableLayoutPanel2.ResumeLayout(false);
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.TextBox textBoxValue;
-    private System.Windows.Forms.Label label2;
-    private NumericRangeControl numericRangeControl1;
-    private System.Windows.Forms.ErrorProvider errorProvider;
-    private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
-    private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
-  }
-}
Index: anches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemValueControl.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemValueControl.cs	(revision 17827)
+++ 	(revision )
@@ -1,77 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-using System.Globalization;
-
-namespace HeuristicLab.JsonInterface.OptimizerIntegration {
-  
-  public class JsonItemIntValueControl : JsonItemValueControl {
-    
-    #region Overriden Properties
-    protected override string ValuePropertyId => nameof(IntValueVM.Value);
-    #endregion
-    
-    public JsonItemIntValueControl(IntValueVM vm) : base(vm) {
-      Init();
-    }
-  }
-
-  public class JsonItemDoubleValueControl : JsonItemValueControl {
-    
-    #region Overriden Properties
-    protected override string ValuePropertyId => nameof(DoubleValueVM.Value);
-    #endregion
-    
-    public JsonItemDoubleValueControl(DoubleValueVM vm) : base(vm) {
-      Init();
-    }
-  }
-  
-  public abstract partial class JsonItemValueControl : UserControl {
-    #region Protected Properties
-    protected IJsonItemVM VM { get; set; }
-    protected TextBox TBValue { get; set; }
-    protected NumericRangeControl NumericRangeControl { get; set; }
-    #endregion
-
-    #region Abstract Properties
-    protected abstract string ValuePropertyId { get; }
-    #endregion
-
-    public JsonItemValueControl() {
-      InitializeComponent();
-    }
-
-    public JsonItemValueControl(IJsonItemVM vm) {
-      InitializeComponent();
-      VM = vm;
-      TBValue = textBoxValue;
-      NumericRangeControl = numericRangeControl1;
-    }
-    
-    protected void Init() { 
-      TBValue.DataBindings.Add("Text", VM, ValuePropertyId);
-      NumericRangeControl.TBMinRange.DataBindings.Add("Text", VM, nameof(RangedValueBaseVM<int, IntJsonItem>.MinRange));
-      NumericRangeControl.TBMaxRange.DataBindings.Add("Text", VM, nameof(RangedValueBaseVM<int, IntJsonItem>.MaxRange));
-      NumericRangeControl.EnableMinRange.DataBindings.Add("Checked", VM, nameof(RangedValueBaseVM<int, IntJsonItem>.EnableMinRange),
-        false, DataSourceUpdateMode.OnPropertyChanged);
-      NumericRangeControl.EnableMaxRange.DataBindings.Add("Checked", VM, nameof(RangedValueBaseVM<int, IntJsonItem>.EnableMaxRange),
-        false, DataSourceUpdateMode.OnPropertyChanged);
-    }
-
-    private void textBoxValue_Validating(object sender, CancelEventArgs e) {
-      if (string.IsNullOrWhiteSpace(textBoxValue.Text)) {
-        errorProvider.SetError(textBoxValue, "Value must not be empty.");
-        e.Cancel = true;
-      } else {
-        errorProvider.SetError(textBoxValue, null);
-      }
-    }
-  }
-}
Index: anches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemValueControl.resx
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemValueControl.resx	(revision 17827)
+++ 	(revision )
@@ -1,123 +1,0 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <metadata name="errorProvider.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 17</value>
-  </metadata>
-</root>
Index: anches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/LookupJsonItemControl.Designer.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/LookupJsonItemControl.Designer.cs	(revision 17827)
+++ 	(revision )
@@ -1,88 +1,0 @@
-﻿namespace HeuristicLab.JsonInterface.OptimizerIntegration {
-  partial class LookupJsonItemControl {
-    /// <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.textBoxActualName = new System.Windows.Forms.TextBox();
-      this.labelActualName = new System.Windows.Forms.Label();
-      this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
-      this.tableLayoutPanel1.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // textBoxActualName
-      // 
-      this.textBoxActualName.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.textBoxActualName.Location = new System.Drawing.Point(100, 0);
-      this.textBoxActualName.Margin = new System.Windows.Forms.Padding(0);
-      this.textBoxActualName.Name = "textBoxActualName";
-      this.textBoxActualName.Size = new System.Drawing.Size(316, 20);
-      this.textBoxActualName.TabIndex = 12;
-      // 
-      // labelActualName
-      // 
-      this.labelActualName.AutoSize = true;
-      this.labelActualName.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.labelActualName.Location = new System.Drawing.Point(0, 0);
-      this.labelActualName.Margin = new System.Windows.Forms.Padding(0);
-      this.labelActualName.Name = "labelActualName";
-      this.labelActualName.Size = new System.Drawing.Size(100, 22);
-      this.labelActualName.TabIndex = 11;
-      this.labelActualName.Text = "ActualName";
-      this.labelActualName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
-      // 
-      // tableLayoutPanel1
-      // 
-      this.tableLayoutPanel1.ColumnCount = 2;
-      this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 100F));
-      this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
-      this.tableLayoutPanel1.Controls.Add(this.labelActualName, 0, 0);
-      this.tableLayoutPanel1.Controls.Add(this.textBoxActualName, 1, 0);
-      this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Top;
-      this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
-      this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(0);
-      this.tableLayoutPanel1.Name = "tableLayoutPanel1";
-      this.tableLayoutPanel1.RowCount = 1;
-      this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
-      this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 22F));
-      this.tableLayoutPanel1.Size = new System.Drawing.Size(416, 22);
-      this.tableLayoutPanel1.TabIndex = 13;
-      // 
-      // LookupJsonItemControl
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.tableLayoutPanel1);
-      this.Name = "LookupJsonItemControl";
-      this.Size = new System.Drawing.Size(416, 23);
-      this.tableLayoutPanel1.ResumeLayout(false);
-      this.tableLayoutPanel1.PerformLayout();
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-    protected System.Windows.Forms.TextBox textBoxActualName;
-    protected System.Windows.Forms.Label labelActualName;
-    protected System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
-  }
-}
Index: anches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/LookupJsonItemControl.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/LookupJsonItemControl.cs	(revision 17827)
+++ 	(revision )
@@ -1,21 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-
-namespace HeuristicLab.JsonInterface.OptimizerIntegration {
-  public partial class LookupJsonItemControl : UserControl {
-    public LookupJsonItemControl() {
-      InitializeComponent();
-    }
-    public LookupJsonItemControl(ILookupJsonItemVM vm) {
-      InitializeComponent();
-      textBoxActualName.DataBindings.Add("Text", vm, nameof(ILookupJsonItemVM.ActualName));
-    }
-  }
-}
Index: anches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/LookupJsonItemControl.resx
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/LookupJsonItemControl.resx	(revision 17827)
+++ 	(revision )
@@ -1,120 +1,0 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-</root>
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/ValueLookupJsonItemControl.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/ValueLookupJsonItemControl.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/ValueLookupJsonItemControl.cs	(revision 17828)
@@ -11,8 +11,8 @@
 
 namespace HeuristicLab.JsonInterface.OptimizerIntegration {
-  public partial class ValueLookupJsonItemControl : LookupJsonItemControl {
+  public partial class ValueLookupJsonItemControl : UserControl {
     private static IDictionary<Type, Type> JI2VM { get; set; }
 
-    public ValueLookupJsonItemControl(IValueLookupJsonItemVM vm) : base(vm) {
+    public ValueLookupJsonItemControl(IValueLookupJsonItemVM vm) {
       InitializeComponent();
       InitCache();
@@ -22,7 +22,8 @@
         content.Controls.Clear();
         UserControl control = tmp.Control;
-        content.Controls.Add(control);
-        control.Dock = DockStyle.Fill;
-        
+        if(control != null) {
+          content.Controls.Add(control);
+          control.Dock = DockStyle.Fill;
+        }
       }
     }
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/AlgorithmConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/AlgorithmConverter.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/AlgorithmConverter.cs	(revision 17828)
@@ -12,4 +12,7 @@
 
     public override Type ConvertableType => typeof(IAlgorithm);
+
+    public override bool CanConvertType(Type t) => 
+      t.GetInterfaces().Any(x => x == ConvertableType);
 
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/BaseConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/BaseConverter.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/BaseConverter.cs	(revision 17828)
@@ -12,4 +12,7 @@
   {
     public abstract int Priority { get; }
+
+    public abstract bool CanConvertType(Type t);
+
     public abstract Type ConvertableType { get; }
 
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/BatchRunConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/BatchRunConverter.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/BatchRunConverter.cs	(revision 17828)
@@ -10,4 +10,6 @@
     public override int Priority => 10;
     public override Type ConvertableType => HEAL.Attic.Mapper.StaticCache.GetType(new Guid("E85407E0-18EC-4198-8321-9CF030FDF6D7"));
+
+    public override bool CanConvertType(Type t) => ConvertableType.IsAssignableFrom(t);
 
     public override IJsonItem Extract(IItem value, IJsonItemConverter root) {
@@ -31,5 +33,4 @@
         Maximum = int.MaxValue 
       });
-      
       return batchRunJI;
     }
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ConstrainedValueParameterConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ConstrainedValueParameterConverter.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ConstrainedValueParameterConverter.cs	(revision 17828)
@@ -11,4 +11,7 @@
     public override int Priority => 3;
     public override Type ConvertableType => typeof(IConstrainedValueParameter<>);
+
+    public override bool CanConvertType(Type t) =>
+      t.GetInterfaces().Any(x => x.IsGenericType && x.GetGenericTypeDefinition() == typeof(IConstrainedValueParameter<>));
 
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/EnumTypeConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/EnumTypeConverter.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/EnumTypeConverter.cs	(revision 17828)
@@ -11,4 +11,8 @@
     public override int Priority => 1;
     public override Type ConvertableType => typeof(EnumValue<>);
+
+    public override bool CanConvertType(Type t) =>
+      typeof(EnumValue<>).IsAssignableFrom(t) || 
+      (t.IsGenericType && t.GetGenericTypeDefinition() == ConvertableType);
 
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) =>
@@ -25,5 +29,5 @@
         Value = Enum.GetName(enumType, val),
         ConcreteRestrictedItems = Enum.GetNames(enumType)
-    };
+      };
     }
   }
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ExperimentConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ExperimentConverter.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ExperimentConverter.cs	(revision 17828)
@@ -11,4 +11,7 @@
     public override int Priority => 10;
     public override Type ConvertableType => HEAL.Attic.Mapper.StaticCache.GetType(new Guid("A8A4536B-54C1-4A17-AB58-A6006F7F394B"));
+
+    public override bool CanConvertType(Type t) =>
+      ConvertableType.IsAssignableFrom(t);
 
     public override IJsonItem Extract(IItem value, IJsonItemConverter root) {
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/LookupParameterConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/LookupParameterConverter.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/LookupParameterConverter.cs	(revision 17828)
@@ -10,5 +10,8 @@
     public override int Priority => 3;
     public override Type ConvertableType => typeof(ILookupParameter);
-    
+
+    public override bool CanConvertType(Type t) =>
+      t.GetInterfaces().Any(x => x == typeof(ILookupParameter));
+
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) =>
       ((ILookupParameter)item).ActualName = ((ILookupJsonItem)data).ActualName as string;
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/MultiCheckedOperatorConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/MultiCheckedOperatorConverter.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/MultiCheckedOperatorConverter.cs	(revision 17828)
@@ -10,6 +10,10 @@
   public class MultiCheckedOperatorConverter : ParameterizedItemConverter {
     public override int Priority => 3;
+
     public override Type ConvertableType => typeof(ICheckedMultiOperator<>);
-    
+
+    public override bool CanConvertType(Type t) =>
+      t.GetInterfaces().Any(x => x.IsGenericType && x.GetGenericTypeDefinition() == ConvertableType);
+
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
       base.Inject(item, data, root);
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ParameterizedItemConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ParameterizedItemConverter.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ParameterizedItemConverter.cs	(revision 17828)
@@ -10,4 +10,7 @@
     public override int Priority => 2;
     public override Type ConvertableType => typeof(IParameterizedItem);
+
+    public override bool CanConvertType(Type t) =>
+      t.GetInterfaces().Any(x => x == typeof(IParameterizedItem));
 
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
@@ -39,4 +42,5 @@
       return item;
     }
+
   }
 }
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/RegressionProblemDataConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/RegressionProblemDataConverter.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/RegressionProblemDataConverter.cs	(revision 17828)
@@ -34,4 +34,7 @@
     public override Type ConvertableType => HEAL.Attic.Mapper.StaticCache.GetType(new Guid("EE612297-B1AF-42D2-BF21-AF9A2D42791C"));
 
+    public override bool CanConvertType(Type t) =>
+      ConvertableType.IsAssignableFrom(t);
+
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
 
@@ -180,27 +183,27 @@
         if(it != null) {
           if(it.MoveNext() && it.Current is double) {
-            CreateMatrix(dict, out IList<string> rowNames, out double[][] mat);
+            CreateMatrix(dict, out IList<string> columnNames, out double[][] mat);
             return new DoubleMatrixJsonItem() {
               Name = Dataset,
               Value = mat,
-              RowNames = rowNames,
+              ColumnNames = columnNames,
               Minimum = double.MinValue,
               Maximum = double.MaxValue
             };
           } else if(it.Current is int) {
-            CreateMatrix(dict, out IList<string> rowNames, out int[][] mat);
+            CreateMatrix(dict, out IList<string> columnNames, out int[][] mat);
             return new IntMatrixJsonItem() {
               Name = Dataset,
               Value = mat,
-              RowNames = rowNames,
+              ColumnNames = columnNames,
               Minimum = int.MinValue,
               Maximum = int.MaxValue
             };
           } else if (it.Current is bool) {
-            CreateMatrix(dict, out IList<string> rowNames, out bool[][] mat);
+            CreateMatrix(dict, out IList<string> columnNames, out bool[][] mat);
             return new BoolMatrixJsonItem() {
               Name = Dataset,
               Value = mat,
-              RowNames = rowNames
+              ColumnNames = columnNames
             };
           }
@@ -210,17 +213,17 @@
     }
     
-    private void CreateMatrix<T>(Dictionary<string, IList> dict, out IList<string> rowNames, out T[][] matrix) {
+    private void CreateMatrix<T>(Dictionary<string, IList> dict, out IList<string> columnNames, out T[][] matrix) {
       int cols = dict.Count, rows = 0, c = 0;
-      rowNames = new List<string>();
+      columnNames = new List<string>();
       matrix = new T[cols][];
       foreach (var x in dict) {
         rows = Math.Max(rows, x.Value.Count);
-        rowNames.Add(x.Key);
+        columnNames.Add(x.Key);
 
         matrix[c] = new T[rows];
+
         int r = 0;
-
-        foreach (var rowValue in x.Value) {
-          matrix[c][r] = (T)rowValue;
+        foreach (var callValue in x.Value) {
+          matrix[c][r] = (T)callValue;
           ++r;
         }
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ResultParameterConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ResultParameterConverter.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ResultParameterConverter.cs	(revision 17828)
@@ -12,4 +12,7 @@
 
     public override Type ConvertableType => typeof(IResultParameter);
+
+    public override bool CanConvertType(Type t) =>
+      t.GetInterfaces().Any(x => x == typeof(IResultParameter));
 
     public override IJsonItem Extract(IItem value, IJsonItemConverter root) {
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/StringValueConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/StringValueConverter.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/StringValueConverter.cs	(revision 17828)
@@ -12,4 +12,7 @@
     public override Type ConvertableType => typeof(StringValue);
 
+    public override bool CanConvertType(Type t) =>
+      ConvertableType.IsAssignableFrom(t);
+
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) =>
       ((StringValue)item).Value = ((StringJsonItem)data).Value;
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueLookupParameterConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueLookupParameterConverter.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueLookupParameterConverter.cs	(revision 17828)
@@ -10,4 +10,7 @@
     public override int Priority => 4;
     public override Type ConvertableType => typeof(IValueLookupParameter);
+
+    public override bool CanConvertType(Type t) =>
+      t.GetInterfaces().Any(x => x == typeof(IValueLookupParameter));
 
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueParameterConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueParameterConverter.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueParameterConverter.cs	(revision 17828)
@@ -10,4 +10,7 @@
     public override int Priority => 2;
     public override Type ConvertableType => typeof(IValueParameter);
+
+    public override bool CanConvertType(Type t) =>
+      t.GetInterfaces().Any(x => x == typeof(IValueParameter));
 
     public override void Inject(IItem value, IJsonItem data, IJsonItemConverter root) {
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueRangeConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueRangeConverter.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueRangeConverter.cs	(revision 17828)
@@ -14,4 +14,7 @@
     public override int Priority => 1;
     public override Type ConvertableType => typeof(IntRange);
+
+    public override bool CanConvertType(Type t) =>
+      ConvertableType.IsAssignableFrom(t);
 
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
@@ -39,4 +42,7 @@
     public override Type ConvertableType => typeof(DoubleRange);
 
+    public override bool CanConvertType(Type t) =>
+      ConvertableType.IsAssignableFrom(t);
+
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
       DoubleRange range = item as DoubleRange;
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeArrayConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeArrayConverter.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeArrayConverter.cs	(revision 17828)
@@ -13,4 +13,7 @@
     public override int Priority => 1;
     public override Type ConvertableType => typeof(IntArray);
+
+    public override bool CanConvertType(Type t) =>
+      ConvertableType.IsAssignableFrom(t);
 
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
@@ -39,4 +42,7 @@
     public override Type ConvertableType => typeof(DoubleArray);
 
+    public override bool CanConvertType(Type t) =>
+      ConvertableType.IsAssignableFrom(t);
+
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
       DoubleArray arr = item as DoubleArray;
@@ -63,4 +69,7 @@
     public override int Priority => 2;
     public override Type ConvertableType => typeof(PercentArray);
+
+    public override bool CanConvertType(Type t) =>
+      ConvertableType.IsAssignableFrom(t);
 
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
@@ -89,4 +98,7 @@
     public override Type ConvertableType => typeof(BoolArray);
 
+    public override bool CanConvertType(Type t) =>
+      ConvertableType.IsAssignableFrom(t);
+
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
       BoolArray arr = item as BoolArray;
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeMatrixConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeMatrixConverter.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeMatrixConverter.cs	(revision 17828)
@@ -12,4 +12,5 @@
     public override int Priority => 1;
     public override Type ConvertableType => typeof(IntMatrix);
+
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
       IntMatrix mat = item as IntMatrix;
@@ -92,5 +93,15 @@
     where T : struct 
   {
+    public override bool CanConvertType(Type t) =>
+      ConvertableType.IsAssignableFrom(t);
+
     #region Helper
+    /// <summary>
+    /// Copies the data into the matrix object. Uses reflection to set the
+    /// row and column size of the matrix, because it is not possible to
+    /// create a new matrix at this point and there exists no public resize method.
+    /// </summary>
+    /// <param name="matrix"></param>
+    /// <param name="data"></param>
     protected void CopyMatrixData(MatrixType matrix, T[][] data) {
       var cols = data.Length;
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeValueConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeValueConverter.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeValueConverter.cs	(revision 17828)
@@ -12,4 +12,7 @@
     public override int Priority => 1;
     public override Type ConvertableType => typeof(IntValue);
+
+    public override bool CanConvertType(Type t) =>
+      ConvertableType.IsAssignableFrom(t);
 
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) =>
@@ -30,4 +33,7 @@
     public override Type ConvertableType => typeof(DoubleValue);
 
+    public override bool CanConvertType(Type t) =>
+      ConvertableType.IsAssignableFrom(t);
+
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) =>
       ((DoubleValue)item).Value = ((DoubleJsonItem)data).Value;
@@ -46,4 +52,7 @@
     public override int Priority => 2;
     public override Type ConvertableType => typeof(PercentValue);
+
+    public override bool CanConvertType(Type t) =>
+      ConvertableType.IsAssignableFrom(t);
 
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) =>
@@ -64,4 +73,7 @@
     public override Type ConvertableType => typeof(BoolValue);
 
+    public override bool CanConvertType(Type t) =>
+      ConvertableType.IsAssignableFrom(t);
+
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) =>
       ((BoolValue)item).Value = ((BoolJsonItem)data).Value;
@@ -79,4 +91,7 @@
     public override Type ConvertableType => typeof(DateTimeValue);
 
+    public override bool CanConvertType(Type t) =>
+      ConvertableType.IsAssignableFrom(t);
+
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) =>
       ((DateTimeValue)item).Value = ((DateTimeJsonItem)data).Value;
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Interfaces/IConcreteRestrictedJsonItem.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Interfaces/IConcreteRestrictedJsonItem.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Interfaces/IConcreteRestrictedJsonItem.cs	(revision 17828)
@@ -1,8 +1,9 @@
-﻿using System.Collections.Generic;
+﻿using System.Collections;
+using System.Collections.Generic;
 
 namespace HeuristicLab.JsonInterface {
   public interface IConcreteRestrictedJsonItem<T> : IJsonItem {
     /// <summary>
-    /// The item, 
+    /// array of restricted items
     /// </summary>
     IEnumerable<T> ConcreteRestrictedItems { get; set; }
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Interfaces/IJsonItemConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Interfaces/IJsonItemConverter.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Interfaces/IJsonItemConverter.cs	(revision 17828)
@@ -29,4 +29,11 @@
     /// </summary>
     int Priority { get; }
+
+    /// <summary>
+    /// Checks if the given type can be converted.
+    /// </summary>
+    /// <param name="t"></param>
+    /// <returns></returns>
+    bool CanConvertType(Type t);
   }
 }
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonItemConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonItemConverter.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonItemConverter.cs	(revision 17828)
@@ -22,4 +22,6 @@
 
     public Type ConvertableType => throw new NotImplementedException();
+
+    public bool CanConvertType(Type t) => throw new NotImplementedException();
     #endregion
 
@@ -32,7 +34,9 @@
       IList<IJsonItemConverter> possibleConverters = new List<IJsonItemConverter>();
       
-      foreach (var x in Converters)
-        if (CompareTypes(type, x.Key))
+      foreach (var x in Converters) {
+        if (x.Value.CanConvertType(type))
           possibleConverters.Add(x.Value);
+      }
+        
 
       if(possibleConverters.Count > 0) {
@@ -61,5 +65,6 @@
       else {
         IJsonItemConverter converter = GetConverter(item.GetType());
-        if (converter == null) return new UnsupportedJsonItem();
+        if (converter == null) 
+          return new UnsupportedJsonItem() { Name = $"{item.ItemName} (unsupported)" };
         IJsonItem tmp = converter.Extract(item, root);
         ExtractCache.Add(hash, tmp);
@@ -84,15 +89,4 @@
       Converters = converters;
     }
-
-    private bool CompareGenericTypes(Type t1, Type t2) =>
-      (t1.IsGenericType && t1.GetGenericTypeDefinition() == t2) /*||
-      (t2.IsGenericType && t2.GetGenericTypeDefinition() == t1)*/;
-
-    private bool CompareTypes(Type t1, Type t2) =>
-      t1 == t2 || /*t1.IsAssignableFrom(t2) ||*/
-      t1.GetInterfaces().Any(
-        i => i == t2 || CompareGenericTypes(i, t2)
-      ) ||
-      CompareGenericTypes(t1, t2);
   }
 }
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonTemplateGenerator.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonTemplateGenerator.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonTemplateGenerator.cs	(revision 17828)
@@ -12,11 +12,19 @@
   public class JsonTemplateGenerator {
 
-    public static void GenerateTemplate(string path, IOptimizer optimizer) =>
-      GenerateTemplate(path, optimizer.Name, optimizer);
+    /// <summary>
+    /// static Function to generate a template.
+    /// </summary>
+    /// <param name="templatePath">the path for the template files</param>
+    /// <param name="optimizer">the optimizer object to serialize</param>
+    /// <param name="rootItem">Root JsonItem for serialization, considers only active JsonItems for serialization</param>
+    public static void GenerateTemplate(string templatePath, IOptimizer optimizer, IJsonItem rootItem) {
+      // clear all runs
+      optimizer.Runs.Clear();
 
-    public static void GenerateTemplate(string path, string templateName, IOptimizer optimizer) =>
-      GenerateTemplate(path, templateName, optimizer, JsonItemConverter.Extract(optimizer));
+      // validation
+      ValidationResult validationResult = rootItem.GetValidator().Validate();
+      if (!validationResult.Success)
+        throw validationResult.GenerateException();
 
-    public static void GenerateTemplate(string path, string templateName, IOptimizer optimizer, IJsonItem rootItem) {
       #region Init
       JObject template = JObject.Parse(Constants.Template);
@@ -24,5 +32,7 @@
       JArray resultItems = new JArray();
       IList<IJsonItem> jsonItems = new List<IJsonItem>();
-      string fullPath = Path.GetFullPath(path);
+      string templateName = Path.GetFileName(templatePath);
+      string templateDirectory = Path.GetDirectoryName(templatePath);
+
       #endregion
 
@@ -35,5 +45,5 @@
       #region Serialize HL File
       ProtoBufSerializer serializer = new ProtoBufSerializer();
-      string hlFilePath = Path.Combine(fullPath, templateName + ".hl");
+      string hlFilePath = Path.Combine(templateDirectory, $"{templateName}.hl");
       serializer.Serialize(optimizer, hlFilePath);
       #endregion
@@ -56,5 +66,5 @@
 
       #region Serialize and write to file
-      File.WriteAllText(fullPath + @"\" + templateName + ".json", SingleLineArrayJsonWriter.Serialize(template));
+      File.WriteAllText(Path.Combine(templateDirectory, $"{templateName}.json"), SingleLineArrayJsonWriter.Serialize(template));
       #endregion
     }
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonTemplateInstantiator.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonTemplateInstantiator.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonTemplateInstantiator.cs	(revision 17828)
@@ -1,3 +1,4 @@
-﻿using System.Collections.Generic;
+﻿using System;
+using System.Collections.Generic;
 using System.IO;
 using System.Linq;
@@ -66,5 +67,8 @@
       IJsonItem rootItem = Objects.First().Value;
 
-      //TODO validate
+      // validation
+      ValidationResult validationResult = rootItem.GetValidator().Validate();
+      if (!validationResult.Success)
+        throw validationResult.GenerateException();
 
       // inject configuration
@@ -105,7 +109,11 @@
         if (Objects.TryGetValue(path, out IJsonItem param)) {
           // remove fixed template parameter from config => dont allow to copy them from concrete config
+          // TODO: shift this into JsonItems?
           obj.Property(nameof(IIntervalRestrictedJsonItem<int>.Minimum))?.Remove();
           obj.Property(nameof(IIntervalRestrictedJsonItem<int>.Maximum))?.Remove();
           obj.Property(nameof(IConcreteRestrictedJsonItem<string>.ConcreteRestrictedItems))?.Remove();
+          obj.Property(nameof(IMatrixJsonItem.ColumnsResizable))?.Remove();
+          obj.Property(nameof(IMatrixJsonItem.RowsResizable))?.Remove();
+          obj.Property(nameof(IArrayJsonItem.Resizable))?.Remove();
           // merge
           param.SetJObject(obj);
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/ConcreteRestrictedValueJsonItem.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/ConcreteRestrictedValueJsonItem.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/ConcreteRestrictedValueJsonItem.cs	(revision 17828)
@@ -1,7 +1,10 @@
-﻿using System.Collections.Generic;
+﻿using System.Collections;
+using System.Collections.Generic;
 using System.Linq;
 
 namespace HeuristicLab.JsonInterface {
+
   public abstract class ConcreteRestrictedValueJsonItem<T> : ValueJsonItem<T>, IConcreteRestrictedJsonItem<T> {
+
     public IEnumerable<T> ConcreteRestrictedItems { get; set; }
 
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/IntervalRestrictedValueJsonItem.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/IntervalRestrictedValueJsonItem.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/IntervalRestrictedValueJsonItem.cs	(revision 17828)
@@ -20,5 +20,4 @@
       if (minProp != null) Minimum = minProp.ToObject<T>();
 
-
       var maxProp = jObject[nameof(IIntervalRestrictedJsonItem<T>.Maximum)];
       if (maxProp != null) Maximum = maxProp.ToObject<T>();
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/JsonItem.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/JsonItem.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/JsonItem.cs	(revision 17828)
@@ -1,3 +1,4 @@
-﻿using System.Collections;
+﻿using System;
+using System.Collections;
 using System.Collections.Generic;
 using System.Linq;
@@ -26,4 +27,7 @@
     public bool Success { get; }
     public IEnumerable<string> Errors { get; }
+
+    public Exception GenerateException() => 
+      new AggregateException(Errors.Select(x => new ArgumentException(x)));
   }
 
@@ -76,5 +80,4 @@
     }
 
-    // TODO jsonIgnore dataType?
     [JsonIgnore]
     public virtual IEnumerable<IJsonItem> Children { get; protected set; }
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/ResultJsonItem.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/ResultJsonItem.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/ResultJsonItem.cs	(revision 17828)
@@ -2,4 +2,6 @@
   public class ResultJsonItem : JsonItem, IResultJsonItem {
     protected override ValidationResult Validate() => ValidationResult.Successful();
+
+    public string Converter { get; set; }
   }
 }
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/UnsupportedJsonItem.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/UnsupportedJsonItem.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/UnsupportedJsonItem.cs	(revision 17828)
@@ -1,8 +1,10 @@
 ﻿using System;
 using System.Collections.Generic;
+using System.Linq;
 using Newtonsoft.Json;
 
 namespace HeuristicLab.JsonInterface {
   public class UnsupportedJsonItem : JsonItem {
+    /*
     public override string Name {
       get => throw new NotSupportedException();
@@ -10,5 +12,5 @@
     }
 
-    public override string Description {
+    public override string Description { // TODO
       get => throw new NotSupportedException();
       set => throw new NotSupportedException();
@@ -18,11 +20,12 @@
       get => throw new NotSupportedException();
     }
+    */
 
     [JsonIgnore]
     public override IEnumerable<IJsonItem> Children {
-      get => throw new NotSupportedException();
+      get => Enumerable.Empty<IJsonItem>();
       protected set => throw new NotSupportedException();
     }
-
+    /*
     [JsonIgnore]
     public override IJsonItem Parent {
@@ -30,5 +33,5 @@
       set => throw new NotSupportedException();
     }
-
+    */
     protected override ValidationResult Validate() => ValidationResult.Successful();
   }
Index: /branches/3026_IntegrationIntoSymSpace/Heuristiclab.ConfigStarter/Program.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/Heuristiclab.ConfigStarter/Program.cs	(revision 17827)
+++ /branches/3026_IntegrationIntoSymSpace/Heuristiclab.ConfigStarter/Program.cs	(revision 17828)
@@ -48,5 +48,5 @@
 
       
-      JsonTemplateGenerator.GenerateTemplate(@"C:\Workspace\ConfigStarter\", "Template", alg, root);
+      //JsonTemplateGenerator.GenerateTemplate(@"C:\Workspace\ConfigStarter\", "Template", alg, root);
       
 
