Index: /trunk/sources/HeuristicLab.Core.Views/3.3/Clipboard.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/Clipboard.Designer.cs	(revision 3350)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/Clipboard.Designer.cs	(revision 3351)
@@ -19,4 +19,7 @@
  */
 #endregion
+
+using System;
+using System.Windows.Forms;
 
 namespace HeuristicLab.Core.Views {
@@ -34,4 +37,8 @@
       if (disposing) {
         if (typeSelectorDialog != null) typeSelectorDialog.Dispose();
+        foreach (ListViewItem item in listView.Items) {
+          ((T)item.Tag).ItemImageChanged -= new EventHandler(Item_ItemImageChanged);
+          ((T)item.Tag).ToStringChanged -= new EventHandler(Item_ToStringChanged);
+        }
         if (components != null) components.Dispose();
       }
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ItemArrayView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ItemArrayView.Designer.cs	(revision 3350)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ItemArrayView.Designer.cs	(revision 3351)
@@ -38,4 +38,5 @@
         foreach (ListViewItem listViewItem in itemsListView.Items) {
           T item = listViewItem.Tag as T;
+          if (item != null) item.ItemImageChanged -= new EventHandler(Item_ItemImageChanged);
           if (item != null) item.ToStringChanged -= new EventHandler(Item_ToStringChanged);
         }
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ItemCollectionView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ItemCollectionView.Designer.cs	(revision 3350)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ItemCollectionView.Designer.cs	(revision 3351)
@@ -37,6 +37,8 @@
     protected override void Dispose(bool disposing) {
       if (disposing) {
-        foreach (ListViewItem item in itemsListView.Items)
+        foreach (ListViewItem item in itemsListView.Items) {
+          ((T)item.Tag).ItemImageChanged -= new EventHandler(Item_ItemImageChanged);
           ((T)item.Tag).ToStringChanged -= new EventHandler(Item_ToStringChanged);
+        }
         if (components != null) components.Dispose();
       }
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ItemListView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ItemListView.Designer.cs	(revision 3350)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ItemListView.Designer.cs	(revision 3351)
@@ -36,6 +36,8 @@
     protected override void Dispose(bool disposing) {
       if (disposing) {
-        foreach (ListViewItem item in itemsListView.Items)
+        foreach (ListViewItem item in itemsListView.Items) {
+          ((T)item.Tag).ItemImageChanged -= new EventHandler(Item_ItemImageChanged);
           ((T)item.Tag).ToStringChanged -= new EventHandler(Item_ToStringChanged);
+        }
         if (components != null) components.Dispose();
       }
Index: /trunk/sources/HeuristicLab.Core/3.3/Executable.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Executable.cs	(revision 3350)
+++ /trunk/sources/HeuristicLab.Core/3.3/Executable.cs	(revision 3351)
@@ -30,5 +30,11 @@
   public abstract class Executable : Item, IExecutable {
     public override Image ItemImage {
-      get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Event; }
+      get {
+        if (ExecutionState == ExecutionState.Prepared) return HeuristicLab.Common.Resources.VS2008ImageLibrary.Event;
+        else if (ExecutionState == ExecutionState.Started) return HeuristicLab.Common.Resources.VS2008ImageLibrary.Play;
+        else if (ExecutionState == ExecutionState.Paused) return HeuristicLab.Common.Resources.VS2008ImageLibrary.Pause;
+        else if (ExecutionState == ExecutionState.Stopped) return HeuristicLab.Common.Resources.VS2008ImageLibrary.Stop;
+        else return HeuristicLab.Common.Resources.VS2008ImageLibrary.Event;
+      }
     }
 
@@ -41,4 +47,5 @@
           executionState = value;
           OnExecutionStateChanged();
+          OnItemImageChanged();
         }
       }
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionView.Designer.cs	(revision 3350)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionView.Designer.cs	(revision 3351)
@@ -37,6 +37,8 @@
     protected override void Dispose(bool disposing) {
       if (disposing) {
-        foreach (ListViewItem item in itemsListView.Items)
+        foreach (ListViewItem item in itemsListView.Items) {
+          ((IRun)item.Tag).ItemImageChanged -= new EventHandler(Item_ItemImageChanged);
           ((IRun)item.Tag).ToStringChanged -= new EventHandler(Item_ToStringChanged);
+        }
         if (components != null) components.Dispose();
       }
Index: /trunk/sources/HeuristicLab.Optimization/3.3/Algorithm.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/Algorithm.cs	(revision 3350)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/Algorithm.cs	(revision 3351)
@@ -35,5 +35,11 @@
   public abstract class Algorithm : ParameterizedNamedItem, IAlgorithm {
     public override Image ItemImage {
-      get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Event; }
+      get {
+        if (ExecutionState == ExecutionState.Prepared) return HeuristicLab.Common.Resources.VS2008ImageLibrary.Event;
+        else if (ExecutionState == ExecutionState.Started) return HeuristicLab.Common.Resources.VS2008ImageLibrary.Play;
+        else if (ExecutionState == ExecutionState.Paused) return HeuristicLab.Common.Resources.VS2008ImageLibrary.Pause;
+        else if (ExecutionState == ExecutionState.Stopped) return HeuristicLab.Common.Resources.VS2008ImageLibrary.Stop;
+        else return HeuristicLab.Common.Resources.VS2008ImageLibrary.Event;
+      }
     }
 
@@ -46,4 +52,5 @@
           executionState = value;
           OnExecutionStateChanged();
+          OnItemImageChanged();
         }
       }
