Index: /trunk/sources/HeuristicLab.Clients.OKB.Views/3.3/RunCreation/Views/OKBProblemView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Clients.OKB.Views/3.3/RunCreation/Views/OKBProblemView.Designer.cs	(revision 13665)
+++ /trunk/sources/HeuristicLab.Clients.OKB.Views/3.3/RunCreation/Views/OKBProblemView.Designer.cs	(revision 13666)
@@ -52,22 +52,18 @@
       this.parametersTabPage = new System.Windows.Forms.TabPage();
       this.parameterCollectionView = new HeuristicLab.Core.Views.ParameterCollectionView();
-      this.characteristicsTabPage = new System.Windows.Forms.TabPage();
+      this.flaAnalysisTabPage = new System.Windows.Forms.TabPage();
+      this.calculateButton = new System.Windows.Forms.Button();
+      this.flaSplitContainer = new System.Windows.Forms.SplitContainer();
+      this.characteristicsMatrixView = new HeuristicLab.Data.Views.StringConvertibleMatrixView();
       this.uploadCharacteristicsButton = new System.Windows.Forms.Button();
       this.downloadCharacteristicsButton = new System.Windows.Forms.Button();
-      this.flaAnalysisTabPage = new System.Windows.Forms.TabPage();
-      this.calculatorListView = new System.Windows.Forms.ListView();
-      this.calculateButton = new System.Windows.Forms.Button();
-      this.calculatorSplitContainer = new System.Windows.Forms.SplitContainer();
-      this.calculatorViewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
-      this.characteristicsMatrixView = new HeuristicLab.Data.Views.StringConvertibleMatrixView();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
       this.tabControl.SuspendLayout();
       this.parametersTabPage.SuspendLayout();
-      this.characteristicsTabPage.SuspendLayout();
       this.flaAnalysisTabPage.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.calculatorSplitContainer)).BeginInit();
-      this.calculatorSplitContainer.Panel1.SuspendLayout();
-      this.calculatorSplitContainer.Panel2.SuspendLayout();
-      this.calculatorSplitContainer.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.flaSplitContainer)).BeginInit();
+      this.flaSplitContainer.Panel1.SuspendLayout();
+      this.flaSplitContainer.Panel2.SuspendLayout();
+      this.flaSplitContainer.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -77,5 +73,5 @@
       this.errorProvider.SetIconPadding(this.nameTextBox, 2);
       this.nameTextBox.Location = new System.Drawing.Point(72, 27);
-      this.nameTextBox.Size = new System.Drawing.Size(604, 20);
+      this.nameTextBox.Size = new System.Drawing.Size(640, 20);
       this.nameTextBox.TabIndex = 5;
       // 
@@ -87,5 +83,5 @@
       // infoLabel
       // 
-      this.infoLabel.Location = new System.Drawing.Point(687, 30);
+      this.infoLabel.Location = new System.Drawing.Point(723, 30);
       this.infoLabel.TabIndex = 6;
       // 
@@ -98,5 +94,5 @@
       this.problemComboBox.Location = new System.Drawing.Point(72, 0);
       this.problemComboBox.Name = "problemComboBox";
-      this.problemComboBox.Size = new System.Drawing.Size(574, 21);
+      this.problemComboBox.Size = new System.Drawing.Size(610, 21);
       this.problemComboBox.TabIndex = 1;
       this.problemComboBox.SelectedValueChanged += new System.EventHandler(this.problemComboBox_SelectedValueChanged);
@@ -114,5 +110,5 @@
       // 
       this.refreshButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.refreshButton.Location = new System.Drawing.Point(682, -1);
+      this.refreshButton.Location = new System.Drawing.Point(718, -1);
       this.refreshButton.Name = "refreshButton";
       this.refreshButton.Size = new System.Drawing.Size(24, 24);
@@ -125,5 +121,5 @@
       // 
       this.cloneProblemButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.cloneProblemButton.Location = new System.Drawing.Point(652, -1);
+      this.cloneProblemButton.Location = new System.Drawing.Point(688, -1);
       this.cloneProblemButton.Name = "cloneProblemButton";
       this.cloneProblemButton.Size = new System.Drawing.Size(24, 24);
@@ -139,10 +135,9 @@
             | System.Windows.Forms.AnchorStyles.Right)));
       this.tabControl.Controls.Add(this.parametersTabPage);
