Index: /branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views-3.3.csproj
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views-3.3.csproj	(revision 7481)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views-3.3.csproj	(revision 7482)
@@ -89,4 +89,11 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="CustomComboBox.cs">
+      <SubType>Component</SubType>
+    </Compile>
+    <Compile Include="CustomComboBox.Designer.cs">
+      <DependentUpon>CustomComboBox.cs</DependentUpon>
+    </Compile>
+    <Compile Include="ToolTipRequiredEventArgs.cs" />
     <Compile Include="ProblemInstanceProviderView.cs">
       <SubType>UserControl</SubType>
@@ -132,4 +139,7 @@
   </ItemGroup>
   <ItemGroup>
+    <EmbeddedResource Include="CustomComboBox.resx">
+      <DependentUpon>CustomComboBox.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="ProblemInstanceProviderView.resx">
       <DependentUpon>ProblemInstanceProviderView.cs</DependentUpon>
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/ProblemView.Designer.cs
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/ProblemView.Designer.cs	(revision 7481)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/ProblemView.Designer.cs	(revision 7482)
@@ -46,6 +46,6 @@
     private void InitializeComponent() {
       this.label1 = new System.Windows.Forms.Label();
-      this.problemInstanceProviderComboBox = new System.Windows.Forms.ComboBox();
       this.problemInstanceProviderViewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
+      this.problemInstanceProviderComboBox = new HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views.ToolTipComboBox();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
       this.SuspendLayout();
@@ -67,4 +67,10 @@
       this.nameLabel.Location = new System.Drawing.Point(3, 35);
       // 
+      // toolTip
+      // 
+      this.toolTip.AutoPopDelay = 10000;
+      this.toolTip.InitialDelay = 100;
+      this.toolTip.ReshowDelay = 100;
+      // 
       // infoLabel
       // 
@@ -79,15 +85,4 @@
       this.label1.TabIndex = 4;
       this.label1.Text = "Library:";
-      // 
-      // problemInstanceProviderComboBox
-      // 
-      this.problemInstanceProviderComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
-      this.problemInstanceProviderComboBox.FormattingEnabled = true;
-      this.problemInstanceProviderComboBox.Location = new System.Drawing.Point(50, 5);
-      this.problemInstanceProviderComboBox.Name = "problemInstanceProviderComboBox";
-      this.problemInstanceProviderComboBox.Size = new System.Drawing.Size(173, 21);
-      this.problemInstanceProviderComboBox.TabIndex = 5;
-      this.problemInstanceProviderComboBox.SelectedIndexChanged += new System.EventHandler(this.problemInstanceProviderComboBox_SelectedIndexChanged);
-      this.problemInstanceProviderComboBox.DataSourceChanged += new System.EventHandler(this.comboBox_DataSourceChanged);
       // 
       // problemInstanceProviderViewHost
@@ -105,4 +100,17 @@
       this.problemInstanceProviderViewHost.ViewsLabelVisible = false;
       this.problemInstanceProviderViewHost.ViewType = null;
+      // 
+      // problemInstanceProviderComboBox
+      // 
+      this.problemInstanceProviderComboBox.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
+      this.problemInstanceProviderComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+      this.problemInstanceProviderComboBox.FormattingEnabled = true;
+      this.problemInstanceProviderComboBox.Location = new System.Drawing.Point(50, 5);
+      this.problemInstanceProviderComboBox.Name = "problemInstanceProviderComboBox";
+      this.problemInstanceProviderComboBox.Size = new System.Drawing.Size(173, 21);
+      this.problemInstanceProviderComboBox.TabIndex = 7;
+      this.problemInstanceProviderComboBox.ToolTipRequired += new System.EventHandler<HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views.ToolTipRequiredEventArgs>(this.problemInstanceProviderComboBox_ToolTipRequired);
+      this.problemInstanceProviderComboBox.SelectedIndexChanged += new System.EventHandler(this.problemInstanceProviderComboBox_SelectedIndexChanged);
+      this.problemInstanceProviderComboBox.DataSourceChanged += new System.EventHandler(this.comboBox_DataSourceChanged);
       // 
       // ProblemView
@@ -131,6 +139,6 @@
 
     private System.Windows.Forms.Label label1;
-    private System.Windows.Forms.ComboBox problemInstanceProviderComboBox;
     private MainForm.WindowsForms.ViewHost problemInstanceProviderViewHost;
+    private ToolTipComboBox problemInstanceProviderComboBox;
 
   }
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/ProblemView.cs
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/ProblemView.cs	(revision 7481)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/ProblemView.cs	(revision 7482)
@@ -61,7 +61,10 @@
 
     private void problemInstanceProviderComboBox_SelectedIndexChanged(object sender, System.EventArgs e) {
-      var provider = (IProblemInstanceProvider)problemInstanceProviderComboBox.SelectedItem;
-      provider.SetConsumer((IProblemInstanceConsumer)Content);
-      problemInstanceProviderViewHost.Content = provider;
+      if (problemInstanceProviderComboBox.SelectedIndex >= 0) {
+        var provider = (IProblemInstanceProvider)problemInstanceProviderComboBox.SelectedItem;
+        provider.SetConsumer((IProblemInstanceConsumer)Content);
+        problemInstanceProviderViewHost.Content = provider;
+        toolTip.SetToolTip(problemInstanceProviderComboBox, GetProviderToolTip(provider));
+      }
     }
 
