Index: /trunk/sources/HeuristicLab.Hive.Client.Console/HeuristicLab.Hive.Client.Console.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Client.Console/HeuristicLab.Hive.Client.Console.csproj	(revision 717)
+++ /trunk/sources/HeuristicLab.Hive.Client.Console/HeuristicLab.Hive.Client.Console.csproj	(revision 717)
@@ -0,0 +1,108 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{8B14A35E-DBDF-43EB-B019-23E9FBC5A35E}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Hive.Client.Console</RootNamespace>
+    <AssemblyName>HeuristicLab.Hive.Client.Console-3.2</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+    <StartupObject>
+    </StartupObject>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Deployment" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="HiveClientConsole.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="HiveClientConsole.designer.cs">
+      <DependentUpon>HiveClientConsole.cs</DependentUpon>
+    </Compile>
+    <Compile Include="HiveClientConsolePlugin.cs" />
+    <Compile Include="HiveClientConsoleApplication.cs" />
+    <Compile Include="IPAdressTextBox.cs">
+      <SubType>Component</SubType>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <EmbeddedResource Include="HiveClientConsole.resx">
+      <DependentUpon>HiveClientConsole.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PreBuildEvent>cmd /c ""$(SolutionDir)PreBuildEvent.cmd" "$(ProjectDir).""</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: /trunk/sources/HeuristicLab.Hive.Client.Console/HiveClientConsole.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Client.Console/HiveClientConsole.Designer.cs	(revision 717)
+++ /trunk/sources/HeuristicLab.Hive.Client.Console/HiveClientConsole.Designer.cs	(revision 717)
@@ -0,0 +1,278 @@
+﻿#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
+
+namespace HeuristicLab.Hive.Client.Console {
+  partial class HiveClientConsole {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Windows Form Designer generated code
+
+    /// <summary>
+    /// Required method for Designer support - do not modify
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.msClientConsole = new System.Windows.Forms.MenuStrip();
+      this.tsmiConsole = new System.Windows.Forms.ToolStripMenuItem();
+      this.tsmiExit = new System.Windows.Forms.ToolStripMenuItem();
+      this.tcClientConsole = new System.Windows.Forms.TabControl();
+      this.tpConnection = new System.Windows.Forms.TabPage();
+      this.btnDisconnect = new System.Windows.Forms.Button();
+      this.btnConnect = new System.Windows.Forms.Button();
+      this.gbUser = new System.Windows.Forms.GroupBox();
+      this.tbUuid = new System.Windows.Forms.TextBox();
+      this.lblUuid = new System.Windows.Forms.Label();
+      this.rtbInfoClient = new System.Windows.Forms.RichTextBox();
+      this.gbManager = new System.Windows.Forms.GroupBox();
+      this.lblPort = new System.Windows.Forms.Label();
+      this.lblIp = new System.Windows.Forms.Label();
+      this.tbPort = new System.Windows.Forms.TextBox();
+      this.tbIp = new IPAddressTextBox();
+      this.tabPage2 = new System.Windows.Forms.TabPage();
+      this.msClientConsole.SuspendLayout();
+      this.tcClientConsole.SuspendLayout();
+      this.tpConnection.SuspendLayout();
+      this.gbUser.SuspendLayout();
+      this.gbManager.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // msClientConsole
+      // 
+      this.msClientConsole.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.tsmiConsole});
+      this.msClientConsole.Location = new System.Drawing.Point(0, 0);
+      this.msClientConsole.Name = "msClientConsole";
+      this.msClientConsole.Size = new System.Drawing.Size(434, 24);
+      this.msClientConsole.TabIndex = 0;
+      this.msClientConsole.Text = "menuStrip1";
+      // 
+      // tsmiConsole
+      // 
+      this.tsmiConsole.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.tsmiExit});
+      this.tsmiConsole.Name = "tsmiConsole";
+      this.tsmiConsole.Size = new System.Drawing.Size(82, 20);
+      this.tsmiConsole.Text = "Clientconsole";
+      // 
+      // tsmiExit
+      // 
+      this.tsmiExit.Name = "tsmiExit";
+      this.tsmiExit.Size = new System.Drawing.Size(103, 22);
+      this.tsmiExit.Text = "Exit";
+      this.tsmiExit.Click += new System.EventHandler(this.tsmiExit_Click);
+      // 
+      // tcClientConsole
+      // 
+      this.tcClientConsole.Controls.Add(this.tpConnection);
+      this.tcClientConsole.Controls.Add(this.tabPage2);
+      this.tcClientConsole.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.tcClientConsole.Location = new System.Drawing.Point(0, 24);
+      this.tcClientConsole.Name = "tcClientConsole";
+      this.tcClientConsole.SelectedIndex = 0;
+      this.tcClientConsole.Size = new System.Drawing.Size(434, 481);
+      this.tcClientConsole.TabIndex = 1;
+      // 
+      // tpConnection
+      // 
+      this.tpConnection.Controls.Add(this.btnDisconnect);
+      this.tpConnection.Controls.Add(this.btnConnect);
+      this.tpConnection.Controls.Add(this.gbUser);
+      this.tpConnection.Controls.Add(this.rtbInfoClient);
+      this.tpConnection.Controls.Add(this.gbManager);
+      this.tpConnection.Location = new System.Drawing.Point(4, 22);
+      this.tpConnection.Name = "tpConnection";
+      this.tpConnection.Padding = new System.Windows.Forms.Padding(3);
+      this.tpConnection.RightToLeft = System.Windows.Forms.RightToLeft.No;
+      this.tpConnection.Size = new System.Drawing.Size(426, 455);
+      this.tpConnection.TabIndex = 0;
+      this.tpConnection.Text = "Connection";
+      this.tpConnection.UseVisualStyleBackColor = true;
+      // 
+      // btnDisconnect
+      // 
+      this.btnDisconnect.Enabled = false;
+      this.btnDisconnect.Location = new System.Drawing.Point(213, 182);
+      this.btnDisconnect.Name = "btnDisconnect";
+      this.btnDisconnect.Size = new System.Drawing.Size(134, 23);
+      this.btnDisconnect.TabIndex = 4;
+      this.btnDisconnect.Text = "Disconnect";
+      this.btnDisconnect.UseVisualStyleBackColor = true;
+      this.btnDisconnect.Click += new System.EventHandler(this.btnDisconnect_Click);
+      // 
+      // btnConnect
+      // 
+      this.btnConnect.Location = new System.Drawing.Point(66, 182);
+      this.btnConnect.Name = "btnConnect";
+      this.btnConnect.Size = new System.Drawing.Size(131, 23);
+      this.btnConnect.TabIndex = 3;
+      this.btnConnect.Text = "Connect";
+      this.btnConnect.UseVisualStyleBackColor = true;
+      this.btnConnect.Click += new System.EventHandler(this.btnConnect_Click);
+      // 
+      // gbUser
+      // 
+      this.gbUser.Controls.Add(this.tbUuid);
+      this.gbUser.Controls.Add(this.lblUuid);
+      this.gbUser.Location = new System.Drawing.Point(67, 117);
+      this.gbUser.Name = "gbUser";
+      this.gbUser.Size = new System.Drawing.Size(281, 51);
+      this.gbUser.TabIndex = 2;
+      this.gbUser.TabStop = false;
+      this.gbUser.Text = "User";
+      // 
+      // tbUuid
+      // 
+      this.tbUuid.Location = new System.Drawing.Point(56, 22);
+      this.tbUuid.Name = "tbUuid";
+      this.tbUuid.Size = new System.Drawing.Size(209, 20);
+      this.tbUuid.TabIndex = 2;
+      // 
+      // lblUuid
+      // 
+      this.lblUuid.AutoSize = true;
+      this.lblUuid.Location = new System.Drawing.Point(15, 25);
+      this.lblUuid.Name = "lblUuid";
+      this.lblUuid.Size = new System.Drawing.Size(34, 13);
+      this.lblUuid.TabIndex = 0;
+      this.lblUuid.Text = "UUID";
+      // 
+      // rtbInfoClient
+      // 
+      this.rtbInfoClient.Location = new System.Drawing.Point(18, 218);
+      this.rtbInfoClient.Name = "rtbInfoClient";
+      this.rtbInfoClient.Size = new System.Drawing.Size(387, 229);
+      this.rtbInfoClient.TabIndex = 1;
+      this.rtbInfoClient.Text = "";
+      // 
+      // gbManager
+      // 
+      this.gbManager.Controls.Add(this.lblPort);
+      this.gbManager.Controls.Add(this.lblIp);
+      this.gbManager.Controls.Add(this.tbPort);
+      this.gbManager.Controls.Add(this.tbIp);
+      this.gbManager.Location = new System.Drawing.Point(66, 19);
+      this.gbManager.Name = "gbManager";
+      this.gbManager.Size = new System.Drawing.Size(283, 82);
+      this.gbManager.TabIndex = 0;
+      this.gbManager.TabStop = false;
+      this.gbManager.Text = "Manager";
+      // 
+      // lblPort
+      // 
+      this.lblPort.AutoSize = true;
+      this.lblPort.Location = new System.Drawing.Point(16, 54);
+      this.lblPort.Name = "lblPort";
+      this.lblPort.Size = new System.Drawing.Size(26, 13);
+      this.lblPort.TabIndex = 3;
+      this.lblPort.Text = "Port";
+      // 
+      // lblIp
+      // 
+      this.lblIp.AutoSize = true;
+      this.lblIp.Location = new System.Drawing.Point(16, 26);
+      this.lblIp.Name = "lblIp";
+      this.lblIp.Size = new System.Drawing.Size(17, 13);
+      this.lblIp.TabIndex = 2;
+      this.lblIp.Text = "IP";
+      // 
+      // tbPort
+      // 
+      this.tbPort.Location = new System.Drawing.Point(57, 47);
+      this.tbPort.Name = "tbPort";
+      this.tbPort.Size = new System.Drawing.Size(209, 20);
+      this.tbPort.TabIndex = 1;
+      // 
+      // tbIp
+      // 
+      this.tbIp.Location = new System.Drawing.Point(57, 19);
+      this.tbIp.Name = "tbIp";
+      this.tbIp.Size = new System.Drawing.Size(211, 20);
+      this.tbIp.TabIndex = 0;
+      // 
+      // tabPage2
+      // 
+      this.tabPage2.Location = new System.Drawing.Point(4, 22);
+      this.tabPage2.Name = "tabPage2";
+      this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
+      this.tabPage2.Size = new System.Drawing.Size(426, 455);
+      this.tabPage2.TabIndex = 1;
+      this.tabPage2.Text = "tabPage2";
+      this.tabPage2.UseVisualStyleBackColor = true;
+      // 
+      // HiveClientConsole
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.ClientSize = new System.Drawing.Size(434, 505);
+      this.Controls.Add(this.tcClientConsole);
+      this.Controls.Add(this.msClientConsole);
+      this.MainMenuStrip = this.msClientConsole;
+      this.Name = "HiveClientConsole";
+      this.Text = "Client Console";
+      this.msClientConsole.ResumeLayout(false);
+      this.msClientConsole.PerformLayout();
+      this.tcClientConsole.ResumeLayout(false);
+      this.tpConnection.ResumeLayout(false);
+      this.gbUser.ResumeLayout(false);
+      this.gbUser.PerformLayout();
+      this.gbManager.ResumeLayout(false);
+      this.gbManager.PerformLayout();
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.MenuStrip msClientConsole;
+    private System.Windows.Forms.ToolStripMenuItem tsmiConsole;
+    private System.Windows.Forms.TabControl tcClientConsole;
+    private System.Windows.Forms.TabPage tpConnection;
+    private System.Windows.Forms.TabPage tabPage2;
+    private System.Windows.Forms.RichTextBox rtbInfoClient;
+    private System.Windows.Forms.GroupBox gbManager;
+    private System.Windows.Forms.TextBox tbPort;
+    private IPAddressTextBox tbIp;
+    private System.Windows.Forms.Label lblIp;
+    private System.Windows.Forms.GroupBox gbUser;
+    private System.Windows.Forms.Label lblUuid;
+    private System.Windows.Forms.Label lblPort;
+    private System.Windows.Forms.Button btnDisconnect;
+    private System.Windows.Forms.Button btnConnect;
+    private System.Windows.Forms.TextBox tbUuid;
+    private System.Windows.Forms.ToolStripMenuItem tsmiExit;
+  }
+}
+
Index: /trunk/sources/HeuristicLab.Hive.Client.Console/HiveClientConsole.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Client.Console/HiveClientConsole.cs	(revision 717)
+++ /trunk/sources/HeuristicLab.Hive.Client.Console/HiveClientConsole.cs	(revision 717)
@@ -0,0 +1,58 @@
+﻿#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.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace HeuristicLab.Hive.Client.Console {
+  public partial class HiveClientConsole : Form {
+    public HiveClientConsole() {
+      InitializeComponent();
+    }
+
+    private void tsmiExit_Click(object sender, EventArgs e) {
+      this.Close();
+    }
+
+    private void btnConnect_Click(object sender, EventArgs e) {
+      btnConnect.Enabled = false;
+      btnDisconnect.Enabled = true;
+      tbIp.Enabled = false;
+      tbPort.Enabled = false;
+      tbUuid.Enabled = false;
+      rtbInfoClient.Text += tbIp.Text;
+    }
+
+    private void btnDisconnect_Click(object sender, EventArgs e) {
+      btnDisconnect.Enabled = false;
+      btnConnect.Enabled = true;
+      tbIp.Enabled = true;
+      tbPort.Enabled = true;
+      tbUuid.Enabled = true;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Hive.Client.Console/HiveClientConsole.resx
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Client.Console/HiveClientConsole.resx	(revision 717)
+++ /trunk/sources/HeuristicLab.Hive.Client.Console/HiveClientConsole.resx	(revision 717)
@@ -0,0 +1,123 @@
+<?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="msClientConsole.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+</root>
Index: /trunk/sources/HeuristicLab.Hive.Client.Console/HiveClientConsoleApplication.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Client.Console/HiveClientConsoleApplication.cs	(revision 717)
+++ /trunk/sources/HeuristicLab.Hive.Client.Console/HiveClientConsoleApplication.cs	(revision 717)
@@ -0,0 +1,36 @@
+﻿#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.Windows.Forms;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Hive.Client.Console {
+  [ClassInfo(Name = "Hive Client Console", Description = "Console Application for the Hive Client.", AutoRestart = true)]
+  class HiveClientConsoleApplication : ApplicationBase {
+    public override void Run() {
+      Form mainForm = new HiveClientConsole();
+      Application.Run(mainForm);
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Hive.Client.Console/HiveClientConsolePlugin.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Client.Console/HiveClientConsolePlugin.cs	(revision 717)
+++ /trunk/sources/HeuristicLab.Hive.Client.Console/HiveClientConsolePlugin.cs	(revision 717)
@@ -0,0 +1,34 @@
+#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 System.Windows.Forms;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Grid {
+  [ClassInfo(Name = "HeuristicLab.Hive.Client.Console-3.2")]
+  [PluginFile(Filename = "HeuristicLab.Hive.Client.Console-3.2.dll", Filetype = PluginFileType.Assembly)]
+  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
+  public class HeuristicLabHiveClientConsolePlugin : PluginBase {
+  }
+}
Index: /trunk/sources/HeuristicLab.Hive.Client.Console/IPAdressTextBox.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Client.Console/IPAdressTextBox.cs	(revision 717)
+++ /trunk/sources/HeuristicLab.Hive.Client.Console/IPAdressTextBox.cs	(revision 717)
@@ -0,0 +1,1097 @@
+﻿#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
+
+// copied from http://www.codeproject.com/KB/edit/IPAddressTextBox.aspx
+
+using System;
+using System.Collections;
+using System.ComponentModel;
+using System.Windows.Forms;
+using System.Text.RegularExpressions;
+
+namespace HeuristicLab.Hive.Client.Console {
+  [
+  DefaultProperty("Text"),
+  DefaultEvent("TextChanged"),
+  ]
+  /// <summary>
+  /// IPAddressTextBox
+  /// Control to enter IP-Addresses manually
+  /// Supports Binary and Decimal Notation
+  /// Supports input of CIDR Notation (appending of Bitmask of Subnetmask devided by Slash)
+  /// Support input of IP-Address in IPv6 format
+  /// </summary>
+  public class IPAddressTextBox : System.Windows.Forms.TextBox {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.Container components = null;
+
+    private IPNotation ipNotation = IPNotation.IPv4Decimal;
+    private IPNotation newIPNotation = IPNotation.IPv4Decimal;
+    private bool bOverwrite = true;
+    private bool bPreventLeave = true;
+    private System.Windows.Forms.ErrorProvider error;
+    private Regex regexValidNumbers = new Regex("[0-9]");
+    private ArrayList arlDelimeter = new ArrayList(new char[] { '.' });
+
+
+    public enum IPNotation {
+      IPv4Decimal,			//192.168.000.001
+      IPv4Binary,				//11000000.10101000.00000000.00000001
+      IPv4DecimalCIDR,		//192.168.000.001/16
+      IPv4BinaryCIDR,			//11000000.10101000.00000000.00000001/16
+    }
+
+    /// <summary>
+    /// Constructor
+    /// </summary>
+    public IPAddressTextBox()
+      : base() {
+      this.InitializeComponent();
+
+      this.ResetText();
+    }
+
+    private void InitializeComponent() {
+      this.error = new System.Windows.Forms.ErrorProvider();
+    }
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    protected override void Dispose(bool disposing) {
+      if (disposing) {
+        if (components != null)
+          components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Properties
+    #region Not allowed Properties from BaseClass
+    /// <summary>
+    /// Multiline is not allowed
+    /// </summary>
+    [
+    Category("Behavior"),
+    Description("Multiline is not allowed"),
+    DefaultValue(false),
+    Browsable(false)
+    ]
+    public override bool Multiline {
+      get {
+        return base.Multiline;
+      }
+      set {
+        //base.Multiline = value;
+        base.Multiline = false;
+      }
+    }
+    [
+    Category("Behavior"),
+    Description("AllowDrop is not allowed"),
+    DefaultValue(false),
+    Browsable(false)
+    ]
+    public override bool AllowDrop {
+      get {
+        return base.AllowDrop;
+      }
+      set {
+        //base.AllowDrop = value;
+        base.AllowDrop = false;
+      }
+    }
+    [
+    Category("Behavior"),
+    Description("AcceptsReturn is not allowed"),
+    DefaultValue(false),
+    Browsable(false)
+    ]
+    public new bool AcceptsReturn {
+      get {
+        return base.AcceptsReturn;
+      }
+      set {
+        //base.AcceptsReturn = value;
+        base.AcceptsReturn = false;
+      }
+    }
+    [
+    Category("Behavior"),
+    Description("AcceptsTab is not allowed"),
+    DefaultValue(false),
+    Browsable(false)
+    ]
+    public new bool AcceptsTab {
+      get {
+        return base.AcceptsTab;
+      }
+      set {
+        //base.AcceptTab = value;
+        base.AcceptsTab = false;
+      }
+    }
+    [
+    Category("Behavior"),
+    Description("CharacterCasing is not allowed"),
+    DefaultValue(CharacterCasing.Normal),
+    Browsable(false)
+    ]
+    public new CharacterCasing CharacterCasing {
+      get {
+        return base.CharacterCasing;
+      }
+      set {
+        //base.CharacterCasing = value;
+        base.CharacterCasing = CharacterCasing.Normal;
+      }
+    }
+    [
+    Category("Behavior"),
+    Description("WordWrap is not allowed"),
+    DefaultValue(true),
+    Browsable(false)
+    ]
+    public new bool WordWrap {
+      get {
+        return base.WordWrap;
+      }
+      set {
+        //base.WordWrap = value;
+        base.WordWrap = true;
+      }
+    }
+
+    /// <summary>
+    /// Maxlength must not be changed by user
+    /// </summary>
+    [
+    Category("Behavior"),
+    Description("Specifies maximum length of a String. Change is not allowed"),
+    DefaultValue(15),
+    Browsable(false)
+    ]
+    public override int MaxLength {
+      get {
+        return base.MaxLength;
+      }
+      set {
+        //base.MaxLength = value;
+        base.MaxLength = this.Text.Length;
+      }
+    }
+
+    #endregion // Not allowed Properties from BaseClass
+
+    /// <summary>
+    /// Specifies if IP-Address
+    /// </summary>
+    [
+    Category("Appearance"),
+    Description("Specifies the IP-Address"),
+    DefaultValue("   .   .   .   ")
+    ]
+    public override string Text {
+      get {
+        return base.Text;
+      }
+      set {
+        try {
+          if (IPAddressTextBox.ValidateIP(value, this.newIPNotation, this.arlDelimeter))
+            base.Text = IPAddressTextBox.MakeValidSpaces(value, this.newIPNotation, this.arlDelimeter);
+        }
+        catch {
+
+        }
+      }
+    }
+
+    /// <summary>
+    /// Specifies if Numbers should be overwritten
+    /// </summary>
+    [
+    Category("Behavior"),
+    Description("Specifies if Numbers should be overwritten"),
+    DefaultValue(true)
+    ]
+    public bool OverWriteMode {
+      get {
+        return this.bOverwrite;
+      }
+      set {
+        if (value != this.bOverwrite) {
+          this.bOverwrite = value;
+          this.OnOverWriteChanged(value);
+        }
+      }
+    }
+
+    /// <summary>
+    /// Prevents leaving of Control if there is an input-error
+    /// </summary>
+    [
+    Category("Behavior"),
+    Description("Prevents leaving of Control if there is an input-error"),
+    DefaultValue(true)
+    ]
+    public bool PreventLeaveAtError {
+      get {
+        return this.bPreventLeave;
+      }
+      set {
+        if (value != this.bPreventLeave) {
+          this.bPreventLeave = value;
+          this.OnPreventLeaveChanged(value);
+        }
+      }
+    }
+
+    /// <summary>
+    /// Specifies if IP-Address Notation (IPv4, IPv6, Binary, Decimal, CIDR
+    /// </summary>
+    [
+    Category("Appearance"),
+    Description("Specifies if IP-Address Notation (IPv4, IPv6, Binary, Decimal, CIDR"),
+    DefaultValue(IPNotation.IPv4Decimal)
+    ]
+    public IPNotation Notation {
+      get {
+        return this.ipNotation;
+      }
+      set {
+        if (value != this.ipNotation) {
+          try {
+            this.newIPNotation = value;
+            this.ChangeNotation(this.ipNotation, this.newIPNotation);
+            this.ipNotation = this.newIPNotation;
+            this.OnNotationChanged(this.newIPNotation);
+          }
+          catch (Exception LastError) {
+            System.Diagnostics.Debug.WriteLine(LastError.Message);
+            throw LastError;
+          }
+        }
+      }
+    }
+
+    /// <summary>
+    /// Specifies the Errorprovider that appears at invalid IPs
+    /// </summary>
+    [
+    Category("Appearance"),
+    Description("Specifies the Errorprovider that appears at invalid IPs"),
+    DefaultValue(false)
+    ]
+    public ErrorProvider IPError {
+      get {
+        return this.error;
+      }
+    }
+
+
+    #endregion //Properties
+
+    #region Eventhandling
+
+    /// <summary>
+    /// Delegate for Notation-Events
+    /// </summary>
+    public delegate void NotationChangedEventHandler(IPNotation arg_newValue);
+    /// <summary>
+    /// Event called if AppearanceMode Notation is changed
+    /// </summary>
+    public event NotationChangedEventHandler NotationChanged;
+    /// <summary>
+    /// Delegate for Bool-Properties-Events
+    /// </summary>
+    public delegate void BoolPropertyChangedEventHandler(bool arg_bNewValue);
+    /// <summary>
+    /// Event called if BehaviorMode OverWriteMode is changed
+    /// </summary>
+    public event BoolPropertyChangedEventHandler OverWriteModeChanged;
+    /// <summary>
+    /// Event called if BehaviorMode PreventLeave is changed
+    /// </summary>
+    public event BoolPropertyChangedEventHandler PreventLeaveChanged;
+
+    /// <summary>
+    /// Occures when Appearance-Mode Notation was changed
+    /// </summary>
+    /// <param name="arg_Value">Value, Input IP-Address  notation</param>
+    protected virtual void OnNotationChanged(IPNotation arg_Value) {
+      if (this.NotationChanged != null)
+        this.NotationChanged(arg_Value);
+    }
+
+    private void ChangeNotation(IPNotation arg_oldValue, IPNotation arg_newValue) {
+      string sTo = "";
+      ArrayList arlFrom = new ArrayList(this.Text.Replace(" ", "").Split((char[])this.arlDelimeter.ToArray(typeof(char))));
+
+      switch (arg_newValue) {
+        case IPNotation.IPv4Decimal:
+          this.regexValidNumbers = new Regex("[0-9]");
+          this.arlDelimeter = new ArrayList(new char[] { '.' });
+          break;
+        case IPNotation.IPv4DecimalCIDR:
+          this.regexValidNumbers = new Regex("[0-9]");
+          this.arlDelimeter = new ArrayList(new char[] { '.', '/' });
+          break;
+        case IPNotation.IPv4Binary:
+          this.regexValidNumbers = new Regex("[01]");
+          this.arlDelimeter = new ArrayList(new char[] { '.' });
+          break;
+        case IPNotation.IPv4BinaryCIDR:
+          this.regexValidNumbers = new Regex("[01]");
+          this.arlDelimeter = new ArrayList(new char[] { '.', '/' });
+          break;
+        default:
+          break;
+      }
+
+      switch (arg_oldValue) {
+        case IPNotation.IPv4Decimal:
+          switch (arg_newValue) {
+            case IPNotation.IPv4Decimal:
+              break;
+            case IPNotation.IPv4DecimalCIDR:
+              for (int i = 0; i < arlFrom.Count; i++) {
+                sTo += arlFrom[i].ToString() +
+                  //Add Slash if its the last IPPart, els add a dot
+                  (i == arlFrom.Count - 1 ? "/    " : ".");
+              }
+              break;
+            case IPNotation.IPv4Binary:
+              for (int i = 0; i < arlFrom.Count; i++) {
+                //Convert Decimal to Binary
+                sTo += this.Dec2Bin(arlFrom[i].ToString()) +
+                  //Add Dot if its not the last IPPart, else add nothing
+                  (i == arlFrom.Count - 1 ? "" : ".");
+              }
+              break;
+            case IPNotation.IPv4BinaryCIDR:
+              for (int i = 0; i < arlFrom.Count; i++) {
+                //Convert Decimal to Binary
+                sTo += this.Dec2Bin(arlFrom[i].ToString()) +
+                  //Add Slash if its the last IPPart, else add a dot
+                  (i == arlFrom.Count - 1 ? "/    " : ".");
+              }
+              break;
+            default:
+              break;
+          }
+          break;
+        case IPNotation.IPv4DecimalCIDR:
+          switch (arg_newValue) {
+            case IPNotation.IPv4Decimal:
+              //do not use the last Item, its the Subnetmask
+              for (int i = 0; i < arlFrom.Count - 1; i++) {
+                sTo += arlFrom[i].ToString() +
+                  //Add Dot if its not the last IPPart, else add nothing
+                  (i == arlFrom.Count - 2 ? "" : ".");
+              }
+              break;
+            case IPNotation.IPv4DecimalCIDR:
+              break;
+            case IPNotation.IPv4Binary:
+              //do not use the last Item, its the Subnetmask
+              for (int i = 0; i < arlFrom.Count - 1; i++) {
+                //Convert Decimal to Binary
+                sTo += this.Dec2Bin(arlFrom[i].ToString()) +
+                  //Add Dot if its not the last IPPart, else add nothing
+                  (i == arlFrom.Count - 2 ? "" : ".");
+              }
+              break;
+            case IPNotation.IPv4BinaryCIDR:
+              //do not use the last Item, its the Subnetmask
+              for (int i = 0; i < arlFrom.Count - 1; i++) {
+                //Convert Decimal to Binary
+                sTo += this.Dec2Bin(arlFrom[i].ToString()) +
+                  //Add Dot if its not the last IPPart, else add nothing
+                  (i == arlFrom.Count - 2 ? "" : ".");
+              }
+              //Add Subnetmask
+              sTo += "/" + arlFrom[arlFrom.Count - 1];
+              break;
+            default:
+              break;
+          }
+          break;
+        case IPNotation.IPv4Binary:
+          switch (arg_newValue) {
+            case IPNotation.IPv4Decimal:
+              for (int i = 0; i < arlFrom.Count; i++) {
+                //Convert Binary to Decimal
+                sTo += this.Bin2Dec(arlFrom[i].ToString()) +
+                  //Add Dot if its not the last IPPart, else add nothing
+                  (i == arlFrom.Count - 1 ? "" : ".");
+              }
+              break;
+            case IPNotation.IPv4DecimalCIDR:
+              for (int i = 0; i < arlFrom.Count; i++) {
+                //Convert Binary to Decimal
+                sTo += this.Bin2Dec(arlFrom[i].ToString()) +
+                  //Add Slash if its the last IPPart, els add a dot
+                  (i == arlFrom.Count - 1 ? "/    " : ".");
+              }
+              break;
+            case IPNotation.IPv4Binary:
+              break;
+            case IPNotation.IPv4BinaryCIDR:
+              for (int i = 0; i < arlFrom.Count; i++) {
+                sTo += arlFrom[i].ToString() +
+                  //Add Slash if its the last IPPart, else add a dot
+                  (i == arlFrom.Count - 1 ? "/    " : ".");
+              }
+              break;
+            default:
+              break;
+          }
+          break;
+        case IPNotation.IPv4BinaryCIDR:
+          switch (arg_newValue) {
+            case IPNotation.IPv4Decimal:
+              //do not use the last Item, its the Subnetmask
+              for (int i = 0; i < arlFrom.Count - 1; i++) {
+                sTo += this.Bin2Dec(arlFrom[i].ToString()) +
+                  //Add Dot if its not the last IPPart, else add nothing
+                  (i == arlFrom.Count - 2 ? "" : ".");
+              }
+              break;
+            case IPNotation.IPv4DecimalCIDR:
+              //do not use the last Item, its the Subnetmask
+              for (int i = 0; i < arlFrom.Count - 1; i++) {
+                sTo += this.Bin2Dec(arlFrom[i].ToString()) +
+                  //Add Dot if its not the last IPPart, else add nothing
+                  (i == arlFrom.Count - 2 ? "" : ".");
+              }
+              //Add Subnetmask
+              sTo += "/" + arlFrom[arlFrom.Count - 1];
+              break;
+            case IPNotation.IPv4Binary:
+              //do not use the last Item, its the Subnetmask
+              for (int i = 0; i < arlFrom.Count - 1; i++) {
+                sTo += arlFrom[i].ToString() +
+                  //Add Dot if its not the last IPPart, else add nothing
+                  (i == arlFrom.Count - 2 ? "" : ".");
+              }
+              break;
+            case IPNotation.IPv4BinaryCIDR:
+              break;
+            default:
+              break;
+          }
+          break;
+
+      }
+
+      this.Text = sTo;
+      this.MaxLength = this.TextLength;
+    }
+
+    /// <summary>
+    /// Occures when Behaviour-Mode OverWriteMode was changed
+    /// </summary>
+    /// <param name="arg_bValue">Value, Overwrite Numbers in Editfield or not</param>
+    protected virtual void OnOverWriteChanged(bool arg_bValue) {
+      if (this.OverWriteModeChanged != null)
+        this.OverWriteModeChanged(arg_bValue);
+    }
+
+    /// <summary>
+    /// Occures when Behaviour-Mode PreventLeave was changed
+    /// </summary>
+    /// <param name="arg_bValue">Value, leave control if there is an error or not</param>
+    protected virtual void OnPreventLeaveChanged(bool arg_bValue) {
+      if (this.PreventLeaveChanged != null)
+        this.PreventLeaveChanged(arg_bValue);
+    }
+
+    #endregion //events
+
+    #region Event-Overrides
+
+    /// <summary>
+    /// Override standard KeyDownEventHandler
+    /// Catches Inputs of "." and "/" to jump to next positions
+    /// </summary>
+    /// <param name="e">KeyEventArgument</param>
+    protected override void OnKeyDown(KeyEventArgs e) {
+      //Zeichen an die richtige stelle schreiben
+      int iPos = this.SelectionStart;
+      char[] cText = this.Text.ToCharArray();
+
+      if (e.Modifiers == Keys.None) {
+        if ((char.IsLetterOrDigit(Convert.ToChar(e.KeyValue)) || e.KeyCode == Keys.NumPad0)//Numpad0=96 --> `
+          && iPos < this.TextLength) {
+          if (this.arlDelimeter.Contains(cText[iPos]))
+            iPos += 1;
+          this.SelectionStart = iPos;
+          if (this.OverWriteMode) {
+            if (iPos < this.TextLength)
+              this.SelectionLength = 1;
+          } else {
+            if (iPos < this.TextLength)
+              if (cText[iPos] == ' ')
+                this.SelectionLength = 1;
+          }
+        }
+      }
+      base.OnKeyDown(e);
+    }
+
+    /// <summary>
+    /// Override standard KeyUpEventHandler
+    /// Catches Inputs of "." and "/" to jump to next positions
+    /// </summary>
+    /// <param name="e">KeyEventArgument</param>
+    protected override void OnKeyUp(KeyEventArgs e) {
+      //Zeichen an die richtige stelle schreiben
+      int iPos = this.SelectionStart;
+      char[] cText = this.Text.ToCharArray();
+
+      //Cursor hintern Punkt setzen
+      if ((char.IsLetterOrDigit(Convert.ToChar(e.KeyValue)) || e.KeyCode == Keys.NumPad0)//Numpad0=96 --> `
+        && iPos < this.TextLength) {
+        if (this.arlDelimeter.Contains(cText[iPos]))
+          iPos += 1;
+
+        this.SelectionStart = iPos;
+      }
+      base.OnKeyUp(e);
+    }
+
+
+    /// <summary>
+    /// Override standard KeyPressEventHandler
+    /// Catches Inputs of "." and "/" to jump to next positions
+    /// </summary>
+    /// <param name="e">KeyPressEventArgument</param>
+    protected override void OnKeyPress(KeyPressEventArgs e) {
+      //valid input charachters
+      if (char.IsControl(e.KeyChar) ||
+        regexValidNumbers.IsMatch(e.KeyChar.ToString())) {
+        e.Handled = false;
+      } else {
+        switch (e.KeyChar) {
+          case '/':
+            this.JumpToSlash();
+            break;
+          case '.':
+          case ':':
+            this.JumpToNextDot();
+            break;
+          default:
+            break;
+        }
+        e.Handled = true;
+      }
+      base.OnKeyPress(e);
+    }
+
+    /// <summary>
+    /// Override standard TextChangedEventHandler
+    /// Looks if inserted IP-Address is valid
+    /// </summary>
+    /// <param name="e">EventArgument</param>
+    protected override void OnTextChanged(EventArgs e) {
+      base.OnTextChanged(e);
+      if (this.Text.Length == 0)
+        this.ResetText();
+
+      try {
+        if (!this.ValidateIP())
+          this.error.SetError(this, "Invalid IP-address");
+        else
+          this.error.SetError(this, "");
+      }
+      catch (Exception LastError) {
+        this.error.SetError(this, LastError.Message);
+      }
+    }
+
+    /// <summary>
+    /// Override standard ValidatingEventHandler
+    /// Validates inserted IP-Address, and cancels Textbox if valid or PreventLeave=false
+    /// </summary>
+    /// <param name="e">CancelEventArgument</param>
+    protected override void OnValidating(CancelEventArgs e) {
+      //e.Cancel = true;//suppress cancel-signal = not validated
+      e.Cancel = (!this.ValidateIP() && this.bPreventLeave);
+      base.OnValidating(e);
+    }
+
+    #endregion	//Eventhandling
+
+    #region Methods
+
+    /// <summary>
+    /// Override standard ResetText
+    /// Fills Textbox with Dots and Slashes dependend on Properties
+    /// </summary>
+    public override void ResetText() {
+      base.ResetText();
+      switch (this.Notation) {
+        case IPNotation.IPv4Decimal:
+          this.Text = "   .   .   .   ";
+          break;
+        case IPNotation.IPv4DecimalCIDR:
+          this.Text = "   .   .   .   /    ";
+          break;
+        case IPNotation.IPv4Binary:
+          this.Text = "        .        .        .        ";
+          break;
+        case IPNotation.IPv4BinaryCIDR:
+          this.Text = "        .        .        .        /    ";
+          break;
+        default:
+          break;
+      }
+
+      this.MaxLength = this.TextLength;
+    }
+
+
+    /// <summary>
+    /// Window-Message Constant
+    /// </summary>
+    protected const int WM_KEYDOWN = 0x0100;
+
+    /// <summary>
+    /// Override standard PreProcessMessge
+    /// Catches Inputs of Backspaces and Deletes to remove IP-Digits at the right position
+    /// </summary>
+    /// <param name="msg">Process Message</param>
+    public override bool PreProcessMessage(ref Message msg) {
+      if (msg.Msg == WM_KEYDOWN) {
+        Keys keyData = ((Keys)(int)msg.WParam) | ModifierKeys;
+        Keys keyCode = ((Keys)(int)msg.WParam);
+
+        int iPos = this.SelectionStart;
+        char[] cText = this.Text.ToCharArray();
+        switch (keyCode) {
+          case Keys.Delete:
+            if (iPos < this.TextLength) {
+              while (cText[iPos] == '.' || cText[iPos] == ':' || cText[iPos] == '/') {
+                if ((iPos += 1) >= cText.Length)
+                  break;
+              }
+              if (iPos < this.TextLength) {
+                base.Text = this.Text.Substring(0, iPos) + " " + this.Text.Substring(iPos + 1);
+                this.SelectionStart = iPos + 1;
+              } else
+                this.SelectionStart = this.TextLength - 1;
+            }
+            return true;
+          case Keys.Back:
+            if (iPos > 0) {
+              while (cText[iPos - 1] == '.' || cText[iPos - 1] == ':' || cText[iPos - 1] == '/') {
+                if ((iPos -= 1) <= 0)
+                  break;
+              }
+              if (iPos > 0) {
+                base.Text = this.Text.Substring(0, iPos - 1) + " " + this.Text.Substring(iPos);
+                this.SelectionStart = iPos - 1;
+              } else
+                this.SelectionStart = 0;
+            }
+            return true;
+          default:
+            break;
+        }
+      }
+      return base.PreProcessMessage(ref msg);
+    }
+
+    /// <summary>
+    /// Returns the formatted IP-Addresses without spaces and Zeroes
+    /// </summary>
+    /// <returns>IP-Address without spaces and Zeroes</returns>
+    public string GetPureIPAddress() {
+      string s = "";
+      ArrayList arlIP = new ArrayList(this.Text.Replace(" ", "").Split((char[])this.arlDelimeter.ToArray(typeof(char))));
+      for (int i = 0; i < arlIP.Count; i++) {
+        while (arlIP[i].ToString().StartsWith("0"))
+          arlIP[i] = arlIP[i].ToString().Substring(1);
+      }
+      s = IPAddressTextBox.MakeIP((string[])arlIP.ToArray(typeof(string)), this.ipNotation);
+      return s;
+    }
+
+    #endregion //Methods
+
+    #region Helperfunctions
+
+    /// <summary>
+    /// Sets Inputcursor to Subnet-Slash
+    /// </summary>
+    private void JumpToSlash() {
+      int iSelStart = this.Text.LastIndexOf("/");
+      if (iSelStart >= 0) {
+        this.Select(iSelStart + 1, 0);
+      }
+    }
+
+    /// <summary>
+    /// Sets input cursour to next Dot
+    /// </summary>
+    private void JumpToNextDot() {
+      int iSelStart = this.Text.IndexOf('.', this.SelectionStart);
+      if (iSelStart >= 0) {
+        this.Select(iSelStart + 1, 0);
+      } else {
+        iSelStart = this.Text.IndexOf(':', this.SelectionStart);
+        if (iSelStart >= 0) {
+          this.Select(iSelStart + 1, 0);
+        }
+      }
+    }
+
+    /// <summary>
+    /// Converts Decimal IP-Part to Binary (default IPv6 = false)
+    /// </summary>
+    /// <param name="arg_sDec">Decimal IP-Part</param>
+    /// <param name="arg_bIPv6">Binary for IPv6 (has 16 digits)</param>
+    /// <returns>Binary IP-Part</returns>
+    private string Dec2Bin(string arg_sDec) {
+      return this.Dec2Bin(arg_sDec, false);
+    }
+    /// <summary>
+    /// Converts Decimal IP-Part to Binary
+    /// </summary>
+    /// <param name="arg_sDec">Decimal IP-Part</param>
+    /// <param name="arg_bIPv6">Binary for IPv6 (has 16 digits)</param>
+    /// <returns>Binary IP-Part</returns>
+    private string Dec2Bin(string arg_sDec, bool arg_bIPv6) {
+      string sBin = (arg_bIPv6 ? "0000000000000000" : "00000000"), sSubnet = "";
+      arg_sDec = arg_sDec.Trim();
+      while (arg_sDec.Length < 3)
+        arg_sDec = "0" + arg_sDec;
+      if (arg_sDec.IndexOf("/") >= 0) {
+        sSubnet = arg_sDec.Substring(arg_sDec.IndexOf("/"));
+        arg_sDec = arg_sDec.Substring(0, arg_sDec.IndexOf("/"));
+      }
+      int iDec = Convert.ToInt32(arg_sDec, 10);
+      sBin = Convert.ToString(iDec, 2);
+      while (sBin.Length < (arg_bIPv6 ? 16 : 8))
+        sBin = "0" + sBin;
+      return sBin + sSubnet;
+    }
+
+    /// <summary>
+    /// Converts Binary IP-Part to Decimal
+    /// </summary>
+    /// <param name="arg_sBin">Binary IP-Part</param>
+    /// <returns>Decimal IP-Part</returns>
+    private string Bin2Dec(string arg_sBin) {
+      string sDec = "000", sSubnet = "";
+      arg_sBin = arg_sBin.Trim();
+      while (arg_sBin.Length < 8)
+        arg_sBin = "0" + arg_sBin;
+      if (arg_sBin.IndexOf("/") >= 0) {
+        sSubnet = arg_sBin.Substring(arg_sBin.IndexOf("/"));
+        arg_sBin = arg_sBin.Substring(0, arg_sBin.IndexOf("/"));
+      }
+      int iBin = Convert.ToInt32(arg_sBin, 2);
+      if (iBin > 255)
+        throw new Exception(string.Format("Can't convert Binary to Decimal IP-Address\nbin:{0} is greater than 255", iBin));
+      sDec = Convert.ToString(iBin, 10);
+      while (sDec.Length < 3)
+        sDec = "0" + sDec;
+      return sDec + sSubnet;
+    }
+
+    /// <summary>
+    /// Converts Binary IP-Part to Hexadecimal
+    /// </summary>
+    /// <param name="arg_sBin">Binary IP-Part</param>
+    /// <returns>Hexadecimal IP-Part</returns>
+    private string Bin2Hex(string arg_sBin) {
+      string sHex = "0000", sSubnet = "";
+      arg_sBin = arg_sBin.Trim();
+      while (arg_sBin.Length < 8)
+        arg_sBin = "0" + arg_sBin;
+      if (arg_sBin.IndexOf("/") >= 0) {
+        sSubnet = arg_sBin.Substring(arg_sBin.IndexOf("/"));
+        arg_sBin = arg_sBin.Substring(0, arg_sBin.IndexOf("/"));
+      }
+      int iBin = Convert.ToInt32(arg_sBin, 2);
+      sHex = Convert.ToString(iBin, 16);
+      while (sHex.Length < 4)
+        sHex = "0" + sHex;
+      return sHex + sSubnet;
+    }
+
+    /// <summary>
+    /// Converts Hexadecimal IP-Part to Binary (default IPv6=true)
+    /// </summary>
+    /// <param name="arg_sHex">Hexadecimal IP-Part</param>
+    /// <returns>Binary IP-Part</returns>
+    private string Hex2Bin(string arg_sHex) {
+      return this.Hex2Bin(arg_sHex, true);
+    }
+    /// <summary>
+    /// Converts Hexadecimal IP-Part to Binary
+    /// </summary>
+    /// <param name="arg_sHex">Hexadecimal IP-Part</param>
+    /// <param name="arg_bIPv6">Binary for IPv6 (16 digits)</param>
+    /// <returns>Binary IP-Part</returns>
+    private string Hex2Bin(string arg_sHex, bool arg_bIPv6) {
+      string sBin = (arg_bIPv6 ? "0000000000000000" : "00000000"), sSubnet = "";
+      arg_sHex = arg_sHex.Trim();
+      while (arg_sHex.Length < 3)
+        arg_sHex = "0" + arg_sHex;
+      if (arg_sHex.IndexOf("/") >= 0) {
+        sSubnet = arg_sHex.Substring(arg_sHex.IndexOf("/"));
+        arg_sHex = arg_sHex.Substring(0, arg_sHex.IndexOf("/"));
+      }
+      int iHex = Convert.ToInt32(arg_sHex, 16);
+      if (iHex > 255 && !arg_bIPv6)
+        throw new Exception(string.Format("Can't convert Hexadecimal to Binary IP-Address\nhex:{0} is greater than 11111111", iHex));
+      sBin = Convert.ToString(iHex, 2);
+      while (sBin.Length < (arg_bIPv6 ? 16 : 8))
+        sBin = "0" + sBin;
+      return sBin + sSubnet;
+    }
+
+    /// <summary>
+    /// Converts Decimal IP-Part to Hexadecimal
+    /// </summary>
+    /// <param name="arg_sDec">Decimal IP-Part</param>
+    /// <returns>Hexadecimal IP-Part</returns>
+    private string Dec2Hex(string arg_sDec) {
+      string sHex = "0000", sSubnet = "";
+      arg_sDec = arg_sDec.Trim();
+      while (arg_sDec.Length < 8)
+        arg_sDec = "0" + arg_sDec;
+      if (arg_sDec.IndexOf("/") >= 0) {
+        sSubnet = arg_sDec.Substring(arg_sDec.IndexOf("/"));
+        arg_sDec = arg_sDec.Substring(0, arg_sDec.IndexOf("/"));
+      }
+      int iDec = Convert.ToInt32(arg_sDec, 10);
+      sHex = Convert.ToString(iDec, 16);
+      while (sHex.Length < 4)
+        sHex = "0" + sHex;
+      return sHex + sSubnet;
+    }
+
+    /// <summary>
+    /// Converts Hexadecimal IP-Part to Decimal
+    /// </summary>
+    /// <param name="arg_sHex">Hexadecimal IP-Part</param>
+    /// <returns>Decimal IP-Part</returns>
+    private string Hex2Dec(string arg_sHex) {
+      string sDec = "000", sSubnet = "";
+      arg_sHex = arg_sHex.Trim();
+      while (arg_sHex.Length < 8)
+        arg_sHex = "0" + arg_sHex;
+      if (arg_sHex.IndexOf("/") >= 0) {
+        sSubnet = arg_sHex.Substring(arg_sHex.IndexOf("/"));
+        arg_sHex = arg_sHex.Substring(0, arg_sHex.IndexOf("/"));
+      }
+      int iHex = Convert.ToInt32(arg_sHex, 16);
+      if (iHex > 255)
+        throw new Exception(string.Format("Can't convert Hexadecimal to Decimal IP-Address\nhex:{0} is greater than 255", iHex));
+      sDec = Convert.ToString(iHex, 10);
+      while (sDec.Length < 3)
+        sDec = "0" + sDec;
+      return sDec + sSubnet;
+    }
+
+    /// <summary>
+    /// Checks if IP in Textfield is valid
+    /// </summary>
+    /// <returns>true/false valid/not</returns>
+    private bool ValidateIP() {
+      if (IPAddressTextBox.ValidateIP(this.Text, this.newIPNotation, this.arlDelimeter))
+        return true;
+      else
+        //if Control is not visible or enabled, it doesn't matter if IP is valid
+        return this.Enabled || this.Visible ? false : true;
+    }
+
+    /// <summary>
+    /// Checks if the given String is an valid ip-address
+    /// </summary>
+    /// <param name="arg_sIP">IP-String</param>
+    /// <param name="arg_ipNotation">IP-notation</param>
+    /// <param name="arg_arlDelimeter">Delimeter to parse IPString</param>
+    /// <returns>true/false validated/not</returns>
+    protected static bool ValidateIP(string arg_sIP, IPNotation arg_ipNotation, ArrayList arg_arlDelimeter) {
+      bool bValidated = false;
+      ArrayList arlIP = new ArrayList(arg_sIP.Split((char[])arg_arlDelimeter.ToArray(typeof(char))));
+
+      try {
+        switch (arg_ipNotation) {
+          case IPNotation.IPv4Decimal:
+          case IPNotation.IPv4Binary:
+            bValidated = arlIP.Count == 4;
+            break;
+          case IPNotation.IPv4DecimalCIDR:
+          case IPNotation.IPv4BinaryCIDR:
+            bValidated = arlIP.Count == 5;
+            break;
+          default:
+            break;
+        }
+        if (!bValidated) {
+          throw new Exception("IP-Address has wrong element count");
+        }
+
+        //don't check the 1st 2 elemnt if its IPv4 in IPv6-notation
+        for (int i = (arg_ipNotation.ToString().IndexOf("IPv6IPv4") == 0 ? 2 : 0);
+          //don't check the subnet element
+          i < (arg_ipNotation.ToString().IndexOf("CIDR") > 0 ? arlIP.Count - 1 : arlIP.Count);
+          i++) {
+          string sIPPart = arlIP[i].ToString().Replace(" ", "");
+          int iIPPart = 0;
+          switch (arg_ipNotation) {
+            case IPNotation.IPv4Decimal:
+            case IPNotation.IPv4DecimalCIDR:
+              while (sIPPart.Length < 3)
+                sIPPart = "0" + sIPPart;
+              iIPPart = Convert.ToInt32(sIPPart, 10);
+              if (iIPPart < 256)
+                bValidated = true;
+              else
+                bValidated = false;
+              break;
+            case IPNotation.IPv4Binary:
+            case IPNotation.IPv4BinaryCIDR:
+              while (sIPPart.Length < 8)
+                sIPPart = "0" + sIPPart;
+              iIPPart = Convert.ToInt32(sIPPart, 2);
+              if (iIPPart < 256)
+                bValidated = true;
+              else
+                bValidated = false;
+              break;
+            default:
+              break;
+          }
+          if (!bValidated) {
+            throw new Exception(string.Format("IP-Address element {0}({1}) has wrong format", i, sIPPart));
+          }
+        }
+      }
+      catch (Exception LastError) {
+        System.Diagnostics.Debug.WriteLine(LastError.Message);
+        bValidated = false;
+        throw LastError;
+      }
+      return bValidated;
+    }
+
+    /// <summary>
+    /// Adds Spaces to given IP-Address, so it fits in the textfield
+    /// </summary>
+    /// <param name="arg_sIP">IP-String</param>
+    /// <param name="arg_ipNotation">IP-notation</param>
+    /// <param name="arg_arlDelimeter">Delimeter to parse IPString</param>
+    /// <returns>IP-Address with Spaces</returns>
+    protected static string MakeValidSpaces(string arg_sIP, IPNotation arg_ipNotation, ArrayList arg_arlDelimeter) {
+      ArrayList arlIP = new ArrayList(arg_sIP.Split((char[])arg_arlDelimeter.ToArray(typeof(char))));
+      //don't check the 1st 2 elemnt if its IPv4 in IPv6-notation
+      for (int i = (arg_ipNotation.ToString().IndexOf("IPv6IPv4") == 0 ? 2 : 0);
+        //don't check the subnet element
+        i < (arg_ipNotation.ToString().IndexOf("CIDR") > 0 ? arlIP.Count - 1 : arlIP.Count);
+        i++) {
+        switch (arg_ipNotation) {
+          case IPNotation.IPv4Decimal:
+          case IPNotation.IPv4DecimalCIDR:
+            while (arlIP[i].ToString().Length < 3)
+              arlIP[i] = arlIP[i].ToString() + " ";
+            break;
+          case IPNotation.IPv4Binary:
+          case IPNotation.IPv4BinaryCIDR:
+            while (arlIP[i].ToString().Length < 8)
+              arlIP[i] = arlIP[i].ToString() + " ";
+            break;
+          default:
+            break;
+        }
+      }
+
+      return IPAddressTextBox.MakeIP((string[])arlIP.ToArray(typeof(string)), arg_ipNotation);
+    }
+
+    /// <summary>
+    /// Adds Zeroes to given IP-Address, so it fits in the textfield
+    /// </summary>
+    /// <param name="arg_sIP">IP-String</param>
+    /// <param name="arg_ipNotation">IP-notation</param>
+    /// <param name="arg_arlDelimeter">Delimeter to parse IPString</param>
+    /// <returns>IP-Address with Spaces</returns>
+    protected static string MakeValidZeroes(string arg_sIP, IPNotation arg_ipNotation, ArrayList arg_arlDelimeter) {
+      ArrayList arlIP = new ArrayList(arg_sIP.Split((char[])arg_arlDelimeter.ToArray(typeof(char))));
+      //don't check the 1st 2 elemnt if its IPv4 in IPv6-notation
+      for (int i = (arg_ipNotation.ToString().IndexOf("IPv6IPv4") == 0 ? 2 : 0);
+        //don't check the subnet element
+        i < (arg_ipNotation.ToString().IndexOf("CIDR") > 0 ? arlIP.Count - 1 : arlIP.Count);
+        i++) {
+        switch (arg_ipNotation) {
+          case IPNotation.IPv4Decimal:
+          case IPNotation.IPv4DecimalCIDR:
+            while (arlIP[i].ToString().Length < 3)
+              arlIP[i] = "0" + arlIP[i].ToString();
+            break;
+          case IPNotation.IPv4Binary:
+          case IPNotation.IPv4BinaryCIDR:
+            while (arlIP[i].ToString().Length < 8)
+              arlIP[i] = "0" + arlIP[i].ToString();
+            break;
+          default:
+            break;
+        }
+      }
+
+      return IPAddressTextBox.MakeIP((string[])arlIP.ToArray(typeof(string)), arg_ipNotation);
+    }
+
+    /// <summary>
+    /// Creates IP-Addresstring from given StrignArray and Notation
+    /// </summary>
+    /// <param name="arg_sIP">String-Array with elements for IP-Address</param>
+    /// <param name="arg_ipNotation">Notation of IP-Address</param>
+    /// <returns>IPAddress-String</returns>
+    protected static string MakeIP(string[] arg_sIP, IPNotation arg_ipNotation) {
+      string s = "";
+      for (int i = 0; i < arg_sIP.Length; i++) {
+        switch (arg_ipNotation) {
+          case IPNotation.IPv4Decimal:
+          case IPNotation.IPv4Binary:
+            s += (arg_sIP[i].Length > 0 ? arg_sIP[i] : "0") + (i < (arg_sIP.Length - 1) ? "." : "");
+            break;
+          case IPNotation.IPv4DecimalCIDR:
+          case IPNotation.IPv4BinaryCIDR:
+            s += (arg_sIP[i].Length > 0 ? arg_sIP[i] : "0") + (i < (arg_sIP.Length - 2) ? "." : (i < arg_sIP.Length - 1) ? "/" : "");
+            break;
+          default:
+            break;
+        }
+      }
+      return s;
+    }
+
+    #endregion //Helperfunctions
+  }
+}
Index: /trunk/sources/HeuristicLab.Hive.Client.Console/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Client.Console/Properties/AssemblyInfo.frame	(revision 717)
+++ /trunk/sources/HeuristicLab.Hive.Client.Console/Properties/AssemblyInfo.frame	(revision 717)
@@ -0,0 +1,59 @@
+#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;
+
+// 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.Client.Console")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2008 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("1131CD44-0FDC-4f7b-9D7E-8029B26EAE05")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyFileVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.Hive.Client.Console/Properties/Resources.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Client.Console/Properties/Resources.Designer.cs	(revision 717)
+++ /trunk/sources/HeuristicLab.Hive.Client.Console/Properties/Resources.Designer.cs	(revision 717)
@@ -0,0 +1,62 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.3053
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HeuristicLab.Hive.Client.Console.Properties {
+
+
+  /// <summary>
+  ///   A strongly-typed resource class, for looking up localized strings, etc.
+  /// </summary>
+  // This class was auto-generated by the StronglyTypedResourceBuilder
+  // class via a tool like ResGen or Visual Studio.
+  // To add or remove a member, edit your .ResX file then rerun ResGen
+  // with the /str option, or rebuild your VS project.
+  [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+  internal class Resources {
+
+    private static global::System.Resources.ResourceManager resourceMan;
+
+    private static global::System.Globalization.CultureInfo resourceCulture;
+
+    [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+    internal Resources() {
+    }
+
+    /// <summary>
+    ///   Returns the cached ResourceManager instance used by this class.
+    /// </summary>
+    [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+    internal static global::System.Resources.ResourceManager ResourceManager {
+      get {
+        if ((resourceMan == null)) {
+          global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HeuristicLab.Hive.Client.Console.Properties.Resources", typeof(Resources).Assembly);
+          resourceMan = temp;
+        }
+        return resourceMan;
+      }
+    }
+
+    /// <summary>
+    ///   Overrides the current thread's CurrentUICulture property for all
+    ///   resource lookups using this strongly typed resource class.
+    /// </summary>
+    [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+    internal static global::System.Globalization.CultureInfo Culture {
+      get {
+        return resourceCulture;
+      }
+      set {
+        resourceCulture = value;
+      }
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Hive.Client.Console/Properties/Resources.resx
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Client.Console/Properties/Resources.resx	(revision 717)
+++ /trunk/sources/HeuristicLab.Hive.Client.Console/Properties/Resources.resx	(revision 717)
@@ -0,0 +1,117 @@
+﻿<?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.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: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" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+            </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" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+            </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>
+</root>
Index: /trunk/sources/HeuristicLab.Hive.Client.Console/Properties/Settings.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Client.Console/Properties/Settings.Designer.cs	(revision 717)
+++ /trunk/sources/HeuristicLab.Hive.Client.Console/Properties/Settings.Designer.cs	(revision 717)
@@ -0,0 +1,26 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.3053
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HeuristicLab.Hive.Client.Console.Properties {
+
+
+  [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+  [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.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;
+      }
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Hive.Client.Console/Properties/Settings.settings
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Client.Console/Properties/Settings.settings	(revision 717)
+++ /trunk/sources/HeuristicLab.Hive.Client.Console/Properties/Settings.settings	(revision 717)
@@ -0,0 +1,7 @@
+﻿<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
+  <Profiles>
+    <Profile Name="(Default)" />
+  </Profiles>
+  <Settings />
+</SettingsFile>
Index: /trunk/sources/HeuristicLab.sln
===================================================================
--- /trunk/sources/HeuristicLab.sln	(revision 716)
+++ /trunk/sources/HeuristicLab.sln	(revision 717)
@@ -117,4 +117,6 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Hive.Client.Common", "HeuristicLab.Hive.Client.Common\HeuristicLab.Hive.Client.Common.csproj", "{89F4BC52-C174-481E-9BD2-3814171020E8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Hive.Client.Console", "HeuristicLab.Hive.Client.Console\HeuristicLab.Hive.Client.Console.csproj", "{8B14A35E-DBDF-43EB-B019-23E9FBC5A35E}"
 EndProject
 Global
@@ -537,4 +539,10 @@
 		{89F4BC52-C174-481E-9BD2-3814171020E8}.Release|Any CPU.Build.0 = Release|Any CPU
 		{89F4BC52-C174-481E-9BD2-3814171020E8}.Release|x86.ActiveCfg = Release|Any CPU
+		{8B14A35E-DBDF-43EB-B019-23E9FBC5A35E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{8B14A35E-DBDF-43EB-B019-23E9FBC5A35E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{8B14A35E-DBDF-43EB-B019-23E9FBC5A35E}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{8B14A35E-DBDF-43EB-B019-23E9FBC5A35E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{8B14A35E-DBDF-43EB-B019-23E9FBC5A35E}.Release|Any CPU.Build.0 = Release|Any CPU
+		{8B14A35E-DBDF-43EB-B019-23E9FBC5A35E}.Release|x86.ActiveCfg = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
Index: /trunk/sources/HeuristicLab/CopyAssemblies.cmd
===================================================================
--- /trunk/sources/HeuristicLab/CopyAssemblies.cmd	(revision 716)
+++ /trunk/sources/HeuristicLab/CopyAssemblies.cmd	(revision 717)
@@ -65,2 +65,3 @@
 copy %1\HeuristicLab.Hive.Client.Core\%2\HeuristicLab.Hive.Client.Core-3.2.dll .\plugins
 copy %1\HeuristicLab.Hive.Client.Common\%2\HeuristicLab.Hive.Client.Common-3.2.dll .\plugins
+copy %1\HeuristicLab.Hive.Client.Console\%2\HeuristicLab.Hive.Client.Console-3.2.dll .\plugins