-      this.tabControl.Controls.Add(this.characteristicsTabPage);
       this.tabControl.Controls.Add(this.flaAnalysisTabPage);
       this.tabControl.Location = new System.Drawing.Point(6, 53);
       this.tabControl.Name = "tabControl";
       this.tabControl.SelectedIndex = 0;
-      this.tabControl.Size = new System.Drawing.Size(700, 340);
+      this.tabControl.Size = new System.Drawing.Size(736, 473);
       this.tabControl.TabIndex = 8;
       // 
@@ -171,105 +166,44 @@
       this.parameterCollectionView.TabIndex = 8;
       // 
-      // characteristicsTabPage
-      // 
-      this.characteristicsTabPage.Controls.Add(this.characteristicsMatrixView);
-      this.characteristicsTabPage.Controls.Add(this.uploadCharacteristicsButton);
-      this.characteristicsTabPage.Controls.Add(this.downloadCharacteristicsButton);
-      this.characteristicsTabPage.Location = new System.Drawing.Point(4, 22);
-      this.characteristicsTabPage.Name = "characteristicsTabPage";
-      this.characteristicsTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.characteristicsTabPage.Size = new System.Drawing.Size(692, 314);
-      this.characteristicsTabPage.TabIndex = 1;
-      this.characteristicsTabPage.Text = "Characteristics";
-      this.characteristicsTabPage.UseVisualStyleBackColor = true;
-      // 
-      // uploadCharacteristicsButton
-      // 
-      this.uploadCharacteristicsButton.Location = new System.Drawing.Point(38, 6);
-      this.uploadCharacteristicsButton.Name = "uploadCharacteristicsButton";
-      this.uploadCharacteristicsButton.Size = new System.Drawing.Size(26, 23);
-      this.uploadCharacteristicsButton.TabIndex = 0;
-      this.uploadCharacteristicsButton.Text = "Upload";
-      this.uploadCharacteristicsButton.UseVisualStyleBackColor = true;
-      this.uploadCharacteristicsButton.Click += new System.EventHandler(this.uploadCharacteristicsButton_Click);
-      // 
-      // downloadCharacteristicsButton
-      // 
-      this.downloadCharacteristicsButton.Location = new System.Drawing.Point(6, 6);
-      this.downloadCharacteristicsButton.Name = "downloadCharacteristicsButton";
-      this.downloadCharacteristicsButton.Size = new System.Drawing.Size(26, 23);
-      this.downloadCharacteristicsButton.TabIndex = 0;
-      this.downloadCharacteristicsButton.Text = "Download";
-      this.downloadCharacteristicsButton.UseVisualStyleBackColor = true;
-      this.downloadCharacteristicsButton.Click += new System.EventHandler(this.downloadCharacteristicsButton_Click);
-      // 
       // flaAnalysisTabPage
       // 
-      this.flaAnalysisTabPage.Controls.Add(this.calculatorSplitContainer);
+      this.flaAnalysisTabPage.Controls.Add(this.flaSplitContainer);
       this.flaAnalysisTabPage.Location = new System.Drawing.Point(4, 22);
       this.flaAnalysisTabPage.Name = "flaAnalysisTabPage";
       this.flaAnalysisTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.flaAnalysisTabPage.Size = new System.Drawing.Size(692, 314);
+      this.flaAnalysisTabPage.Size = new System.Drawing.Size(728, 447);
       this.flaAnalysisTabPage.TabIndex = 2;
-      this.flaAnalysisTabPage.Text = "FLA Analysis";
+      this.flaAnalysisTabPage.Text = "Fitness Landscape Analysis";
       this.flaAnalysisTabPage.UseVisualStyleBackColor = true;
       // 
-      // calculatorListView
-      // 
-      this.calculatorListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
-            | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
-      this.calculatorListView.HideSelection = false;
-      this.calculatorListView.Location = new System.Drawing.Point(0, 0);
-      this.calculatorListView.Name = "calculatorListView";
-      this.calculatorListView.Size = new System.Drawing.Size(225, 276);
-      this.calculatorListView.TabIndex = 1;
-      this.calculatorListView.UseCompatibleStateImageBehavior = false;
-      this.calculatorListView.View = System.Windows.Forms.View.List;
-      this.calculatorListView.SelectedIndexChanged += new System.EventHandler(this.calculatorListView_SelectedIndexChanged);
-      // 
       // calculateButton
       // 