Index: /trunk/sources/HeuristicLab.Optimization/3.3/BatchRun.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/BatchRun.cs	(revision 3350)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/BatchRun.cs	(revision 3351)
@@ -36,5 +36,11 @@
   public sealed class BatchRun : NamedItem, IOptimizer {
     public override Image ItemImage {
-      get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Event; }
+      get {
+        if (ExecutionState == ExecutionState.Prepared) return HeuristicLab.Common.Resources.VS2008ImageLibrary.Event;
+        else if (ExecutionState == ExecutionState.Started) return HeuristicLab.Common.Resources.VS2008ImageLibrary.Play;
+        else if (ExecutionState == ExecutionState.Paused) return HeuristicLab.Common.Resources.VS2008ImageLibrary.Pause;
+        else if (ExecutionState == ExecutionState.Stopped) return HeuristicLab.Common.Resources.VS2008ImageLibrary.Stop;
+        else return HeuristicLab.Common.Resources.VS2008ImageLibrary.Event;
+      }
     }
 
@@ -47,4 +53,5 @@
           executionState = value;
           OnExecutionStateChanged();
+          OnItemImageChanged();
         }
       }
Index: /trunk/sources/HeuristicLab.Optimization/3.3/Experiment.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/Experiment.cs	(revision 3350)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/Experiment.cs	(revision 3351)
@@ -37,5 +37,11 @@
   public sealed class Experiment : NamedItem, IOptimizer {
     public override Image ItemImage {
-      get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Event; }
+      get {
+        if (ExecutionState == ExecutionState.Prepared) return HeuristicLab.Common.Resources.VS2008ImageLibrary.Event;
+        else if (ExecutionState == ExecutionState.Started) return HeuristicLab.Common.Resources.VS2008ImageLibrary.Play;
+        else if (ExecutionState == ExecutionState.Paused) return HeuristicLab.Common.Resources.VS2008ImageLibrary.Pause;
+        else if (ExecutionState == ExecutionState.Stopped) return HeuristicLab.Common.Resources.VS2008ImageLibrary.Stop;
+        else return HeuristicLab.Common.Resources.VS2008ImageLibrary.Event;
+      }
     }
 
@@ -48,4 +54,5 @@
           executionState = value;
           OnExecutionStateChanged();
+          OnItemImageChanged();
         }
       }
