Index: branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/HeuristicLab.Problems.DataAnalysis.Views-3.4.csproj
===================================================================
--- branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/HeuristicLab.Problems.DataAnalysis.Views-3.4.csproj	(revision 16756)
+++ branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/HeuristicLab.Problems.DataAnalysis.Views-3.4.csproj	(revision 16772)
@@ -576,4 +576,10 @@
       <DependentUpon>TimeSeriesPrognosisSolutionErrorCharacteristicsCurveView.cs</DependentUpon>
     </Compile>
+    <Compile Include="IntervalConstraintView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="IntervalConstraintView.Designer.cs">
+      <DependentUpon>IntervalConstraintView.cs</DependentUpon>
+    </Compile>
     <None Include="HeuristicLab.snk" />
     <None Include="Plugin.cs.frame" />
@@ -628,4 +634,7 @@
       <DependentUpon>TextValueView.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="IntervalConstraintView.resx">
+      <DependentUpon>IntervalConstraintView.cs</DependentUpon>
+    </EmbeddedResource>
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Index: branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/IntervalConstraintView.Designer.cs
===================================================================
--- branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/IntervalConstraintView.Designer.cs	(revision 16772)
+++ branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/IntervalConstraintView.Designer.cs	(revision 16772)
@@ -0,0 +1,262 @@
+﻿namespace HeuristicLab.Problems.DataAnalysis.Views {
+  partial class IntervalConstraintView {
+    /// <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.expressionLabel = new System.Windows.Forms.Label();
+      this.definitionLabel = new System.Windows.Forms.Label();
+      this.lowerboundLabel = new System.Windows.Forms.Label();
+      this.upperboundLabel = new System.Windows.Forms.Label();
+      this.incllowerboundLabel = new System.Windows.Forms.Label();
+      this.inclupperboundLabel = new System.Windows.Forms.Label();
+      this.isderivationLabel = new System.Windows.Forms.Label();
+      this.variableLabel = new System.Windows.Forms.Label();
+      this.numberderivationLabel = new System.Windows.Forms.Label();
+      this.definitionInput = new System.Windows.Forms.TextBox();
+      this.expressionInput = new System.Windows.Forms.TextBox();
+      this.upperboundInput = new System.Windows.Forms.TextBox();
+      this.lowerboundInput = new System.Windows.Forms.TextBox();
+      this.variableInput = new System.Windows.Forms.TextBox();
+      this.numberderivationInput = new System.Windows.Forms.TextBox();
+      this.groupBox1 = new System.Windows.Forms.GroupBox();
+      this.lowerCombo = new System.Windows.Forms.ComboBox();
+      this.upperCombo = new System.Windows.Forms.ComboBox();
+      this.derivationInput = new System.Windows.Forms.TextBox();
+      this.groupBox1.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // expressionLabel
+      // 
+      this.expressionLabel.AutoSize = true;
+      this.expressionLabel.Location = new System.Drawing.Point(11, 20);
+      this.expressionLabel.Name = "expressionLabel";
+      this.expressionLabel.Size = new System.Drawing.Size(61, 13);
+      this.expressionLabel.TabIndex = 0;
+      this.expressionLabel.Text = "Expression:";
+      // 
+      // definitionLabel
+      // 
+      this.definitionLabel.AutoSize = true;
+      this.definitionLabel.Location = new System.Drawing.Point(11, 45);
+      this.definitionLabel.Name = "definitionLabel";
+      this.definitionLabel.Size = new System.Drawing.Size(54, 13);
+      this.definitionLabel.TabIndex = 1;
+      this.definitionLabel.Text = "Definition:";
+      // 
+      // lowerboundLabel
+      // 
+      this.lowerboundLabel.AutoSize = true;
+      this.lowerboundLabel.Location = new System.Drawing.Point(11, 71);
+      this.lowerboundLabel.Name = "lowerboundLabel";
+      this.lowerboundLabel.Size = new System.Drawing.Size(69, 13);
+      this.lowerboundLabel.TabIndex = 2;
+      this.lowerboundLabel.Text = "Lowerbound:";
+      // 
+      // upperboundLabel
+      // 
+      this.upperboundLabel.AutoSize = true;
+      this.upperboundLabel.Location = new System.Drawing.Point(11, 96);
+      this.upperboundLabel.Name = "upperboundLabel";
+      this.upperboundLabel.Size = new System.Drawing.Size(69, 13);
+      this.upperboundLabel.TabIndex = 3;
+      this.upperboundLabel.Text = "Upperbound:";
+      // 
+      // incllowerboundLabel
+      // 
+      this.incllowerboundLabel.AutoSize = true;
+      this.incllowerboundLabel.Location = new System.Drawing.Point(11, 122);
+      this.incllowerboundLabel.Name = "incllowerboundLabel";
+      this.incllowerboundLabel.Size = new System.Drawing.Size(92, 13);
+      this.incllowerboundLabel.TabIndex = 4;
+      this.incllowerboundLabel.Text = "Incl. Lowerbound:";
+      // 
+      // inclupperboundLabel
+      // 
+      this.inclupperboundLabel.AutoSize = true;
+      this.inclupperboundLabel.Location = new System.Drawing.Point(11, 147);
+      this.inclupperboundLabel.Name = "inclupperboundLabel";
+      this.inclupperboundLabel.Size = new System.Drawing.Size(92, 13);
+      this.inclupperboundLabel.TabIndex = 5;
+      this.inclupperboundLabel.Text = "Incl. Upperbound:";
+      // 
+      // isderivationLabel
+      // 
+      this.isderivationLabel.AutoSize = true;
+      this.isderivationLabel.Location = new System.Drawing.Point(11, 173);
+      this.isderivationLabel.Name = "isderivationLabel";
+      this.isderivationLabel.Size = new System.Drawing.Size(58, 13);
+      this.isderivationLabel.TabIndex = 6;
+      this.isderivationLabel.Text = "Derivation:";
+      // 
+      // variableLabel
+      // 
+      this.variableLabel.AutoSize = true;
+      this.variableLabel.Location = new System.Drawing.Point(11, 198);
+      this.variableLabel.Name = "variableLabel";
+      this.variableLabel.Size = new System.Drawing.Size(48, 13);
+      this.variableLabel.TabIndex = 7;
+      this.variableLabel.Text = "Variable:";
+      // 
+      // numberderivationLabel
+      // 
+      this.numberderivationLabel.AutoSize = true;
+      this.numberderivationLabel.Location = new System.Drawing.Point(11, 224);
+      this.numberderivationLabel.Name = "numberderivationLabel";
+      this.numberderivationLabel.Size = new System.Drawing.Size(65, 13);
+      this.numberderivationLabel.TabIndex = 8;
+      this.numberderivationLabel.Text = "#Derivation:";
+      // 
+      // definitionInput
+      // 
+      this.definitionInput.Location = new System.Drawing.Point(111, 42);
+      this.definitionInput.Name = "definitionInput";
+      this.definitionInput.Size = new System.Drawing.Size(473, 20);
+      this.definitionInput.TabIndex = 9;
+      // 
+      // expressionInput
+      // 
+      this.expressionInput.Location = new System.Drawing.Point(111, 17);
+      this.expressionInput.Name = "expressionInput";
+      this.expressionInput.Size = new System.Drawing.Size(473, 20);
+      this.expressionInput.TabIndex = 10;
+      // 
+      // upperboundInput
+      // 
+      this.upperboundInput.Location = new System.Drawing.Point(111, 93);
+      this.upperboundInput.Name = "upperboundInput";
+      this.upperboundInput.Size = new System.Drawing.Size(473, 20);
+      this.upperboundInput.TabIndex = 11;
+      // 
+      // lowerboundInput
+      // 
+      this.lowerboundInput.Location = new System.Drawing.Point(111, 68);
+      this.lowerboundInput.Name = "lowerboundInput";
+      this.lowerboundInput.Size = new System.Drawing.Size(473, 20);
+      this.lowerboundInput.TabIndex = 12;
+      // 
+      // variableInput
+      // 
+      this.variableInput.Location = new System.Drawing.Point(111, 195);
+      this.variableInput.Name = "variableInput";
+      this.variableInput.Size = new System.Drawing.Size(473, 20);
+      this.variableInput.TabIndex = 15;
+      // 
+      // numberderivationInput
+      // 
+      this.numberderivationInput.Location = new System.Drawing.Point(111, 221);
+      this.numberderivationInput.Name = "numberderivationInput";
+      this.numberderivationInput.Size = new System.Drawing.Size(473, 20);
+      this.numberderivationInput.TabIndex = 17;
+      // 
+      // groupBox1
+      // 
+      this.groupBox1.Controls.Add(this.derivationInput);
+      this.groupBox1.Controls.Add(this.lowerCombo);
+      this.groupBox1.Controls.Add(this.upperCombo);
+      this.groupBox1.Controls.Add(this.numberderivationInput);
+      this.groupBox1.Controls.Add(this.variableInput);
+      this.groupBox1.Controls.Add(this.lowerboundInput);
+      this.groupBox1.Controls.Add(this.upperboundInput);
+      this.groupBox1.Controls.Add(this.expressionInput);
+      this.groupBox1.Controls.Add(this.definitionInput);
+      this.groupBox1.Controls.Add(this.numberderivationLabel);
+      this.groupBox1.Controls.Add(this.variableLabel);
+      this.groupBox1.Controls.Add(this.isderivationLabel);
+      this.groupBox1.Controls.Add(this.inclupperboundLabel);
+      this.groupBox1.Controls.Add(this.incllowerboundLabel);
+      this.groupBox1.Controls.Add(this.upperboundLabel);
+      this.groupBox1.Controls.Add(this.lowerboundLabel);
+      this.groupBox1.Controls.Add(this.definitionLabel);
+      this.groupBox1.Controls.Add(this.expressionLabel);
+      this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.groupBox1.Location = new System.Drawing.Point(0, 0);
+      this.groupBox1.Name = "groupBox1";
+      this.groupBox1.Size = new System.Drawing.Size(587, 380);
+      this.groupBox1.TabIndex = 0;
+      this.groupBox1.TabStop = false;
+      this.groupBox1.Text = "Interval Constraints Detail";
+      // 
+      // lowerCombo
+      // 
+      this.lowerCombo.FormattingEnabled = true;
+      this.lowerCombo.Items.AddRange(new object[] {
+            "True",
+            "False"});
+      this.lowerCombo.Location = new System.Drawing.Point(111, 119);
+      this.lowerCombo.Name = "lowerCombo";
+      this.lowerCombo.Size = new System.Drawing.Size(473, 21);
+      this.lowerCombo.TabIndex = 20;
+      // 
+      // upperCombo
+      // 
+      this.upperCombo.FormattingEnabled = true;
+      this.upperCombo.Items.AddRange(new object[] {
+            "True",
+            "False"});
+      this.upperCombo.Location = new System.Drawing.Point(111, 146);
+      this.upperCombo.Name = "upperCombo";
+      this.upperCombo.Size = new System.Drawing.Size(473, 21);
+      this.upperCombo.TabIndex = 19;
+      // 
+      // derivationInput
+      // 
+      this.derivationInput.Location = new System.Drawing.Point(111, 170);
+      this.derivationInput.Name = "derivationInput";
+      this.derivationInput.Size = new System.Drawing.Size(473, 20);
+      this.derivationInput.TabIndex = 21;
+      // 
+      // IntervalConstraintView
+      // 
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
+      this.Controls.Add(this.groupBox1);
+      this.Name = "IntervalConstraintView";
+      this.Size = new System.Drawing.Size(587, 380);
+      this.groupBox1.ResumeLayout(false);
+      this.groupBox1.PerformLayout();
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Label expressionLabel;
+    private System.Windows.Forms.Label definitionLabel;
+    private System.Windows.Forms.Label lowerboundLabel;
+    private System.Windows.Forms.Label upperboundLabel;
+    private System.Windows.Forms.Label incllowerboundLabel;
+    private System.Windows.Forms.Label inclupperboundLabel;
+    private System.Windows.Forms.Label isderivationLabel;
+    private System.Windows.Forms.Label variableLabel;
+    private System.Windows.Forms.Label numberderivationLabel;
+    private System.Windows.Forms.TextBox definitionInput;
+    private System.Windows.Forms.TextBox expressionInput;
+    private System.Windows.Forms.TextBox upperboundInput;
+    private System.Windows.Forms.TextBox lowerboundInput;
+    private System.Windows.Forms.TextBox variableInput;
+    private System.Windows.Forms.TextBox numberderivationInput;
+    private System.Windows.Forms.GroupBox groupBox1;
+    private System.Windows.Forms.ComboBox lowerCombo;
+    private System.Windows.Forms.ComboBox upperCombo;
+    private System.Windows.Forms.TextBox derivationInput;
+  }
+}
Index: branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/IntervalConstraintView.cs
===================================================================
--- branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/IntervalConstraintView.cs	(revision 16772)
+++ branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/IntervalConstraintView.cs	(revision 16772)
@@ -0,0 +1,84 @@
+﻿using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Globalization;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using HeuristicLab.Core.Views;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+
+namespace HeuristicLab.Problems.DataAnalysis.Views {
+  [View("Interval Constraint Detail View")]
+  [Content(typeof(IntervalConstraint), true)]
+  public partial class IntervalConstraintView : ItemView {
+
+    public new IntervalConstraint Content {
+      get { return (IntervalConstraint)base.Content; }
+      set { base.Content = value; }
+    }
+    public IntervalConstraintView() {
+      InitializeComponent();
+      expressionInput.ReadOnly = true;
+      definitionInput.ReadOnly = true;
+      derivationInput.ReadOnly = true;
+    }
+
+    protected override void RegisterContentEvents() {
+      base.RegisterContentEvents();
+      Content.Changed += new EventHandler(Content_Changed);
+    }
+
+    protected override void DeregisterContentEvents() {
+      base.DeregisterContentEvents();
+      Content.Changed -= new EventHandler(Content_Changed);
+    }
+
+    private void Content_Changed(object sender, EventArgs e) {
+      UpdateControls();
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      UpdateControls();
+      UpdateValues();
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      lowerboundInput.Enabled = Content != null && !Locked;
+    }
+
+    private void UpdateControls() {
+      if (Content == null) {
+        expressionInput.Text = string.Empty;
+        definitionInput.Text = string.Empty;
+        lowerboundInput.Text = string.Empty;
+        upperboundInput.Text = string.Empty;
+        lowerCombo.SelectedItem = null;
+        lowerCombo.SelectedText = "--Nothing set--";
+        upperCombo.SelectedItem = null;
+        upperCombo.SelectedText = "--Nothing set--";
+      } else {
+        expressionInput.Text = Content.Expression;
+        definitionInput.Text = Content.Definition;
+        lowerboundInput.Text = Content.Interval.LowerBound.ToString(CultureInfo.InvariantCulture);
+        upperboundInput.Text = Content.Interval.UpperBound.ToString(CultureInfo.InvariantCulture);
+        lowerCombo.SelectedIndex = lowerCombo.FindString(Content.InclusiveLowerBound ? "True" : "False");
+        upperCombo.SelectedIndex = upperCombo.FindString(Content.InclusiveUpperBound ? "True" : "False");
+        derivationInput.Text = Content.IsDerivation ? "True" : "False";
+        variableInput.Text = Content.Variable;
+        numberderivationInput.Text = Content.NumberOfDerivation.ToString();
+      }
+      SetEnabledStateOfControls();
+    }
+
+    private void UpdateValues() {
+
+    }
+  }
+}
Index: branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/IntervalConstraintView.resx
===================================================================
--- branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/IntervalConstraintView.resx	(revision 16772)
+++ branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/IntervalConstraintView.resx	(revision 16772)
@@ -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=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>
+</root>
Index: branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/ParsedConstraintView.cs
===================================================================
--- branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/ParsedConstraintView.cs	(revision 16756)
+++ branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/ParsedConstraintView.cs	(revision 16772)
@@ -8,4 +8,5 @@
 using System.Threading.Tasks;
 using System.Windows.Forms;