-      this.calculateButton.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
-      this.calculateButton.Location = new System.Drawing.Point(0, 282);
+      this.calculateButton.Location = new System.Drawing.Point(3, 3);
       this.calculateButton.Name = "calculateButton";
-      this.calculateButton.Size = new System.Drawing.Size(225, 23);
-      this.calculateButton.TabIndex = 2;
+      this.calculateButton.Size = new System.Drawing.Size(26, 23);
+      this.calculateButton.TabIndex = 8;
       this.calculateButton.Text = "Calculate";
       this.calculateButton.UseVisualStyleBackColor = true;
       this.calculateButton.Click += new System.EventHandler(this.calculateButton_Click);
       // 
-      // calculatorSplitContainer
-      // 
-      this.calculatorSplitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.calculatorSplitContainer.Location = new System.Drawing.Point(3, 3);
-      this.calculatorSplitContainer.Name = "calculatorSplitContainer";
-      // 
-      // calculatorSplitContainer.Panel1
-      // 
-      this.calculatorSplitContainer.Panel1.Controls.Add(this.calculatorListView);
-      this.calculatorSplitContainer.Panel1.Controls.Add(this.calculateButton);
-      // 
-      // calculatorSplitContainer.Panel2
-      // 
-      this.calculatorSplitContainer.Panel2.Controls.Add(this.calculatorViewHost);
-      this.calculatorSplitContainer.Size = new System.Drawing.Size(686, 308);
-      this.calculatorSplitContainer.SplitterDistance = 228;
-      this.calculatorSplitContainer.TabIndex = 3;
-      // 
-      // calculatorViewHost
-      // 
-      this.calculatorViewHost.Caption = "View";
-      this.calculatorViewHost.Content = null;
-      this.calculatorViewHost.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.calculatorViewHost.Enabled = false;
-      this.calculatorViewHost.Location = new System.Drawing.Point(0, 0);
-      this.calculatorViewHost.Name = "calculatorViewHost";
-      this.calculatorViewHost.ReadOnly = false;
-      this.calculatorViewHost.Size = new System.Drawing.Size(454, 308);
-      this.calculatorViewHost.TabIndex = 0;
-      this.calculatorViewHost.ViewsLabelVisible = true;
-      this.calculatorViewHost.ViewType = null;
+      // flaSplitContainer
+      // 
+      this.flaSplitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.flaSplitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
+      this.flaSplitContainer.Location = new System.Drawing.Point(3, 3);
+      this.flaSplitContainer.Name = "flaSplitContainer";
+      // 
+      // flaSplitContainer.Panel1
+      // 
+      this.flaSplitContainer.Panel1.Controls.Add(this.calculateButton);
+      // 
+      // flaSplitContainer.Panel2
+      // 
+      this.flaSplitContainer.Panel2.Controls.Add(this.characteristicsMatrixView);
+      this.flaSplitContainer.Panel2.Controls.Add(this.uploadCharacteristicsButton);
+      this.flaSplitContainer.Panel2.Controls.Add(this.downloadCharacteristicsButton);
+      this.flaSplitContainer.Size = new System.Drawing.Size(722, 441);
+      this.flaSplitContainer.SplitterDistance = 363;
+      this.flaSplitContainer.TabIndex = 7;
       // 
       // characteristicsMatrixView
@@ -280,11 +214,31 @@
       this.characteristicsMatrixView.Caption = "StringConvertibleMatrix View";
       this.characteristicsMatrixView.Content = null;
-      this.characteristicsMatrixView.Location = new System.Drawing.Point(3, 35);
+      this.characteristicsMatrixView.Location = new System.Drawing.Point(3, 32);
       this.characteristicsMatrixView.Name = "characteristicsMatrixView";
       this.characteristicsMatrixView.ReadOnly = false;
       this.characteristicsMatrixView.ShowRowsAndColumnsTextBox = false;
       this.characteristicsMatrixView.ShowStatisticalInformation = false;
