Index: /branches/HeuristicLab.Data Path DataTypes/HeuristicLab.Data.Views/3.3/HeuristicLab.Data.Views-3.3.csproj
===================================================================
--- /branches/HeuristicLab.Data Path DataTypes/HeuristicLab.Data.Views/3.3/HeuristicLab.Data.Views-3.3.csproj	(revision 9696)
+++ /branches/HeuristicLab.Data Path DataTypes/HeuristicLab.Data.Views/3.3/HeuristicLab.Data.Views-3.3.csproj	(revision 9697)
@@ -242,11 +242,4 @@
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\..\HeuristicLab.Data\3.3\HeuristicLab.Data-3.3.csproj">
-      <Project>{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}</Project>
-      <Name>HeuristicLab.Data-3.3</Name>
-      <Private>False</Private>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
     <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
       <Visible>False</Visible>
@@ -264,4 +257,10 @@
       <Install>true</Install>
     </BootstrapperPackage>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Data\3.3\HeuristicLab.Data-3.3.csproj">
+      <Project>{bbab9df5-5ef3-4ba8-ade9-b36e82114937}</Project>
+      <Name>HeuristicLab.Data-3.3</Name>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Index: /branches/HeuristicLab.Data Path DataTypes/HeuristicLab.Data.Views/3.3/Path Views/DirectoryValueView.cs
===================================================================
--- /branches/HeuristicLab.Data Path DataTypes/HeuristicLab.Data.Views/3.3/Path Views/DirectoryValueView.cs	(revision 9696)
+++ /branches/HeuristicLab.Data Path DataTypes/HeuristicLab.Data.Views/3.3/Path Views/DirectoryValueView.cs	(revision 9697)
@@ -47,5 +47,6 @@
     protected override void SetEnabledStateOfControls() {
       base.SetEnabledStateOfControls();
-      valueTextBox.ReadOnly = Locked || ReadOnly || Content == null || Content.CheckExistence;
+      valueTextBox.Enabled = !Locked && !ReadOnly && Content != null;
+      valueTextBox.ReadOnly = Locked || ReadOnly || Content == null;
       openButton.Enabled = !Locked && !ReadOnly && Content != null;
     }
@@ -64,8 +65,5 @@
     protected virtual void openButton_Click(object sender, EventArgs e) {
       if (folderBrowserDialog.ShowDialog(this) != DialogResult.OK) return;
-
-      valueTextBox.Text = folderBrowserDialog.SelectedPath;
-      valueTextBox.Focus();
-      Validate();
+      Content.Value = folderBrowserDialog.SelectedPath;
     }
   }
Index: /branches/HeuristicLab.Data Path DataTypes/HeuristicLab.Data.Views/3.3/Path Views/FileValueView.cs
===================================================================
--- /branches/HeuristicLab.Data Path DataTypes/HeuristicLab.Data.Views/3.3/Path Views/FileValueView.cs	(revision 9696)
+++ /branches/HeuristicLab.Data Path DataTypes/HeuristicLab.Data.Views/3.3/Path Views/FileValueView.cs	(revision 9697)
@@ -22,5 +22,4 @@
 using System;
 using System.Windows.Forms;
-using HeuristicLab.Data.Views;
 using HeuristicLab.MainForm;
 
@@ -56,6 +55,6 @@
     protected override void SetEnabledStateOfControls() {
       base.SetEnabledStateOfControls();
-      valueTextBox.Enabled = !Locked && !ReadOnly && Content != null && !Content.CheckExistence;
-      valueTextBox.ReadOnly = Locked || ReadOnly || Content == null || Content.CheckExistence;
+      valueTextBox.Enabled = !Locked && !ReadOnly && Content != null;
+      valueTextBox.ReadOnly = Locked || ReadOnly || Content == null;
       openButton.Enabled = !Locked && !ReadOnly && Content != null;
     }
Index: /branches/HeuristicLab.Data Path DataTypes/HeuristicLab.Data.Views/3.3/Path Views/TextFileView.cs
===================================================================
--- /branches/HeuristicLab.Data Path DataTypes/HeuristicLab.Data.Views/3.3/Path Views/TextFileView.cs	(revision 9696)
+++ /branches/HeuristicLab.Data Path DataTypes/HeuristicLab.Data.Views/3.3/Path Views/TextFileView.cs	(revision 9697)
@@ -68,5 +68,5 @@
       saveButton.Enabled = !Locked && !ReadOnly && Content != null && ChangedFileContent;
 
