Index: branches/MPI/HeuristicLab.MPIEngine/3.3/HeuristicLab.MPIEngine-3.3.csproj
===================================================================
--- branches/MPI/HeuristicLab.MPIEngine/3.3/HeuristicLab.MPIEngine-3.3.csproj	(revision 6395)
+++ branches/MPI/HeuristicLab.MPIEngine/3.3/HeuristicLab.MPIEngine-3.3.csproj	(revision 6398)
@@ -110,7 +110,19 @@
       <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Common-3.3.dll</HintPath>
     </Reference>
+    <Reference Include="HeuristicLab.Common.Resources-3.3">
+      <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Common.Resources-3.3.dll</HintPath>
+    </Reference>
     <Reference Include="HeuristicLab.Core-3.3">
       <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Core-3.3.dll</HintPath>
     </Reference>
+    <Reference Include="HeuristicLab.Core.Views-3.3">
+      <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Core.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.MainForm-3.3">
+      <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.MainForm-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.MainForm.WindowsForms-3.3">
+      <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.MainForm.WindowsForms-3.3.dll</HintPath>
+    </Reference>
     <Reference Include="HeuristicLab.Optimization-3.3">
       <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Optimization-3.3.dll</HintPath>
@@ -133,6 +145,8 @@
     <Reference Include="System" />
     <Reference Include="System.Core" />
+    <Reference Include="System.Drawing" />
     <Reference Include="System.Runtime.Serialization" />
     <Reference Include="System.ServiceModel" />
+    <Reference Include="System.Windows.Forms" />
     <Reference Include="System.Xml.Linq" />
     <Reference Include="System.Data.DataSetExtensions" />
@@ -141,4 +155,10 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="MPIEngineView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="MPIEngineView.designer.cs">
+      <DependentUpon>MPIEngineView.cs</DependentUpon>
+    </Compile>
     <Compile Include="HeuristicLabMPIEnginePlugin.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
Index: branches/MPI/HeuristicLab.MPIEngine/3.3/HeuristicLabMPIEnginePlugin.cs.frame
===================================================================
--- branches/MPI/HeuristicLab.MPIEngine/3.3/HeuristicLabMPIEnginePlugin.cs.frame	(revision 6395)
+++ branches/MPI/HeuristicLab.MPIEngine/3.3/HeuristicLabMPIEnginePlugin.cs.frame	(revision 6398)
@@ -33,5 +33,9 @@
   [PluginDependency("HeuristicLab.Collections", "3.3")]
   [PluginDependency("HeuristicLab.Common", "3.3")]
+  [PluginDependency("HeuristicLab.Common.Resources", "3.3")]
   [PluginDependency("HeuristicLab.Core", "3.3")]
+  [PluginDependency("HeuristicLab.Core.Views", "3.3")]
+  [PluginDependency("HeuristicLab.MainForm", "3.3")]
+  [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]
   [PluginDependency("HeuristicLab.MPInet", "1.0.0")]
   [PluginDependency("HeuristicLab.MPIAlgorithmRunner", "3.3")]
Index: branches/MPI/HeuristicLab.MPIEngine/3.3/MPIEngine.cs
===================================================================
--- branches/MPI/HeuristicLab.MPIEngine/3.3/MPIEngine.cs	(revision 6395)
+++ branches/MPI/HeuristicLab.MPIEngine/3.3/MPIEngine.cs	(revision 6398)
@@ -37,4 +37,5 @@
 using Microsoft.Hpc.Scheduler.Properties;
 using System.Xml;