-      this.characteristicsMatrixView.Size = new System.Drawing.Size(686, 276);
-      this.characteristicsMatrixView.TabIndex = 2;
+      this.characteristicsMatrixView.Size = new System.Drawing.Size(349, 406);
+      this.characteristicsMatrixView.TabIndex = 4;
+      // 
+      // uploadCharacteristicsButton
+      // 
+      this.uploadCharacteristicsButton.Location = new System.Drawing.Point(35, 3);
+      this.uploadCharacteristicsButton.Name = "uploadCharacteristicsButton";
+      this.uploadCharacteristicsButton.Size = new System.Drawing.Size(26, 23);
+      this.uploadCharacteristicsButton.TabIndex = 5;
+      this.uploadCharacteristicsButton.Text = "Upload";
+      this.uploadCharacteristicsButton.UseVisualStyleBackColor = true;
+      this.uploadCharacteristicsButton.Click += new System.EventHandler(this.uploadCharacteristicsButton_Click);
+      // 
+      // downloadCharacteristicsButton
+      // 
+      this.downloadCharacteristicsButton.Location = new System.Drawing.Point(3, 3);
+      this.downloadCharacteristicsButton.Name = "downloadCharacteristicsButton";
+      this.downloadCharacteristicsButton.Size = new System.Drawing.Size(26, 23);
+      this.downloadCharacteristicsButton.TabIndex = 6;
+      this.downloadCharacteristicsButton.Text = "Download";
+      this.downloadCharacteristicsButton.UseVisualStyleBackColor = true;
+      this.downloadCharacteristicsButton.Click += new System.EventHandler(this.downloadCharacteristicsButton_Click);
       // 
       // OKBProblemView
@@ -298,5 +252,5 @@
       this.Controls.Add(this.refreshButton);
       this.Name = "OKBProblemView";
-      this.Size = new System.Drawing.Size(706, 393);
+      this.Size = new System.Drawing.Size(742, 526);
       this.Controls.SetChildIndex(this.refreshButton, 0);
       this.Controls.SetChildIndex(this.cloneProblemButton, 0);
@@ -310,10 +264,9 @@
       this.tabControl.ResumeLayout(false);
       this.parametersTabPage.ResumeLayout(false);
-      this.characteristicsTabPage.ResumeLayout(false);
       this.flaAnalysisTabPage.ResumeLayout(false);
-      this.calculatorSplitContainer.Panel1.ResumeLayout(false);
-      this.calculatorSplitContainer.Panel2.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.calculatorSplitContainer)).EndInit();
-      this.calculatorSplitContainer.ResumeLayout(false);
+      this.flaSplitContainer.Panel1.ResumeLayout(false);
+      this.flaSplitContainer.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.flaSplitContainer)).EndInit();
+      this.flaSplitContainer.ResumeLayout(false);
       this.ResumeLayout(false);
       this.PerformLayout();
@@ -329,14 +282,11 @@
     private System.Windows.Forms.TabControl tabControl;
     private System.Windows.Forms.TabPage parametersTabPage;
-    private System.Windows.Forms.TabPage characteristicsTabPage;
     private Core.Views.ParameterCollectionView parameterCollectionView;
+    private System.Windows.Forms.TabPage flaAnalysisTabPage;
+    private System.Windows.Forms.Button calculateButton;
+    private System.Windows.Forms.SplitContainer flaSplitContainer;
+    private Data.Views.StringConvertibleMatrixView characteristicsMatrixView;
     private System.Windows.Forms.Button uploadCharacteristicsButton;
     private System.Windows.Forms.Button downloadCharacteristicsButton;
-    private System.Windows.Forms.TabPage flaAnalysisTabPage;
-    private System.Windows.Forms.ListView calculatorListView;
-    private System.Windows.Forms.Button calculateButton;
-    private System.Windows.Forms.SplitContainer calculatorSplitContainer;
-    private MainForm.WindowsForms.ViewHost calculatorViewHost;
-    private Data.Views.StringConvertibleMatrixView characteristicsMatrixView;
 
 
Index: /trunk/sources/HeuristicLab.Clients.OKB.Views/3.3/RunCreation/Views/OKBProblemView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Clients.OKB.Views/3.3/RunCreation/Views/OKBProblemView.cs	(revision 13665)
+++ /trunk/sources/HeuristicLab.Clients.OKB.Views/3.3/RunCreation/Views/OKBProblemView.cs	(revision 13666)
@@ -21,4 +21,5 @@
 
 using HeuristicLab.Common.Resources;