-      if (Content != null && File.Exists(Content.Value)) {
+      if (Content != null && Content.Exists()) {
         fileSystemWatcher.Filter = Path.GetFileName(Content.Value);
         fileSystemWatcher.Path = Path.GetDirectoryName(Content.Value);
@@ -77,5 +77,5 @@
     protected override void OnVisibleChanged(EventArgs e) {
       //mkommend: necessary to update the textbox to detect intermediate file changes.
-      if (Visible) UpdateTextBox();
+      if (Visible && Content != null) UpdateTextBox();
       base.OnVisibleChanged(e);
     }
@@ -228,5 +228,4 @@
     public static string ReadFile(string path) {
       if (!File.Exists(path)) return null;
-      //TODO handle IO Exceptions
       string fileContent;
       using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read)) {
@@ -239,5 +238,4 @@
 
     public static void WriteFile(string path, string fileContent) {
-      //TODO handle IO Exceptions
       using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Write)) {
         using (StreamWriter streamWriter = new StreamWriter(fileStream)) {
Index: /branches/HeuristicLab.Data Path DataTypes/HeuristicLab.Data.Views/3.3/StringConvertibleArrayView.cs
===================================================================
--- /branches/HeuristicLab.Data Path DataTypes/HeuristicLab.Data.Views/3.3/StringConvertibleArrayView.cs	(revision 9696)
+++ /branches/HeuristicLab.Data Path DataTypes/HeuristicLab.Data.Views/3.3/StringConvertibleArrayView.cs	(revision 9697)
@@ -23,5 +23,4 @@
 using System.ComponentModel;
 using System.Drawing;
-using System.Linq;
 using System.Text;
 using System.Windows.Forms;
@@ -105,9 +104,11 @@
 
     protected virtual void UpdateRowHeaders() {
-      for (int i = 0; i < dataGridView.RowCount; i++) {
-        if (i < Content.ElementNames.Count())
-          dataGridView.Rows[i].HeaderCell.Value = Content.ElementNames.ElementAt(i);
-        else
-          dataGridView.Rows[i].HeaderCell.Value = string.Empty;
+      int i = 0;
+      foreach (string elementName in Content.ElementNames) {
+        dataGridView.Rows[i].HeaderCell.Value = elementName;
+        i++;
+      }
+      for (; i < dataGridView.RowCount; i++) {
+        dataGridView.Rows[i].HeaderCell.Value = string.Empty;
       }
     }
@@ -124,4 +125,7 @@
         Invoke(new EventHandler<EventArgs<int>>(Content_ItemChanged), sender, e);
       else {
+        // if a resize of the array occurs and some other class handles the event and provides default values
+        //then the itemChanged will occur before the reset event. hence the check was added
+        if (dataGridView.RowCount <= e.Value) return;
         dataGridView.Rows[e.Value].Cells[0].Value = Content.GetValue(e.Value);
         Size size = dataGridView.Rows[e.Value].Cells[0].PreferredSize;
Index: /branches/HeuristicLab.Data Path DataTypes/HeuristicLab.Data/3.3/Path Types/PathValue.cs
===================================================================
--- /branches/HeuristicLab.Data Path DataTypes/HeuristicLab.Data/3.3/Path Types/PathValue.cs	(revision 9696)
+++ /branches/HeuristicLab.Data Path DataTypes/HeuristicLab.Data/3.3/Path Types/PathValue.cs	(revision 9697)
@@ -21,5 +21,4 @@
 
 
-using System;
 using System.IO;
 using HeuristicLab.Common;
@@ -31,27 +30,9 @@
   [StorableClass]
   public abstract class PathValue : StringValue {
-    [Storable]
-    private bool checkExistence;
-    public bool CheckExistence {
-      get { return checkExistence; }
-      set {
-        if (ReadOnly) throw new NotSupportedException("CheckExistence cannot be set. PathValue is read-only.");
-        if (value != checkExistence) {
-          checkExistence = value;
-          OnCheckExistenceChanged();
-        }
-      }
-    }
-
     public override string Value {
       get { return base.Value; }
       set {
         if (value == null) value = string.Empty;
-        if (checkExistence && !string.IsNullOrEmpty(value) && !File.Exists(value) && !Directory.Exists(value))
-          throw new ArgumentException(string.Format("The given file {0} does not exists.", value));
-        if (value[value.Length - 1] == Path.DirectorySeparatorChar)
-          value = value.TrimEnd(Path.DirectorySeparatorChar);
-        if (value[value.Length - 1] == Path.AltDirectorySeparatorChar)
-          value = value.TrimEnd(Path.AltDirectorySeparatorChar);
+        value = value.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
         base.Value = value;
       }
@@ -60,30 +41,10 @@
     [StorableConstructor]
     protected PathValue(bool deserializing) : base(deserializing) { }
-    protected PathValue(PathValue original, Cloner cloner)
-      : base(original, cloner) {
-      checkExistence = original.checkExistence;
-    }
+    protected PathValue(PathValue original, Cloner cloner) : base(original, cloner) { }
 
     protected PathValue()
-      : base(string.Empty) {
-      checkExistence = true;
-    }
+      : base(string.Empty) { }
 
     public abstract bool Exists();
-
-    protected override bool Validate(string value, out string errorMessage) {
-      if (CheckExistence && !File.Exists(value) && !Directory.Exists(value)) {
-        errorMessage = string.Format("The given path {0} does not exist.", value);
-        return false;
-      }
-      return base.Validate(value, out errorMessage);
-    }
-
-    public event EventHandler CheckExistenceChanged;
-    protected virtual void OnCheckExistenceChanged() {
-      var handler = CheckExistenceChanged;
-      if (handler != null)
-        handler(this, EventArgs.Empty);
-    }
   }
 }