@@ -88,4 +91,16 @@
       }
     }
+
+    protected virtual string GetProviderToolTip(IProblemInstanceProvider provider) {
+      return provider.Name
+          + Environment.NewLine
+          + provider.WebLink.ToString()
+          + Environment.NewLine + Environment.NewLine
+          + provider.ReferencePublication;
+    }
+
+    private void problemInstanceProviderComboBox_ToolTipRequired(object sender, ToolTipRequiredEventArgs e) {
+      e.ToolTip = GetProviderToolTip((IProblemInstanceProvider)e.Item);
+    }
   }
 }
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/ProblemView.resx
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/ProblemView.resx	(revision 7481)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/ProblemView.resx	(revision 7482)
@@ -121,7 +121,4 @@
     <value>107, 17</value>
   </metadata>
-  <metadata name="errorProvider.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>107, 17</value>
-  </metadata>
   <metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/ToolTipComboBox.Designer.cs
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/ToolTipComboBox.Designer.cs	(revision 7482)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/ToolTipComboBox.Designer.cs	(revision 7482)
@@ -0,0 +1,58 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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.Problems.GeneralizedQuadraticAssignment.Views {
+  partial class ToolTipComboBox {
+    /// <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 Component 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.components = new System.ComponentModel.Container();
+      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
+      this.SuspendLayout();
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.ToolTip toolTip;
+  }
+}
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/ToolTipComboBox.cs
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/ToolTipComboBox.cs	(revision 7482)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/ToolTipComboBox.cs	(revision 7482)
@@ -0,0 +1,136 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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.Drawing;
+using System.Windows.Forms;
+using System.Windows.Forms.VisualStyles;
+
+namespace HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views {
+  public partial class ToolTipComboBox : ComboBox {
+
+    private ComboBoxState comboBoxState = ComboBoxState.Normal;
+
+    public ToolTipComboBox()
+      : base() {
+      SetStyle(ControlStyles.AllPaintingInWmPaint, true);
+      SetStyle(ControlStyles.UserPaint, true);
+      InitializeComponent();
+      DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
+      DropDownStyle = ComboBoxStyle.DropDownList;
+    }
+
+    protected override void OnDrawItem(DrawItemEventArgs e) {
+      var args = new ToolTipRequiredEventArgs(e.Index, Items[e.Index]);
+      OnToolTipRequired(args);
+      if (!e.State.HasFlag(DrawItemState.ComboBoxEdit) && !string.IsNullOrEmpty(args.ToolTip)) {
+        var ttRect = e.Graphics.MeasureString(args.ToolTip, Font);
+        if (RectangleToScreen(e.Bounds).Right + ttRect.Width > Screen.FromControl(this).Bounds.Right)
+          toolTip.Show(args.ToolTip, this, e.Bounds.Left - (int)Math.Ceiling(ttRect.Width), e.Bounds.Bottom);
+        else toolTip.Show(args.ToolTip, this, e.Bounds.Right, e.Bounds.Bottom);
+      } else toolTip.Hide(this);
+      e.DrawBackground();
+      DrawItemText(e.Graphics, e.Bounds, e.Index);
+      e.DrawFocusRectangle();
+      base.OnDrawItem(e);
+    }
+    protected override void OnDropDownClosed(EventArgs e) {
+      base.OnDropDownClosed(e);
+      toolTip.Hide(this);
+    }
+
+    private void DrawItemText(Graphics graphics, Rectangle rectangle, int index) {
+      if (index == -1 || Items.Count == 0)
+        return;
+      using (var b = new SolidBrush(ForeColor)) {
+        graphics.DrawString(GetItemText(Items[index]), Font, b, rectangle);
+      }
+    }
+
+    protected override void OnPaint(PaintEventArgs e) {
+      base.OnPaint(e);
+      if (Enabled == false) comboBoxState = ComboBoxState.Disabled;
+      if (VisualStyleInformation.IsSupportedByOS && VisualStyleInformation.IsEnabledByUser) {
+        PushButtonState pb_State = PushButtonState.Normal;
+        if (comboBoxState == ComboBoxState.Disabled)
+          pb_State = PushButtonState.Disabled;
+        else if (comboBoxState == ComboBoxState.Hot)
+          pb_State = PushButtonState.Hot;
+        else if (comboBoxState == ComboBoxState.Pressed)
+          pb_State = PushButtonState.Pressed;
+        Rectangle r = e.ClipRectangle;
+        r.Inflate(1, 1);
+        ButtonRenderer.DrawButton(e.Graphics, r, pb_State);
+        r = new Rectangle(e.ClipRectangle.Right - SystemInformation.VerticalScrollBarWidth + 2,
+                                    e.ClipRectangle.Top,
+                                    SystemInformation.VerticalScrollBarWidth - 4,
+                                    e.ClipRectangle.Height);
+        DrawArrow(e.Graphics, r);
+      } else {
+        ComboBoxRenderer.DrawTextBox(e.Graphics, e.ClipRectangle, comboBoxState);
+        Rectangle r = new Rectangle(e.ClipRectangle.Right - SystemInformation.VerticalScrollBarWidth,
+                                    e.ClipRectangle.Top,
+                                    SystemInformation.VerticalScrollBarWidth,
+                                    e.ClipRectangle.Height);
+        ComboBoxRenderer.DrawDropDownButton(e.Graphics, r, comboBoxState);
+      }
+      Rectangle rect = e.ClipRectangle;
+      rect.Inflate(-2, -4);
+      rect.Offset(1, 0);
+      DrawItemText(e.Graphics, rect, SelectedIndex);
+    }
+
+    private void DrawArrow(Graphics g, Rectangle rect) {
+      Point p1 = new Point(rect.X + 3, rect.Y + rect.Height / 2 - 2);
+      Point p2 = new Point(rect.X + rect.Width - 3, rect.Y + rect.Height / 2 - 2);
+      Point p3 = new Point(rect.X + rect.Width / 2, rect.Y + rect.Height / 2 + 2);
+      g.FillPolygon(new SolidBrush(System.Drawing.SystemColors.ControlText), new Point[] { p1, p2, p3 });
+    }
+
+    protected override void OnMouseEnter(EventArgs e) {
+      base.OnMouseEnter(e);
+      comboBoxState = ComboBoxState.Hot;
+    }
+
+    protected override void OnMouseLeave(EventArgs e) {
+      base.OnMouseLeave(e);
+      comboBoxState = ComboBoxState.Normal;
+    }
+
+    protected override void OnMouseDown(MouseEventArgs e) {
+      base.OnMouseDown(e);
+      comboBoxState = ComboBoxState.Pressed;
+    }
+
+    protected override void OnMouseUp(MouseEventArgs e) {
+      base.OnMouseUp(e);
+      if (Top <= e.Y && Bottom >= e.Y && Left < e.X && Right > e.X)
+        comboBoxState = ComboBoxState.Hot;
+      else comboBoxState = ComboBoxState.Normal;
+    }
+
+    public event EventHandler<ToolTipRequiredEventArgs> ToolTipRequired;
+    protected virtual void OnToolTipRequired(ToolTipRequiredEventArgs args) {
+      var handler = ToolTipRequired;
+      if (handler != null) handler(this, args);
+    }
+  }
+}
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/ToolTipComboBox.resx
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/ToolTipComboBox.resx	(revision 7482)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/ToolTipComboBox.resx	(revision 7482)
@@ -0,0 +1,126 @@
+﻿<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <metadata name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>False</value>
+  </metadata>
+</root>
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/ToolTipRequiredEventArgs.cs
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/ToolTipRequiredEventArgs.cs	(revision 7482)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/ToolTipRequiredEventArgs.cs	(revision 7482)
@@ -0,0 +1,37 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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;
+
+namespace HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views {
+  public class ToolTipRequiredEventArgs : EventArgs {
+    public int Index { get; private set; }
+    public object Item { get; private set; }
+
+    public string ToolTip { get; set; }
+
+    public ToolTipRequiredEventArgs(int index, object item)
+      : base() {
+      this.Index = index;
+      this.Item = item;
+    }
+  }
+}
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.Instances.ElloumiCTAP/3.3/ElloumiCTAPInstanceProvider.cs
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.Instances.ElloumiCTAP/3.3/ElloumiCTAPInstanceProvider.cs	(revision 7481)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.Instances.ElloumiCTAP/3.3/ElloumiCTAPInstanceProvider.cs	(revision 7482)
@@ -37,6 +37,14 @@
     }
 
