Index: branches/OKB/HeuristicLab.Clients.OKB-3.3/HeuristicLab.Clients.OKB-3.3.csproj
===================================================================
--- branches/OKB/HeuristicLab.Clients.OKB-3.3/HeuristicLab.Clients.OKB-3.3.csproj	(revision 4918)
+++ branches/OKB/HeuristicLab.Clients.OKB-3.3/HeuristicLab.Clients.OKB-3.3.csproj	(revision 4929)
@@ -105,4 +105,6 @@
     <Compile Include="ServiceClients\AlgorithmData.cs" />
     <Compile Include="ServiceClients\AlgorithmParameter.cs" />
+    <Compile Include="ServiceClients\Run.cs" />
+    <Compile Include="ServiceClients\Experiment.cs" />
     <Compile Include="ServiceClients\Result.cs" />
     <Compile Include="ServiceClients\ProblemParameter.cs" />
@@ -159,4 +161,34 @@
       <DependentUpon>AlgorithmParameterCollectionView.cs</DependentUpon>
     </Compile>
+    <Compile Include="Views\AlgorithmParameterView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Views\AlgorithmParameterView.Designer.cs">
+      <DependentUpon>AlgorithmParameterView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Views\RunCollectionView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Views\RunCollectionView.Designer.cs">
+      <DependentUpon>RunCollectionView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Views\ExperimentCollectionView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Views\ExperimentCollectionView.Designer.cs">
+      <DependentUpon>ExperimentCollectionView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Views\ProblemParameterView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Views\ProblemParameterView.Designer.cs">
+      <DependentUpon>ProblemParameterView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Views\ResultView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Views\ResultView.Designer.cs">
+      <DependentUpon>ResultView.cs</DependentUpon>
+    </Compile>
     <Compile Include="Views\ResultCollectionView.cs">
       <SubType>UserControl</SubType>
Index: branches/OKB/HeuristicLab.Clients.OKB-3.3/OKBClient.cs
===================================================================
--- branches/OKB/HeuristicLab.Clients.OKB-3.3/OKBClient.cs	(revision 4918)
+++ branches/OKB/HeuristicLab.Clients.OKB-3.3/OKBClient.cs	(revision 4929)
@@ -323,7 +323,6 @@
 
     #region Run Methods