+using HeuristicLab.Core;
 using HeuristicLab.MainForm;
 using HeuristicLab.MainForm.WindowsForms;
@@ -22,5 +23,5 @@
     public ParsedConstraintView() {
       InitializeComponent();
-      constraintsOutput.ReadOnly = true;
+      errorOutput.Text = "";
     }
 
@@ -29,14 +30,14 @@
       if (Content == null) {
         constraintsInput.Text = string.Empty;
-        constraintsOutput.Text = string.Empty;
-      } else { 
+        errorOutput.Text = "";
+      } else {
         constraintsInput.Text = Content.Input;
-        constraintsOutput.Text = ConstraintsOutput(Content.Constraints ?? new List<IntervalConstraint>());
+        constraintsOutput.Content = new ItemList<IntervalConstraint>(Content.Constraints) ?? new ItemList<IntervalConstraint>();
       }
     }
 
-    private IEnumerable<IntervalConstraint> ParseConstraints(string input) {
-      var parsedIntervals = IntervalConstraintsParser.Parse(input);
-      return parsedIntervals;
+    private ItemList<IntervalConstraint> ParseConstraints(string input) {
+      ItemList<IntervalConstraint> constraints = new ItemList<IntervalConstraint>(IntervalConstraintsParser.Parse(input));
+      return constraints;
     }
 
@@ -55,11 +56,16 @@
     private void parseBtn_Click(object sender, EventArgs e) {
       if (constraintsInput.Text != null) {
-        var constraints = ParseConstraints(constraintsInput.Text);
-        constraintsOutput.Text = ConstraintsOutput(constraints);
-        Content.Constraints = constraints;
+        var constaints = ParseConstraints(constraintsInput.Text);
+        constraintsOutput.Content = constaints;
+        Content.Constraints = constaints;
         Content.Input = constraintsInput.Text;
-      } else { 
-        constraintsOutput.Text = "No Constraints found!";
+        errorOutput.Text = "";
+      } else {
+        errorOutput.Text = "No constraints were found!";
       }
+    }
+
+    private void constraintsInput_TextChanged(object sender, EventArgs e) {
+      errorOutput.Text = "Unparsed changes! Press parse button to save changes.";
     }
   }