+using HeuristicLab.Core;
 using HeuristicLab.Core.Views;
 using HeuristicLab.Data;
@@ -28,4 +29,5 @@
 using System;
 using System.Collections.Generic;
+using System.Drawing;
 using System.Linq;
 using System.Windows.Forms;
@@ -36,4 +38,6 @@
   [Content(typeof(MultiObjectiveOKBProblem), true)]
   public sealed partial class OKBProblemView : NamedItemView {
+    private readonly CheckedItemList<ICharacteristicCalculator> calculatorList;
+
     public new OKBProblem Content {
       get { return (OKBProblem)base.Content; }
@@ -43,4 +47,22 @@
     public OKBProblemView() {
       InitializeComponent();
+      var calculatorListView = new CheckedItemListView<ICharacteristicCalculator>() {
+        Anchor = AnchorStyles.Left | AnchorStyles.Bottom | AnchorStyles.Right | AnchorStyles.Top,
+        Location = new Point(flaSplitContainer.Padding.Left, calculateButton.Location.Y + calculateButton.Height + calculateButton.Padding.Bottom + 3),
+      };
+      calculatorListView.Size = new Size(flaSplitContainer.Panel1.Size.Width - flaSplitContainer.Panel1.Padding.Horizontal,
+          flaSplitContainer.Panel1.Height - calculatorListView.Location.Y - flaSplitContainer.Panel1.Padding.Bottom);
+      calculatorList = new CheckedItemList<ICharacteristicCalculator>();
+      calculatorList.ItemsAdded += CalculatorListOnChanged;
+      calculatorList.ItemsRemoved += CalculatorListOnChanged;
+      calculatorList.ItemsReplaced += CalculatorListOnChanged;
+      calculatorList.CollectionReset += CalculatorListOnChanged;
+      calculatorList.CheckedItemsChanged += CalculatorListOnChanged;
+
+      calculatorListView.Content = calculatorList.AsReadOnly();
+
+      flaSplitContainer.Panel1.Controls.Add(calculatorListView);
+      calculateButton.Text = string.Empty;
+      calculateButton.Image = VSImageLibrary.Play;
       refreshButton.Text = string.Empty;
       refreshButton.Image = VSImageLibrary.Refresh;
@@ -51,4 +73,8 @@
       uploadCharacteristicsButton.Text = string.Empty;
       uploadCharacteristicsButton.Image = VSImageLibrary.PublishToWeb;
+    }
+
+    private void CalculatorListOnChanged(object sender, EventArgs e) {
+      SetEnabledStateOfControls();
     }
 
@@ -91,5 +117,5 @@
       uploadCharacteristicsButton.Enabled = Content != null && Content.ProblemId != -1 && !Locked && !ReadOnly
         && characteristicsMatrixView.Content != null && characteristicsMatrixView.Content.Rows > 0;
-      calculateButton.Enabled = Content != null && Content.ProblemId != -1 && !Locked && !ReadOnly;
+      calculateButton.Enabled = Content != null && Content.ProblemId != -1 && !Locked && !ReadOnly && calculatorList.CheckedItems.Any();
     }
 
@@ -101,25 +127,13 @@
 
     private void UpdateCharacteristicCalculators() {
-      calculatorListView.Items.Clear();
-      calculatorListView.Groups.Clear();
+      calculatorList.Clear();
       if (Content == null || Content.ProblemId == -1) return;
       var problem = Content.CloneProblem();
       var calculators = ApplicationManager.Manager.GetInstances<ICharacteristicCalculator>().ToList();
-      try {
-        calculatorListView.BeginUpdate();
-        foreach (var calc in calculators) {
-          calc.Problem = problem;
-          var group = calculatorListView.Groups.Add(calc.Name, calc.Name);
-          group.Tag = calc;
-
-          var paramItem = calculatorListView.Items.Add(calc.Name + ".Parameters", "Parameters");
-          paramItem.Group = group;
-          paramItem.Tag = "param";
-
-          var charactItem = calculatorListView.Items.Add(calc.Name + ".Characteristics", "Characteristics");
-          charactItem.Group = group;
-          charactItem.Tag = "chara";
-        }
-      } finally { calculatorListView.EndUpdate(); }
+      foreach (var calc in calculators) {
+        calc.Problem = problem;
+        if (!calc.CanCalculate()) continue;
+        calculatorList.Add(calc, true);
+      }
     }
 
@@ -193,24 +207,6 @@
       } catch (Exception ex) { ErrorHandling.ShowErrorDialog(ex); }
     }