-    public bool AddRun(long algorithmId, long problemId, HeuristicLab.Optimization.Run run) {
-      try {
-        IAlgorithm algorithm = run.Algorithm;
+    public bool AddRun(long algorithmId, long problemId, IAlgorithm algorithm) {
+      try {
         IProblem problem = algorithm.Problem;
 
@@ -346,5 +345,5 @@
         r.ClientId = Guid.NewGuid();
         r.FinishedDate = DateTime.Now;
-        r.RandomSeed = ((IntValue)((IValueParameter)run.Parameters["Seed"]).Value).Value;
+        r.RandomSeed = ((IntValue)((IValueParameter)algorithm.Parameters["Seed"]).Value).Value;
         r.ResultValues = resultValues.ToArray();
         r.Store();
@@ -361,5 +360,5 @@
       List<AlgorithmParameterValue> values = new List<AlgorithmParameterValue>();
       foreach (IValueParameter param in item.Parameters.OfType<IValueParameter>()) {
-        if (param.GetsCollected && (param.Value != null)) {
+        if (param.GetsCollected && (param.Value != null) && (param.Name != "Seed")) {
           AlgorithmParameter p = parameters.FirstOrDefault(x => x.Name == prefix + param.Name);
           if (p == null) {
@@ -376,4 +375,5 @@
           value.AlgorithmParameterId = p.Id;
           value.DataTypeId = ConvertToDataType(param.Value.GetType()).Id;
+          values.Add(value);
         }
 
@@ -424,4 +424,5 @@
           value.ProblemParameterId = p.Id;
           value.DataTypeId = ConvertToDataType(param.Value.GetType()).Id;
+          values.Add(value);
         }
 
@@ -457,18 +458,25 @@
       List<ResultValue> values = new List<ResultValue>();
       foreach (IResult result in algorithm.Results) {
-        if ((result.Value != null) && (results.FirstOrDefault(x => x.Name == result.Name) == null)) {
-          Result r = new Result();
-          r.Name = result.Name;
-          r.Alias = result.Name;
-          r.Description = result.Description;
-          r.AlgorithmId = algorithmId;
-          r.DataTypeId = ConvertToDataType(result.DataType).Id;
-          r.Store();
-          results.Add(r);
+        if (result.Value != null) {
+          Result r = results.FirstOrDefault(x => x.Name == result.Name);
+          if (r == null) {
+            r = new Result();
+            r.Name = result.Name;
+            r.Alias = result.Name;
+            r.Description = result.Description;
+            r.AlgorithmId = algorithmId;
+            r.DataTypeId = ConvertToDataType(result.DataType).Id;
+            r.Store();
+            results.Add(r);
+          }
+          ResultValue value = CreateResultValue(result.Value);
+          value.ResultId = r.Id;
+          value.DataTypeId = ConvertToDataType(result.Value.GetType()).Id;
+          values.Add(value);
         }
       }
       return values;
     }
-    private ResultValue CreateResiötValue(IItem item) {
+    private ResultValue CreateResultValue(IItem item) {
       if (item is BoolValue) {
         ResultBoolValue value = new ResultBoolValue();
Index: branches/OKB/HeuristicLab.Clients.OKB-3.3/OKBExperiment.cs
===================================================================
--- branches/OKB/HeuristicLab.Clients.OKB-3.3/OKBExperiment.cs	(revision 4918)
+++ branches/OKB/HeuristicLab.Clients.OKB-3.3/OKBExperiment.cs	(revision 4929)
@@ -290,5 +290,4 @@
         Algorithm.Started += new EventHandler(algorithm_Started);
         Algorithm.Stopped += new EventHandler(algorithm_Stopped);
-        Algorithm.Runs.ItemsAdded += new Collections.CollectionItemsChangedEventHandler<IRun>(Runs_ItemsAdded);
       }
     }
@@ -303,5 +302,4 @@
         Algorithm.Started -= new EventHandler(algorithm_Started);
         Algorithm.Stopped -= new EventHandler(algorithm_Stopped);
-        Algorithm.Runs.ItemsAdded -= new Collections.CollectionItemsChangedEventHandler<IRun>(Runs_ItemsAdded);
       }
     }
@@ -329,9 +327,7 @@
     private void algorithm_Stopped(object sender, EventArgs e) {
       OnStopped();
-    }
-    private void Runs_ItemsAdded(object sender, Collections.CollectionItemsChangedEventArgs<IRun> e) {
+
       try {
-        foreach (HeuristicLab.Optimization.Run run in e.Items)
-          OKBClient.Instance.AddRun(AlgorithmId, ProblemId, run);
+        OKBClient.Instance.AddRun(AlgorithmId, ProblemId, algorithm);
       }
       catch (Exception ex) {
Index: branches/OKB/HeuristicLab.Clients.OKB-3.3/ServiceClients/Experiment.cs
===================================================================
--- branches/OKB/HeuristicLab.Clients.OKB-3.3/ServiceClients/Experiment.cs	(revision 4929)
+++ branches/OKB/HeuristicLab.Clients.OKB-3.3/ServiceClients/Experiment.cs	(revision 4929)
@@ -0,0 +1,39 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Common;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.Clients.OKB {
+  [Item("Experiment", "An OKB experiment.")]
+  public partial class Experiment {
+    protected Experiment(Experiment original, Cloner cloner)
+      : base(original, cloner) {
+      AlgorithmId = original.AlgorithmId;
+      ProblemId = original.ProblemId;
+    }
+    public Experiment() { }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new Experiment(this, cloner);
+    }
+  }
+}
Index: branches/OKB/HeuristicLab.Clients.OKB-3.3/ServiceClients/Run.cs
===================================================================
--- branches/OKB/HeuristicLab.Clients.OKB-3.3/ServiceClients/Run.cs	(revision 4929)
+++ branches/OKB/HeuristicLab.Clients.OKB-3.3/ServiceClients/Run.cs	(revision 4929)
@@ -0,0 +1,42 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Common;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.Clients.OKB {
+  [Item("Run", "An OKB run.")]
+  public partial class Run {
+    protected Run(Run original, Cloner cloner)
+      : base(original, cloner) {
+      ExperimentId = original.ExperimentId;
+      RandomSeed = original.RandomSeed;
+      FinishedDate = original.FinishedDate;
+      UserId = original.UserId;
+      ClientId = original.ClientId;
+    }
+    public Run() { }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new Run(this, cloner);
+    }
+  }
+}
Index: branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/AlgorithmParameterView.Designer.cs
===================================================================
--- branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/AlgorithmParameterView.Designer.cs	(revision 4929)
+++ branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/AlgorithmParameterView.Designer.cs	(revision 4929)
@@ -0,0 +1,129 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Clients.OKB {
+  partial class AlgorithmParameterView {
+    /// <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) {
+        if (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.aliasLabel = new System.Windows.Forms.Label();
+      this.aliasTextBox = new System.Windows.Forms.TextBox();
+      this.dataTypeLabel = new System.Windows.Forms.Label();
+      this.dataTypeComboBox = new System.Windows.Forms.ComboBox();
+      this.SuspendLayout();
+      // 
+      // storeButton
+      // 
+      this.toolTip.SetToolTip(this.storeButton, "Store Data");
+      // 
+      // aliasLabel
+      // 
+      this.aliasLabel.AutoSize = true;
+      this.aliasLabel.Location = new System.Drawing.Point(3, 84);
+      this.aliasLabel.Name = "aliasLabel";
+      this.aliasLabel.Size = new System.Drawing.Size(32, 13);
+      this.aliasLabel.TabIndex = 5;
+      this.aliasLabel.Text = "Alias:";
+      // 
+      // aliasTextBox
+      // 
+      this.aliasTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.aliasTextBox.Location = new System.Drawing.Point(72, 81);
+      this.aliasTextBox.Name = "aliasTextBox";
+      this.aliasTextBox.Size = new System.Drawing.Size(278, 20);
+      this.aliasTextBox.TabIndex = 6;
+      this.aliasTextBox.TextChanged += new System.EventHandler(this.aliasTextBox_TextChanged);
+      this.aliasTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.aliasTextBox_KeyDown);
+      // 
+      // dataTypeLabel
+      // 
+      this.dataTypeLabel.AutoSize = true;
+      this.dataTypeLabel.Location = new System.Drawing.Point(3, 110);
+      this.dataTypeLabel.Name = "dataTypeLabel";
+      this.dataTypeLabel.Size = new System.Drawing.Size(60, 13);
+      this.dataTypeLabel.TabIndex = 7;
+      this.dataTypeLabel.Text = "Data Type:";
+      // 
+      // dataTypeComboBox
+      // 
+      this.dataTypeComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.dataTypeComboBox.FormattingEnabled = true;
+      this.dataTypeComboBox.Location = new System.Drawing.Point(72, 107);
+      this.dataTypeComboBox.Name = "dataTypeComboBox";
+      this.dataTypeComboBox.Size = new System.Drawing.Size(278, 21);
+      this.dataTypeComboBox.TabIndex = 8;
+      this.dataTypeComboBox.SelectedIndexChanged += new System.EventHandler(this.dataTypeComboBox_SelectedIndexChanged);
+      // 
+      // AlgorithmParameterView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.aliasTextBox);
+      this.Controls.Add(this.aliasLabel);
+      this.Controls.Add(this.dataTypeComboBox);
+      this.Controls.Add(this.dataTypeLabel);
+      this.Name = "AlgorithmParameterView";
+      this.Size = new System.Drawing.Size(350, 147);
+      this.Controls.SetChildIndex(this.dataTypeLabel, 0);
+      this.Controls.SetChildIndex(this.dataTypeComboBox, 0);
+      this.Controls.SetChildIndex(this.aliasLabel, 0);
+      this.Controls.SetChildIndex(this.aliasTextBox, 0);
+      this.Controls.SetChildIndex(this.storeButton, 0);
+      this.Controls.SetChildIndex(this.nameTextBox, 0);
+      this.Controls.SetChildIndex(this.nameLabel, 0);
+      this.Controls.SetChildIndex(this.descriptionLabel, 0);
+      this.Controls.SetChildIndex(this.descriptionTextBox, 0);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Label aliasLabel;
+    private System.Windows.Forms.TextBox aliasTextBox;
+    private System.Windows.Forms.Label dataTypeLabel;
+    private System.Windows.Forms.ComboBox dataTypeComboBox;
+
+  }
+}
Index: branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/AlgorithmParameterView.cs
===================================================================
--- branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/AlgorithmParameterView.cs	(revision 4929)
+++ branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/AlgorithmParameterView.cs	(revision 4929)
@@ -0,0 +1,97 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows.Forms;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+
+namespace HeuristicLab.Clients.OKB {
+  [View("AlgorithmParameter View")]
+  [Content(typeof(AlgorithmParameter), true)]
+  public partial class AlgorithmParameterView : NamedOKBItemView {
+    private List<DataType> dataTypeComboBoxValues;
+
+    public new AlgorithmParameter Content {
+      get { return (AlgorithmParameter)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public AlgorithmParameterView() {
+      InitializeComponent();
+    }
+
+    protected override void OnInitialized(System.EventArgs e) {
+      base.OnInitialized(e);
+      dataTypeComboBoxValues = OKBClient.Instance.DataTypes.ToList();
+      dataTypeComboBox.DataSource = dataTypeComboBoxValues;
+      dataTypeComboBox.SelectedIndex = -1;
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null) {
+        aliasTextBox.Text = string.Empty;
+        dataTypeComboBox.SelectedIndex = -1;
+      } else {
+        aliasTextBox.Text = Content.Alias;
+        dataTypeComboBox.SelectedItem = dataTypeComboBoxValues.FirstOrDefault(d => d.Id == Content.DataTypeId);
+      }
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      aliasTextBox.Enabled = Content != null;
+      aliasTextBox.ReadOnly = ReadOnly;
+      dataTypeComboBox.Enabled = Content != null && !ReadOnly;
+    }
+
+    protected override void OnContentPropertyChanged(string propertyName) {
+      switch (propertyName) {
+        case "Alias":
+          aliasTextBox.Text = Content.Alias;
+          break;
+        case "DataTypeId":
+          dataTypeComboBox.SelectedItem = dataTypeComboBoxValues.FirstOrDefault(d => d.Id == Content.DataTypeId);
+          break;
+      }
+    }
+
+    protected virtual void aliasTextBox_KeyDown(object sender, KeyEventArgs e) {
+      if ((e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Return))
+        aliasLabel.Focus();  // set focus on label to validate data
+      if (e.KeyCode == Keys.Escape) {
+        aliasTextBox.Text = Content.Alias;
+        aliasLabel.Focus();  // set focus on label to validate data
+      }
+    }
+    protected virtual void aliasTextBox_TextChanged(object sender, EventArgs e) {
+      if (aliasTextBox.Text != Content.Alias)
+        Content.Alias = aliasTextBox.Text;
+    }
+
+    private void dataTypeComboBox_SelectedIndexChanged(object sender, EventArgs e) {
+      if (Content != null) Content.DataTypeId = ((DataType)dataTypeComboBox.SelectedItem).Id;
+    }
+  }
+}
Index: branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/AlgorithmView.Designer.cs
===================================================================
--- branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/AlgorithmView.Designer.cs	(revision 4918)
+++ branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/AlgorithmView.Designer.cs	(revision 4929)
@@ -56,7 +56,19 @@
       this.dataTabPage = new System.Windows.Forms.TabPage();
       this.algorithmDataView = new HeuristicLab.Clients.OKB.AlgorithmDataView();
+      this.parametersTabPage = new System.Windows.Forms.TabPage();
+      this.algorithmParameterCollectionView = new HeuristicLab.Clients.OKB.AlgorithmParameterCollectionView();
+      this.refreshParametersButton = new System.Windows.Forms.Button();
+      this.resultsTabPage = new System.Windows.Forms.TabPage();
+      this.resultCollectionView = new HeuristicLab.Clients.OKB.ResultCollectionView();
+      this.refreshResultsButton = new System.Windows.Forms.Button();
+      this.experimentsTabPage = new System.Windows.Forms.TabPage();
+      this.refreshExperimentsButton = new System.Windows.Forms.Button();
+      this.experimentCollectionView = new HeuristicLab.Clients.OKB.ExperimentCollectionView();
       this.tabControl.SuspendLayout();
       this.usersTabPage.SuspendLayout();
       this.dataTabPage.SuspendLayout();
+      this.parametersTabPage.SuspendLayout();
+      this.resultsTabPage.SuspendLayout();
+      this.experimentsTabPage.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -138,4 +150,7 @@
       this.tabControl.Controls.Add(this.usersTabPage);
       this.tabControl.Controls.Add(this.dataTabPage);
+      this.tabControl.Controls.Add(this.parametersTabPage);
+      this.tabControl.Controls.Add(this.resultsTabPage);
+      this.tabControl.Controls.Add(this.experimentsTabPage);
       this.tabControl.Location = new System.Drawing.Point(0, 162);
       this.tabControl.Name = "tabControl";
@@ -203,4 +218,109 @@
       this.algorithmDataView.Size = new System.Drawing.Size(613, 254);
       this.algorithmDataView.TabIndex = 0;
+      // 
+      // parametersTabPage
+      // 
+      this.parametersTabPage.Controls.Add(this.algorithmParameterCollectionView);
+      this.parametersTabPage.Controls.Add(this.refreshParametersButton);
+      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(625, 266);
+      this.parametersTabPage.TabIndex = 2;
+      this.parametersTabPage.Text = "Parameters";
+      this.parametersTabPage.UseVisualStyleBackColor = true;
+      // 
+      // algorithmParameterCollectionView
+      // 
+      this.algorithmParameterCollectionView.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.algorithmParameterCollectionView.Caption = "AlgorithmParameterCollection View";
+      this.algorithmParameterCollectionView.Content = null;
+      this.algorithmParameterCollectionView.Location = new System.Drawing.Point(6, 36);
+      this.algorithmParameterCollectionView.Name = "algorithmParameterCollectionView";
+      this.algorithmParameterCollectionView.ReadOnly = false;
+      this.algorithmParameterCollectionView.Size = new System.Drawing.Size(613, 224);
+      this.algorithmParameterCollectionView.TabIndex = 1;
+      // 
+      // refreshParametersButton
+      // 
+      this.refreshParametersButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Refresh;
+      this.refreshParametersButton.Location = new System.Drawing.Point(6, 6);
+      this.refreshParametersButton.Name = "refreshParametersButton";
+      this.refreshParametersButton.Size = new System.Drawing.Size(24, 24);
+      this.refreshParametersButton.TabIndex = 0;
+      this.refreshParametersButton.UseVisualStyleBackColor = true;
+      this.refreshParametersButton.Click += new System.EventHandler(this.refreshParametersButton_Click);
+      // 
+      // resultsTabPage
+      // 
+      this.resultsTabPage.Controls.Add(this.resultCollectionView);
+      this.resultsTabPage.Controls.Add(this.refreshResultsButton);
+      this.resultsTabPage.Location = new System.Drawing.Point(4, 22);
+      this.resultsTabPage.Name = "resultsTabPage";
+      this.resultsTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.resultsTabPage.Size = new System.Drawing.Size(625, 266);
+      this.resultsTabPage.TabIndex = 3;
+      this.resultsTabPage.Text = "Results";
+      this.resultsTabPage.UseVisualStyleBackColor = true;
+      // 
+      // resultCollectionView
+      // 
+      this.resultCollectionView.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.resultCollectionView.Caption = "ResultCollection View";
+      this.resultCollectionView.Content = null;
+      this.resultCollectionView.Location = new System.Drawing.Point(6, 36);
+      this.resultCollectionView.Name = "resultCollectionView";
+      this.resultCollectionView.ReadOnly = false;
+      this.resultCollectionView.Size = new System.Drawing.Size(613, 224);
+      this.resultCollectionView.TabIndex = 1;
+      // 
+      // refreshResultsButton
+      // 
+      this.refreshResultsButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Refresh;
+      this.refreshResultsButton.Location = new System.Drawing.Point(6, 6);
+      this.refreshResultsButton.Name = "refreshResultsButton";
+      this.refreshResultsButton.Size = new System.Drawing.Size(24, 24);
+      this.refreshResultsButton.TabIndex = 0;
+      this.refreshResultsButton.UseVisualStyleBackColor = true;
+      this.refreshResultsButton.Click += new System.EventHandler(this.refreshResultsButton_Click);
+      // 
+      // experimentsTabPage
+      // 
+      this.experimentsTabPage.Controls.Add(this.experimentCollectionView);
+      this.experimentsTabPage.Controls.Add(this.refreshExperimentsButton);
+      this.experimentsTabPage.Location = new System.Drawing.Point(4, 22);
+      this.experimentsTabPage.Name = "experimentsTabPage";
+      this.experimentsTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.experimentsTabPage.Size = new System.Drawing.Size(625, 266);
+      this.experimentsTabPage.TabIndex = 4;
+      this.experimentsTabPage.Text = "Experiments";
+      this.experimentsTabPage.UseVisualStyleBackColor = true;
+      // 
+      // refreshExperimentsButton
+      // 
+      this.refreshExperimentsButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Refresh;
+      this.refreshExperimentsButton.Location = new System.Drawing.Point(6, 6);
+      this.refreshExperimentsButton.Name = "refreshExperimentsButton";
+      this.refreshExperimentsButton.Size = new System.Drawing.Size(24, 24);
+      this.refreshExperimentsButton.TabIndex = 0;
+      this.refreshExperimentsButton.UseVisualStyleBackColor = true;
+      this.refreshExperimentsButton.Click += new System.EventHandler(this.refreshExperimentsButton_Click);
+      // 
+      // experimentCollectionView
+      // 
+      this.experimentCollectionView.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.experimentCollectionView.Caption = "ExperimentCollection View";
+      this.experimentCollectionView.Content = null;
+      this.experimentCollectionView.Location = new System.Drawing.Point(6, 36);
+      this.experimentCollectionView.Name = "experimentCollectionView";
+      this.experimentCollectionView.ReadOnly = false;
+      this.experimentCollectionView.Size = new System.Drawing.Size(613, 224);
+      this.experimentCollectionView.TabIndex = 1;
       // 
       // AlgorithmView
@@ -227,4 +347,7 @@
       this.usersTabPage.ResumeLayout(false);
       this.dataTabPage.ResumeLayout(false);
+      this.parametersTabPage.ResumeLayout(false);
+      this.resultsTabPage.ResumeLayout(false);
+      this.experimentsTabPage.ResumeLayout(false);
       this.ResumeLayout(false);
       this.PerformLayout();
@@ -245,4 +368,13 @@
     private System.Windows.Forms.TabPage dataTabPage;
     private AlgorithmDataView algorithmDataView;
+    private System.Windows.Forms.TabPage parametersTabPage;
+    private System.Windows.Forms.TabPage resultsTabPage;
+    private AlgorithmParameterCollectionView algorithmParameterCollectionView;
+    private System.Windows.Forms.Button refreshParametersButton;
+    private System.Windows.Forms.Button refreshResultsButton;
+    private System.Windows.Forms.TabPage experimentsTabPage;
+    private ResultCollectionView resultCollectionView;
+    private ExperimentCollectionView experimentCollectionView;
+    private System.Windows.Forms.Button refreshExperimentsButton;
 
   }
Index: branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/AlgorithmView.cs
===================================================================
--- branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/AlgorithmView.cs	(revision 4918)
+++ branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/AlgorithmView.cs	(revision 4929)
@@ -123,4 +123,16 @@
       storeUsersButton.Enabled = !ReadOnly;
     }
+
+    private void refreshParametersButton_Click(object sender, EventArgs e) {
+      algorithmParameterCollectionView.Content = OKBClient.Instance.GetAlgorithmParameters(Content.Id);
+    }
+
+    private void refreshResultsButton_Click(object sender, EventArgs e) {
+      resultCollectionView.Content = OKBClient.Instance.GetResults(Content.Id);
+    }
+
+    private void refreshExperimentsButton_Click(object sender, EventArgs e) {
+      experimentCollectionView.Content = null; // TODO
+    }
   }
 }
Index: branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/ExperimentCollectionView.Designer.cs
===================================================================
--- branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/ExperimentCollectionView.Designer.cs	(revision 4929)
+++ branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/ExperimentCollectionView.Designer.cs	(revision 4929)
@@ -0,0 +1,53 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Clients.OKB {
+  partial class ExperimentCollectionView {
+    /// <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) {
+        if (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() {
+      components = new System.ComponentModel.Container();
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+    }
+
+    #endregion
+  }
+}
Index: branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/ExperimentCollectionView.cs
===================================================================
--- branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/ExperimentCollectionView.cs	(revision 4929)
+++ branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/ExperimentCollectionView.cs	(revision 4929)
@@ -0,0 +1,40 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Windows.Forms;
+using HeuristicLab.Core;
+using HeuristicLab.Core.Views;
+using HeuristicLab.MainForm;
+
+namespace HeuristicLab.Clients.OKB {
+  [View("ExperimentCollection View")]
+  [Content(typeof(IItemCollection<Experiment>), true)]
+  public partial class ExperimentCollectionView : ItemCollectionView<Experiment> {
+    public ExperimentCollectionView() {
+      InitializeComponent();
+      itemsGroupBox.Text = "Experiments";
+    }
+
+    protected override Experiment CreateItem() {
+      return new Experiment();
+    }
+  }
+}
Index: branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/ProblemParameterView.Designer.cs
===================================================================
--- branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/ProblemParameterView.Designer.cs	(revision 4929)
+++ branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/ProblemParameterView.Designer.cs	(revision 4929)
@@ -0,0 +1,129 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Clients.OKB {
+  partial class ProblemParameterView {
+    /// <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) {
+        if (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.aliasLabel = new System.Windows.Forms.Label();
+      this.aliasTextBox = new System.Windows.Forms.TextBox();
+      this.dataTypeLabel = new System.Windows.Forms.Label();
+      this.dataTypeComboBox = new System.Windows.Forms.ComboBox();
+      this.SuspendLayout();
+      // 
+      // storeButton
+      // 
+      this.toolTip.SetToolTip(this.storeButton, "Store Data");
+      // 
+      // aliasLabel
+      // 
+      this.aliasLabel.AutoSize = true;
+      this.aliasLabel.Location = new System.Drawing.Point(3, 84);
+      this.aliasLabel.Name = "aliasLabel";
+      this.aliasLabel.Size = new System.Drawing.Size(32, 13);
+      this.aliasLabel.TabIndex = 5;
+      this.aliasLabel.Text = "Alias:";
+      // 
+      // aliasTextBox
+      // 
+      this.aliasTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.aliasTextBox.Location = new System.Drawing.Point(72, 81);
+      this.aliasTextBox.Name = "aliasTextBox";
+      this.aliasTextBox.Size = new System.Drawing.Size(278, 20);
+      this.aliasTextBox.TabIndex = 6;
+      this.aliasTextBox.TextChanged += new System.EventHandler(this.aliasTextBox_TextChanged);
+      this.aliasTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.aliasTextBox_KeyDown);
+      // 
+      // dataTypeLabel
+      // 
+      this.dataTypeLabel.AutoSize = true;
+      this.dataTypeLabel.Location = new System.Drawing.Point(3, 110);
+      this.dataTypeLabel.Name = "dataTypeLabel";
+      this.dataTypeLabel.Size = new System.Drawing.Size(60, 13);
+      this.dataTypeLabel.TabIndex = 7;
+      this.dataTypeLabel.Text = "Data Type:";
+      // 
+      // dataTypeComboBox
+      // 
+      this.dataTypeComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.dataTypeComboBox.FormattingEnabled = true;
+      this.dataTypeComboBox.Location = new System.Drawing.Point(72, 107);
+      this.dataTypeComboBox.Name = "dataTypeComboBox";
+      this.dataTypeComboBox.Size = new System.Drawing.Size(278, 21);
+      this.dataTypeComboBox.TabIndex = 8;
+      this.dataTypeComboBox.SelectedIndexChanged += new System.EventHandler(this.dataTypeComboBox_SelectedIndexChanged);
+      // 
+      // ProblemParameterView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.aliasTextBox);
+      this.Controls.Add(this.aliasLabel);
+      this.Controls.Add(this.dataTypeComboBox);
+      this.Controls.Add(this.dataTypeLabel);
+      this.Name = "ProblemParameterView";
+      this.Size = new System.Drawing.Size(350, 147);
+      this.Controls.SetChildIndex(this.dataTypeLabel, 0);
+      this.Controls.SetChildIndex(this.dataTypeComboBox, 0);
+      this.Controls.SetChildIndex(this.aliasLabel, 0);
+      this.Controls.SetChildIndex(this.aliasTextBox, 0);
+      this.Controls.SetChildIndex(this.storeButton, 0);
+      this.Controls.SetChildIndex(this.nameTextBox, 0);
+      this.Controls.SetChildIndex(this.nameLabel, 0);
+      this.Controls.SetChildIndex(this.descriptionLabel, 0);
+      this.Controls.SetChildIndex(this.descriptionTextBox, 0);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Label aliasLabel;
+    private System.Windows.Forms.TextBox aliasTextBox;
+    private System.Windows.Forms.Label dataTypeLabel;
+    private System.Windows.Forms.ComboBox dataTypeComboBox;
+
+  }
+}
Index: branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/ProblemParameterView.cs
===================================================================
--- branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/ProblemParameterView.cs	(revision 4929)
+++ branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/ProblemParameterView.cs	(revision 4929)
@@ -0,0 +1,97 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows.Forms;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+
+namespace HeuristicLab.Clients.OKB {
+  [View("ProblemParameter View")]
+  [Content(typeof(ProblemParameter), true)]
+  public partial class ProblemParameterView : NamedOKBItemView {
+    private List<DataType> dataTypeComboBoxValues;
+
+    public new ProblemParameter Content {
+      get { return (ProblemParameter)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public ProblemParameterView() {
+      InitializeComponent();
+    }
+
+    protected override void OnInitialized(System.EventArgs e) {
+      base.OnInitialized(e);
+      dataTypeComboBoxValues = OKBClient.Instance.DataTypes.ToList();
+      dataTypeComboBox.DataSource = dataTypeComboBoxValues;
+      dataTypeComboBox.SelectedIndex = -1;
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null) {
+        aliasTextBox.Text = string.Empty;
+        dataTypeComboBox.SelectedIndex = -1;
+      } else {
+        aliasTextBox.Text = Content.Alias;
+        dataTypeComboBox.SelectedItem = dataTypeComboBoxValues.FirstOrDefault(d => d.Id == Content.DataTypeId);
+      }
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      aliasTextBox.Enabled = Content != null;
+      aliasTextBox.ReadOnly = ReadOnly;
+      dataTypeComboBox.Enabled = Content != null && !ReadOnly;
+    }
+
+    protected override void OnContentPropertyChanged(string propertyName) {
+      switch (propertyName) {
+        case "Alias":
+          aliasTextBox.Text = Content.Alias;
+          break;
+        case "DataTypeId":
+          dataTypeComboBox.SelectedItem = dataTypeComboBoxValues.FirstOrDefault(d => d.Id == Content.DataTypeId);
+          break;
+      }
+    }
+
+    protected virtual void aliasTextBox_KeyDown(object sender, KeyEventArgs e) {
+      if ((e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Return))
+        aliasLabel.Focus();  // set focus on label to validate data
+      if (e.KeyCode == Keys.Escape) {
+        aliasTextBox.Text = Content.Alias;
+        aliasLabel.Focus();  // set focus on label to validate data
+      }
+    }
+    protected virtual void aliasTextBox_TextChanged(object sender, EventArgs e) {
+      if (aliasTextBox.Text != Content.Alias)
+        Content.Alias = aliasTextBox.Text;
+    }
+
+    private void dataTypeComboBox_SelectedIndexChanged(object sender, EventArgs e) {
+      if (Content != null) Content.DataTypeId = ((DataType)dataTypeComboBox.SelectedItem).Id;
+    }
+  }
+}
Index: branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/ResultCollectionView.cs
===================================================================
--- branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/ResultCollectionView.cs	(revision 4918)
+++ branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/ResultCollectionView.cs	(revision 4929)
@@ -31,5 +31,5 @@
     public ResultCollectionView() {
       InitializeComponent();
-      itemsGroupBox.Text = "Result";
+      itemsGroupBox.Text = "Results";
     }
 
Index: branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/ResultView.Designer.cs
===================================================================
--- branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/ResultView.Designer.cs	(revision 4929)
+++ branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/ResultView.Designer.cs	(revision 4929)
@@ -0,0 +1,129 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Clients.OKB {
+  partial class ResultView {
+    /// <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) {
+        if (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.aliasLabel = new System.Windows.Forms.Label();
+      this.aliasTextBox = new System.Windows.Forms.TextBox();
+      this.dataTypeLabel = new System.Windows.Forms.Label();
+      this.dataTypeComboBox = new System.Windows.Forms.ComboBox();
+      this.SuspendLayout();
+      // 
+      // storeButton
+      // 
+      this.toolTip.SetToolTip(this.storeButton, "Store Data");
+      // 
+      // aliasLabel
+      // 
+      this.aliasLabel.AutoSize = true;
+      this.aliasLabel.Location = new System.Drawing.Point(3, 84);
+      this.aliasLabel.Name = "aliasLabel";
+      this.aliasLabel.Size = new System.Drawing.Size(32, 13);
+      this.aliasLabel.TabIndex = 5;
+      this.aliasLabel.Text = "Alias:";
+      // 
+      // aliasTextBox
+      // 
+      this.aliasTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.aliasTextBox.Location = new System.Drawing.Point(72, 81);
+      this.aliasTextBox.Name = "aliasTextBox";
+      this.aliasTextBox.Size = new System.Drawing.Size(278, 20);
+      this.aliasTextBox.TabIndex = 6;
+      this.aliasTextBox.TextChanged += new System.EventHandler(this.aliasTextBox_TextChanged);
+      this.aliasTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.aliasTextBox_KeyDown);
+      // 
+      // dataTypeLabel
+      // 
+      this.dataTypeLabel.AutoSize = true;
+      this.dataTypeLabel.Location = new System.Drawing.Point(3, 110);
+      this.dataTypeLabel.Name = "dataTypeLabel";
+      this.dataTypeLabel.Size = new System.Drawing.Size(60, 13);
+      this.dataTypeLabel.TabIndex = 7;
+      this.dataTypeLabel.Text = "Data Type:";
+      // 
+      // dataTypeComboBox
+      // 
+      this.dataTypeComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.dataTypeComboBox.FormattingEnabled = true;
+      this.dataTypeComboBox.Location = new System.Drawing.Point(72, 107);
+      this.dataTypeComboBox.Name = "dataTypeComboBox";
+      this.dataTypeComboBox.Size = new System.Drawing.Size(278, 21);
+      this.dataTypeComboBox.TabIndex = 8;
+      this.dataTypeComboBox.SelectedIndexChanged += new System.EventHandler(this.dataTypeComboBox_SelectedIndexChanged);
+      // 
+      // ResultView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.aliasTextBox);
+      this.Controls.Add(this.aliasLabel);
+      this.Controls.Add(this.dataTypeComboBox);
+      this.Controls.Add(this.dataTypeLabel);
+      this.Name = "ResultView";
+      this.Size = new System.Drawing.Size(350, 147);
+      this.Controls.SetChildIndex(this.dataTypeLabel, 0);
+      this.Controls.SetChildIndex(this.dataTypeComboBox, 0);
+      this.Controls.SetChildIndex(this.aliasLabel, 0);
+      this.Controls.SetChildIndex(this.aliasTextBox, 0);
+      this.Controls.SetChildIndex(this.storeButton, 0);
+      this.Controls.SetChildIndex(this.nameTextBox, 0);
+      this.Controls.SetChildIndex(this.nameLabel, 0);
+      this.Controls.SetChildIndex(this.descriptionLabel, 0);
+      this.Controls.SetChildIndex(this.descriptionTextBox, 0);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Label aliasLabel;
+    private System.Windows.Forms.TextBox aliasTextBox;
+    private System.Windows.Forms.Label dataTypeLabel;
+    private System.Windows.Forms.ComboBox dataTypeComboBox;
+
+  }
+}
Index: branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/ResultView.cs
===================================================================
--- branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/ResultView.cs	(revision 4929)
+++ branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/ResultView.cs	(revision 4929)
@@ -0,0 +1,97 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows.Forms;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+
+namespace HeuristicLab.Clients.OKB {
+  [View("Result View")]
+  [Content(typeof(Result), true)]
+  public partial class ResultView : NamedOKBItemView {
+    private List<DataType> dataTypeComboBoxValues;
+
+    public new Result Content {
+      get { return (Result)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public ResultView() {
+      InitializeComponent();
+    }
+
+    protected override void OnInitialized(System.EventArgs e) {
+      base.OnInitialized(e);
+      dataTypeComboBoxValues = OKBClient.Instance.DataTypes.ToList();
+      dataTypeComboBox.DataSource = dataTypeComboBoxValues;
+      dataTypeComboBox.SelectedIndex = -1;
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null) {
+        aliasTextBox.Text = string.Empty;
+        dataTypeComboBox.SelectedIndex = -1;
+      } else {
+        aliasTextBox.Text = Content.Alias;
+        dataTypeComboBox.SelectedItem = dataTypeComboBoxValues.FirstOrDefault(d => d.Id == Content.DataTypeId);
+      }
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      aliasTextBox.Enabled = Content != null;
+      aliasTextBox.ReadOnly = ReadOnly;
+      dataTypeComboBox.Enabled = Content != null && !ReadOnly;
+    }
+
+    protected override void OnContentPropertyChanged(string propertyName) {
+      switch (propertyName) {
+        case "Alias":
+          aliasTextBox.Text = Content.Alias;
+          break;
+        case "DataTypeId":
+          dataTypeComboBox.SelectedItem = dataTypeComboBoxValues.FirstOrDefault(d => d.Id == Content.DataTypeId);
+          break;
+      }
+    }
+
+    protected virtual void aliasTextBox_KeyDown(object sender, KeyEventArgs e) {
+      if ((e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Return))
+        aliasLabel.Focus();  // set focus on label to validate data
+      if (e.KeyCode == Keys.Escape) {
+        aliasTextBox.Text = Content.Alias;
+        aliasLabel.Focus();  // set focus on label to validate data
+      }
+    }
+    protected virtual void aliasTextBox_TextChanged(object sender, EventArgs e) {
+      if (aliasTextBox.Text != Content.Alias)
+        Content.Alias = aliasTextBox.Text;
+    }
+
+    private void dataTypeComboBox_SelectedIndexChanged(object sender, EventArgs e) {
+      if (Content != null) Content.DataTypeId = ((DataType)dataTypeComboBox.SelectedItem).Id;
+    }
+  }
+}
Index: branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/RunCollectionView.Designer.cs
===================================================================
--- branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/RunCollectionView.Designer.cs	(revision 4929)
+++ branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/RunCollectionView.Designer.cs	(revision 4929)
@@ -0,0 +1,53 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Clients.OKB {
+  partial class RunCollectionView {
+    /// <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) {
+        if (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() {
+      components = new System.ComponentModel.Container();
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+    }
+
+    #endregion
+  }
+}
Index: branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/RunCollectionView.cs
===================================================================
--- branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/RunCollectionView.cs	(revision 4929)
+++ branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/RunCollectionView.cs	(revision 4929)
@@ -0,0 +1,40 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Windows.Forms;
+using HeuristicLab.Core;
+using HeuristicLab.Core.Views;
+using HeuristicLab.MainForm;
+
+namespace HeuristicLab.Clients.OKB {
+  [View("RunCollection View")]
+  [Content(typeof(IItemCollection<Run>), true)]
+  public partial class RunCollectionView : ItemCollectionView<Run> {
+    public RunCollectionView() {
+      InitializeComponent();
+      itemsGroupBox.Text = "Runs";
+    }
+
+    protected override Run CreateItem() {
+      return new Run();
+    }
+  }
+}
Index: branches/OKB/HeuristicLab.Clients.OKB-3.3/app.config
===================================================================
--- branches/OKB/HeuristicLab.Clients.OKB-3.3/app.config	(revision 4918)
+++ branches/OKB/HeuristicLab.Clients.OKB-3.3/app.config	(revision 4929)
@@ -7,5 +7,5 @@
                     openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                     bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
-                    maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
+                    maxBufferPoolSize="524288" maxReceivedMessageSize="200000000"
                     messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
                     allowCookies="false">
Index: branches/OKB/HeuristicLab.Services.OKB/3.3/OKBService.cs
===================================================================
--- branches/OKB/HeuristicLab.Services.OKB/3.3/OKBService.cs	(revision 4918)
+++ branches/OKB/HeuristicLab.Services.OKB/3.3/OKBService.cs	(revision 4929)
@@ -463,5 +463,5 @@
         okb.LoadOptions = dlo;
 
-        var experiments = okb.Experiments.Where(x => ((x.AlgorithmId == entity.AlgorithmId) && (x.ProblemId == entity.ProblemId)));
+        var experiments = okb.Experiments.Where(x => ((x.AlgorithmId == entity.AlgorithmId) && (x.ProblemId == entity.ProblemId))).ToArray();
         ExperimentEqualityComparer comparer = new ExperimentEqualityComparer();
         Experiment exp = experiments.FirstOrDefault(x => comparer.Equals(x, entity));
