Index: /trunk/sources/HeuristicLab.Core.Views/3.3/NamedItemCollectionView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/NamedItemCollectionView.cs	(revision 7234)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/NamedItemCollectionView.cs	(revision 7235)
@@ -77,4 +77,11 @@
       return listViewItem;
     }
+    protected override void UpdateListViewItemText(ListViewItem listViewItem) {
+      base.UpdateListViewItemText(listViewItem);
+      T item = listViewItem.Tag as T;
+      if ((item != null) && !string.IsNullOrEmpty(item.Description)) {
+        listViewItem.ToolTipText = item.ItemName + ": " + item.Description;
+      }
+    }
 
     #region ListView Events
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/NamedItemView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/NamedItemView.cs	(revision 7234)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/NamedItemView.cs	(revision 7235)
@@ -26,7 +26,4 @@
 
 namespace HeuristicLab.Core.Views {
-  /// <summary>
-  /// The visual representation of a <see cref="Variable"/>.
-  /// </summary>
   [View("NamedItem View")]
   [Content(typeof(NamedItem), false)]
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/VariableValueView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/VariableValueView.Designer.cs	(revision 7234)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/VariableValueView.Designer.cs	(revision 7235)
@@ -45,25 +45,43 @@
     /// </summary>
     private void InitializeComponent() {
+      this.components = new System.ComponentModel.Container();
       this.viewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
+      this.infoLabel = new System.Windows.Forms.Label();
+      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
       this.SuspendLayout();
       // 
       // viewHost
       // 
+      this.viewHost.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.viewHost.Caption = "View";
       this.viewHost.Content = null;
-      this.viewHost.Dock = System.Windows.Forms.DockStyle.Fill;
       this.viewHost.Enabled = false;
       this.viewHost.Location = new System.Drawing.Point(0, 0);
       this.viewHost.Name = "viewHost";
       this.viewHost.ReadOnly = false;
-      this.viewHost.Size = new System.Drawing.Size(359, 274);
+      this.viewHost.Size = new System.Drawing.Size(334, 274);
       this.viewHost.TabIndex = 0;
+      this.viewHost.ViewsLabelVisible = true;
       this.viewHost.ViewType = null;
+      // 
+      // infoLabel
+      // 
+      this.infoLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.infoLabel.Image = HeuristicLab.Common.Resources.VSImageLibrary.Information;
+      this.infoLabel.Location = new System.Drawing.Point(340, 3);
+      this.infoLabel.Name = "infoLabel";
+      this.infoLabel.Size = new System.Drawing.Size(16, 16);
+      this.infoLabel.TabIndex = 1;
+      this.toolTip.SetToolTip(this.infoLabel, "Double-click to open description editor.");
+      this.infoLabel.DoubleClick += new System.EventHandler(this.infoLabel_DoubleClick);
       // 
       // VariableValueView
       // 
+      this.AllowDrop = true;
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.AllowDrop = true;
+      this.Controls.Add(this.infoLabel);
       this.Controls.Add(this.viewHost);
       this.Name = "VariableValueView";
@@ -79,4 +97,6 @@
 
     protected MainForm.WindowsForms.ViewHost viewHost;
+    private System.Windows.Forms.Label infoLabel;
+    private System.Windows.Forms.ToolTip toolTip;
 
   }
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/VariableValueView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/VariableValueView.cs	(revision 7234)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/VariableValueView.cs	(revision 7235)
@@ -25,16 +25,10 @@
 
 namespace HeuristicLab.Core.Views {
-  /// <summary>
-  /// The visual representation of a <see cref="Variable"/>.
-  /// </summary>
   [View("Variable Value View")]
   [Content(typeof(Variable), false)]
   [Content(typeof(IVariable), false)]
   public partial class VariableValueView : ItemView {
-    /// <summary>
-    /// Gets or sets the variable to represent visually.
-    /// </summary>
-    /// <remarks>Uses property <see cref="ViewBase.Item"/> of base class <see cref="ViewBase"/>.
-    /// No own data storage present.</remarks>
+    private const string infoLabelToolTipSuffix = "Double-click to open description editor.";
+
     public new IVariable Content {
       get { return (IVariable)base.Content; }
@@ -42,26 +36,18 @@
     }
 
-    /// <summary>
-    /// Initializes a new instance of <see cref="VariableView"/> with caption "Variable".
-    /// </summary>
     public VariableValueView() {
       InitializeComponent();
     }
 
-    /// <summary>
-    /// Removes the eventhandlers from the underlying <see cref="Variable"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="ViewBase.RemoveItemEvents"/> of base class <see cref="ViewBase"/>.</remarks>
     protected override void DeregisterContentEvents() {
+      Content.NameChanged -= new EventHandler(Content_NameChanged);
+      Content.DescriptionChanged -= new EventHandler(Content_DescriptionChanged);
       Content.ValueChanged -= new EventHandler(Content_ValueChanged);
       base.DeregisterContentEvents();
     }
-
-    /// <summary>
-    /// Adds eventhandlers to the underlying <see cref="Variable"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="ViewBase.AddItemEvents"/> of base class <see cref="ViewBase"/>.</remarks>
     protected override void RegisterContentEvents() {
       base.RegisterContentEvents();
+      Content.NameChanged += new EventHandler(Content_NameChanged);
+      Content.DescriptionChanged += new EventHandler(Content_DescriptionChanged);
       Content.ValueChanged += new EventHandler(Content_ValueChanged);
     }
@@ -71,10 +57,36 @@
       if (Content == null) {
         viewHost.Content = null;
+        toolTip.SetToolTip(infoLabel, string.Empty);
+        if (ViewAttribute.HasViewAttribute(this.GetType()))
+          this.Caption = ViewAttribute.GetViewName(this.GetType());
+        else
+          this.Caption = "VariableValue View";
       } else {
         viewHost.ViewType = null;
         viewHost.Content = Content.Value;
+        toolTip.SetToolTip(infoLabel, string.IsNullOrEmpty(Content.Description) ? infoLabelToolTipSuffix : Content.Description + Environment.NewLine + Environment.NewLine + infoLabelToolTipSuffix);
+        Caption = Content.Name;
       }
     }
 
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      viewHost.Enabled = Content != null;
+      viewHost.ReadOnly = this.ReadOnly;
+      infoLabel.Enabled = Content != null;
+    }
+
+    protected virtual void Content_NameChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_NameChanged), sender, e);
+      else
+        Caption = Content.Name;
+    }
+    protected virtual void Content_DescriptionChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_DescriptionChanged), sender, e);
+      else
+        toolTip.SetToolTip(infoLabel, string.IsNullOrEmpty(Content.Description) ? infoLabelToolTipSuffix : Content.Description + Environment.NewLine + Environment.NewLine + infoLabelToolTipSuffix);
+    }
     protected virtual void Content_ValueChanged(object sender, EventArgs e) {
       if (InvokeRequired)
@@ -103,4 +115,10 @@
       }
     }
