Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Core/3.3/Properties/AssemblyInfo.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Core/3.3/Properties/AssemblyInfo.cs	(revision 4115)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Core/3.3/Properties/AssemblyInfo.cs	(revision 4116)
@@ -57,5 +57,5 @@
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("3.3.0.4107")]
-[assembly: AssemblyFileVersion("3.3.0.4107")]
-[assembly: AssemblyBuildDate("2010/07/27 14:15:11")]
+[assembly: AssemblyVersion("3.3.0.4111")]
+[assembly: AssemblyFileVersion("3.3.0.4111")]
+[assembly: AssemblyBuildDate("2010/07/27 18:31:47")]
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/ClientDto.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/ClientDto.cs	(revision 4115)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/ClientDto.cs	(revision 4116)
@@ -28,5 +28,5 @@
 namespace HeuristicLab.Hive.Contracts.BusinessObjects {
 
-  public enum State { nullState, idle, calculating, offline, finished, abort, requestSnapshot, requestSnapshotSent, pending };
+  public enum State { NullState, Idle, Calculating, Offline, Finished, Abort, RequestSnapshot, RequestSnapshotSent, Pending };
   public enum CalendarState { Fetch, ForceFetch, Fetching, Fetched, NotAllowedToFetch };
 
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/HiveEngine.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/HiveEngine.cs	(revision 4115)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/HiveEngine.cs	(revision 4116)
@@ -163,5 +163,5 @@
       JobDto jobDto = new JobDto();
 
-      // serialize current job
+      // serialize job
       MemoryStream memStream = new MemoryStream();
       XmlGenerator.Serialize(job, memStream);
@@ -183,5 +183,5 @@
       jobDto.CoresNeeded = 1;
       jobDto.PluginsNeeded = pluginsNeeded;
-      jobDto.State = State.offline;
+      jobDto.State = State.Offline;
       return executableJobObj;
     }
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/HeuristicLab.Hive.Experiment.Views-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/HeuristicLab.Hive.Experiment.Views-3.3.csproj	(revision 4116)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/HeuristicLab.Hive.Experiment.Views-3.3.csproj	(revision 4116)
@@ -0,0 +1,140 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{4F15BEA2-F494-4584-A0E5-6BA85377B313}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Hive.Experiment.Views</RootNamespace>
+    <AssemblyName>HeuristicLab.Hive.Experiment.Views-3.3</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkProfile>
+    </TargetFrameworkProfile>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <OutputPath>bin\Debug\</OutputPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <OutputPath>bin\Release\</OutputPath>
+  </PropertyGroup>
+  <PropertyGroup>
+    <StartupObject />
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="HeuristicLab.Collections-3.3">
+      <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.Collections-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Common-3.3">
+      <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.Common-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Common.Resources-3.3">
+      <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.Common.Resources-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Core-3.3">
+      <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.Core-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Core.Views-3.3">
+      <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.Core.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Data-3.3">
+      <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.Data-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Hive.Experiment.Views-3.3, Version=3.3.0.4111, Culture=neutral, processorArchitecture=MSIL" />
+    <Reference Include="HeuristicLab.Hive.Server.Console-3.3">
+      <HintPath>..\..\HeuristicLab.Hive.Server.Console\3.3\obj\Debug\HeuristicLab.Hive.Server.Console-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.MainForm-3.3">
+      <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.MainForm-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.MainForm.WindowsForms-3.3">
+      <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.MainForm.WindowsForms-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Operators.Views-3.3">
+      <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.Operators.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Optimization-3.3">
+      <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.Optimization-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Optimization.Views-3.3">
+      <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.Optimization.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.PluginInfrastructure-3.3">
+      <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="HeuristicLabHiveExperimentViewsPlugin.cs" />
+    <Compile Include="HiveExperimentView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="HiveExperimentView.Designer.cs">
+      <DependentUpon>HiveExperimentView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Properties\AssemblyInfo.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Hive.Experiment\3.3\HeuristicLab.Hive.Experiment-3.3.csproj">
+      <Project>{A84C0A25-13D0-40A6-924F-53556D9691DC}</Project>
+      <Name>HeuristicLab.Hive.Experiment-3.3</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="HiveExperimentView.resx">
+      <DependentUpon>HiveExperimentView.cs</DependentUpon>
+    </EmbeddedResource>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/HeuristicLabHiveExperimentViewsPlugin.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/HeuristicLabHiveExperimentViewsPlugin.cs	(revision 4116)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/HeuristicLabHiveExperimentViewsPlugin.cs	(revision 4116)
@@ -0,0 +1,38 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Text;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Hive.Experiment.Views {
+  [Plugin("HeuristicLab.Hive.Experiment.Views", "3.3")]
+  [PluginFile("HeuristicLab.Hive.Experiment.Views-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Common", "3.3")]
+  [PluginDependency("HeuristicLab.Core", "3.3")]
+  [PluginDependency("HeuristicLab.Core.Views", "3.3")]
+  [PluginDependency("HeuristicLab.MainForm", "3.3")]
+  [PluginDependency("HeuristicLab.Hive.Experiment", "3.3")]
+  public class HeuristicLabHiveExperimentViewsPlugin : PluginBase {
+
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/HiveExperimentView.Designer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/HiveExperimentView.Designer.cs	(revision 4116)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/HiveExperimentView.Designer.cs	(revision 4116)
@@ -0,0 +1,327 @@
+﻿#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.Hive.Experiment.Views {
+  partial class HiveExperimentView {
+    /// <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() {
+      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(HiveExperimentView));
+      this.tabControl = new System.Windows.Forms.TabControl();
+      this.experimentTabPage = new System.Windows.Forms.TabPage();
+      this.experimentNamedItemView = new HeuristicLab.Core.Views.NamedItemView();
+      this.newExperimentButton = new System.Windows.Forms.Button();
+      this.openExperimentButton = new System.Windows.Forms.Button();
+      this.loadExperimentButton = new System.Windows.Forms.Button();
+      this.hiveStatusTabPage = new System.Windows.Forms.TabPage();
+      this.startButton = new System.Windows.Forms.Button();
+      this.stopButton = new System.Windows.Forms.Button();
+      this.resetButton = new System.Windows.Forms.Button();
+      this.executionTimeLabel = new System.Windows.Forms.Label();
+      this.executionTimeTextBox = new System.Windows.Forms.TextBox();
+      this.pauseButton = new System.Windows.Forms.Button();
+      this.ServerUrlLabel = new System.Windows.Forms.Label();
+      this.resourceIdsLabel = new System.Windows.Forms.Label();
+      this.serverUrlTextBox = new System.Windows.Forms.TextBox();
+      this.resourceIdsTextBox = new System.Windows.Forms.TextBox();
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
+      this.tabControl.SuspendLayout();
+      this.experimentTabPage.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // nameTextBox
+      // 
+      this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
+      this.errorProvider.SetIconPadding(this.nameTextBox, 2);
+      this.nameTextBox.Size = new System.Drawing.Size(663, 20);
+      // 
+      // descriptionTextBox
+      // 
+      this.descriptionTextBox.Size = new System.Drawing.Size(663, 20);
+      // 
+      // tabControl
+      // 
+      this.tabControl.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.tabControl.Controls.Add(this.experimentTabPage);
+      this.tabControl.Controls.Add(this.hiveStatusTabPage);
+      this.tabControl.Location = new System.Drawing.Point(0, 135);
+      this.tabControl.Name = "tabControl";
+      this.tabControl.SelectedIndex = 0;
+      this.tabControl.Size = new System.Drawing.Size(735, 359);
+      this.tabControl.TabIndex = 4;
+      // 
+      // experimentTabPage
+      // 
+      this.experimentTabPage.Controls.Add(this.experimentNamedItemView);
+      this.experimentTabPage.Controls.Add(this.newExperimentButton);
+      this.experimentTabPage.Controls.Add(this.openExperimentButton);
+      this.experimentTabPage.Controls.Add(this.loadExperimentButton);
+      this.experimentTabPage.Location = new System.Drawing.Point(4, 22);
+      this.experimentTabPage.Name = "experimentTabPage";
+      this.experimentTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.experimentTabPage.Size = new System.Drawing.Size(727, 333);
+      this.experimentTabPage.TabIndex = 1;
+      this.experimentTabPage.Text = "Experiment";
+      this.experimentTabPage.UseVisualStyleBackColor = true;
+      // 
+      // experimentNamedItemView
+      // 
+      this.experimentNamedItemView.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.experimentNamedItemView.Caption = "NamedItem View";
+      this.experimentNamedItemView.Content = null;
+      this.experimentNamedItemView.Location = new System.Drawing.Point(144, 7);
+      this.experimentNamedItemView.Name = "experimentNamedItemView";
+      this.experimentNamedItemView.ReadOnly = false;
+      this.experimentNamedItemView.Size = new System.Drawing.Size(577, 52);
+      this.experimentNamedItemView.TabIndex = 3;
+      // 
+      // newExperimentButton
+      // 
+      this.newExperimentButton.Location = new System.Drawing.Point(6, 6);
+      this.newExperimentButton.Name = "newExperimentButton";
+      this.newExperimentButton.Size = new System.Drawing.Size(131, 32);
+      this.newExperimentButton.TabIndex = 2;
+      this.newExperimentButton.Text = "New Experiment";
+      this.newExperimentButton.UseVisualStyleBackColor = true;
+      this.newExperimentButton.Click += new System.EventHandler(this.newExperimentButton_Click);
+      // 
+      // openExperimentButton
+      // 
+      this.openExperimentButton.Location = new System.Drawing.Point(6, 82);
+      this.openExperimentButton.Name = "openExperimentButton";
+      this.openExperimentButton.Size = new System.Drawing.Size(131, 32);
+      this.openExperimentButton.TabIndex = 1;
+      this.openExperimentButton.Text = "Open Experiment";
+      this.openExperimentButton.UseVisualStyleBackColor = true;
+      this.openExperimentButton.Click += new System.EventHandler(this.openExperimentButton_Click);
+      // 
+      // loadExperimentButton
+      // 
+      this.loadExperimentButton.Location = new System.Drawing.Point(6, 44);
+      this.loadExperimentButton.Name = "loadExperimentButton";
+      this.loadExperimentButton.Size = new System.Drawing.Size(131, 32);
+      this.loadExperimentButton.TabIndex = 0;
+      this.loadExperimentButton.Text = "Load Experiment";
+      this.loadExperimentButton.UseVisualStyleBackColor = true;
+      this.loadExperimentButton.Click += new System.EventHandler(this.loadExperimentButton_Click);
+      // 
+      // hiveStatusTabPage
+      // 
+      this.hiveStatusTabPage.Location = new System.Drawing.Point(4, 22);
+      this.hiveStatusTabPage.Name = "hiveStatusTabPage";
+      this.hiveStatusTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.hiveStatusTabPage.Size = new System.Drawing.Size(727, 333);
+      this.hiveStatusTabPage.TabIndex = 2;
+      this.hiveStatusTabPage.Text = "HiveStatus";
+      this.hiveStatusTabPage.UseVisualStyleBackColor = true;
+      // 
+      // startButton
+      // 
+      this.startButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.startButton.Image = ((System.Drawing.Image)(resources.GetObject("startButton.Image")));
+      this.startButton.Location = new System.Drawing.Point(0, 500);
+      this.startButton.Name = "startButton";
+      this.startButton.Size = new System.Drawing.Size(24, 24);
+      this.startButton.TabIndex = 5;
+      this.toolTip.SetToolTip(this.startButton, "Start/Resume Experiment");
+      this.startButton.UseVisualStyleBackColor = true;
+      this.startButton.Click += new System.EventHandler(this.startButton_Click);
+      // 
+      // stopButton
+      // 
+      this.stopButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.stopButton.Image = ((System.Drawing.Image)(resources.GetObject("stopButton.Image")));
+      this.stopButton.Location = new System.Drawing.Point(60, 500);
+      this.stopButton.Name = "stopButton";
+      this.stopButton.Size = new System.Drawing.Size(24, 24);
+      this.stopButton.TabIndex = 7;
+      this.toolTip.SetToolTip(this.stopButton, "Stop Experiment");
+      this.stopButton.UseVisualStyleBackColor = true;
+      this.stopButton.Click += new System.EventHandler(this.stopButton_Click);
+      // 
+      // resetButton
+      // 
+      this.resetButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.resetButton.Enabled = false;
+      this.resetButton.Image = ((System.Drawing.Image)(resources.GetObject("resetButton.Image")));
+      this.resetButton.Location = new System.Drawing.Point(90, 500);
+      this.resetButton.Name = "resetButton";
+      this.resetButton.Size = new System.Drawing.Size(24, 24);
+      this.resetButton.TabIndex = 8;
+      this.toolTip.SetToolTip(this.resetButton, "Reset Experiment");
+      this.resetButton.UseVisualStyleBackColor = true;
+      this.resetButton.Click += new System.EventHandler(this.resetButton_Click);
+      // 
+      // executionTimeLabel
+      // 
+      this.executionTimeLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+      this.executionTimeLabel.AutoSize = true;
+      this.executionTimeLabel.Location = new System.Drawing.Point(509, 507);
+      this.executionTimeLabel.Name = "executionTimeLabel";
+      this.executionTimeLabel.Size = new System.Drawing.Size(83, 13);
+      this.executionTimeLabel.TabIndex = 9;
+      this.executionTimeLabel.Text = "&Execution Time:";
+      // 
+      // executionTimeTextBox
+      // 
+      this.executionTimeTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+      this.executionTimeTextBox.Location = new System.Drawing.Point(598, 504);
+      this.executionTimeTextBox.Name = "executionTimeTextBox";
+      this.executionTimeTextBox.ReadOnly = true;
+      this.executionTimeTextBox.Size = new System.Drawing.Size(137, 20);
+      this.executionTimeTextBox.TabIndex = 10;
+      // 
+      // pauseButton
+      // 
+      this.pauseButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.pauseButton.Enabled = false;
+      this.pauseButton.Image = ((System.Drawing.Image)(resources.GetObject("pauseButton.Image")));
+      this.pauseButton.Location = new System.Drawing.Point(30, 500);
+      this.pauseButton.Name = "pauseButton";
+      this.pauseButton.Size = new System.Drawing.Size(24, 24);
+      this.pauseButton.TabIndex = 6;
+      this.toolTip.SetToolTip(this.pauseButton, "Pause Experiment");
+      this.pauseButton.UseVisualStyleBackColor = true;
+      this.pauseButton.Click += new System.EventHandler(this.pauseButton_Click);
+      // 
+      // ServerUrlLabel
+      // 
+      this.ServerUrlLabel.AutoSize = true;
+      this.ServerUrlLabel.Location = new System.Drawing.Point(1, 53);
+      this.ServerUrlLabel.Name = "ServerUrlLabel";
+      this.ServerUrlLabel.Size = new System.Drawing.Size(51, 13);
+      this.ServerUrlLabel.TabIndex = 11;
+      this.ServerUrlLabel.Text = "ServerUrl";
+      // 
+      // resourceIdsLabel
+      // 
+      this.resourceIdsLabel.AutoSize = true;
+      this.resourceIdsLabel.Location = new System.Drawing.Point(3, 76);
+      this.resourceIdsLabel.Name = "resourceIdsLabel";
+      this.resourceIdsLabel.Size = new System.Drawing.Size(67, 13);
+      this.resourceIdsLabel.TabIndex = 12;
+      this.resourceIdsLabel.Text = "ResourceIds";
+      // 
+      // serverUrlTextBox
+      // 
+      this.serverUrlTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.serverUrlTextBox.Location = new System.Drawing.Point(72, 50);
+      this.serverUrlTextBox.Name = "serverUrlTextBox";
+      this.serverUrlTextBox.Size = new System.Drawing.Size(663, 20);
+      this.serverUrlTextBox.TabIndex = 13;
+      this.serverUrlTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.serverUrlTextBox_Validating);
+      this.serverUrlTextBox.Validated += new System.EventHandler(this.serverUrlTextBox_Validated);
+      // 
+      // resourceIdsTextBox
+      // 
+      this.resourceIdsTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.resourceIdsTextBox.Location = new System.Drawing.Point(72, 73);
+      this.resourceIdsTextBox.Name = "resourceIdsTextBox";
+      this.resourceIdsTextBox.Size = new System.Drawing.Size(663, 20);
+      this.resourceIdsTextBox.TabIndex = 14;
+      this.resourceIdsTextBox.Validated += new System.EventHandler(this.resourceIdsTextBox_Validated);
+      // 
+      // HiveExperimentView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.resourceIdsTextBox);
+      this.Controls.Add(this.serverUrlTextBox);
+      this.Controls.Add(this.resourceIdsLabel);
+      this.Controls.Add(this.tabControl);
+      this.Controls.Add(this.startButton);
+      this.Controls.Add(this.executionTimeTextBox);
+      this.Controls.Add(this.executionTimeLabel);
+      this.Controls.Add(this.ServerUrlLabel);
+      this.Controls.Add(this.pauseButton);
+      this.Controls.Add(this.stopButton);
+      this.Controls.Add(this.resetButton);
+      this.Name = "HiveExperimentView";
+      this.Size = new System.Drawing.Size(735, 524);
+      this.Controls.SetChildIndex(this.resetButton, 0);
+      this.Controls.SetChildIndex(this.stopButton, 0);
+      this.Controls.SetChildIndex(this.pauseButton, 0);
+      this.Controls.SetChildIndex(this.ServerUrlLabel, 0);
+      this.Controls.SetChildIndex(this.executionTimeLabel, 0);
+      this.Controls.SetChildIndex(this.executionTimeTextBox, 0);
+      this.Controls.SetChildIndex(this.startButton, 0);
+      this.Controls.SetChildIndex(this.tabControl, 0);
+      this.Controls.SetChildIndex(this.nameLabel, 0);
+      this.Controls.SetChildIndex(this.descriptionLabel, 0);
+      this.Controls.SetChildIndex(this.nameTextBox, 0);
+      this.Controls.SetChildIndex(this.descriptionTextBox, 0);
+      this.Controls.SetChildIndex(this.resourceIdsLabel, 0);
+      this.Controls.SetChildIndex(this.serverUrlTextBox, 0);
+      this.Controls.SetChildIndex(this.resourceIdsTextBox, 0);
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
+      this.tabControl.ResumeLayout(false);
+      this.experimentTabPage.ResumeLayout(false);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+    #endregion
+
+    private System.Windows.Forms.TabControl tabControl;
+    private System.Windows.Forms.TabPage experimentTabPage;
+    private System.Windows.Forms.Button startButton;
+    private System.Windows.Forms.Button stopButton;
+    private System.Windows.Forms.Button resetButton;
+    private System.Windows.Forms.Label executionTimeLabel;
+    private System.Windows.Forms.TextBox executionTimeTextBox;
+    private System.Windows.Forms.Button pauseButton;
+    private System.Windows.Forms.TabPage hiveStatusTabPage;
+    private System.Windows.Forms.Label ServerUrlLabel;
+    private System.Windows.Forms.Label resourceIdsLabel;
+    private System.Windows.Forms.TextBox serverUrlTextBox;
+    private System.Windows.Forms.TextBox resourceIdsTextBox;
+    private System.Windows.Forms.Button newExperimentButton;
+    private System.Windows.Forms.Button openExperimentButton;
+    private System.Windows.Forms.Button loadExperimentButton;
+    private Core.Views.NamedItemView experimentNamedItemView;
+
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/HiveExperimentView.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/HiveExperimentView.cs	(revision 4116)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/HiveExperimentView.cs	(revision 4116)
@@ -0,0 +1,227 @@
+﻿#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.Windows.Forms;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Core.Views;
+using HeuristicLab.MainForm;
+using HeuristicLab.PluginInfrastructure;
+using HeuristicLab.Optimization;
+using HeuristicLab.Optimization.Views;
+
+namespace HeuristicLab.Hive.Experiment.Views {
+  /// <summary>
+  /// The base class for visual representations of items.
+  /// </summary>
+  [View("Experiment View")]
+  [Content(typeof(HiveExperiment), true)]
+  public sealed partial class HiveExperimentView : NamedItemView {
+    public new HiveExperiment Content {
+      get { return (HiveExperiment)base.Content; }
+      set { base.Content = value; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of <see cref="ItemBaseView"/>.
+    /// </summary>
+    public HiveExperimentView() {
+      InitializeComponent();
+    }
+
+    protected override void DeregisterContentEvents() {
+      Content.ExceptionOccurred -= new EventHandler<EventArgs<Exception>>(Content_ExceptionOccurred);
+      Content.ExecutionStateChanged -= new EventHandler(Content_ExecutionStateChanged);
+      Content.ExecutionTimeChanged -= new EventHandler(Content_ExecutionTimeChanged);
+      Content.Prepared -= new EventHandler(Content_Prepared);
+      Content.Started -= new EventHandler(Content_Started);
+      Content.Paused -= new EventHandler(Content_Paused);
+      Content.Stopped -= new EventHandler(Content_Stopped);
+      Content.ExperimentChanged -= new EventHandler(Content_ExperimentChanged);
+      base.DeregisterContentEvents();
+    }
+    protected override void RegisterContentEvents() {
+      base.RegisterContentEvents();
+      Content.ExceptionOccurred += new EventHandler<EventArgs<Exception>>(Content_ExceptionOccurred);
+      Content.ExecutionStateChanged += new EventHandler(Content_ExecutionStateChanged);
+      Content.ExecutionTimeChanged += new EventHandler(Content_ExecutionTimeChanged);
+      Content.Prepared += new EventHandler(Content_Prepared);
+      Content.Started += new EventHandler(Content_Started);
+      Content.Paused += new EventHandler(Content_Paused);
+      Content.Stopped += new EventHandler(Content_Stopped);
+      Content.ExperimentChanged += new EventHandler(Content_ExperimentChanged);
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null) {
+        executionTimeTextBox.Text = "-";
+      } else {
+        executionTimeTextBox.Text = Content.ExecutionTime.ToString();
+      }
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      executionTimeTextBox.Enabled = Content != null;
+      SetEnabledStateOfExecutableButtons();
+    }
+
+    protected override void OnClosed(FormClosedEventArgs e) {
+      if ((Content != null) && (Content.ExecutionState == ExecutionState.Started)) Content.Stop();
+      base.OnClosed(e);
+    }
+
+    private void Content_ExperimentChanged(object sender, EventArgs e) {
+      experimentNamedItemView.Content = Content.Experiment;
+      SetEnabledStateOfExecutableButtons();
+    }
+
+    #region Content Events
+    private void Content_ExecutionStateChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_ExecutionStateChanged), sender, e);
+      else
+        startButton.Enabled = pauseButton.Enabled = stopButton.Enabled = resetButton.Enabled = false;
+    }
+    private void Content_Prepared(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_Prepared), sender, e);
+      else {
+        nameTextBox.Enabled = descriptionTextBox.Enabled = true;
+        Locked = false;
+        SetEnabledStateOfExecutableButtons();
+      }
+    }
+    private void Content_Started(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_Started), sender, e);
+      else {
+        nameTextBox.Enabled = descriptionTextBox.Enabled = false;
+        Locked = true;
+        SetEnabledStateOfExecutableButtons();
+      }
+    }
+    private void Content_Paused(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_Paused), sender, e);
+      else {
+        nameTextBox.Enabled = descriptionTextBox.Enabled = true;
+        Locked = false;
+        SetEnabledStateOfExecutableButtons();
+      }
+    }
+    private void Content_Stopped(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_Stopped), sender, e);
+      else {
+        nameTextBox.Enabled = descriptionTextBox.Enabled = true;
+        Locked = false;
+        SetEnabledStateOfExecutableButtons();
+      }
+    }
+    private void Content_ExecutionTimeChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_ExecutionTimeChanged), sender, e);
+      else
+        executionTimeTextBox.Text = Content.ExecutionTime.ToString();
+    }
+    private void Content_ExceptionOccurred(object sender, EventArgs<Exception> e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler<EventArgs<Exception>>(Content_ExceptionOccurred), sender, e);
+      else
+        ErrorHandling.ShowErrorDialog(this, e.Value);
+    }
+    #endregion
+
+    #region Control events
+    private void startButton_Click(object sender, EventArgs e) {
+      Content.Start();
+    }
+    private void pauseButton_Click(object sender, EventArgs e) {
+      Content.Pause();
+    }
+    private void stopButton_Click(object sender, EventArgs e) {
+      Content.Stop();
+    }
+    private void resetButton_Click(object sender, EventArgs e) {
+      Content.Prepare();
+    }
+    #endregion
+
+    #region Helpers
+    private void SetEnabledStateOfExecutableButtons() {
+      if (Content == null) {
+        startButton.Enabled = pauseButton.Enabled = stopButton.Enabled = resetButton.Enabled = false;
+      } else {
+        startButton.Enabled = (Content.ExecutionState == ExecutionState.Prepared) || (Content.ExecutionState == ExecutionState.Paused);
+        //pauseButton.Enabled = Content.ExecutionState == ExecutionState.Started;
+        pauseButton.Enabled = false; // disabled for now
+        stopButton.Enabled = (Content.ExecutionState == ExecutionState.Started) || (Content.ExecutionState == ExecutionState.Paused);
+        resetButton.Enabled = Content.ExecutionState != ExecutionState.Started;
+        openExperimentButton.Enabled = Content.Experiment != null;
+        experimentNamedItemView.Locked = Content.Experiment == null;
+      }
+    }
+    #endregion
+
+    private void serverUrlTextBox_Validating(object sender, System.ComponentModel.CancelEventArgs e) {
+      if (string.IsNullOrEmpty(serverUrlTextBox.Text)) {
+        e.Cancel = true;
+        errorProvider.SetError(serverUrlTextBox, "ServerUrl cannot be empty");
+        serverUrlTextBox.SelectAll();
+        return;
+      }
+      Content.ServerUrl = serverUrlTextBox.Text;
+    }
+
+    private void serverUrlTextBox_Validated(object sender, EventArgs e) {
+      errorProvider.SetError(serverUrlTextBox, string.Empty);
+    }
+
+    private void resourceIdsTextBox_Validated(object sender, EventArgs e) {
+      Content.ResourceIds = resourceIdsLabel.Text;
+    }
+
+    private void newExperimentButton_Click(object sender, EventArgs e) {
+      Content.Experiment = new HeuristicLab.Optimization.Experiment();
+    }
+
+    private void loadExperimentButton_Click(object sender, EventArgs e) {
+      OpenFileDialog openFileDialog = new OpenFileDialog();
+      openFileDialog.Title = "Open Experimenter";
+      openFileDialog.FileName = "Item";
+      openFileDialog.Multiselect = false;
+      openFileDialog.DefaultExt = "hl";
+      openFileDialog.Filter = "HeuristicLab Files|*.hl|All Files|*.*";
+
+      if (openFileDialog.ShowDialog() == DialogResult.OK) {
+        Content.Experiment = (HeuristicLab.Optimization.Experiment)ContentManager.Load(openFileDialog.FileName);
+      }
+    }
+
+    private void openExperimentButton_Click(object sender, EventArgs e) {
+      MainFormManager.MainForm.ShowContent(Content.Experiment);
+    }
+
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/HiveExperimentView.resx
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/HiveExperimentView.resx	(revision 4116)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/HiveExperimentView.resx	(revision 4116)
@@ -0,0 +1,173 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="errorProvider.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>102, 17</value>
+  </metadata>
+  <metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="startButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALCwAA
+        CwsBbQSEtwAAALZJREFUOE9j/P//PwNFAGQAOi7bn+2GTRybGIZmkKKEGRH/iTUEpwGWZfpEGYLVgKgp
+        Qf833Fr8nxhDsBoQPMEbZDtRhmA1wKfLGWwACEctCsDrEqwGODZb/M/YEAvWbNus/1+nWOG/RBo3iFZD
+        jwmsBpjX6KFo5k9gwaoZnIawxa1eqTLcZnyacRqgki8FdjYhzTgNkM4QJEozTgNEkjlx+pmoQMQW2rjy
+        BtZAJDYj4fQCKQYAAPmEmBfWSTCRAAAAAElFTkSuQmCC
+</value>
+  </data>
+  <data name="stopButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALCwAA
+        CwsBbQSEtwAAAXJJREFUOE+tkj1IQmEYhWsoaIi2xmhpiYSgKFoiCMLJJYSEJiEI0mgIyqjA6vaLUKIU
+        iZlJKKUoWEbZDzVYCYlQYVxcNDIoRND8ud7idD83C27g7YNvPM8573nfcgBlgh4BCPmCxIX0Qtx/ATTu
+        Lyy78ph3ZKC2pTBlSWB86w2jhleMrD9jWB9N/jQsSkDEj5FPPERZ+J7yOL5j4PYzsPsYGL1piKR7nL64
+        syIAcaZfWPhptiC0XeWw4clgzZ3CgiWMBskOP4DEvo+wOAkw2L3IQccJKVsSE6Z3KDRB1PVs8gPIzDch
+        Fo5rzvkoi8V9Io5DqYtBOnaO2k4tP4AU5g0yMJ/lsOr6gMqUwKA2BtlcGOKhA9S0rfADSNvOWwa6wzSm
+        LXEo9JyYoiFRBdA9YEdVM8UPIKvaPk1h1hyCUhOAbPKSc3aiS25Fe58BFU1qfgDZc4fcg5Z+Fxp7ragX
+        GwtzV7cuoVI08zeglKv831MuJcE3MLnHrIkIZqEAAAAASUVORK5CYII=
+</value>
+  </data>
+  <data name="resetButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALCwAA
+        CwsBbQSEtwAAAYNJREFUOE9j/P//PwNFAGQAJZgizWDXI9veu/nvfxhuW/vtf+OKz/9rF7//XzHv1f+S
+        2c//F0x//L901mOgFoSrUQzo2vDr/6aT3/6vPPTl/4I9n/5ffvDzf+/ad/+bl74BG5I3/cV/3dBVuA0A
+        2bri4Jf/83Z9+n/ryS+Qwv8NS978L5378n/O1Of/k3qf/Vf1W4TbAJCT5+z49P/hyx9gzSBQMvvl/6wp
+        z/8n9D79H9b6+L+c2yzcBoD8e/PRZ7hmZMaxy2/+e9U+/C9mNwm3ASB/Ni978//UlZdwvdGdT/4HNj0C
+        8x1K7//nN+vGbQAopMuBhuRMe/5/55G7YE0BDY/+u1U9ALPN8u7+5zRoxW0AKJqygf5NBPo3vO3x/znr
+        Lvx3rbj/36b4HtgAvYxb/1l1GnEbAIrjuJ6n/0NbHv33qXv436n8/n/rwnv/TbLvgA1QTyLCAMukbf9B
+        2Dhmw3+t4OX/FTzmggOO16TzP5tuE34XAC0hOWmTrAHdEooNAABnu83WrybVqwAAAABJRU5ErkJggg==
+</value>
+  </data>
+  <data name="pauseButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALCwAA
+        CwsBbQSEtwAAAMZJREFUOE9j/P//PwNFAGQAJZgizWDXU2I7VgN6N//937Xh1/+8qY8+gRSg89EtxHAB
+        SPPVh3/+64auAqr9z4DOJ2hA29pv/289/f1f1W8R2AB0PkEDGld8/n/54e//cm6zwAag8wkaULv4/f8T
+        13//F7ObBDYAnU/QgIp5r/7vvvDzP79ZN9gAdD5BA0pmP/+//uTP/5wGrWAD0PkEDSiY/vj/gj2f/7Pq
+        NIINQOcTNAAU/2y6TXAD0PkEDSA1ZVI/KZPqAgBmE8VVB/UQsAAAAABJRU5ErkJggg==
+</value>
+  </data>
+</root>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/Properties/AssemblyInfo.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/Properties/AssemblyInfo.cs	(revision 4115)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/Properties/AssemblyInfo.cs	(revision 4116)
@@ -1,17 +1,40 @@
-﻿using System.Reflection;
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Reflection;
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
-
+using HeuristicLab.PluginInfrastructure;
+using System.Security;
 // General Information about an assembly is controlled through the following 
 // set of attributes. Change these attribute values to modify the information
 // associated with an assembly.