Index: branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/ParsedConstraintView.designer.cs
===================================================================
--- branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/ParsedConstraintView.designer.cs	(revision 16756)
+++ branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/ParsedConstraintView.designer.cs	(revision 16772)
@@ -24,12 +24,20 @@
     /// </summary>
     private void InitializeComponent() {
+      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ParsedConstraintView));
       this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+      this.groupBox1 = new System.Windows.Forms.GroupBox();
+      this.constraintsInput = new System.Windows.Forms.TextBox();
       this.parseBtn = new System.Windows.Forms.Button();
-      this.constraintsOutput = new System.Windows.Forms.TextBox();
-      this.constraintsInput = new System.Windows.Forms.TextBox();
+      this.label1 = new System.Windows.Forms.Label();
+      this.groupBox2 = new System.Windows.Forms.GroupBox();
+      //this.constraintsOutput = new System.Windows.Forms.Label();
+      this.constraintsOutput = new HeuristicLab.Core.Views.ItemListView<IntervalConstraint>();
+      this.errorOutput = new System.Windows.Forms.Label();
       ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
       this.splitContainer1.Panel1.SuspendLayout();
       this.splitContainer1.Panel2.SuspendLayout();
       this.splitContainer1.SuspendLayout();
+      this.groupBox1.SuspendLayout();
+      this.groupBox2.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -39,45 +47,92 @@
       this.splitContainer1.Location = new System.Drawing.Point(0, 0);
       this.splitContainer1.Name = "splitContainer1";
