Index: /trunk/sources/HeuristicLab.Visualization/3.2/AvgAggregator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Visualization/3.2/AvgAggregator.cs	(revision 2039)
+++ /trunk/sources/HeuristicLab.Visualization/3.2/AvgAggregator.cs	(revision 2040)
@@ -3,5 +3,10 @@
 
 namespace HeuristicLab.Visualization {
-  public class AvgAggregator : DataRowBase {
+  public interface IAggregator {
+    void AddWatch(IDataRow dataRow);
+    void RemoveWatch(IDataRow dataRow);
+  }
+
+  public class AvgAggregator : DataRowBase, IAggregator {
     #region IAggregator Members
 
@@ -58,4 +63,5 @@
       curAvgValue = 0;
       count = 0;
+      this.RowSettings.LineType = DataRowType.SingleValue;
     }
 
Index: /trunk/sources/HeuristicLab.Visualization/3.2/AvgLineAggregator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Visualization/3.2/AvgLineAggregator.cs	(revision 2039)
+++ /trunk/sources/HeuristicLab.Visualization/3.2/AvgLineAggregator.cs	(revision 2040)
@@ -3,5 +3,5 @@
 
 namespace HeuristicLab.Visualization {
-  public class AvgLineAggregator : DataRowBase {
+  public class AvgLineAggregator : DataRowBase, IAggregator {
 
     private readonly List<double> dataRow = new List<double>();
Index: /trunk/sources/HeuristicLab.Visualization/3.2/DataRow.cs
===================================================================
--- /trunk/sources/HeuristicLab.Visualization/3.2/DataRow.cs	(revision 2039)
+++ /trunk/sources/HeuristicLab.Visualization/3.2/DataRow.cs	(revision 2040)
@@ -224,8 +224,4 @@
       }
     }
-
-    public override string ToString() {
-      return RowSettings.Label;
-    }
   }
 }
Index: /trunk/sources/HeuristicLab.Visualization/3.2/DataRowBase.cs
===================================================================
--- /trunk/sources/HeuristicLab.Visualization/3.2/DataRowBase.cs	(revision 2039)
+++ /trunk/sources/HeuristicLab.Visualization/3.2/DataRowBase.cs	(revision 2040)
@@ -17,6 +17,11 @@
     }
 
+    public string Label{
+      get { return rowSettings.Label; }
+    }
+
     protected DataRowBase() {
       rowSettings = new DataRowSettings();
+      rowSettings.LineType = DataRowType.Normal; //default value for most lines and aggregators
       rowSettings.DataVisualSettingChanged += value_DataVisualSettingChanged;
     }