+using System.ComponentModel;
 
 namespace HeuristicLab.MPIEngine {
@@ -47,17 +48,106 @@
   public class MPIEngine : Engine {
     private string username;
+
+    [Category("MPISettings")]
+    [Browsable(true)]
+    public string UserName {
+      get {
+        return username;
+      }
+
+      set {
+        username = value;
+      }
+    }
+
     private string password;
 
+    [Category("MPISettings")]
+    [Browsable(true)]
+    [PasswordPropertyText(true)]
+    public string Password {
+      get {
+        return password;
+      }
+
+      set {
+        password = value;
+      }
+    }
+
     [Storable]
     private string headNode;
 
+    [Category("MPISettings")]
+    [Browsable(true)]
+    public string HeadNode {
+      get {
+        return headNode;
+      }
+
+      set {
+        headNode = value;
+      }
+    }
+
     [Storable]
     private string path;
 
+    [Category("MPISettings")]
+    [Browsable(true)]
+    public string Path {
+      get {
+        return path;
+      }
+
+      set {
+        path = value;
+      }
+    }
+
+    [Storable]
+    private int updateInterval;
+
+    [Category("MPISettings")]
+    [Browsable(true)]
+    public int UpdateInterval {
+      get {
+        return updateInterval;
+      }
+
+      set {
+        updateInterval = value;
+      }
+    }
+
     [Storable]
     private int cpuPerNode;
 
+    [Category("MPISettings")]
+    [Browsable(true)]
+    public int CpuPerNode {
+      get {
+        return cpuPerNode;
+      }
+
+      set {
+        cpuPerNode = value;
+      }
+    }
+
     [Storable]
     private List<string> requestedNodes;
+
+    [Category("MPISettings")]
+    [Browsable(true)]
+    public List<string> RequestedNodes {
+      get {
+        return requestedNodes;
+      }
+
+      set {
+        requestedNodes = value;
+      }
+    }
 
     [StorableConstructor]
@@ -69,4 +159,5 @@
       headNode = original.headNode;
       path = original.path;
+      updateInterval = original.updateInterval;
       cpuPerNode = original.cpuPerNode;
       requestedNodes = new List<string>();
@@ -80,5 +171,6 @@
       headNode = "blade00.hpc.fh-hagenberg.at";
       path = @"C:\public\MPISupport";
-      cpuPerNode = 8;
+      updateInterval = 5000;
+      cpuPerNode = 3;
       requestedNodes = new List<string>();
       requestedNodes.Add("BLADE00");
@@ -172,8 +264,10 @@
           netTCPBinding.ReaderQuotas = quotas;
           netTCPBinding.MaxReceivedMessageSize = int.MaxValue;
+          netTCPBinding.SendTimeout = new TimeSpan(100000000);
+          netTCPBinding.ReceiveTimeout = new TimeSpan(100000000);
           ChannelFactory<IAlgorithmBroker> factory = new ChannelFactory<IAlgorithmBroker>(netTCPBinding, address);
           IAlgorithmBroker proxy = factory.CreateChannel();
 
-          proxy.TransmitAlgorithm(new MPITransportWrapper<IAlgorithm>(algorithm));
+          proxy.TransmitAlgorithm(new MPITransportWrapper<IAlgorithm>(algorithm), updateInterval);
 
           while (!proxy.IsAlgorithmTerminated()) {
@@ -191,5 +285,5 @@
             }
 
-            System.Threading.Thread.Sleep(5000);
+            System.Threading.Thread.Sleep(updateInterval);
           }
         }