-      this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
       // 
       // splitContainer1.Panel1
       // 
-      this.splitContainer1.Panel1.Controls.Add(this.constraintsInput);
-      this.splitContainer1.Panel1.Controls.Add(this.constraintsOutput);
+      this.splitContainer1.Panel1.Controls.Add(this.groupBox1);
       // 
       // splitContainer1.Panel2
       // 
-      this.splitContainer1.Panel2.Controls.Add(this.parseBtn);
-      this.splitContainer1.Size = new System.Drawing.Size(517, 386);
-      this.splitContainer1.SplitterDistance = 347;
+      this.splitContainer1.Panel2.Controls.Add(this.groupBox2);
+      this.splitContainer1.Size = new System.Drawing.Size(888, 629);
+      this.splitContainer1.SplitterDistance = 296;
       this.splitContainer1.TabIndex = 0;
+      // 
+      // groupBox1
+      // 
+      this.groupBox1.Controls.Add(this.constraintsInput);
+      this.groupBox1.Controls.Add(this.parseBtn);
+      this.groupBox1.Controls.Add(this.label1);
+      this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.groupBox1.Location = new System.Drawing.Point(0, 0);
+      this.groupBox1.Name = "groupBox1";
+      this.groupBox1.Size = new System.Drawing.Size(296, 629);
+      this.groupBox1.TabIndex = 3;
+      this.groupBox1.TabStop = false;
+      this.groupBox1.Text = "Constraints Input";
+      // 
+      // constraintsInput
+      // 
+      this.constraintsInput.AcceptsTab = true;
+      this.constraintsInput.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.constraintsInput.Location = new System.Drawing.Point(3, 198);
+      this.constraintsInput.Multiline = true;
+      this.constraintsInput.Name = "constraintsInput";
+      this.constraintsInput.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
+      this.constraintsInput.Size = new System.Drawing.Size(290, 405);
+      this.constraintsInput.TabIndex = 2;
+      this.constraintsInput.TextChanged += new System.EventHandler(this.constraintsInput_TextChanged);
       // 
       // parseBtn
       // 