-    public override Uri Link {
+    public override Uri WebLink {
       get { return new Uri("http://cedric.cnam.fr/oc/TAP/TAP.html"); }
+    }
+
+    public override string ReferencePublication {
+      get {
+        return @"Elloumi, S. 1991.
+Contribution for solving non linear programs with o-1 variables, application to task assignment problems in distributed systems.
+PhD Thesis. Conservatoire National des Arts et Métiers, Paris.";
+      }
     }
 
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.Instances.QAPLIB/3.3/QAPLIBInstanceProvider.cs
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.Instances.QAPLIB/3.3/QAPLIBInstanceProvider.cs	(revision 7481)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.Instances.QAPLIB/3.3/QAPLIBInstanceProvider.cs	(revision 7482)
@@ -37,6 +37,14 @@
     }
 
-    public override Uri Link {
+    public override Uri WebLink {
       get { return new Uri("http://www.seas.upenn.edu/qaplib/"); }
+    }
+
+    public override string ReferencePublication {
+      get {
+        return @"R. E. Burkard, S. E. Karisch, and F. Rendl. 1997.
+QAPLIB - A Quadratic Assignment Problem Library.
+Journal of Global Optimization, 10, pp. 391-403.";
+      }
     }
 
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.Instances.TSPLIB/3.3/TSPLIBATSPInstanceProvider.cs
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.Instances.TSPLIB/3.3/TSPLIBATSPInstanceProvider.cs	(revision 7481)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.Instances.TSPLIB/3.3/TSPLIBATSPInstanceProvider.cs	(revision 7482)
@@ -29,5 +29,5 @@
 namespace HeuristicLab.Problems.Instances.TSPLIB {
   public class TSPLIBATSPInstanceProvider : ProblemInstanceProvider<IATSPInstance> {
-    
+
     public override string Name {
       get { return "TSPLIB (asymmetric TSP)"; }
@@ -38,6 +38,14 @@
     }
 
-    public override Uri Link {
+    public override Uri WebLink {
       get { return new Uri("http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/"); }
+    }
+
+    public override string ReferencePublication {
+      get {
+        return @"G. Reinelt. 1991.
+TSPLIB - A Traveling Salesman Problem Library.
+ORSA Journal on Computing, 3, pp. 376-384.";
+      }
     }
 
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.Instances.TSPLIB/3.3/TSPLIBCVRPInstanceProvider.cs
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.Instances.TSPLIB/3.3/TSPLIBCVRPInstanceProvider.cs	(revision 7481)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.Instances.TSPLIB/3.3/TSPLIBCVRPInstanceProvider.cs	(revision 7482)
@@ -29,5 +29,5 @@
 namespace HeuristicLab.Problems.Instances.TSPLIB {
   public class TSPLIBCVRPInstanceProvider : ProblemInstanceProvider<ICVRPInstance> {
-    
+
     public override string Name {
       get { return "TSPLIB (CVRP)"; }
@@ -38,6 +38,14 @@
     }
 
-    public override Uri Link {
+    public override Uri WebLink {
       get { return new Uri("http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/"); }
+    }
+
+    public override string ReferencePublication {
+      get {
+        return @"G. Reinelt. 1991.
+TSPLIB - A Traveling Salesman Problem Library.
+ORSA Journal on Computing, 3, pp. 376-384.";
+      }
     }
 
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.Instances.TSPLIB/3.3/TSPLIBTSPInstanceProvider.cs
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.Instances.TSPLIB/3.3/TSPLIBTSPInstanceProvider.cs	(revision 7481)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.Instances.TSPLIB/3.3/TSPLIBTSPInstanceProvider.cs	(revision 7482)
@@ -38,6 +38,14 @@
     }
 
-    public override Uri Link {
+    public override Uri WebLink {
       get { return new Uri("http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/"); }
+    }
+
+    public override string ReferencePublication {
+      get {
+        return @"G. Reinelt. 1991.
+TSPLIB - A Traveling Salesman Problem Library.
+ORSA Journal on Computing, 3, pp. 376-384.";
+      }
     }
 
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.Instances/3.3/IProblemInstanceProvider.cs
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.Instances/3.3/IProblemInstanceProvider.cs	(revision 7481)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.Instances/3.3/IProblemInstanceProvider.cs	(revision 7482)
@@ -28,5 +28,6 @@
     string Name { get; }
     string Description { get; }
-    Uri Link { get; }
+    Uri WebLink { get; }
+    string ReferencePublication { get; }
 
     bool ConsumerCanBeFed { get; }
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.Instances/3.3/ProblemInstanceProvider.cs
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.Instances/3.3/ProblemInstanceProvider.cs	(revision 7481)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.Instances/3.3/ProblemInstanceProvider.cs	(revision 7482)
@@ -29,5 +29,6 @@
     public abstract string Name { get; }
     public abstract string Description { get; }
-    public abstract Uri Link { get; }
+    public abstract Uri WebLink { get; }
+    public abstract string ReferencePublication { get; }
 
     public bool ConsumerCanBeFed {