+    protected virtual void infoLabel_DoubleClick(object sender, EventArgs e) {
+      using (TextDialog dialog = new TextDialog("Description of " + Content.Name, Content.Description, ReadOnly || !Content.CanChangeDescription)) {
+        if (dialog.ShowDialog(this) == DialogResult.OK)
+          Content.Description = dialog.Content;
+      }
+    }
   }
 }
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/ResultValueView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/ResultValueView.Designer.cs	(revision 7234)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/ResultValueView.Designer.cs	(revision 7235)
@@ -45,20 +45,36 @@
     /// </summary>
     private void InitializeComponent() {
+      this.components = new System.ComponentModel.Container();
       this.viewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
+      this.infoLabel = new System.Windows.Forms.Label();
+      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
       this.SuspendLayout();
       // 
       // viewHost
       // 
+      this.viewHost.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.viewHost.Caption = "View";
       this.viewHost.Content = null;
-      this.viewHost.Dock = System.Windows.Forms.DockStyle.Fill;
       this.viewHost.Enabled = false;
       this.viewHost.Location = new System.Drawing.Point(0, 0);
       this.viewHost.Name = "viewHost";
       this.viewHost.ReadOnly = false;
-      this.viewHost.Size = new System.Drawing.Size(359, 274);
+      this.viewHost.Size = new System.Drawing.Size(334, 274);
       this.viewHost.TabIndex = 0;
       this.viewHost.ViewsLabelVisible = true;
       this.viewHost.ViewType = null;
+      // 
+      // infoLabel
+      // 
+      this.infoLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.infoLabel.Image = HeuristicLab.Common.Resources.VSImageLibrary.Information;
+      this.infoLabel.Location = new System.Drawing.Point(340, 3);
+      this.infoLabel.Name = "infoLabel";
+      this.infoLabel.Size = new System.Drawing.Size(16, 16);
+      this.infoLabel.TabIndex = 1;
+      this.toolTip.SetToolTip(this.infoLabel, "Double-click to open description editor.");
+      this.infoLabel.DoubleClick += new System.EventHandler(this.infoLabel_DoubleClick);
       // 
       // ResultValueView
@@ -66,4 +82,5 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.infoLabel);
       this.Controls.Add(this.viewHost);
       this.Name = "ResultValueView";
@@ -76,4 +93,6 @@
 
     private HeuristicLab.MainForm.WindowsForms.ViewHost viewHost;