-    private void calculatorListView_SelectedIndexChanged(object sender, EventArgs e) {
-      if (InvokeRequired) {
-        Invoke((Action<object, EventArgs>)calculatorListView_SelectedIndexChanged, sender, e);
-        return;
-      }
-      if (calculatorListView.SelectedIndices.Count == 0) calculatorViewHost.Content = null;
-      else {
-        var item = calculatorListView.SelectedItems[0];
-        if ((string)item.Tag == "param") {
-          calculatorViewHost.Content = ((ICharacteristicCalculator)item.Group.Tag);
-        } else if ((string)item.Tag == "chara") {
-          calculatorViewHost.Content = ((ICharacteristicCalculator)item.Group.Tag).Characteristics;
-        }
-      }
-    }
     private void calculateButton_Click(object sender, EventArgs e) {
-      var calculators = calculatorListView.Groups.OfType<ListViewGroup>()
-                                                     .Select(x => (ICharacteristicCalculator)x.Tag)
-                                                     .Where(x => x.Characteristics.CheckedItems.Any()
-                                                              && x.CanCalculate()).ToList();
+      var calculators = calculatorList.CheckedItems.Select(x => x.Value).Where(x => x.CanCalculate()).ToList();
       if (calculators.Count == 0) return;
 
Index: /trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/Value.cs
===================================================================
--- /trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/Value.cs	(revision 13665)
+++ /trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/Value.cs	(revision 13666)
@@ -35,33 +35,33 @@
           Name = name,
           Value = bool.Parse(strValue)
-        }; break;
+        };
         case "IntValue": return new IntValue() {
           Name = name,
           Value = int.Parse(strValue, CultureInfo.CurrentCulture.NumberFormat)
-        }; break;
+        };
         case "LongValue": return new LongValue() {
           Name = name,
           Value = long.Parse(strValue, CultureInfo.CurrentCulture.NumberFormat)
-        }; break;
+        };
         case "FloatValue": return new FloatValue() {
           Name = name,
           Value = float.Parse(strValue, CultureInfo.CurrentCulture.NumberFormat)
-        }; break;
+        };
         case "DoubleValue": return new DoubleValue() {
           Name = name,
           Value = double.Parse(strValue, CultureInfo.CurrentCulture.NumberFormat)
-        }; break;
+        };
         case "PercentValue": return new PercentValue() {
           Name = name,
           Value = double.Parse(Regex.Match(strValue, "[0-9.,]+").Value, CultureInfo.CurrentCulture.NumberFormat) / 100.0
-        }; break;
+        };
         case "StringValue": return new StringValue() {
           Name = name,
           Value = strValue
-        }; break;
+        };
         case "TimeSpanValue": return new TimeSpanValue() {
           Name = name,
           Value = long.Parse(strValue, CultureInfo.CurrentCulture.NumberFormat)
-        }; break;
+        };
         default: throw new ArgumentException(string.Format("type {0} is unknown", type), "type");
       }
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/HeuristicLab.Optimization.Views-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/HeuristicLab.Optimization.Views-3.3.csproj	(revision 13665)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/HeuristicLab.Optimization.Views-3.3.csproj	(revision 13666)
@@ -148,4 +148,10 @@
       <DependentUpon>CreateNewSingleEncodingDialog.cs</DependentUpon>
     </Compile>