Index: /trunk/sources/HeuristicLab.Visualization/3.2/FloatingAvgAggregator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Visualization/3.2/FloatingAvgAggregator.cs	(revision 2039)
+++ /trunk/sources/HeuristicLab.Visualization/3.2/FloatingAvgAggregator.cs	(revision 2040)
@@ -3,5 +3,5 @@
 
 namespace HeuristicLab.Visualization {
-  public class FloatingAvgAggregator : DataRowBase {
+  public class FloatingAvgAggregator : DataRowBase, IAggregator {
 
     private readonly List<double> dataRow = new List<double>();
Index: /trunk/sources/HeuristicLab.Visualization/3.2/HeuristicLab.Visualization-3.2.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Visualization/3.2/HeuristicLab.Visualization-3.2.csproj	(revision 2039)
+++ /trunk/sources/HeuristicLab.Visualization/3.2/HeuristicLab.Visualization-3.2.csproj	(revision 2040)
@@ -116,4 +116,10 @@
     <Compile Include="LabelProvider\ContinuousLabelProvider.cs" />
     <Compile Include="LabelProvider\DiscreteLabelProvider.cs" />
+    <Compile Include="Options\AddLineDialog.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Options\AddLineDialog.Designer.cs">
+      <DependentUpon>AddLineDialog.cs</DependentUpon>
+    </Compile>
     <Compile Include="Options\ColorSelection.cs">
       <SubType>UserControl</SubType>
@@ -205,4 +211,7 @@
       <SubType>Designer</SubType>
     </EmbeddedResource>
+    <EmbeddedResource Include="Options\AddLineDialog.resx">
+      <DependentUpon>AddLineDialog.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="Options\ColorSelection.resx">
       <DependentUpon>ColorSelection.cs</DependentUpon>
Index: /trunk/sources/HeuristicLab.Visualization/3.2/IDataRow.cs
===================================================================
--- /trunk/sources/HeuristicLab.Visualization/3.2/IDataRow.cs	(revision 2039)
+++ /trunk/sources/HeuristicLab.Visualization/3.2/IDataRow.cs	(revision 2040)
@@ -23,5 +23,5 @@
     void RemoveValue(int index);
     void RemoveValues(int index, int count);
-
+    
     int Count { get; }
     double this[int index] { get; set; }
@@ -30,4 +30,6 @@
     double MaxValue { get; }
 
+    string Label{ get;}
+
     event ValuesChangedHandler ValuesChanged;
     event ValueChangedHandler ValueChanged;
Index: /trunk/sources/HeuristicLab.Visualization/3.2/MaxAggregator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Visualization/3.2/MaxAggregator.cs	(revision 2039)
+++ /trunk/sources/HeuristicLab.Visualization/3.2/MaxAggregator.cs	(revision 2040)
@@ -3,5 +3,5 @@
 
 namespace HeuristicLab.Visualization {
-  public class MaxAggregator : DataRowBase {
+  public class MaxAggregator : DataRowBase, IAggregator {
     #region IAggregator Members
 
@@ -23,4 +23,9 @@
 
     #endregion
+
+    public MaxAggregator() {
+      this.RowSettings.LineType = DataRowType.SingleValue;
+    }
+
 
     List<IDataRow> dataRowWatches = new List<IDataRow>();
Index: /trunk/sources/HeuristicLab.Visualization/3.2/MinAggregator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Visualization/3.2/MinAggregator.cs	(revision 2039)
+++ /trunk/sources/HeuristicLab.Visualization/3.2/MinAggregator.cs	(revision 2040)
@@ -3,5 +3,5 @@
 
 namespace HeuristicLab.Visualization {
-  public class MinAggregator : DataRowBase {
+  public class MinAggregator : DataRowBase, IAggregator {
     #region IAggregator Members
 
@@ -23,4 +23,8 @@
 
     #endregion
+
+    public MinAggregator() {
+      this.RowSettings.LineType=DataRowType.SingleValue;
+    }
 
     readonly List<IDataRow> dataRowWatches = new List<IDataRow>();
Index: /trunk/sources/HeuristicLab.Visualization/3.2/Options/AddLineDialog.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Visualization/3.2/Options/AddLineDialog.Designer.cs	(revision 2040)
+++ /trunk/sources/HeuristicLab.Visualization/3.2/Options/AddLineDialog.Designer.cs	(revision 2040)
@@ -0,0 +1,187 @@
+﻿namespace HeuristicLab.Visualization.Options {
+  partial class AddLineDialog {
+    /// <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.btnAddLineDialogCancel = new System.Windows.Forms.Button();
+      this.btnAddLineDialogOk = new System.Windows.Forms.Button();
+      this.lblAddLineDialogLabel = new System.Windows.Forms.Label();
+      this.lblAddLineDialogGeneralType = new System.Windows.Forms.Label();
+      this.lblAddLineDialogSubtype = new System.Windows.Forms.Label();
+      this.lblAddLineDialogYAxis = new System.Windows.Forms.Label();
+      this.clbAddLineDialogAggregatorLines = new System.Windows.Forms.CheckedListBox();
+      this.txtAddLineDialogLabel = new System.Windows.Forms.TextBox();
+      this.cbAddLineDialogGeneralType = new System.Windows.Forms.ComboBox();
+      this.cbAddLineDialogSubtype = new System.Windows.Forms.ComboBox();
+      this.cbAddLineDialogYAxis = new System.Windows.Forms.ComboBox();
+      this.SuspendLayout();
+      // 
+      // btnAddLineDialogCancel
+      // 
+      this.btnAddLineDialogCancel.Location = new System.Drawing.Point(113, 231);
+      this.btnAddLineDialogCancel.Name = "btnAddLineDialogCancel";
+      this.btnAddLineDialogCancel.Size = new System.Drawing.Size(75, 23);
+      this.btnAddLineDialogCancel.TabIndex = 0;
+      this.btnAddLineDialogCancel.Text = "Cancel";
+      this.btnAddLineDialogCancel.UseVisualStyleBackColor = true;
+      this.btnAddLineDialogCancel.Click += new System.EventHandler(this.btnAddLineDialogCancel_Click);
+      // 
+      // btnAddLineDialogOk
+      // 
+      this.btnAddLineDialogOk.Location = new System.Drawing.Point(195, 231);
+      this.btnAddLineDialogOk.Name = "btnAddLineDialogOk";
+      this.btnAddLineDialogOk.Size = new System.Drawing.Size(75, 23);
+      this.btnAddLineDialogOk.TabIndex = 1;
+      this.btnAddLineDialogOk.Text = "OK";
+      this.btnAddLineDialogOk.UseVisualStyleBackColor = true;
+      this.btnAddLineDialogOk.Click += new System.EventHandler(this.btnAddLineDialogOk_Click);
+      // 
+      // lblAddLineDialogLabel
+      // 
+      this.lblAddLineDialogLabel.AutoSize = true;
+      this.lblAddLineDialogLabel.Location = new System.Drawing.Point(13, 13);
+      this.lblAddLineDialogLabel.Name = "lblAddLineDialogLabel";
+      this.lblAddLineDialogLabel.Size = new System.Drawing.Size(33, 13);
+      this.lblAddLineDialogLabel.TabIndex = 2;
+      this.lblAddLineDialogLabel.Text = "Label";
+      // 
+      // lblAddLineDialogGeneralType
+      // 
+      this.lblAddLineDialogGeneralType.AutoSize = true;
+      this.lblAddLineDialogGeneralType.Location = new System.Drawing.Point(13, 43);
+      this.lblAddLineDialogGeneralType.Name = "lblAddLineDialogGeneralType";
+      this.lblAddLineDialogGeneralType.Size = new System.Drawing.Size(71, 13);
+      this.lblAddLineDialogGeneralType.TabIndex = 3;
+      this.lblAddLineDialogGeneralType.Text = "General Type";
+      // 
+      // lblAddLineDialogSubtype
+      // 
+      this.lblAddLineDialogSubtype.AutoSize = true;
+      this.lblAddLineDialogSubtype.Location = new System.Drawing.Point(13, 74);
+      this.lblAddLineDialogSubtype.Name = "lblAddLineDialogSubtype";
+      this.lblAddLineDialogSubtype.Size = new System.Drawing.Size(46, 13);
+      this.lblAddLineDialogSubtype.TabIndex = 4;
+      this.lblAddLineDialogSubtype.Text = "Subtype";
+      // 
+      // lblAddLineDialogYAxis
+      // 
+      this.lblAddLineDialogYAxis.AutoSize = true;
+      this.lblAddLineDialogYAxis.Location = new System.Drawing.Point(13, 106);
+      this.lblAddLineDialogYAxis.Name = "lblAddLineDialogYAxis";
+      this.lblAddLineDialogYAxis.Size = new System.Drawing.Size(33, 13);
+      this.lblAddLineDialogYAxis.TabIndex = 5;
+      this.lblAddLineDialogYAxis.Text = "YAxis";
+      // 
+      // clbAddLineDialogAggregatorLines
+      // 
+      this.clbAddLineDialogAggregatorLines.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.clbAddLineDialogAggregatorLines.FormattingEnabled = true;
+      this.clbAddLineDialogAggregatorLines.Location = new System.Drawing.Point(113, 137);
+      this.clbAddLineDialogAggregatorLines.Name = "clbAddLineDialogAggregatorLines";
+      this.clbAddLineDialogAggregatorLines.Size = new System.Drawing.Size(157, 79);
+      this.clbAddLineDialogAggregatorLines.TabIndex = 6;
+      // 
+      // txtAddLineDialogLabel
+      // 
+      this.txtAddLineDialogLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.txtAddLineDialogLabel.Location = new System.Drawing.Point(113, 5);
+      this.txtAddLineDialogLabel.Name = "txtAddLineDialogLabel";
+      this.txtAddLineDialogLabel.Size = new System.Drawing.Size(157, 20);
+      this.txtAddLineDialogLabel.TabIndex = 7;
+      this.txtAddLineDialogLabel.Text = "New Line";
+      // 
+      // cbAddLineDialogGeneralType
+      // 
+      this.cbAddLineDialogGeneralType.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.cbAddLineDialogGeneralType.FormattingEnabled = true;
+      this.cbAddLineDialogGeneralType.Items.AddRange(new object[] {
+            "DataLine",
+            "Aggregator"});
+      this.cbAddLineDialogGeneralType.Location = new System.Drawing.Point(113, 35);
+      this.cbAddLineDialogGeneralType.Name = "cbAddLineDialogGeneralType";
+      this.cbAddLineDialogGeneralType.Size = new System.Drawing.Size(157, 21);
+      this.cbAddLineDialogGeneralType.TabIndex = 8;
+      this.cbAddLineDialogGeneralType.SelectedIndexChanged += new System.EventHandler(this.cbAddLineDialogGeneralType_SelectedIndexChanged);
+      // 
+      // cbAddLineDialogSubtype
+      // 
+      this.cbAddLineDialogSubtype.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.cbAddLineDialogSubtype.FormattingEnabled = true;
+      this.cbAddLineDialogSubtype.Location = new System.Drawing.Point(113, 66);
+      this.cbAddLineDialogSubtype.Name = "cbAddLineDialogSubtype";
+      this.cbAddLineDialogSubtype.Size = new System.Drawing.Size(157, 21);
+      this.cbAddLineDialogSubtype.TabIndex = 9;
+      // 
+      // cbAddLineDialogYAxis
+      // 
+      this.cbAddLineDialogYAxis.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.cbAddLineDialogYAxis.FormattingEnabled = true;
+      this.cbAddLineDialogYAxis.Location = new System.Drawing.Point(113, 97);
+      this.cbAddLineDialogYAxis.Name = "cbAddLineDialogYAxis";
+      this.cbAddLineDialogYAxis.Size = new System.Drawing.Size(157, 21);
+      this.cbAddLineDialogYAxis.TabIndex = 10;
+      // 
+      // AddLineDialog
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.ClientSize = new System.Drawing.Size(292, 266);
+      this.Controls.Add(this.cbAddLineDialogYAxis);
+      this.Controls.Add(this.cbAddLineDialogSubtype);
+      this.Controls.Add(this.cbAddLineDialogGeneralType);
+      this.Controls.Add(this.txtAddLineDialogLabel);
+      this.Controls.Add(this.clbAddLineDialogAggregatorLines);
+      this.Controls.Add(this.lblAddLineDialogYAxis);
+      this.Controls.Add(this.lblAddLineDialogSubtype);
+      this.Controls.Add(this.lblAddLineDialogGeneralType);
+      this.Controls.Add(this.lblAddLineDialogLabel);
+      this.Controls.Add(this.btnAddLineDialogOk);
+      this.Controls.Add(this.btnAddLineDialogCancel);
+      this.Name = "AddLineDialog";
+      this.Text = "AddLineDialog";
+      this.Load += new System.EventHandler(this.AddLineDialog_Load);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Button btnAddLineDialogCancel;
+    private System.Windows.Forms.Button btnAddLineDialogOk;
+    private System.Windows.Forms.Label lblAddLineDialogLabel;
+    private System.Windows.Forms.Label lblAddLineDialogGeneralType;
+    private System.Windows.Forms.Label lblAddLineDialogSubtype;
+    private System.Windows.Forms.Label lblAddLineDialogYAxis;
+    private System.Windows.Forms.CheckedListBox clbAddLineDialogAggregatorLines;
+    private System.Windows.Forms.TextBox txtAddLineDialogLabel;
+    private System.Windows.Forms.ComboBox cbAddLineDialogGeneralType;
+    private System.Windows.Forms.ComboBox cbAddLineDialogSubtype;
+    private System.Windows.Forms.ComboBox cbAddLineDialogYAxis;
+  }
+}
Index: /trunk/sources/HeuristicLab.Visualization/3.2/Options/AddLineDialog.cs
===================================================================
--- /trunk/sources/HeuristicLab.Visualization/3.2/Options/AddLineDialog.cs	(revision 2040)
+++ /trunk/sources/HeuristicLab.Visualization/3.2/Options/AddLineDialog.cs	(revision 2040)
@@ -0,0 +1,104 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Reflection;
+using System.Windows.Forms;
+
+namespace HeuristicLab.Visualization.Options {
+  public partial class AddLineDialog : Form {
+    private readonly IChartDataRowsModel model;
+
+    public AddLineDialog(IChartDataRowsModel model) {
+      InitializeComponent();
+      this.model = model;
+    }
+
+    private void AddLineDialog_Load(object sender, EventArgs e) {
+      cbAddLineDialogGeneralType.SelectedIndex = 0;
+      clbAddLineDialogAggregatorLines.Enabled = false;
+      clbAddLineDialogAggregatorLines.DataSource = model.Rows;
+      clbAddLineDialogAggregatorLines.DisplayMember = "Label";
+      cbAddLineDialogYAxis.DataSource = model.YAxes;
+      cbAddLineDialogYAxis.DisplayMember = "Label";
+    }
+
+    private void cbAddLineDialogGeneralType_SelectedIndexChanged(object sender,
+                                                                 EventArgs e) {
+      if (cbAddLineDialogGeneralType.SelectedItem != null) {
+        if (cbAddLineDialogGeneralType.SelectedIndex == 1) {
+//Aggregator selected
+          clbAddLineDialogAggregatorLines.Enabled = true;
+          cbAddLineDialogYAxis.Enabled = false;
+          Type[] types = Assembly.GetExecutingAssembly().GetTypes();
+          List<Type> aggregatorTypes = new List<Type>();
+          foreach (Type type in types) {
+            if (type.GetInterface(typeof (IAggregator).FullName) != null) {
+              aggregatorTypes.Add(type);
+            }
+          }
+          cbAddLineDialogSubtype.DataSource = aggregatorTypes;
+          cbAddLineDialogSubtype.DisplayMember = "Name";
+        } else {
+          cbAddLineDialogYAxis.Enabled = true;
+          clbAddLineDialogAggregatorLines.Enabled = false;
+          cbAddLineDialogSubtype.DataSource = null;
+          cbAddLineDialogSubtype.Items.Clear();
+          cbAddLineDialogSubtype.Items.Add(DataRowType.Normal);
+          cbAddLineDialogSubtype.Items.Add(DataRowType.Points);
+          cbAddLineDialogSubtype.Items.Add(DataRowType.SingleValue);
+          cbAddLineDialogSubtype.SelectedIndex = 0;
+        }
+      }
+    }
+
+    private void btnAddLineDialogCancel_Click(object sender, EventArgs e) {
+      Close();
+    }
+
+    private void btnAddLineDialogOk_Click(object sender, EventArgs e) {
+      //TODO: Generate the new DataRow and add it to the Model
+
+      string label = txtAddLineDialogLabel.Text;
+      IDataRow newDataRow;
+      if (cbAddLineDialogGeneralType.SelectedIndex == 0) {
+        //Default init in Constructor is 0!
+        newDataRow = new DataRow();
+        switch (cbAddLineDialogSubtype.SelectedIndex) {
+          case 0:
+            newDataRow.RowSettings.LineType = DataRowType.Normal;
+            break;
+          case 1:
+            newDataRow.RowSettings.LineType = DataRowType.Points;
+            break;
+          case 2:
+            newDataRow.RowSettings.LineType = DataRowType.SingleValue;
+            break;
+        }
+
+        newDataRow.YAxis = (YAxisDescriptor) cbAddLineDialogYAxis.SelectedItem;
+      } else {
+        if (cbAddLineDialogSubtype.SelectedValue == null)
+          return;
+        newDataRow =
+          (IDataRow)
+          Activator.CreateInstance((Type) cbAddLineDialogSubtype.SelectedValue);
+        YAxisDescriptor yAxis = null;
+        foreach (var item in clbAddLineDialogAggregatorLines.CheckedItems) {
+          if (yAxis == null)
+            yAxis = ((IDataRow) item).YAxis;
+          //else if (((DataRow) item).YAxis != yAxis)
+          //  throw new ArgumentException("Watches for lines on different YAxis not supported");
+          ((IAggregator) newDataRow).AddWatch((IDataRow) item);
+        }
+        newDataRow.YAxis = yAxis;
+      }
+      newDataRow.RowSettings.Label = label;
+      newDataRow.RowSettings.Color = Color.DarkRed;
+      newDataRow.RowSettings.Thickness = 3;
+      newDataRow.RowSettings.Style = DrawingStyle.Solid;
+      newDataRow.RowSettings.ShowMarkers = true;
+      model.AddDataRow(newDataRow);
+      Close();
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Visualization/3.2/Options/AddLineDialog.resx
===================================================================
--- /trunk/sources/HeuristicLab.Visualization/3.2/Options/AddLineDialog.resx	(revision 2040)
+++ /trunk/sources/HeuristicLab.Visualization/3.2/Options/AddLineDialog.resx	(revision 2040)
@@ -0,0 +1,120 @@
+<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
Index: /trunk/sources/HeuristicLab.Visualization/3.2/Options/Options.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Visualization/3.2/Options/Options.Designer.cs	(revision 2039)
+++ /trunk/sources/HeuristicLab.Visualization/3.2/Options/Options.Designer.cs	(revision 2040)
@@ -26,4 +26,5 @@
       this.Optionstabs = new System.Windows.Forms.TabControl();
       this.tabPage1 = new System.Windows.Forms.TabPage();
+      this.btnAddLine = new System.Windows.Forms.Button();
       this.label2 = new System.Windows.Forms.Label();
       this.LinestyleCB = new System.Windows.Forms.ComboBox();
@@ -31,4 +32,5 @@
       this.LineSelectCB = new System.Windows.Forms.ComboBox();
       this.groupBox1 = new System.Windows.Forms.GroupBox();
+      this.selectedLineColorSelection = new HeuristicLab.Visualization.Options.ColorSelection();
       this.MarkercheckBox = new System.Windows.Forms.CheckBox();
       this.label4 = new System.Windows.Forms.Label();
@@ -44,4 +46,7 @@
       this.btnChangeTitleFont = new System.Windows.Forms.Button();
       this.tpXAxis = new System.Windows.Forms.TabPage();
+      this.groupBox2 = new System.Windows.Forms.GroupBox();
+      this.label6 = new System.Windows.Forms.Label();
+      this.xAxisGridColorSelection = new HeuristicLab.Visualization.Options.ColorSelection();
       this.chkShowXAxisGrid = new System.Windows.Forms.CheckBox();
       this.btnChangeXAxisFont = new System.Windows.Forms.Button();
@@ -52,8 +57,4 @@
       this.flpShowYAxis = new System.Windows.Forms.FlowLayoutPanel();
       this.fdFont = new System.Windows.Forms.FontDialog();
-      this.label6 = new System.Windows.Forms.Label();
-      this.groupBox2 = new System.Windows.Forms.GroupBox();
-      this.selectedLineColorSelection = new HeuristicLab.Visualization.Options.ColorSelection();
-      this.xAxisGridColorSelection = new HeuristicLab.Visualization.Options.ColorSelection();
       this.Optionstabs.SuspendLayout();
       this.tabPage1.SuspendLayout();
@@ -62,8 +63,8 @@
       this.tpTitle.SuspendLayout();
       this.tpXAxis.SuspendLayout();
+      this.groupBox2.SuspendLayout();
       this.tpYAxes.SuspendLayout();
       this.gbxYAxisClipChangeable.SuspendLayout();
       this.gbxShowYAxis.SuspendLayout();
-      this.groupBox2.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -84,4 +85,5 @@
       // tabPage1
       // 
+      this.tabPage1.Controls.Add(this.btnAddLine);
       this.tabPage1.Controls.Add(this.label2);
       this.tabPage1.Controls.Add(this.LinestyleCB);
@@ -97,4 +99,14 @@
       this.tabPage1.UseVisualStyleBackColor = true;
       // 
+      // btnAddLine
+      // 
+      this.btnAddLine.Location = new System.Drawing.Point(192, 177);
+      this.btnAddLine.Name = "btnAddLine";
+      this.btnAddLine.Size = new System.Drawing.Size(75, 23);
+      this.btnAddLine.TabIndex = 10;
+      this.btnAddLine.Text = "Add Line";
+      this.btnAddLine.UseVisualStyleBackColor = true;
+      this.btnAddLine.Click += new System.EventHandler(this.btnAddLine_Click);
+      // 
       // label2
       // 
@@ -144,13 +156,22 @@
       this.groupBox1.Location = new System.Drawing.Point(4, 54);
       this.groupBox1.Name = "groupBox1";
-      this.groupBox1.Size = new System.Drawing.Size(274, 129);
+      this.groupBox1.Size = new System.Drawing.Size(274, 120);
       this.groupBox1.TabIndex = 9;
       this.groupBox1.TabStop = false;
       this.groupBox1.Text = "Details";
       // 
+      // selectedLineColorSelection
+      // 
+      this.selectedLineColorSelection.Color = System.Drawing.SystemColors.Control;
+      this.selectedLineColorSelection.Location = new System.Drawing.Point(142, 73);
+      this.selectedLineColorSelection.Name = "selectedLineColorSelection";
+      this.selectedLineColorSelection.Size = new System.Drawing.Size(121, 25);
+      this.selectedLineColorSelection.TabIndex = 10;
+      this.selectedLineColorSelection.ColorChanged += new HeuristicLab.Visualization.Options.ColorChangedHandler(this.selectedLineColorSelection_ColorChanged);
+      // 
       // MarkercheckBox
       // 
       this.MarkercheckBox.AutoSize = true;
-      this.MarkercheckBox.Location = new System.Drawing.Point(142, 106);
+      this.MarkercheckBox.Location = new System.Drawing.Point(204, 103);
       this.MarkercheckBox.Name = "MarkercheckBox";
       this.MarkercheckBox.Size = new System.Drawing.Size(59, 17);
@@ -280,4 +301,34 @@
       this.tpXAxis.UseVisualStyleBackColor = true;
       // 
+      // groupBox2
+      // 
+      this.groupBox2.Controls.Add(this.label6);
+      this.groupBox2.Controls.Add(this.xAxisGridColorSelection);
+      this.groupBox2.Controls.Add(this.chkShowXAxisGrid);
+      this.groupBox2.Location = new System.Drawing.Point(8, 42);
+      this.groupBox2.Name = "groupBox2";
+      this.groupBox2.Size = new System.Drawing.Size(205, 94);
+      this.groupBox2.TabIndex = 6;
+      this.groupBox2.TabStop = false;
+      this.groupBox2.Text = "Grid";
+      // 
+      // label6
+      // 
+      this.label6.AutoSize = true;
+      this.label6.Location = new System.Drawing.Point(20, 55);
+      this.label6.Name = "label6";
+      this.label6.Size = new System.Drawing.Size(31, 13);
+      this.label6.TabIndex = 5;
+      this.label6.Text = "Color";
+      // 
+      // xAxisGridColorSelection
+      // 
+      this.xAxisGridColorSelection.Color = System.Drawing.SystemColors.Control;
+      this.xAxisGridColorSelection.Location = new System.Drawing.Point(54, 49);
+      this.xAxisGridColorSelection.Name = "xAxisGridColorSelection";
+      this.xAxisGridColorSelection.Size = new System.Drawing.Size(126, 25);
+      this.xAxisGridColorSelection.TabIndex = 4;
+      this.xAxisGridColorSelection.ColorChanged += new HeuristicLab.Visualization.Options.ColorChangedHandler(this.xAxisGridColorSelection_ColorChanged);
+      // 
       // chkShowXAxisGrid
       // 
@@ -355,43 +406,4 @@
       this.flpShowYAxis.Size = new System.Drawing.Size(275, 57);
       this.flpShowYAxis.TabIndex = 0;
-      // 
-      // label6
-      // 
-      this.label6.AutoSize = true;
-      this.label6.Location = new System.Drawing.Point(20, 55);
-      this.label6.Name = "label6";
-      this.label6.Size = new System.Drawing.Size(31, 13);
-      this.label6.TabIndex = 5;
-      this.label6.Text = "Color";
-      // 
-      // groupBox2
-      // 
-      this.groupBox2.Controls.Add(this.label6);
-      this.groupBox2.Controls.Add(this.xAxisGridColorSelection);
-      this.groupBox2.Controls.Add(this.chkShowXAxisGrid);
-      this.groupBox2.Location = new System.Drawing.Point(8, 42);
-      this.groupBox2.Name = "groupBox2";
-      this.groupBox2.Size = new System.Drawing.Size(205, 94);
-      this.groupBox2.TabIndex = 6;
-      this.groupBox2.TabStop = false;
-      this.groupBox2.Text = "Grid";
-      // 
-      // selectedLineColorSelection
-      // 
-      this.selectedLineColorSelection.Color = System.Drawing.SystemColors.Control;
-      this.selectedLineColorSelection.Location = new System.Drawing.Point(142, 73);
-      this.selectedLineColorSelection.Name = "selectedLineColorSelection";
-      this.selectedLineColorSelection.Size = new System.Drawing.Size(121, 25);
-      this.selectedLineColorSelection.TabIndex = 10;
-      this.selectedLineColorSelection.ColorChanged += new HeuristicLab.Visualization.Options.ColorChangedHandler(this.selectedLineColorSelection_ColorChanged);
-      // 
-      // xAxisGridColorSelection
-      // 
-      this.xAxisGridColorSelection.Color = System.Drawing.SystemColors.Control;
-      this.xAxisGridColorSelection.Location = new System.Drawing.Point(54, 49);
-      this.xAxisGridColorSelection.Name = "xAxisGridColorSelection";
-      this.xAxisGridColorSelection.Size = new System.Drawing.Size(126, 25);
-      this.xAxisGridColorSelection.TabIndex = 4;
-      this.xAxisGridColorSelection.ColorChanged += new HeuristicLab.Visualization.Options.ColorChangedHandler(this.xAxisGridColorSelection_ColorChanged);
       // 
       // Options
@@ -413,4 +425,6 @@
       this.tpTitle.PerformLayout();
       this.tpXAxis.ResumeLayout(false);
+      this.groupBox2.ResumeLayout(false);
+      this.groupBox2.PerformLayout();
       this.tpYAxes.ResumeLayout(false);
       this.tpYAxes.PerformLayout();
@@ -419,6 +433,4 @@
       this.gbxShowYAxis.ResumeLayout(false);
       this.gbxShowYAxis.PerformLayout();
-      this.groupBox2.ResumeLayout(false);
-      this.groupBox2.PerformLayout();
       this.ResumeLayout(false);
 
@@ -459,4 +471,6 @@
     private System.Windows.Forms.Label label6;
     private ColorSelection xAxisGridColorSelection;
+    private System.Windows.Forms.Button btnAddLine;
+    private AddLineDialog addLineDialog;
   }
 }
Index: /trunk/sources/HeuristicLab.Visualization/3.2/Options/Options.cs
===================================================================
--- /trunk/sources/HeuristicLab.Visualization/3.2/Options/Options.cs	(revision 2039)
+++ /trunk/sources/HeuristicLab.Visualization/3.2/Options/Options.cs	(revision 2040)
@@ -10,5 +10,5 @@
     private ViewSettings viewSettings;
     private ViewSettings oldViewSettings;
-    private LineParams[] oldLineParams;
+    private List<LineParams> oldLineParams;
     private string oldTitle;
     private Dictionary<CheckBox, bool> ShowYAxisBoxes;
@@ -154,4 +154,5 @@
 
     private void Options_Load(object sender, EventArgs e) {
+      model.DataRowAdded += model_DataRowAdded;
       oldShowXAxisGrid = model.XAxis.ShowGrid;
       chkShowXAxisGrid.Checked = model.XAxis.ShowGrid;
@@ -165,4 +166,10 @@
       InitTabPageLines();
       InitTabPageYAxes();
+    }
+
+    void model_DataRowAdded(IDataRow row)
+    {
+      LineSelectCB.Items.Add(row);
+      oldLineParams.Add(new LineParams(row));
     }
 
@@ -170,7 +177,8 @@
       if (model.Rows.Count != 0) {
         int index = 0;
-        oldLineParams = new LineParams[model.Rows.Count];
+        oldLineParams = new List<LineParams>();
         foreach (var row in model.Rows) {
-          oldLineParams[index++] = new LineParams(row);
+          oldLineParams.Add(new LineParams(row));
+          LineSelectCB.Items.Add(row);
         }
         LineThicknessCB.DataSource = GetThicknesses();
@@ -180,5 +188,7 @@
         MarkercheckBox.Checked = model.Rows[0].RowSettings.ShowMarkers;
 
-        LineSelectCB.DataSource = model.Rows;
+      // LineSelectCB.DataSource = model.Rows;
+        LineSelectCB.DisplayMember = "RowSettings.Label";
+
 
         LineSelectCB.SelectedIndex = 0;
@@ -213,5 +223,5 @@
 
     private void LineSelectCB_SelectedIndexChanged(object sender, EventArgs e) {
-      if (LineSelectCB.SelectedValue != null) {
+      if (LineSelectCB.SelectedItem != null) {
         /*  int index =
             LineThicknessCB.FindStringExact(((IDataRow)LineSelectCB.SelectedValue).Thickness.ToString());
@@ -219,8 +229,8 @@
           index = LinestyleCB.FindStringExact(((IDataRow)LineSelectCB.SelectedValue).Style.ToString());
           LinestyleCB.SelectedIndex = index;  */
-        LineThicknessCB.SelectedItem = ((IDataRow)LineSelectCB.SelectedValue).RowSettings.Thickness;
-        LinestyleCB.SelectedItem = ((IDataRow)LineSelectCB.SelectedValue).RowSettings.Style;
-        selectedLineColorSelection.Color = ((IDataRow)LineSelectCB.SelectedValue).RowSettings.Color;
-        MarkercheckBox.Checked = ((IDataRow)LineSelectCB.SelectedValue).RowSettings.ShowMarkers;
+        LineThicknessCB.SelectedItem = ((IDataRow)LineSelectCB.SelectedItem).RowSettings.Thickness;
+        LinestyleCB.SelectedItem = ((IDataRow)LineSelectCB.SelectedItem).RowSettings.Style;
+        selectedLineColorSelection.Color = ((IDataRow)LineSelectCB.SelectedItem).RowSettings.Color;
+        MarkercheckBox.Checked = ((IDataRow)LineSelectCB.SelectedItem).RowSettings.ShowMarkers;
       }
     }
@@ -232,18 +242,18 @@
 
     private void LinestyleCB_SelectedIndexChanged(object sender, EventArgs e) {
-      if (LineSelectCB.SelectedValue != null) {
-        ((IDataRow)LineSelectCB.SelectedValue).RowSettings.Style = (DrawingStyle)LinestyleCB.SelectedItem;
+      if (LineSelectCB.SelectedItem != null) {
+        ((IDataRow)LineSelectCB.SelectedItem).RowSettings.Style = (DrawingStyle)LinestyleCB.SelectedItem;
       }
     }
 
     private void LineThicknessCB_SelectedIndexChanged(object sender, EventArgs e) {
-      if (LineSelectCB.SelectedValue != null) {
-        ((IDataRow)LineSelectCB.SelectedValue).RowSettings.Thickness = (int)LineThicknessCB.SelectedItem;
+      if (LineSelectCB.SelectedItem != null) {
+        ((IDataRow)LineSelectCB.SelectedItem).RowSettings.Thickness = (int)LineThicknessCB.SelectedItem;
       }
     }
 
     private void MarkercheckBox_CheckedChanged(object sender, EventArgs e) {
-      if (LineSelectCB.SelectedValue != null) {
-        ((IDataRow)LineSelectCB.SelectedValue).RowSettings.ShowMarkers = MarkercheckBox.Checked;
+      if (LineSelectCB.SelectedItem != null) {
+        ((IDataRow)LineSelectCB.SelectedItem).RowSettings.ShowMarkers = MarkercheckBox.Checked;
       }
     }
@@ -259,5 +269,6 @@
 
     private void selectedLineColorSelection_ColorChanged(ColorSelection sender) {
-      ((IDataRow)LineSelectCB.SelectedValue).RowSettings.Color = selectedLineColorSelection.Color;
+      if(LineSelectCB.SelectedItem!=null)
+      ((IDataRow)LineSelectCB.SelectedItem).RowSettings.Color = selectedLineColorSelection.Color;
     }
 
@@ -265,4 +276,9 @@
       model.XAxis.GridColor = xAxisGridColorSelection.Color;
     }
+
+    private void btnAddLine_Click(object sender, EventArgs e) {
+      addLineDialog = new AddLineDialog(model);
+      addLineDialog.Show();
+    }
   }
 }