+    private System.Windows.Forms.Label infoLabel;
+    private System.Windows.Forms.ToolTip toolTip;
   }
 }
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/ResultValueView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/ResultValueView.cs	(revision 7234)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/ResultValueView.cs	(revision 7235)
@@ -30,4 +30,6 @@
   [Content(typeof(IResult), false)]
   public sealed partial class ResultValueView : ItemView {
+    private const string infoLabelToolTipSuffix = "Double-click to open description editor.";
+
     public new IResult Content {
       get { return (IResult)base.Content; }
@@ -45,4 +47,6 @@
 
     protected override void DeregisterContentEvents() {
+      Content.NameChanged -= new EventHandler(Content_NameChanged);
+      Content.DescriptionChanged -= new EventHandler(Content_DescriptionChanged);
       Content.ValueChanged -= new EventHandler(Content_ValueChanged);
       base.DeregisterContentEvents();
@@ -50,4 +54,6 @@
     protected override void RegisterContentEvents() {
       base.RegisterContentEvents();
+      Content.NameChanged += new EventHandler(Content_NameChanged);
+      Content.DescriptionChanged += new EventHandler(Content_DescriptionChanged);
       Content.ValueChanged += new EventHandler(Content_ValueChanged);
     }
@@ -57,7 +63,14 @@
       if (Content == null) {
         viewHost.Content = null;
+        toolTip.SetToolTip(infoLabel, string.Empty);
+        if (ViewAttribute.HasViewAttribute(this.GetType()))
+          this.Caption = ViewAttribute.GetViewName(this.GetType());
+        else
+          this.Caption = "ResultValue View";
       } else {
         viewHost.ViewType = null;
         viewHost.Content = Content.Value;
+        toolTip.SetToolTip(infoLabel, string.IsNullOrEmpty(Content.Description) ? infoLabelToolTipSuffix : Content.Description + Environment.NewLine + Environment.NewLine + infoLabelToolTipSuffix);
+        Caption = Content.Name;
       }
     }
@@ -67,6 +80,19 @@
       viewHost.Enabled = Content != null;
       viewHost.ReadOnly = this.ReadOnly;
+      infoLabel.Enabled = Content != null;
     }
 
+    private void Content_NameChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_NameChanged), sender, e);
+      else
+        Caption = Content.Name;
+    }
+    private void Content_DescriptionChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_DescriptionChanged), sender, e);
+      else
+        toolTip.SetToolTip(infoLabel, string.IsNullOrEmpty(Content.Description) ? infoLabelToolTipSuffix : Content.Description + Environment.NewLine + Environment.NewLine + infoLabelToolTipSuffix);
+    }
     private void Content_ValueChanged(object sender, EventArgs e) {
       if (InvokeRequired)
@@ -76,4 +102,11 @@
       }
     }
+
+    private void infoLabel_DoubleClick(object sender, System.EventArgs e) {
+      using (TextDialog dialog = new TextDialog("Description of " + Content.Name, Content.Description, ReadOnly || !Content.CanChangeDescription)) {
+        if (dialog.ShowDialog(this) == DialogResult.OK)
+          Content.Description = dialog.Content;
+      }
+    }
   }
 }
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/ResultView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/ResultView.cs	(revision 7234)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/ResultView.cs	(revision 7235)
@@ -27,16 +27,8 @@
 
 namespace HeuristicLab.Optimization.Views {
-  /// <summary>
-  /// The visual representation of a <see cref="Variable"/>.
-  /// </summary>
   [View("Result View")]
   [Content(typeof(Result), false)]
   [Content(typeof(IResult), false)]
   public sealed partial class ResultView : NamedItemView {
-    /// <summary>
-    /// Gets or sets the variable to represent visually.
-    /// </summary>
-    /// <remarks>Uses property <see cref="ViewBase.Item"/> of base class <see cref="ViewBase"/>.
-    /// No own data storage present.</remarks>
     public new IResult Content {
       get { return (IResult)base.Content; }
@@ -49,24 +41,12 @@
     }
 
-    /// <summary>
-    /// Initializes a new instance of <see cref="VariableView"/> with caption "Variable".
-    /// </summary>
     public ResultView() {
       InitializeComponent();
     }
 
-    /// <summary>
-    /// Removes the eventhandlers from the underlying <see cref="Variable"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="ViewBase.RemoveItemEvents"/> of base class <see cref="ViewBase"/>.</remarks>
     protected override void DeregisterContentEvents() {
       Content.ValueChanged -= new EventHandler(Content_ValueChanged);
       base.DeregisterContentEvents();
     }
-
-    /// <summary>
-    /// Adds eventhandlers to the underlying <see cref="Variable"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="ViewBase.AddItemEvents"/> of base class <see cref="ViewBase"/>.</remarks>
     protected override void RegisterContentEvents() {
       base.RegisterContentEvents();
Index: /trunk/sources/HeuristicLab.Optimization/3.3/Result.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/Result.cs	(revision 7234)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/Result.cs	(revision 7235)
@@ -39,11 +39,4 @@
         if (value != null) return value.ItemImage;
         else return base.ItemImage;
-      }
-    }
-
-    public override string ItemDescription {
-      get {
-        if (Description != String.Empty) return Description;
-        else return base.ItemDescription;
       }
     }