-      this.parseBtn.Location = new System.Drawing.Point(3, 3);
+      this.parseBtn.Dock = System.Windows.Forms.DockStyle.Bottom;
+      this.parseBtn.Location = new System.Drawing.Point(3, 603);
       this.parseBtn.Name = "parseBtn";
-      this.parseBtn.Size = new System.Drawing.Size(75, 23);
-      this.parseBtn.TabIndex = 0;
-      this.parseBtn.Text = "Parse";
+      this.parseBtn.Size = new System.Drawing.Size(290, 23);
+      this.parseBtn.TabIndex = 1;
+      this.parseBtn.Text = "Parse Constraints";
       this.parseBtn.UseVisualStyleBackColor = true;
       this.parseBtn.Click += new System.EventHandler(this.parseBtn_Click);
       // 
+      // label1
+      // 
+      this.label1.AutoSize = true;
+      this.label1.Dock = System.Windows.Forms.DockStyle.Top;
+      this.label1.Location = new System.Drawing.Point(3, 16);
+      this.label1.Name = "label1";
+      this.label1.Size = new System.Drawing.Size(250, 182);
+      this.label1.TabIndex = 0;
+      this.label1.Text = resources.GetString("label1.Text");
+      // 
+      // groupBox2
+      // 
+      this.groupBox2.Controls.Add(this.constraintsOutput);
+      this.groupBox2.Controls.Add(this.errorOutput);
+      this.groupBox2.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.groupBox2.Location = new System.Drawing.Point(0, 0);
+      this.groupBox2.Name = "groupBox2";
+      this.groupBox2.Size = new System.Drawing.Size(588, 629);
+      this.groupBox2.TabIndex = 0;
+      this.groupBox2.TabStop = false;
+      this.groupBox2.Text = "Parsed Constraints";
+      // 
       // constraintsOutput
       // 
