Index: trunk/sources/HeuristicLab.Clients.Hive.Views/3.3/StateLog/StateLogGanttChartListView.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.Hive.Views/3.3/StateLog/StateLogGanttChartListView.cs	(revision 8106)
+++ trunk/sources/HeuristicLab.Clients.Hive.Views/3.3/StateLog/StateLogGanttChartListView.cs	(revision 8107)
@@ -21,6 +21,9 @@
 
 using System;
+using System.Collections.Generic;
 using System.Drawing;
 using System.Linq;
+using System.Windows.Forms;
+using System.Windows.Forms.DataVisualization.Charting;
 using HeuristicLab.Core.Views;
 using HeuristicLab.MainForm;
@@ -31,4 +34,6 @@
   [Content(typeof(StateLogListList), true)]
   public sealed partial class StateLogGanttChartListView : ItemView {
+    private IList<LegendItem> invisibleLegendItems;
+
     public new StateLogListList Content {
       get { return (StateLogListList)base.Content; }
@@ -38,8 +43,12 @@
     public StateLogGanttChartListView() {
       InitializeComponent();
+      invisibleLegendItems = new List<LegendItem>();
     }
 
     protected override void DeregisterContentEvents() {
       // Deregister your event handlers here
+      ganttChart.chart.MouseMove -= new System.Windows.Forms.MouseEventHandler(chart_MouseDown);
+      ganttChart.chart.MouseDown -= new System.Windows.Forms.MouseEventHandler(chart_MouseDown);
+      ganttChart.chart.CustomizeLegend -= new EventHandler<CustomizeLegendEventArgs>(chart_CustomizeLegend);
       base.DeregisterContentEvents();
     }
@@ -48,4 +57,7 @@
       base.RegisterContentEvents();
       // Register your event handlers here
+      ganttChart.chart.MouseMove += new System.Windows.Forms.MouseEventHandler(chart_MouseMove);
+      ganttChart.chart.MouseDown += new System.Windows.Forms.MouseEventHandler(chart_MouseDown);
+      ganttChart.chart.CustomizeLegend += new EventHandler<CustomizeLegendEventArgs>(chart_CustomizeLegend);
     }
 
@@ -75,8 +87,8 @@
           for (int i = Content.Count - 1; i >= 0; i--) {
             for (int j = 0; j < Content[i].Count - 1; j++) {
-              if (Content[i][j].State != TaskState.Offline)
+              if (Content[i][j].State != TaskState.Offline && invisibleLegendItems.All(x => x.Name != Content[i][j].State.ToString()))
                 AddData(ganttChart, i.ToString(), Content[i][j], Content[i][j + 1], upperLimit);
             }
-            if (Content[i].Count > 0) {
+            if (Content[i].Count > 0 && invisibleLegendItems.All(x => x.Name != Content[i][Content[i].Count - 1].State.ToString())) {
               AddData(ganttChart, i.ToString(), Content[i][Content[i].Count - 1], null, upperLimit);
             }
@@ -113,4 +125,36 @@
       base.SetEnabledStateOfControls();
     }
+
+    #region Events
+    void chart_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) {
+      HitTestResult result = ganttChart.chart.HitTest(e.X, e.Y);
+      if (result.ChartElementType == ChartElementType.LegendItem)
+        Cursor = Cursors.Hand;
+      else
+        Cursor = Cursors.Default;
+    }
+
+    private void chart_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) {
+      HitTestResult result = ganttChart.chart.HitTest(e.X, e.Y);
+      if (result.ChartElementType == ChartElementType.LegendItem)
+        ToggleLegendItemVisibility(result.Object as LegendItem);
+      ganttChart.Reset();
+      OnContentChanged();
+    }
+
+    private void chart_CustomizeLegend(object sender, CustomizeLegendEventArgs e) {
+      foreach (var item in e.LegendItems)
+        foreach (var cell in item.Cells)
+          cell.ForeColor = invisibleLegendItems.Any(x => x.Name == item.Name) ? Color.Gray : Color.Black;
+    }
+    #endregion
+
+    #region Helpers
+    private void ToggleLegendItemVisibility(LegendItem legendItem) {
+      var item = invisibleLegendItems.FirstOrDefault(x => x.Name == legendItem.Name);
+      if (item != null) invisibleLegendItems.Remove(item);
+      else invisibleLegendItems.Add(legendItem);
+    }
+    #endregion
   }
 }
Index: trunk/sources/HeuristicLab.Visualization.ChartControlsExtensions/3.3/GanttChart.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Visualization.ChartControlsExtensions/3.3/GanttChart.Designer.cs	(revision 8106)
+++ trunk/sources/HeuristicLab.Visualization.ChartControlsExtensions/3.3/GanttChart.Designer.cs	(revision 8107)
@@ -36,4 +36,8 @@
                   | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
+      chartArea1.AxisX.ScaleView.SmallScrollMinSizeType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Milliseconds;
+      chartArea1.AxisY.ScaleView.SmallScrollMinSizeType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Milliseconds;
+      chartArea1.CursorX.IntervalType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Milliseconds;
+      chartArea1.CursorY.IntervalType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Milliseconds;
       chartArea1.Name = "ChartArea1";
       this.chart.ChartAreas.Add(chartArea1);
Index: trunk/sources/HeuristicLab.Visualization.ChartControlsExtensions/3.3/GanttChart.cs
===================================================================
--- trunk/sources/HeuristicLab.Visualization.ChartControlsExtensions/3.3/GanttChart.cs	(revision 8106)
+++ trunk/sources/HeuristicLab.Visualization.ChartControlsExtensions/3.3/GanttChart.cs	(revision 8107)
@@ -35,4 +35,5 @@
     public GanttChart() {
       InitializeComponent();
+      chart.CustomizeAllChartAreas();
     }
 