+    <Compile Include="ICharacteristicCalculatorView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ICharacteristicCalculatorView.Designer.cs">
+      <DependentUpon>ICharacteristicCalculatorView.cs</DependentUpon>
+    </Compile>
     <Compile Include="ISolutionSimilarityCalculatorView.cs">
       <SubType>UserControl</SubType>
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/ICharacteristicCalculatorView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/ICharacteristicCalculatorView.Designer.cs	(revision 13666)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/ICharacteristicCalculatorView.Designer.cs	(revision 13666)
@@ -0,0 +1,120 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2016 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Optimization.Views {
+  partial class ICharacteristicCalculatorView {
+    /// <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.tabControl = new System.Windows.Forms.TabControl();
+      this.parametersTabPage = new System.Windows.Forms.TabPage();
+      this.characteristicsTabPage = new System.Windows.Forms.TabPage();
+      this.parameterCollectionView = new HeuristicLab.Core.Views.ParameterCollectionView();
+      this.tabControl.SuspendLayout();
+      this.parametersTabPage.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // tabControl
+      // 
+      this.tabControl.Controls.Add(this.parametersTabPage);
+      this.tabControl.Controls.Add(this.characteristicsTabPage);
+      this.tabControl.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.tabControl.Location = new System.Drawing.Point(0, 0);
+      this.tabControl.Name = "tabControl";
+      this.tabControl.SelectedIndex = 0;
+      this.tabControl.Size = new System.Drawing.Size(764, 498);
+      this.tabControl.TabIndex = 0;
+      // 
+      // parametersTabPage
+      // 
+      this.parametersTabPage.Controls.Add(this.parameterCollectionView);
+      this.parametersTabPage.Location = new System.Drawing.Point(4, 22);
+      this.parametersTabPage.Name = "parametersTabPage";
+      this.parametersTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.parametersTabPage.Size = new System.Drawing.Size(756, 472);
+      this.parametersTabPage.TabIndex = 0;
+      this.parametersTabPage.Text = "Parameters";
+      this.parametersTabPage.UseVisualStyleBackColor = true;
+      // 
+      // characteristicsTabPage
+      // 
+      this.characteristicsTabPage.Location = new System.Drawing.Point(4, 22);
+      this.characteristicsTabPage.Name = "characteristicsTabPage";
+      this.characteristicsTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.characteristicsTabPage.Size = new System.Drawing.Size(756, 472);
+      this.characteristicsTabPage.TabIndex = 1;
+      this.characteristicsTabPage.Text = "Characteristics";
+      this.characteristicsTabPage.UseVisualStyleBackColor = true;
+      // 
+      // parameterCollectionView
+      // 
+      this.parameterCollectionView.AllowEditingOfHiddenParameters = true;
+      this.parameterCollectionView.Caption = "ParameterCollection View";
+      this.parameterCollectionView.Content = null;
+      this.parameterCollectionView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.parameterCollectionView.Location = new System.Drawing.Point(3, 3);
+      this.parameterCollectionView.Name = "parameterCollectionView";
+      this.parameterCollectionView.ReadOnly = false;
+      this.parameterCollectionView.ShowDetails = true;
+      this.parameterCollectionView.Size = new System.Drawing.Size(750, 466);
+      this.parameterCollectionView.TabIndex = 0;
+      // 
+      // ICharacteristicCalculatorView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.tabControl);
+      this.Name = "ICharacteristicCalculatorView";
+      this.Size = new System.Drawing.Size(764, 498);
+      this.tabControl.ResumeLayout(false);
+      this.parametersTabPage.ResumeLayout(false);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.TabControl tabControl;
+    private System.Windows.Forms.TabPage parametersTabPage;
+    private Core.Views.ParameterCollectionView parameterCollectionView;
+    private System.Windows.Forms.TabPage characteristicsTabPage;
+  }
+}
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/ICharacteristicCalculatorView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/ICharacteristicCalculatorView.cs	(revision 13666)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/ICharacteristicCalculatorView.cs	(revision 13666)
@@ -0,0 +1,55 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2016 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using HeuristicLab.Core.Views;
+using HeuristicLab.Data;
+using HeuristicLab.MainForm;
+using System.Windows.Forms;
+
+namespace HeuristicLab.Optimization.Views {
+  [View("ICharacteristicCalculatorView")]
+  [Content(typeof(ICharacteristicCalculator), IsDefaultView = true)]
+  public partial class ICharacteristicCalculatorView : ItemView {
+    private CheckedItemListView<StringValue> characteristicsView;
+
+    public new ICharacteristicCalculator Content {
+      get { return (ICharacteristicCalculator)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public ICharacteristicCalculatorView() {
+      InitializeComponent();
+      characteristicsView = new CheckedItemListView<StringValue> { Dock = DockStyle.Fill };
+      characteristicsTabPage.Controls.Add(characteristicsView);
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null) {
+        parameterCollectionView.Content = null;
+        characteristicsView.Content = null;
+      } else {
+        parameterCollectionView.Content = Content.Parameters;
+        characteristicsView.Content = Content.Characteristics;
+      }
+    }
+  }
+}