-      this.constraintsOutput.Dock = System.Windows.Forms.DockStyle.Right;
-      this.constraintsOutput.Location = new System.Drawing.Point(276, 0);
-      this.constraintsOutput.Multiline = true;
+      this.constraintsOutput.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.constraintsOutput.Location = new System.Drawing.Point(3, 16);
       this.constraintsOutput.Name = "constraintsOutput";
-      this.constraintsOutput.Size = new System.Drawing.Size(241, 347);
-      this.constraintsOutput.TabIndex = 0;
+      this.constraintsOutput.Size = new System.Drawing.Size(582, 587);
+      this.constraintsOutput.TabIndex = 2;
       // 
-      // constraintsInput
+      // errorOutput
       // 
-      this.constraintsInput.Dock = System.Windows.Forms.DockStyle.Left;
-      this.constraintsInput.Location = new System.Drawing.Point(0, 0);
-      this.constraintsInput.Multiline = true;
-      this.constraintsInput.Name = "constraintsInput";
-      this.constraintsInput.Size = new System.Drawing.Size(241, 347);
-      this.constraintsInput.TabIndex = 1;
+      this.errorOutput.Dock = System.Windows.Forms.DockStyle.Bottom;
+      this.errorOutput.ForeColor = System.Drawing.Color.Red;
+      this.errorOutput.Location = new System.Drawing.Point(3, 603);
+      this.errorOutput.Name = "errorOutput";
+      this.errorOutput.Size = new System.Drawing.Size(582, 23);
+      this.errorOutput.TabIndex = 1;
+      this.errorOutput.Text = "ERROR";
+      this.errorOutput.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
       // 
       // ParsedConstraintView