-[assembly: AssemblyTitle("HeuristicLab.Hive.Experiment-3.3")]
+[assembly: AssemblyTitle("HeuristicLab.Hive.Experiment.Views")]
 [assembly: AssemblyDescription("")]
 [assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("FH OOE")]
-[assembly: AssemblyProduct("HeuristicLab.Hive.Experiment-3.3")]
-[assembly: AssemblyCopyright("Copyright © FH OOE 2010")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2008 HEAL")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]
+[assembly: AllowPartiallyTrustedCallers]
 
 // Setting ComVisible to false makes the types in this assembly not visible 
@@ -21,5 +44,5 @@
 
 // The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("b89cec07-9515-4898-8cbf-24fea34b2635")]
+[assembly: Guid("9721605F-C79D-434a-8E42-C0A384477D53")]
 
 // Version information for an assembly consists of the following four values:
@@ -30,7 +53,7 @@
 //      Revision
 //
-// You can specify all the values or you can default the Build and Revision Numbers 
+// You can specify all the values or you can default the Revision and Build Numbers 
 // by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: AssemblyVersion("3.3.0.4111")]
+[assembly: AssemblyFileVersion("3.3.0.4111")]
+[assembly: AssemblyBuildDate("2010/07/27 18:32:02")]
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/HeuristicLab.Hive.Experiment-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/HeuristicLab.Hive.Experiment-3.3.csproj	(revision 4116)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/HeuristicLab.Hive.Experiment-3.3.csproj	(revision 4116)
@@ -0,0 +1,132 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{A84C0A25-13D0-40A6-924F-53556D9691DC}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Hive.Experiment</RootNamespace>
+    <AssemblyName>HeuristicLab.Hive.Experiment-3.3</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkProfile>
+    </TargetFrameworkProfile>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup>
+    <StartupObject />
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <OutputPath>bin\Debug\</OutputPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <OutputPath>bin\Release\</OutputPath>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="HeuristicLab.Collections-3.3">
+      <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.Collections-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Common-3.3">
+      <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.Common-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Common.Resources-3.3">
+      <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.Common.Resources-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Core-3.3">
+      <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.Core-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Core.Views-3.3">
+      <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.Core.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Data-3.3">
+      <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.Data-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.DataAccess-3.3">
+      <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.DataAccess-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Optimization-3.3">
+      <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.Optimization-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Persistence-3.3">
+      <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.Persistence-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.PluginInfrastructure-3.3">
+      <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Tracing-3.3, Version=3.2.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.ServiceModel" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="HeuristicLabHiveExperimentPlugin.cs" />
+    <Compile Include="HiveExperiment.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+      <DependentUpon>Settings.settings</DependentUpon>
+    </Compile>
+    <Compile Include="ServiceLocator.cs" />
+    <Compile Include="Settings.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="app.config" />
+    <None Include="Properties\AssemblyInfo.frame" />
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Hive.Contracts\3.3\HeuristicLab.Hive.Contracts-3.3.csproj">
+      <Project>{134F93D7-E7C8-4ECD-9923-7F63259A60D8}</Project>
+      <Name>HeuristicLab.Hive.Contracts-3.3</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/HeuristicLab.Hive.Experiment-3.3.csproj.user
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/HeuristicLab.Hive.Experiment-3.3.csproj.user	(revision 4116)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/HeuristicLab.Hive.Experiment-3.3.csproj.user	(revision 4116)
@@ -0,0 +1,6 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ProjectView>ProjectFiles</ProjectView>
+  </PropertyGroup>
+</Project>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/HeuristicLabHiveExperimentPlugin.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/HeuristicLabHiveExperimentPlugin.cs	(revision 4116)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/HeuristicLabHiveExperimentPlugin.cs	(revision 4116)
@@ -0,0 +1,43 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Text;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Hive.Experiment {
+  /// <summary>
+  /// Plugin class for HeuristicLab.Hive.Engine plugin.
+  /// </summary>
+  [Plugin("HeuristicLab.Hive.Experiment", "3.3")]
+  [PluginFile("HeuristicLab.Hive.Experiment-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Common", "3.3")]
+  [PluginDependency("HeuristicLab.Core", "3.3")]
+  [PluginDependency("HeuristicLab.Core.Views", "3.3")]
+  [PluginDependency("HeuristicLab.Optimization", "3.3")]
+  [PluginDependency("HeuristicLab.Persistence", "3.3")]
+  [PluginDependency("HeuristicLab.Hive.Contracts", "3.3")]
+  [PluginDependency("HeuristicLab.Hive.JobBase", "3.3")]
+  public class HeuristicLabHiveExperimentPlugin : PluginBase {
+
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/HiveExperiment.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/HiveExperiment.cs	(revision 4116)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/HiveExperiment.cs	(revision 4116)
@@ -0,0 +1,313 @@
+﻿#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.Linq;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Optimization;
+using System.Drawing;
+using HeuristicLab.Collections;
+using System.Collections.Generic;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using System.IO;
+using HeuristicLab.Persistence.Default.Xml;
+using HeuristicLab.PluginInfrastructure;
+using System.Reflection;
+using HeuristicLab.Hive.Contracts.Interfaces;
+using HeuristicLab.Hive.Contracts;
+using System.Threading;
+using HeuristicLab.Tracing;
+
+namespace HeuristicLab.Hive.Experiment {
+  /// <summary>
+  /// An experiment which contains multiple batch runs of algorithms.
+  /// </summary>
+  [Item(itemName, itemDescription)]
+  [Creatable("Testing & Analysis")]
+  [StorableClass]
+  public class HiveExperiment : NamedItem, IExecutable {
+    private const string itemName = "Hive Experiment";
+    private const string itemDescription = "An experiment which contains multiple batch runs of algorithms which are executed in the Hive.";
+    private const int resultPollingIntervalMs = 10000;
+    private const int maxSnapshotRetries = 20;
+
+    private IDictionary<Guid, SerializedJob> jobs = null;
+    private object locker = new object();
+
+    private string serverUrl;
+    public string ServerUrl {
+      get { return serverUrl; }
+      set { serverUrl = value; OnServerUrlChanged(); }
+    }
+    public event EventHandler ServerUrlChanged;
+    protected virtual void OnServerUrlChanged() {
+      EventHandler handler = ServerUrlChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+
+    private string resourceIds;
+    public string ResourceIds {
+      get { return resourceIds; }
+      set { resourceIds = value; OnResourceIdsChanged(); }
+    }
+    public event EventHandler ResourceIdsChanged;
+    protected virtual void OnResourceIdsChanged() {
+      EventHandler handler = ResourceIdsChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+
+    public IEnumerable<string> ResourceGroups {
+      get {
+        if (!string.IsNullOrEmpty(resourceIds)) {
+          return resourceIds.Split(';');
+        } else {
+          return new List<string>();
+        }
+      }
+    }
+
+    private HeuristicLab.Optimization.Experiment experiment;
+    public HeuristicLab.Optimization.Experiment Experiment {
+      get { return experiment; }
+      set { experiment = value; OnExperimentChanged(); }
+    }
+    public event EventHandler ExperimentChanged;
+    protected virtual void OnExperimentChanged() {
+      EventHandler handler = ExperimentChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+
+    public HiveExperiment()
+      : base(itemName, itemDescription) {
+      this.ServerUrl = HeuristicLab.Hive.Experiment.Properties.Settings.Default.HiveServerUrl;
+      this.ResourceIds = HeuristicLab.Hive.Experiment.Properties.Settings.Default.ResourceIds;
+    }
+
+    #region IExecutable Members
+
+    public event EventHandler<EventArgs<Exception>> ExceptionOccurred;
+
+    public ExecutionState ExecutionState {
+      get { return Core.ExecutionState.Stopped; } // [chn] todo 
+    }
+
+    public event EventHandler ExecutionStateChanged;
+
+    public TimeSpan ExecutionTime {
+      get { return new TimeSpan(); } // [chn] todo 
+    }
+
+    public event EventHandler ExecutionTimeChanged;
+
+    public void Pause() {
+      throw new NotSupportedException();
+    }
+
+    public event EventHandler Paused;
+
+    public void Prepare() {
+
+    }
+
+    public event EventHandler Prepared;
+
+    public void Start() {
+      IExecutionEngineFacade executionEngineFacade = ServiceLocator.CreateExecutionEngineFacade(ServerUrl);
+
+      IList<SerializedJob> serializedJobs = new List<SerializedJob>();
+      foreach (IOptimizer optimizer in Experiment.Optimizers) {
+        serializedJobs.Add(CreateJob(optimizer));
+      }
+
+      jobs = new Dictionary<Guid, SerializedJob>();
+
+      IEnumerable<string> groups = ResourceGroups;
+      foreach (SerializedJob job in serializedJobs) {
+        ResponseObject<JobDto> response = executionEngineFacade.AddJobWithGroupStrings(job, groups);
+        
+        jobs.Add(response.Obj.Id, job);
+        StartResultPollingThread(response.Obj);
+      }
+    }
+
+    public event EventHandler Started;
+
+    public void Stop() {
+      // todo
+    }
+
+    public event EventHandler Stopped;
+    private bool abortRequested;
+
+    #endregion
+
+    private SerializedJob CreateJob(IOptimizer optimizer) {
+      // serialize optimizer
+      MemoryStream memStream = new MemoryStream();
+      XmlGenerator.Serialize(optimizer, memStream);
+
+      // find out which which plugins are needed for the given object
+      List<HivePluginInfoDto> pluginsNeeded = (
+        from p in GetDeclaringPlugins(optimizer.GetType())
+        select new HivePluginInfoDto() {
+          Name = p.Name,
+          Version = p.Version,
+          BuildDate = p.BuildDate,
+        }).ToList();
+
+      JobDto jobDto = new JobDto() {
+        CoresNeeded = 1, // [chn] how to determine real cores needed?
+        PluginsNeeded = pluginsNeeded,
+        State = State.Offline,
+        MemoryNeeded = 0,
+        UserId = Guid.Empty // [chn] set real userid here!
+      };
+
+      SerializedJob serializedJob = new SerializedJob() {
+        JobInfo = jobDto,
+        SerializedJobData = memStream.ToArray()
+      };
+      memStream.Dispose();
+
+      return serializedJob;
+    }
+
+    private void StartResultPollingThread(JobDto job) {
+      Thread t = new Thread(() => {
+        IExecutionEngineFacade executionEngineFacade = ServiceLocator.CreateExecutionEngineFacade(ServerUrl);
+        IOptimizer restoredObject = null;
+
+        do {
+          Thread.Sleep(resultPollingIntervalMs);
+          lock (locker) {
+            if (abortRequested) return;
+
+            ResponseObject<SerializedJob> response = executionEngineFacade.GetLastSerializedResult(job.Id, false, false);
+
+            // loop while 
+            // 1. the user doesn't request an abort 
+            // 2. there is a problem with server communication (success==false)
+            // 3. no result for the job is available yet (response.Obj==null)
+            // 4. the result that we get from the server is a snapshot and not the final result
+            if (response.Success && response.Obj != null && response.StatusMessage != ApplicationConstants.RESPONSE_JOB_RESULT_NOT_YET_HERE) {
+              
+              // [chn] todo: deserialization into interface is not possible! how to find out correct static type?
+              restoredObject = XmlParser.Deserialize<IOptimizer>(new MemoryStream(response.Obj.SerializedJobData));
+            }
+          }
+        } while (restoredObject == null || restoredObject.ExecutionState == Core.ExecutionState.Stopped);
+
+        // job retrieved... replace the existing optimizers with the finished one
+        // todo
+      });
+      
+      Logger.Debug("HiveEngine: Starting results-polling thread");
+      t.Start();
+    }
+
+    #region Required Plugin Search
+    /// <summary>
+    /// Returns a list of plugins in which the type itself and all members 
+    /// of the type are declared. Objectgraph is searched recursively.
+    /// </summary>
+    private IEnumerable<IPluginDescription> GetDeclaringPlugins(Type type) {
+      HashSet<Type> types = new HashSet<Type>();
+      FindTypes(type, types, "HeuristicLab.");
+      return GetDeclaringPlugins(types);
+    }
+
+    /// <summary>
+    /// Returns the plugins (including dependencies) in which the given types are declared
+    /// </summary>
+    private IEnumerable<IPluginDescription> GetDeclaringPlugins(IEnumerable<Type> types) {
+      HashSet<IPluginDescription> plugins = new HashSet<IPluginDescription>();
+      foreach (Type t in types) {
+        FindDeclaringPlugins(ApplicationManager.Manager.GetDeclaringPlugin(t), plugins);
+      }
+      return plugins;
+    }
+
+    /// <summary>
+    /// Finds the dependencies of the given plugin and adds it to the plugins hashset.
+    /// Also searches the dependencies recursively.
+    /// </summary>
+    private void FindDeclaringPlugins(IPluginDescription plugin, HashSet<IPluginDescription> plugins) {
+      if (!plugins.Contains(plugin)) {
+        plugins.Add(plugin);
+        foreach (IPluginDescription dependency in plugin.Dependencies) {
+          FindDeclaringPlugins(dependency, plugins);
+        }
+      }
+    }
+
+    /// <summary>
+    /// Recursively finds all types used in type which are in a namespace which starts with namespaceStart
+    /// Be aware that search is not performed on attributes
+    /// </summary>
+    /// <param name="type">the type to be searched</param>
+    /// <param name="types">found types will be stored there, needed in order to avoid duplicates</param>
+    /// <param name="namespaceStart">only types from namespaces which start with this will be searched and added</param>
+    private void FindTypes(Type type, HashSet<Type> types, string namespaceStart) {
+      if (!types.Contains(type) && type.Namespace.StartsWith(namespaceStart)) {
+        types.Add(type);
+
+        // constructors
+        foreach (ConstructorInfo info in type.GetConstructors()) {
+          foreach (ParameterInfo paramInfo in info.GetParameters()) {
+            FindTypes(paramInfo.ParameterType, types, namespaceStart);
+          }
+        }
+
+        // interfaces
+        foreach (Type t in type.GetInterfaces()) {
+          FindTypes(t, types, namespaceStart);
+        }
+
+        // events
+        foreach (EventInfo info in type.GetEvents()) {
+          FindTypes(info.EventHandlerType, types, namespaceStart);
+          FindTypes(info.DeclaringType, types, namespaceStart);
+        }
+
+        // properties
+        foreach (PropertyInfo info in type.GetProperties()) {
+          FindTypes(info.PropertyType, types, namespaceStart);
+        }
+
+        // fields
+        foreach (FieldInfo info in type.GetFields()) {
+          FindTypes(info.FieldType, types, namespaceStart);
+        }
+
+        // methods
+        foreach (MethodInfo info in type.GetMethods()) {
+          foreach (ParameterInfo paramInfo in info.GetParameters()) {
+            FindTypes(paramInfo.ParameterType, types, namespaceStart);
+          }
+          FindTypes(info.ReturnType, types, namespaceStart);
+        }
+      }
+    }
+    #endregion
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/Properties/AssemblyInfo.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/Properties/AssemblyInfo.cs	(revision 4115)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/Properties/AssemblyInfo.cs	(revision 4116)
@@ -1,17 +1,40 @@
-﻿using System.Reflection;
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Reflection;
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
-
+using HeuristicLab.PluginInfrastructure;
+using System.Security;
 // General Information about an assembly is controlled through the following 
 // set of attributes. Change these attribute values to modify the information
 // associated with an assembly.
-[assembly: AssemblyTitle("HeuristicLab.Hive.Experiment-3.3")]
-[assembly: AssemblyDescription("")]
+[assembly: AssemblyTitle("HeuristicLab.Hive.Experiment")]
+[assembly: AssemblyDescription("HeuristicLab experiment for distributed computation")]
 [assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("FH OOE")]
-[assembly: AssemblyProduct("HeuristicLab.Hive.Experiment-3.3")]
-[assembly: AssemblyCopyright("Copyright © FH OOE 2010")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2008 HEAL")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]
+[assembly: AllowPartiallyTrustedCallers]
 
 // Setting ComVisible to false makes the types in this assembly not visible 
@@ -21,5 +44,5 @@
 
 // The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("b89cec07-9515-4898-8cbf-24fea34b2635")]
+[assembly: Guid("9721605F-C79D-434a-8E42-C0A384477D53")]
 
 // Version information for an assembly consists of the following four values:
@@ -30,7 +53,7 @@
 //      Revision
 //
-// You can specify all the values or you can default the Build and Revision Numbers 
+// You can specify all the values or you can default the Revision and Build Numbers 
 // by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: AssemblyVersion("3.3.0.4111")]
+[assembly: AssemblyFileVersion("3.3.0.4111")]
+[assembly: AssemblyBuildDate("2010/07/27 18:31:34")]
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/Properties/Settings.Designer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/Properties/Settings.Designer.cs	(revision 4116)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/Properties/Settings.Designer.cs	(revision 4116)
@@ -0,0 +1,50 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.1
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HeuristicLab.Hive.Experiment.Properties {
+    
+    
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+        
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+        
+        public static Settings Default {
+            get {
+                return defaultInstance;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("net.tcp://10.42.1.153:9000/ExecutionEngine/ExecutionEngineFacade")]
+        public string HiveServerUrl {
+            get {
+                return ((string)(this["HiveServerUrl"]));
+            }
+            set {
+                this["HiveServerUrl"] = value;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("MyGroup")]
+        public string ResourceIds {
+            get {
+                return ((string)(this["ResourceIds"]));
+            }
+            set {
+                this["ResourceIds"] = value;
+            }
+        }
+    }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/Properties/Settings.settings
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/Properties/Settings.settings	(revision 4116)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/Properties/Settings.settings	(revision 4116)
@@ -0,0 +1,12 @@
+﻿<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="HeuristicLab.Hive.Experiment.Properties" GeneratedClassName="Settings">
+  <Profiles />
+  <Settings>
+    <Setting Name="HiveServerUrl" Type="System.String" Scope="User">
+      <Value Profile="(Default)">net.tcp://10.42.1.153:9000/ExecutionEngine/ExecutionEngineFacade</Value>
+    </Setting>
+    <Setting Name="ResourceIds" Type="System.String" Scope="User">
+      <Value Profile="(Default)">MyGroup</Value>
+    </Setting>
+  </Settings>
+</SettingsFile>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/ServiceLocator.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/ServiceLocator.cs	(revision 4116)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/ServiceLocator.cs	(revision 4116)
@@ -0,0 +1,41 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Text;
+
+using HeuristicLab.Hive.Contracts.Interfaces;
+using System.ServiceModel;
+using HeuristicLab.Hive.Contracts;
+
+namespace HeuristicLab.Hive.Experiment {
+  internal class ServiceLocator {
+    internal static IExecutionEngineFacade CreateExecutionEngineFacade(string url) {
+      ChannelFactory<IExecutionEngineFacade> factory =
+        new ChannelFactory<IExecutionEngineFacade>(
+          WcfSettings.GetStreamedBinding(),
+          new EndpointAddress(url));
+
+      return factory.CreateChannel();
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/Settings.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/Settings.cs	(revision 4116)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/Settings.cs	(revision 4116)
@@ -0,0 +1,28 @@
+﻿namespace HeuristicLab.Hive.Experiment.Properties {
+    
+    
+    // This class allows you to handle specific events on the settings class:
+    //  The SettingChanging event is raised before a setting's value is changed.
+    //  The PropertyChanged event is raised after a setting's value is changed.
+    //  The SettingsLoaded event is raised after the setting values are loaded.
+    //  The SettingsSaving event is raised before the setting values are saved.
+    internal sealed partial class Settings {
+        
+        public Settings() {
+            // // To add event handlers for saving and changing settings, uncomment the lines below:
+            //
+            // this.SettingChanging += this.SettingChangingEventHandler;
+            //
+            // this.SettingsSaving += this.SettingsSavingEventHandler;
+            //
+        }
+        
+        private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) {
+            // Add code to handle the SettingChangingEvent event here.
+        }
+        
+        private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) {
+            // Add code to handle the SettingsSaving event here.
+        }
+    }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/app.config
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/app.config	(revision 4116)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/app.config	(revision 4116)
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<configuration>
+  <configSections>
+    <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
+      <section name="HeuristicLab.Hive.Experiment.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
+    </sectionGroup>
+  </configSections>
+  <userSettings>
+    <HeuristicLab.Hive.Experiment.Properties.Settings>
+      <setting name="HiveServerUrl" serializeAs="String">
+        <value>net.tcp://10.42.1.153:9000/ExecutionEngine/ExecutionEngineFacade</value>
+      </setting>
+      <setting name="ResourceIds" serializeAs="String">
+        <value>MyGroup</value>
+      </setting>
+    </HeuristicLab.Hive.Experiment.Properties.Settings>
+  </userSettings>
+</configuration>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddJobForm.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddJobForm.cs	(revision 4115)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddJobForm.cs	(revision 4116)
@@ -110,5 +110,5 @@
         if (numJobs > 0) {
           for (int i = 0; i < numJobs; i++) {
-            JobDto job = new JobDto { State = State.offline, CoresNeeded = 1 };
+            JobDto job = new JobDto { State = State.Offline, CoresNeeded = 1 };
             
             // if project selected (0 -> none)
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HiveServerManagementConsole.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HiveServerManagementConsole.cs	(revision 4115)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HiveServerManagementConsole.cs	(revision 4116)
@@ -109,9 +109,9 @@
     void jdf_NewDataAvailable(object sender, EventArgs e) {
       JobDataFetcher fetcher = (JobDataFetcher) sender;
-      if (fetcher.PollStates.Contains(State.finished)) {
+      if (fetcher.PollStates.Contains(State.Finished)) {
         updateJobListView(fetcher, lv_finishedJobs, 0);
-      } else if(fetcher.PollStates.Contains(State.calculating)) {
+      } else if(fetcher.PollStates.Contains(State.Calculating)) {
         updateJobListView(fetcher, lv_calculatingJobs, 1);
-      } else if (fetcher.PollStates.Contains(State.offline)) {
+      } else if (fetcher.PollStates.Contains(State.Offline)) {
         updateJobListView(fetcher, lv_offlineJobs, 2);
       }
@@ -136,7 +136,7 @@
     private void Init() {
 
-      jdfFinished = new JobDataFetcher(new State[] {State.finished}, 50);
-      jdfCalculating = new JobDataFetcher(new State[] {State.calculating}, 50);
-      jdfOffline = new JobDataFetcher(new State[] {State.offline}, 50);
+      jdfFinished = new JobDataFetcher(new State[] {State.Finished}, 50);
+      jdfCalculating = new JobDataFetcher(new State[] {State.Calculating}, 50);
+      jdfOffline = new JobDataFetcher(new State[] {State.Offline}, 50);
 
       cmb_finishedJob_count.SelectedItem = "50";
@@ -348,6 +348,6 @@
           int percentageUsage = CapacityRam(((ClientDto)resource).NrOfCores, ((ClientDto)resource).NrOfFreeCores);
           int usage = 3;
-          if ((((ClientDto)resource).State != State.offline) &&
-            (((ClientDto)resource).State != State.nullState)) {
+          if ((((ClientDto)resource).State != State.Offline) &&
+            (((ClientDto)resource).State != State.NullState)) {
             if ((percentageUsage >= 0) && (percentageUsage <= 25)) {
               usage = 0;
@@ -419,9 +419,9 @@
       //lvSnapshots.Enabled = true;
 
-      if (job.State == State.offline) {
+      if (job.State == State.Offline) {
         pbJobControl.Image = ilLargeImgJob.Images[2];
-      } else if (job.State == State.calculating) {
+      } else if (job.State == State.Calculating) {
         pbJobControl.Image = ilLargeImgJob.Images[1];
-      } else if (job.State == State.finished) {
+      } else if (job.State == State.Finished) {
         pbJobControl.Image = ilLargeImgJob.Images[0];
       }
@@ -480,5 +480,5 @@
         lvJobDetails.Items.Add(lvi);
 
-        if (job.State == State.finished) {
+        if (job.State == State.Finished) {
           lvi = null;
             lvi = new ListViewItem();
@@ -500,5 +500,5 @@
         int percentageUsage = CapacityRam(currentClient.NrOfCores, currentClient.NrOfFreeCores);
         int usage = 3;
-        if ((currentClient.State != State.offline) && (currentClient.State != State.nullState)) {
+        if ((currentClient.State != State.Offline) && (currentClient.State != State.NullState)) {
           if ((percentageUsage >= 0) && (percentageUsage <= 25)) {
             usage = 0;
@@ -630,5 +630,5 @@
         JobDto selectedJob = (JobDto)jlv.SelectedItems[0].Tag;
 
-        if (selectedJob != null && selectedJob.State == State.calculating) {
+        if (selectedJob != null && selectedJob.State == State.Calculating) {
           jlv.ContextMenuStrip.Items.Add(offlineItemAbortJob);
           jlv.ContextMenuStrip.Items.Add(menuItemGetSnapshot);
@@ -806,5 +806,5 @@
               change = true;
             }
-            if (job.State != State.offline) {
+            if (job.State != State.Offline) {
               if ((!IsEqual(job.Client, jobold.Client)) || (job.State != jobold.State)
                    || (job.Percentage != jobold.Percentage)) {
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/JobListView.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/JobListView.cs	(revision 4115)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/JobListView.cs	(revision 4116)
@@ -40,5 +40,5 @@
       JobDataFetcher datafetcher = (JobDataFetcher) sender;
       this.BeginUpdate();
-      if (datafetcher.PollStates.Contains(State.finished)) {
+      if (datafetcher.PollStates.Contains(State.Finished)) {
         this.Items.Clear();
         ListViewItem lviDummy = new ListViewItem("blahr", 0);
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/ClientCommunicator.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/ClientCommunicator.cs	(revision 4115)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/ClientCommunicator.cs	(revision 4116)
@@ -82,5 +82,5 @@
 
         foreach (ClientDto client in allClients) {
-          if (client.State != State.offline && client.State != State.nullState) {
+          if (client.State != State.Offline && client.State != State.NullState) {
             heartbeatLock.EnterUpgradeableReadLock();
 
@@ -88,5 +88,5 @@
               Logger.Info("Client " + client.Id +
                               " wasn't offline but hasn't sent heartbeats - setting offline");
-              client.State = State.offline;
+              client.State = State.Offline;
               DaoLocator.ClientDao.Update(client);
               Logger.Info("Client " + client.Id +
@@ -113,5 +113,5 @@
                 Logger.Debug("setting client offline");
                 // client must be set offline
-                client.State = State.offline;
+                client.State = State.Offline;
 
                 //clientAdapter.Update(client);
@@ -146,5 +146,5 @@
 
     private void CheckForPendingJobs() {
-      IList<JobDto> pendingJobsInDB = new List<JobDto>(DaoLocator.JobDao.GetJobsByState(State.pending));
+      IList<JobDto> pendingJobsInDB = new List<JobDto>(DaoLocator.JobDao.GetJobsByState(State.Pending));
 
       foreach (JobDto currJob in pendingJobsInDB) {
@@ -152,5 +152,5 @@
           if (pendingJobs.ContainsKey(currJob.Id)) {
             if (pendingJobs[currJob.Id] <= 0) {
-              currJob.State = State.offline;
+              currJob.State = State.Offline;
               DaoLocator.JobDao.Update(currJob);
             } else {
@@ -185,5 +185,5 @@
       //Really set offline? 
       //Reconnect issues with the currently calculating jobs
-      clientInfo.State = State.idle;
+      clientInfo.State = State.Idle;
       clientInfo.CalendarSyncStatus = dbClient != null ? dbClient.CalendarSyncStatus : CalendarState.NotAllowedToFetch;
 
@@ -258,5 +258,5 @@
       Logger.Debug("END Finished Client Fetching");
       // check if the client is logged in
-      if (client.State == State.offline || client.State == State.nullState) {
+      if (client.State == State.Offline || client.State == State.NullState) {
         response.Success = false;
         response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_USER_NOT_LOGGED_IN;
@@ -341,16 +341,16 @@
             response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_JOB_IS_NOT_BEEING_CALCULATED;
             Logger.Error("There is no job calculated by this user " + hbData.ClientId + " Job: " + curJob);
-          } else if (curJob.State == State.abort) {
+          } else if (curJob.State == State.Abort) {
             // a request to abort the job has been set
             response.ActionRequest.Add(new MessageContainer(MessageContainer.MessageType.AbortJob, curJob.Id));
-            curJob.State = State.finished;
+            curJob.State = State.Finished;
           } else {
             // save job progress
             curJob.Percentage = jobProgress.Value;
 
-            if (curJob.State == State.requestSnapshot) {
+            if (curJob.State == State.RequestSnapshot) {
               // a request for a snapshot has been set
               response.ActionRequest.Add(new MessageContainer(MessageContainer.MessageType.RequestSnapshot, curJob.Id));
-              curJob.State = State.requestSnapshotSent;
+              curJob.State = State.RequestSnapshotSent;
             }
           }
@@ -376,5 +376,5 @@
                 Logger.Error("Job TTL reached Zero, Job gets removed: " + currJob + " and set back to offline. User that sucks: " + currJob.Client);
 
-                currJob.State = State.offline;
+                currJob.State = State.Offline;
                 DaoLocator.JobDao.Update(currJob);
 
@@ -385,5 +385,5 @@
             } else {
               Logger.Error("Job ID wasn't with the heartbeats:  " + currJob);
-              currJob.State = State.offline;
+              currJob.State = State.Offline;
               DaoLocator.JobDao.Update(currJob);
             }
@@ -516,5 +516,5 @@
         return response;
       }
-      if (job.JobInfo.State == State.abort) {
+      if (job.JobInfo.State == State.Abort) {
         response.Success = false;
         response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_JOB_WAS_ABORTED;
@@ -545,5 +545,5 @@
         return response;
       }
-      if (job.JobInfo.State == State.finished) {
+      if (job.JobInfo.State == State.Finished) {
         response.Success = true;
         response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_JOBRESULT_RECEIVED;
@@ -556,9 +556,9 @@
       }
       //Todo: RequestsnapshotSent => calculating?
-      if (job.JobInfo.State == State.requestSnapshotSent) {
-        job.JobInfo.State = State.calculating;
-      }
-      if (job.JobInfo.State != State.calculating &&
-        job.JobInfo.State != State.pending) {
+      if (job.JobInfo.State == State.RequestSnapshotSent) {
+        job.JobInfo.State = State.Calculating;
+      }
+      if (job.JobInfo.State != State.Calculating &&
+        job.JobInfo.State != State.Pending) {
         response.Success = false;
         response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_WRONG_JOB_STATE;
@@ -573,5 +573,5 @@
 
       if (finished) {
-        job.JobInfo.State = State.finished;
+        job.JobInfo.State = State.Finished;
         job.JobInfo.DateFinished = DateTime.Now;
       }
@@ -637,14 +637,14 @@
         return response;
       }
-      if (client.State == State.calculating) {
+      if (client.State == State.Calculating) {
         // check wich job the client was calculating and reset it
         IEnumerable<JobDto> jobsOfClient = DaoLocator.JobDao.FindActiveJobsOfClient(client);
         foreach (JobDto job in jobsOfClient) {
-          if (job.State != State.finished)
+          if (job.State != State.Finished)
             DaoLocator.JobDao.SetJobOffline(job);
         }
       }
 
-      client.State = State.offline;
+      client.State = State.Offline;
       DaoLocator.ClientDao.Update(client);
 
@@ -670,5 +670,5 @@
         return response;
       }
-      if (job.State == State.finished) {
+      if (job.State == State.Finished) {
         response.Success = true;
         response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_JOB_ALLREADY_FINISHED;
@@ -676,5 +676,5 @@
         return response;
       }
-      job.State = State.pending;
+      job.State = State.Pending;
       lock (pendingJobs) {
         pendingJobs.Add(job.Id, PENDING_TIMEOUT);
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/DbTestApp.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/DbTestApp.cs	(revision 4115)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/DbTestApp.cs	(revision 4116)
@@ -123,5 +123,5 @@
       c1.NrOfFreeCores = 2;
       c1.CpuSpeedPerCore = 2500;
-      c1.State = State.idle;
+      c1.State = State.Idle;
       c1 = clientDao.Insert(c1);
 
@@ -137,5 +137,5 @@
       c2.NrOfFreeCores = 1;
       c2.CpuSpeedPerCore = 4000;
-      c2.State = State.idle;
+      c2.State = State.Idle;
       c2 = clientDao.Insert(c2);
 
@@ -159,5 +159,5 @@
         Percentage = 0,
         Priority = 1,
-        State = State.offline
+        State = State.Offline
       };
 
@@ -204,5 +204,5 @@
         client.NrOfFreeCores = 2;
         client.CpuSpeedPerCore = 2500;
-        client.State = State.idle;
+        client.State = State.Idle;
         client = clientDao.Insert(client);
         cgd.AddRessourceToClientGroup(client.Id, mg.Id);
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/DefaultScheduler.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/DefaultScheduler.cs	(revision 4115)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/DefaultScheduler.cs	(revision 4116)
@@ -26,5 +26,5 @@
     public bool ExistsJobForClient(HeuristicLab.Hive.Contracts.BusinessObjects.HeartBeatData hbData) {
       List<JobDto> allOfflineJobsForClient =
-        new List<JobDto>(DaoLocator.JobDao.FindFittingJobsForClient(State.offline, hbData.FreeCores, hbData.FreeMemory,
+        new List<JobDto>(DaoLocator.JobDao.FindFittingJobsForClient(State.Offline, hbData.FreeCores, hbData.FreeMemory,
                                                                     hbData.ClientId));
       return (allOfflineJobsForClient != null && allOfflineJobsForClient.Count > 0);
@@ -38,11 +38,11 @@
         ClientDto client = DaoLocator.ClientDao.FindById(clientId);
         LinkedList<JobDto> allOfflineJobsForClient =
-          new LinkedList<JobDto>(DaoLocator.JobDao.FindFittingJobsForClient(State.offline, client.NrOfFreeCores,
+          new LinkedList<JobDto>(DaoLocator.JobDao.FindFittingJobsForClient(State.Offline, client.NrOfFreeCores,
                                                                             client.FreeMemory, client.Id));        
         if (allOfflineJobsForClient != null && allOfflineJobsForClient.Count > 0) {
           jobToCalculate = allOfflineJobsForClient.First.Value;
-          jobToCalculate.State = State.calculating;
+          jobToCalculate.State = State.Calculating;
           jobToCalculate.Client = client;
-          jobToCalculate.Client.State = State.calculating;
+          jobToCalculate.Client.State = State.Calculating;
           jobToCalculate.DateCalculated = DateTime.Now;
           DaoLocator.JobDao.AssignClientToJob(client.Id, jobToCalculate.Id);
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/JobManager.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/JobManager.cs	(revision 4115)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/JobManager.cs	(revision 4116)
@@ -66,5 +66,5 @@
         List<JobDto> allJobs = new List<JobDto>(DaoLocator.JobDao.FindAll());
         foreach (JobDto curJob in allJobs) {
-          if (curJob.State != State.calculating && curJob.State != State.finished) {
+          if (curJob.State != State.Calculating && curJob.State != State.Finished) {
             DaoLocator.JobDao.SetJobOffline(curJob);
           }
@@ -170,5 +170,5 @@
 
       if (job != null && job.JobInfo != null) {
-        if (job.JobInfo.State != State.offline) {
+        if (job.JobInfo.State != State.Offline) {
           response.Success = false;
           response.StatusMessage = ApplicationConstants.RESPONSE_JOB_JOBSTATE_MUST_BE_OFFLINE;
@@ -242,5 +242,5 @@
 
       //if it's a snapshot but the result hasn't reached the server yet...
-      if (snapshot && (job.State == State.requestSnapshot || job.State == State.requestSnapshotSent)) {
+      if (snapshot && (job.State == State.RequestSnapshot || job.State == State.RequestSnapshotSent)) {
         response.Success = true;
         response.StatusMessage = ApplicationConstants.RESPONSE_JOB_RESULT_NOT_YET_HERE;
@@ -250,5 +250,5 @@
 
       //if it's NOT a snapshot, NEITHER request NOR is it finished
-      if (!requested && !snapshot && job.State != State.finished) {
+      if (!requested && !snapshot && job.State != State.Finished) {
         response.Success = true;
         response.StatusMessage = ApplicationConstants.RESPONSE_JOB_RESULT_NOT_YET_HERE;
@@ -273,10 +273,10 @@
 
       JobDto job = DaoLocator.JobDao.FindById(jobId);
-      if (job.State == State.requestSnapshot || job.State == State.requestSnapshotSent) {
+      if (job.State == State.RequestSnapshot || job.State == State.RequestSnapshotSent) {
         response.Success = true;
         response.StatusMessage = ApplicationConstants.RESPONSE_JOB_REQUEST_ALLREADY_SET;
         return response;
       }
-      if (job.State != State.calculating) {
+      if (job.State != State.Calculating) {
         response.Success = false;
         response.StatusMessage = ApplicationConstants.RESPONSE_JOB_IS_NOT_BEEING_CALCULATED;
@@ -284,5 +284,5 @@
       }
       // job is in correct state
-      job.State = State.requestSnapshot;
+      job.State = State.RequestSnapshot;
       DaoLocator.JobDao.Update(job);
 
@@ -302,10 +302,10 @@
         return response; // no commit needed
       }
-      if (job.State == State.abort) {
+      if (job.State == State.Abort) {
         response.Success = true;
         response.StatusMessage = ApplicationConstants.RESPONSE_JOB_ABORT_REQUEST_ALLREADY_SET;
         return response; // no commit needed
       }
-      if (job.State != State.calculating && job.State != State.requestSnapshot && job.State != State.requestSnapshotSent) {
+      if (job.State != State.Calculating && job.State != State.RequestSnapshot && job.State != State.RequestSnapshotSent) {
         response.Success = false;
         response.StatusMessage = ApplicationConstants.RESPONSE_JOB_IS_NOT_BEEING_CALCULATED;
@@ -313,5 +313,5 @@
       }
       // job is in correct state
-      job.State = State.abort;
+      job.State = State.Abort;
       DaoLocator.JobDao.Update(job);
 
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/Properties/AssemblyInfo.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/Properties/AssemblyInfo.cs	(revision 4115)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/Properties/AssemblyInfo.cs	(revision 4116)
@@ -55,5 +55,5 @@
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("3.3.0.4107")]
-[assembly: AssemblyFileVersion("3.3.0.4107")]
-[assembly: AssemblyBuildDate("2010/07/27 14:15:12")]
+[assembly: AssemblyVersion("3.3.0.4111")]
+[assembly: AssemblyFileVersion("3.3.0.4111")]
+[assembly: AssemblyBuildDate("2010/07/27 18:31:46")]
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/ClientDao.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/ClientDao.cs	(revision 4115)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/ClientDao.cs	(revision 4116)
@@ -101,5 +101,5 @@
       target.NrOfCores = source.NumberOfCores ?? 0;
       target.NrOfFreeCores = source.NumberOfFreeCores ?? 0;
-      target.State = (State) Enum.Parse(typeof (State), source.Status);
+      target.State = (State) Enum.Parse(typeof (State), source.Status, true);
       return target;
     } 
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/JobDao.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/JobDao.cs	(revision 4115)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/JobDao.cs	(revision 4116)
@@ -28,10 +28,10 @@
 
       IQueryable<JobDto> query = null;
-      if (jobState == State.finished) {
+      if (jobState == State.Finished) {
          query = from job in Context.Jobs
                  where job.JobState == Enum.GetName(typeof (State), jobState)
                  orderby job.DateFinished
                  select EntityToDto(job, null);
-      } else if (jobState == State.calculating || jobState == State.requestSnapshot || jobState == State.requestSnapshotSent) {
+      } else if (jobState == State.Calculating || jobState == State.RequestSnapshot || jobState == State.RequestSnapshotSent) {
         query = from job in Context.Jobs
                     where job.JobState == Enum.GetName(typeof(State), jobState)
@@ -97,8 +97,8 @@
     public IEnumerable<JobDto> FindActiveJobsOfClient(ClientDto client) {
       return (from j in Context.Jobs
-              where (j.JobState == Enum.GetName(typeof (State), State.calculating) ||
-                     j.JobState == Enum.GetName(typeof (State), State.abort) ||
-                     j.JobState == Enum.GetName(typeof (State), State.requestSnapshot) ||
-                     j.JobState == Enum.GetName(typeof (State), State.requestSnapshotSent)) &&
+              where (j.JobState == Enum.GetName(typeof (State), State.Calculating) ||
+                     j.JobState == Enum.GetName(typeof (State), State.Abort) ||
+                     j.JobState == Enum.GetName(typeof (State), State.RequestSnapshot) ||
+                     j.JobState == Enum.GetName(typeof (State), State.RequestSnapshotSent)) &&
                     (j.ResourceId.Equals(client.Id))
               select EntityToDto(j, null)).ToList();
@@ -112,5 +112,5 @@
       
       var q = (from ar in Context.AssignedResources               
-               where ar.Job.JobState == Enum.GetName(typeof (State), State.offline) &&
+               where ar.Job.JobState == Enum.GetName(typeof (State), State.Offline) &&
                      ar.Job.CoresNeeded <= freeCores &&
                      ar.Job.MemoryNeeded <= freeMemory &&
@@ -139,5 +139,5 @@
       Job j = Context.Jobs.SingleOrDefault(jq => jq.JobId.Equals(job.Id));
       j.Client = null;
-      j.JobState = Enum.GetName(typeof(State), State.offline); 
+      j.JobState = Enum.GetName(typeof(State), State.Offline); 
       CommitChanges();
     }
@@ -199,5 +199,5 @@
       
       target.Priority = source.Priority;
-      target.State = (State) Enum.Parse(typeof (State), source.JobState);
+      target.State = (State) Enum.Parse(typeof (State), source.JobState, true);
       return target;
     }
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive/3.3/MergeConfigs.cmd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive/3.3/MergeConfigs.cmd	(revision 4115)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive/3.3/MergeConfigs.cmd	(revision 4116)
@@ -1,4 +1,5 @@
 ConfigMerger "%SolutionDir%HeuristicLab.Hive.Server\3.3\app.config" "HeuristicLab.Hive-3.3.dll.config"
 ConfigMerger "%SolutionDir%HeuristicLab.Hive.Client.Core\3.3\app.config" "HeuristicLab.Hive-3.3.dll.config"
+ConfigMerger "%SolutionDir%HeuristicLab.Hive.Experiment\3.3\app.config" "HeuristicLab.Hive-3.3.dll.config"
 
 ConfigMerger "HeuristicLab.Hive-3.3.dll.config" "HeuristicLab 3.3.exe.config"
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive/3.3/Properties/AssemblyInfo.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive/3.3/Properties/AssemblyInfo.cs	(revision 4115)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive/3.3/Properties/AssemblyInfo.cs	(revision 4116)
@@ -51,4 +51,4 @@
 //      Revision
 //
-[assembly: AssemblyVersion("3.3.0.4107")]
-[assembly: AssemblyFileVersion("3.3.0.4107")]
+[assembly: AssemblyVersion("3.3.0.4111")]
+[assembly: AssemblyFileVersion("3.3.0.4111")]
