Index: trunk/sources/HeuristicLab.CEDMA.Server/3.3/DispatcherBase.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Server/3.3/DispatcherBase.cs	(revision 2093)
+++ trunk/sources/HeuristicLab.CEDMA.Server/3.3/DispatcherBase.cs	(revision 2094)
@@ -41,5 +41,5 @@
     private IStore store;
     private DataSet dataset;
-
+    internal event EventHandler Changed;
     public IEnumerable<string> AllowedTargetVariables {
       get {
@@ -68,4 +68,5 @@
         if (datasetEntities.Count() == 0) return null;
         dataset = new DataSet(store, datasetEntities.ElementAt(0));
+        OnChanged();
       }
       int targetVariable = SelectTargetVariable(dataset.Problem.AllowedTargetVariables.ToArray());
@@ -108,4 +109,8 @@
     }
 
+    private void OnChanged() {
+      if (Changed != null) Changed(this, new EventArgs());
+    }
+
     #region IViewable Members
 
Index: trunk/sources/HeuristicLab.CEDMA.Server/3.3/DispatcherView.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Server/3.3/DispatcherView.cs	(revision 2093)
+++ trunk/sources/HeuristicLab.CEDMA.Server/3.3/DispatcherView.cs	(revision 2094)
@@ -12,9 +12,9 @@
   public partial class DispatcherView : ViewBase {
     private DispatcherBase dispatcher;
-    public DispatcherView(DispatcherBase dispatcher) {
+    public DispatcherView(DispatcherBase dispatcher) : base() {
       this.dispatcher = dispatcher;
       InitializeComponent();
-
       UpdateControls();
+      dispatcher.Changed += (sender, args) => UpdateControls();
     }
 
Index: trunk/sources/HeuristicLab.CEDMA.Server/3.3/ExecuterBase.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Server/3.3/ExecuterBase.cs	(revision 2093)
+++ trunk/sources/HeuristicLab.CEDMA.Server/3.3/ExecuterBase.cs	(revision 2094)
@@ -42,4 +42,6 @@
 namespace HeuristicLab.CEDMA.Server {
   public abstract class ExecuterBase : IExecuter {
+    internal event EventHandler Changed;
+
     private IDispatcher dispatcher;
     protected IDispatcher Dispatcher {
@@ -54,4 +56,5 @@
         if (value < 0) throw new ArgumentException("Only positive values are allowed for MaxActiveJobs");
         maxActiveJobs = value;
+        OnChanged();
       }
     }
@@ -130,4 +133,7 @@
     public abstract string[] GetJobs();
 
+    protected internal void OnChanged() {
+      if (Changed != null) Changed(this, new EventArgs());
+    }
 
     #region IViewable Members
Index: trunk/sources/HeuristicLab.CEDMA.Server/3.3/ExecuterView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Server/3.3/ExecuterView.Designer.cs	(revision 2093)
+++ trunk/sources/HeuristicLab.CEDMA.Server/3.3/ExecuterView.Designer.cs	(revision 2094)
@@ -24,6 +24,4 @@
     /// </summary>
     private void InitializeComponent() {
-      this.components = new System.ComponentModel.Container();
-      this.refreshTimer = new System.Windows.Forms.Timer(this.components);
       this.jobsList = new System.Windows.Forms.ListBox();
       this.maxJobsLabel = new System.Windows.Forms.Label();
@@ -31,9 +29,4 @@
       ((System.ComponentModel.ISupportInitialize)(this.maxActiveJobs)).BeginInit();
       this.SuspendLayout();
-      // 
-      // refreshTimer
-      // 
-      this.refreshTimer.Interval = 1000;
-      this.refreshTimer.Tick += new System.EventHandler(this.refreshTimer_Tick);
       // 
       // jobsList
@@ -86,5 +79,4 @@
     #endregion
 
-    private System.Windows.Forms.Timer refreshTimer;
     private System.Windows.Forms.ListBox jobsList;
     private System.Windows.Forms.Label maxJobsLabel;
Index: trunk/sources/HeuristicLab.CEDMA.Server/3.3/ExecuterView.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Server/3.3/ExecuterView.cs	(revision 2093)
+++ trunk/sources/HeuristicLab.CEDMA.Server/3.3/ExecuterView.cs	(revision 2094)
@@ -12,15 +12,23 @@
   public partial class ExecuterView : ViewBase {
     private ExecuterBase executer;
-    public ExecuterView(ExecuterBase executer) {
+    public ExecuterView(ExecuterBase executer)
+      : base() {
       this.executer = executer;
       InitializeComponent();
-      refreshTimer.Enabled = true;
+      maxActiveJobs.Value = executer.MaxActiveJobs;
+      executer.Changed += (sender, args) => UpdateControls();
     }
 
-    private void refreshTimer_Tick(object sender, EventArgs e) {
-      jobsList.DataSource = executer.GetJobs();
+    protected override void UpdateControls() {
+      if (InvokeRequired) Invoke((Action)UpdateControls);
+      else {
+        base.UpdateControls();
+        maxActiveJobs.Value = executer.MaxActiveJobs;
+        jobsList.DataSource = executer.GetJobs();
+        jobsList.Refresh();
+      }
     }
 
-    private void maxActiveJobsUpDown_ValueChanged(object sender, EventArgs e) {
+    private void maxActiveJobs_ValueChanged(object sender, EventArgs e) {
       executer.MaxActiveJobs = Convert.ToInt32(maxActiveJobs.Value);
     }
Index: trunk/sources/HeuristicLab.CEDMA.Server/3.3/ExecuterView.resx
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Server/3.3/ExecuterView.resx	(revision 2093)
+++ trunk/sources/HeuristicLab.CEDMA.Server/3.3/ExecuterView.resx	(revision 2094)
@@ -118,6 +118,3 @@
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
-  <metadata name="refreshTimer.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.CEDMA.Server/3.3/GridExecuter.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Server/3.3/GridExecuter.cs	(revision 2093)
+++ trunk/sources/HeuristicLab.CEDMA.Server/3.3/GridExecuter.cs	(revision 2094)
@@ -61,5 +61,5 @@
 
     protected override void StartJobs() {
-      Dictionary<WaitHandle, AsyncGridResult> asyncResults = new Dictionary<WaitHandle,AsyncGridResult>();
+      Dictionary<WaitHandle, AsyncGridResult> asyncResults = new Dictionary<WaitHandle, AsyncGridResult>();
       while (true) {
         try {
@@ -80,4 +80,5 @@
                 activeAlgorithms.Add(asyncResult, algorithm);
               }
+              OnChanged();
             }
           }
@@ -95,4 +96,5 @@
               asyncResults.Remove(readyHandle);
             }
+            OnChanged();
             try {
               IEngine finishedEngine = jobManager.EndExecuteEngine(finishedResult);
Index: trunk/sources/HeuristicLab.CEDMA.Server/3.3/HeuristicLab.CEDMA.Server-3.3.csproj
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Server/3.3/HeuristicLab.CEDMA.Server-3.3.csproj	(revision 2093)
+++ trunk/sources/HeuristicLab.CEDMA.Server/3.3/HeuristicLab.CEDMA.Server-3.3.csproj	(revision 2094)
@@ -112,9 +112,9 @@
     <Compile Include="HeuristicLabCedmaServerPlugin.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="ServerForm.cs">
+    <Compile Include="ServerView.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="ServerForm.designer.cs">
-      <DependentUpon>ServerForm.cs</DependentUpon>
+    <Compile Include="ServerView.designer.cs">
+      <DependentUpon>ServerView.cs</DependentUpon>
     </Compile>
     <Compile Include="SimpleDispatcher.cs" />
@@ -177,7 +177,6 @@
       <DependentUpon>ExecuterView.cs</DependentUpon>
     </EmbeddedResource>
-    <EmbeddedResource Include="ServerForm.resx">
-      <DependentUpon>ServerForm.cs</DependentUpon>
-      <SubType>Designer</SubType>
+    <EmbeddedResource Include="ServerView.resx">
+      <DependentUpon>ServerView.cs</DependentUpon>
     </EmbeddedResource>
   </ItemGroup>
Index: trunk/sources/HeuristicLab.CEDMA.Server/3.3/Server.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Server/3.3/Server.cs	(revision 2093)
+++ trunk/sources/HeuristicLab.CEDMA.Server/3.3/Server.cs	(revision 2094)
@@ -108,5 +108,5 @@
 
     public IView CreateView() {
-      return new ServerForm(this);
+      return new ServerView(this);
     }
 
Index: trunk/sources/HeuristicLab.CEDMA.Server/3.3/ServerForm.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Server/3.3/ServerForm.cs	(revision 2093)
+++ 	(revision )
@@ -1,63 +1,0 @@
-#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;
-using System.ServiceModel;
-using System.ServiceModel.Description;
-using HeuristicLab.PluginInfrastructure;
-using System.Net;
-using HeuristicLab.CEDMA.DB;
-using HeuristicLab.CEDMA.DB.Interfaces;
-using System.Data.Common;
-using System.Threading;
-using HeuristicLab.Grid;
-using HeuristicLab.Data;
-using HeuristicLab.Core;
-
-namespace HeuristicLab.CEDMA.Server {
-  public partial class ServerForm : ViewBase {
-    private Server server;
-
-    public ServerForm(Server server) {
-      this.server = server;
-      InitializeComponent();
-      addressTextBox.Text = server.CedmaServiceUrl;
-    }
-
-    private void connectButton_Click(object sender, EventArgs e) {
-      server.Connect(address.Text);
-      UserControl executerControl = (UserControl)server.Executer.CreateView();
-      executerControl.Dock = DockStyle.Fill;
-      executerTabPage.Controls.Add(executerControl);
-      UserControl dispatcherControl = (UserControl)server.Dispatcher.CreateView();
-      dispatcherControl.Dock = DockStyle.Fill;
-      dispatcherTabPage.Controls.Add(dispatcherControl);
-      connectButton.Enabled = false;      
-    }
-  }
-}
Index: trunk/sources/HeuristicLab.CEDMA.Server/3.3/ServerForm.designer.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Server/3.3/ServerForm.designer.cs	(revision 2093)
+++ 	(revision )
@@ -1,163 +1,0 @@
-#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.CEDMA.Server {
-  partial class ServerForm {
-    /// <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.addressTextBox = new System.Windows.Forms.TextBox();
-      this.externalAddressLabel = new System.Windows.Forms.Label();
-      this.gridAddressLabel = new System.Windows.Forms.Label();
-      this.address = new System.Windows.Forms.TextBox();
-      this.connectButton = new System.Windows.Forms.Button();
-      this.tabControl = new System.Windows.Forms.TabControl();
-      this.executerTabPage = new System.Windows.Forms.TabPage();
-      this.dispatcherTabPage = new System.Windows.Forms.TabPage();
-      this.tabControl.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // addressTextBox
-      // 
-      this.addressTextBox.Location = new System.Drawing.Point(106, 6);
-      this.addressTextBox.Name = "addressTextBox";
-      this.addressTextBox.ReadOnly = true;
-      this.addressTextBox.Size = new System.Drawing.Size(229, 20);
-      this.addressTextBox.TabIndex = 0;
-      // 
-      // externalAddressLabel
-      // 
-      this.externalAddressLabel.AutoSize = true;
-      this.externalAddressLabel.Location = new System.Drawing.Point(12, 9);
-      this.externalAddressLabel.Name = "externalAddressLabel";
-      this.externalAddressLabel.Size = new System.Drawing.Size(48, 13);
-      this.externalAddressLabel.TabIndex = 3;
-      this.externalAddressLabel.Text = "&Address:";
-      // 
-      // gridAddressLabel
-      // 
-      this.gridAddressLabel.AutoSize = true;
-      this.gridAddressLabel.Location = new System.Drawing.Point(12, 35);
-      this.gridAddressLabel.Name = "gridAddressLabel";
-      this.gridAddressLabel.Size = new System.Drawing.Size(69, 13);
-      this.gridAddressLabel.TabIndex = 9;
-      this.gridAddressLabel.Text = "&Grid address:";
-      // 
-      // address
-      // 
-      this.address.Location = new System.Drawing.Point(106, 32);
-      this.address.Name = "address";
-      this.address.Size = new System.Drawing.Size(160, 20);
-      this.address.TabIndex = 8;
-      // 
-      // connectButton
-      // 
-      this.connectButton.Location = new System.Drawing.Point(272, 30);
-      this.connectButton.Name = "connectButton";
-      this.connectButton.Size = new System.Drawing.Size(75, 23);
-      this.connectButton.TabIndex = 10;
-      this.connectButton.Text = "Connect";
-      this.connectButton.UseVisualStyleBackColor = true;
-      this.connectButton.Click += new System.EventHandler(this.connectButton_Click);
-      // 
-      // 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.executerTabPage);
-      this.tabControl.Controls.Add(this.dispatcherTabPage);
-      this.tabControl.Location = new System.Drawing.Point(3, 58);
-      this.tabControl.Name = "tabControl";
-      this.tabControl.SelectedIndex = 0;
-      this.tabControl.Size = new System.Drawing.Size(573, 543);
-      this.tabControl.TabIndex = 14;
-      // 
-      // executerTabPage
-      // 
-      this.executerTabPage.Location = new System.Drawing.Point(4, 22);
-      this.executerTabPage.Name = "executerTabPage";
-      this.executerTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.executerTabPage.Size = new System.Drawing.Size(565, 517);
-      this.executerTabPage.TabIndex = 0;
-      this.executerTabPage.Text = "Executer";
-      this.executerTabPage.UseVisualStyleBackColor = true;
-      // 
-      // dispatcherTabPage
-      // 
-      this.dispatcherTabPage.Location = new System.Drawing.Point(4, 22);
-      this.dispatcherTabPage.Name = "dispatcherTabPage";
-      this.dispatcherTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.dispatcherTabPage.Size = new System.Drawing.Size(565, 517);
-      this.dispatcherTabPage.TabIndex = 1;
-      this.dispatcherTabPage.Text = "Dispatcher";
-      this.dispatcherTabPage.UseVisualStyleBackColor = true;
-      // 
-      // ServerForm
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.tabControl);
-      this.Controls.Add(this.connectButton);
-      this.Controls.Add(this.gridAddressLabel);
-      this.Controls.Add(this.address);
-      this.Controls.Add(this.externalAddressLabel);
-      this.Controls.Add(this.addressTextBox);
-      this.Name = "ServerForm";
-      this.Size = new System.Drawing.Size(579, 604);
-      this.tabControl.ResumeLayout(false);
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.TextBox addressTextBox;
-    private System.Windows.Forms.Label externalAddressLabel;
-    private System.Windows.Forms.Label gridAddressLabel;
-    private System.Windows.Forms.TextBox address;
-    private System.Windows.Forms.Button connectButton;
-    private System.Windows.Forms.TabControl tabControl;
-    private System.Windows.Forms.TabPage executerTabPage;
-    private System.Windows.Forms.TabPage dispatcherTabPage;
-  }
-}
Index: trunk/sources/HeuristicLab.CEDMA.Server/3.3/ServerForm.resx
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Server/3.3/ServerForm.resx	(revision 2093)
+++ 	(revision )
@@ -1,120 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=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.CEDMA.Server/3.3/ServerView.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Server/3.3/ServerView.cs	(revision 2094)
+++ trunk/sources/HeuristicLab.CEDMA.Server/3.3/ServerView.cs	(revision 2094)
@@ -0,0 +1,63 @@
+#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;
+using System.ServiceModel;
+using System.ServiceModel.Description;
+using HeuristicLab.PluginInfrastructure;
+using System.Net;
+using HeuristicLab.CEDMA.DB;
+using HeuristicLab.CEDMA.DB.Interfaces;
+using System.Data.Common;
+using System.Threading;
+using HeuristicLab.Grid;
+using HeuristicLab.Data;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.CEDMA.Server {
+  public partial class ServerView : ViewBase {
+    private Server server;
+
+    public ServerView(Server server) : base() {
+      this.server = server;
+      InitializeComponent();
+      addressTextBox.Text = server.CedmaServiceUrl;
+    }
+
+    private void connectButton_Click(object sender, EventArgs e) {
+      server.Connect(address.Text);
+      UserControl executerControl = (UserControl)server.Executer.CreateView();
+      executerControl.Dock = DockStyle.Fill;
+      executerTabPage.Controls.Add(executerControl);
+      UserControl dispatcherControl = (UserControl)server.Dispatcher.CreateView();
+      dispatcherControl.Dock = DockStyle.Fill;
+      dispatcherTabPage.Controls.Add(dispatcherControl);
+      connectButton.Enabled = false;      
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.CEDMA.Server/3.3/ServerView.designer.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Server/3.3/ServerView.designer.cs	(revision 2094)
+++ trunk/sources/HeuristicLab.CEDMA.Server/3.3/ServerView.designer.cs	(revision 2094)
@@ -0,0 +1,163 @@
+#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.CEDMA.Server {
+  partial class ServerView {
+    /// <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.addressTextBox = new System.Windows.Forms.TextBox();
+      this.externalAddressLabel = new System.Windows.Forms.Label();
+      this.gridAddressLabel = new System.Windows.Forms.Label();
+      this.address = new System.Windows.Forms.TextBox();
+      this.connectButton = new System.Windows.Forms.Button();
+      this.tabControl = new System.Windows.Forms.TabControl();
+      this.executerTabPage = new System.Windows.Forms.TabPage();
+      this.dispatcherTabPage = new System.Windows.Forms.TabPage();
+      this.tabControl.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // addressTextBox
+      // 
+      this.addressTextBox.Location = new System.Drawing.Point(106, 6);
+      this.addressTextBox.Name = "addressTextBox";
+      this.addressTextBox.ReadOnly = true;
+      this.addressTextBox.Size = new System.Drawing.Size(229, 20);
+      this.addressTextBox.TabIndex = 0;
+      // 
+      // externalAddressLabel
+      // 
+      this.externalAddressLabel.AutoSize = true;
+      this.externalAddressLabel.Location = new System.Drawing.Point(12, 9);
+      this.externalAddressLabel.Name = "externalAddressLabel";
+      this.externalAddressLabel.Size = new System.Drawing.Size(48, 13);
+      this.externalAddressLabel.TabIndex = 3;
+      this.externalAddressLabel.Text = "&Address:";
+      // 
+      // gridAddressLabel
+      // 
+      this.gridAddressLabel.AutoSize = true;
+      this.gridAddressLabel.Location = new System.Drawing.Point(12, 35);
+      this.gridAddressLabel.Name = "gridAddressLabel";
+      this.gridAddressLabel.Size = new System.Drawing.Size(69, 13);
+      this.gridAddressLabel.TabIndex = 9;
+      this.gridAddressLabel.Text = "&Grid address:";
+      // 
+      // address
+      // 
+      this.address.Location = new System.Drawing.Point(106, 32);
+      this.address.Name = "address";
+      this.address.Size = new System.Drawing.Size(160, 20);
+      this.address.TabIndex = 8;
+      // 
+      // connectButton
+      // 
+      this.connectButton.Location = new System.Drawing.Point(272, 30);
+      this.connectButton.Name = "connectButton";
+      this.connectButton.Size = new System.Drawing.Size(75, 23);
+      this.connectButton.TabIndex = 10;
+      this.connectButton.Text = "Connect";
+      this.connectButton.UseVisualStyleBackColor = true;
+      this.connectButton.Click += new System.EventHandler(this.connectButton_Click);
+      // 
+      // 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.executerTabPage);
+      this.tabControl.Controls.Add(this.dispatcherTabPage);
+      this.tabControl.Location = new System.Drawing.Point(3, 58);
+      this.tabControl.Name = "tabControl";
+      this.tabControl.SelectedIndex = 0;
+      this.tabControl.Size = new System.Drawing.Size(573, 543);
+      this.tabControl.TabIndex = 14;
+      // 
+      // executerTabPage
+      // 
+      this.executerTabPage.Location = new System.Drawing.Point(4, 22);
+      this.executerTabPage.Name = "executerTabPage";
+      this.executerTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.executerTabPage.Size = new System.Drawing.Size(565, 517);
+      this.executerTabPage.TabIndex = 0;
+      this.executerTabPage.Text = "Executer";
+      this.executerTabPage.UseVisualStyleBackColor = true;
+      // 
+      // dispatcherTabPage
+      // 
+      this.dispatcherTabPage.Location = new System.Drawing.Point(4, 22);
+      this.dispatcherTabPage.Name = "dispatcherTabPage";
+      this.dispatcherTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.dispatcherTabPage.Size = new System.Drawing.Size(565, 517);
+      this.dispatcherTabPage.TabIndex = 1;
+      this.dispatcherTabPage.Text = "Dispatcher";
+      this.dispatcherTabPage.UseVisualStyleBackColor = true;
+      // 
+      // ServerForm
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.tabControl);
+      this.Controls.Add(this.connectButton);
+      this.Controls.Add(this.gridAddressLabel);
+      this.Controls.Add(this.address);
+      this.Controls.Add(this.externalAddressLabel);
+      this.Controls.Add(this.addressTextBox);
+      this.Name = "ServerForm";
+      this.Size = new System.Drawing.Size(579, 604);
+      this.tabControl.ResumeLayout(false);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.TextBox addressTextBox;
+    private System.Windows.Forms.Label externalAddressLabel;
+    private System.Windows.Forms.Label gridAddressLabel;
+    private System.Windows.Forms.TextBox address;
+    private System.Windows.Forms.Button connectButton;
+    private System.Windows.Forms.TabControl tabControl;
+    private System.Windows.Forms.TabPage executerTabPage;
+    private System.Windows.Forms.TabPage dispatcherTabPage;
+  }
+}
Index: trunk/sources/HeuristicLab.CEDMA.Server/3.3/ServerView.resx
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Server/3.3/ServerView.resx	(revision 2094)
+++ trunk/sources/HeuristicLab.CEDMA.Server/3.3/ServerView.resx	(revision 2094)
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=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>