@@ -87,10 +142,12 @@
       this.Controls.Add(this.splitContainer1);
       this.Name = "ParsedConstraintView";
-      this.Size = new System.Drawing.Size(517, 386);
+      this.Size = new System.Drawing.Size(888, 629);
       this.splitContainer1.Panel1.ResumeLayout(false);
-      this.splitContainer1.Panel1.PerformLayout();
       this.splitContainer1.Panel2.ResumeLayout(false);
       ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
       this.splitContainer1.ResumeLayout(false);
+      this.groupBox1.ResumeLayout(false);
+      this.groupBox1.PerformLayout();
+      this.groupBox2.ResumeLayout(false);
       this.ResumeLayout(false);
 
@@ -100,7 +157,13 @@
 
     private System.Windows.Forms.SplitContainer splitContainer1;
+    private System.Windows.Forms.GroupBox groupBox1;
     private System.Windows.Forms.Button parseBtn;
+    private System.Windows.Forms.Label label1;
     private System.Windows.Forms.TextBox constraintsInput;
-    private System.Windows.Forms.TextBox constraintsOutput;
+    private System.Windows.Forms.GroupBox groupBox2;
+    private System.Windows.Forms.Label errorOutput;
+
+    //private System.Windows.Forms.Label constraintsOutput;
+    private HeuristicLab.Core.Views.ItemListView<IntervalConstraint> constraintsOutput;
   }
 }
Index: branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/ParsedConstraintView.resx
===================================================================
--- branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/ParsedConstraintView.resx	(revision 16756)
+++ branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/ParsedConstraintView.resx	(revision 16772)
@@ -118,3 +118,20 @@
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Input your Constraints here. 
+The constraints must be in a form like this:
+Target:F1 in [0 .. 100]
+dF1 / X1 in ].inf .. 100]
+
+- Mark Target Variable with Prefix Target:
+- Derivation can be written with d or symbol
+- the in keywords seperates formulation from interval
+- Interval can be closed [ or open ]
+- Lowerbound and Upperbound are seperated by ..
+- Postive infinity (inf.) 
+- Negative infinity (-inf.)
+
+Comments can be written with leading #
+</value>
+  </data>
 </root>