Index: branches/MPI/HeuristicLab.MPIEngine/3.3/MPIEngineView.cs
===================================================================
--- branches/MPI/HeuristicLab.MPIEngine/3.3/MPIEngineView.cs	(revision 6398)
+++ branches/MPI/HeuristicLab.MPIEngine/3.3/MPIEngineView.cs	(revision 6398)
@@ -0,0 +1,114 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Windows.Forms;
+using HeuristicLab.Core;
+using HeuristicLab.Core.Views;
+using HeuristicLab.MainForm;
+using System.ComponentModel;
+
+namespace HeuristicLab.MPIEngine {
+
+  /// <summary>
+  /// Engine for MPI
+  /// </summary>
+  [View("MPIEngine View")]
+  [Content(typeof(MPIEngine), true)]
+  public partial class MPIEngineView : ItemView {
+    #region Basics
+
+    /// <summary>
+    /// Gets or sets the current engine.
+    /// </summary>
+    /// <remarks>Uses property <see cref="ViewBase.Item"/> of base class <see cref="EditorBase"/>.</remarks>
+    public new MPIEngine Content {
+      get { return (MPIEngine)base.Content; }
+      set { base.Content = value; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of <see cref="DebugEngineView"/>.
+    /// </summary>
+    public MPIEngineView() {
+      InitializeComponent();
+    }
+
+    /// <summary>
+    /// Removes the event handlers from the underlying <see cref="IEngine"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="ViewBase.RemoveItemEvents"/> of base class <see cref="ViewBase"/>.</remarks>
+    protected override void DeregisterContentEvents() {
+      if (Content != null) {
+        Content.ExecutionStateChanged -= new EventHandler(Content_ExecutionStateChanged);
+        Content.ExecutionTimeChanged -= new EventHandler(Content_ExecutionTimeChanged);
+      }
+      
+      base.DeregisterContentEvents();   
+    }
+
+    /// <summary>
+    /// Adds event handlers to the underlying <see cref="IEngine"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="ViewBase.AddItemEvents"/> of base class <see cref="ViewBase"/>.</remarks>
+    protected override void RegisterContentEvents() {
+      base.RegisterContentEvents();
+
+      if (Content != null) {
+        Content.ExecutionStateChanged += new EventHandler(Content_ExecutionStateChanged);
+        Content.ExecutionTimeChanged += new EventHandler(Content_ExecutionTimeChanged);
+      }
+    }
+
+    void Content_ExecutionTimeChanged(object sender, EventArgs e) {
+      if (InvokeRequired) {
+        Invoke(new EventHandler(Content_ExecutionTimeChanged), sender, e);
+      } else {
+        propertyGrid.Refresh();
+      }
+    }
+
+    void Content_ExecutionStateChanged(object sender, EventArgs e) {
+      if (InvokeRequired) {
+        Invoke(new EventHandler(Content_ExecutionStateChanged), sender, e);
+      } else {
+        propertyGrid.Refresh();
+      }
+    }
+
+    /// <summary>
+    /// Updates all controls with the latest data of the model.
+    /// </summary>
+    /// <remarks>Calls <see cref="EditorBase.UpdateControls"/> of base class <see cref="EditorBase"/>.</remarks>
+    protected override void OnContentChanged() {
+      this.propertyGrid.SelectedObject = Content;
+
+      base.OnContentChanged();
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+    }
+
+    #endregion
+
+  }
+}
Index: branches/MPI/HeuristicLab.MPIEngine/3.3/MPIEngineView.designer.cs
===================================================================
--- branches/MPI/HeuristicLab.MPIEngine/3.3/MPIEngineView.designer.cs	(revision 6398)
+++ branches/MPI/HeuristicLab.MPIEngine/3.3/MPIEngineView.designer.cs	(revision 6398)
@@ -0,0 +1,74 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.MPIEngine {
+  partial class MPIEngineView {
+    /// <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.propertyGrid = new System.Windows.Forms.PropertyGrid();
+      this.SuspendLayout();
+      // 
+      // propertyGrid
+      // 
+      this.propertyGrid.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.propertyGrid.Location = new System.Drawing.Point(0, 0);
+      this.propertyGrid.Name = "propertyGrid";
+      this.propertyGrid.Size = new System.Drawing.Size(740, 409);
+      this.propertyGrid.TabIndex = 0;
+      // 
+      // MPIEngineView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.Controls.Add(this.propertyGrid);
+      this.Name = "MPIEngineView";
+      this.Size = new System.Drawing.Size(740, 409);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.PropertyGrid propertyGrid;
+
+
+  }
+}
