Index: trunk/sources/HeuristicLab.Core.Views/3.3/ItemArrayView.cs
===================================================================
--- trunk/sources/HeuristicLab.Core.Views/3.3/ItemArrayView.cs	(revision 3432)
+++ trunk/sources/HeuristicLab.Core.Views/3.3/ItemArrayView.cs	(revision 3433)
@@ -48,4 +48,12 @@
     }
 
+    public override bool ReadOnly {
+      get {
+        if ((Content != null) && Content.IsReadOnly) return true;
+        else return base.ReadOnly;
+      }
+      set { base.ReadOnly = value; }
+    }
+
     public ListView ItemsListView {
       get { return itemsListView; }
@@ -114,13 +122,13 @@
       } else {
         addButton.Enabled = itemsListView.SelectedItems.Count > 0 &&
-                            !Content.IsReadOnly && !ReadOnly;
+                            !ReadOnly;
         moveUpButton.Enabled = itemsListView.SelectedItems.Count == 1 &&
                                itemsListView.SelectedIndices[0] != 0 &&
-                               !Content.IsReadOnly && !ReadOnly;
+                               !ReadOnly;
         moveDownButton.Enabled = itemsListView.SelectedItems.Count == 1 &&
                                  itemsListView.SelectedIndices[0] != itemsListView.Items.Count - 1 &&
-                                 !Content.IsReadOnly && !ReadOnly;
+                                 !ReadOnly;
         removeButton.Enabled = itemsListView.SelectedItems.Count > 0 &&
-                               !Content.IsReadOnly && !ReadOnly;
+                               !ReadOnly;
         itemsListView.Enabled = true;
         detailsGroupBox.Enabled = true;
@@ -197,12 +205,12 @@
     #region ListView Events
     protected virtual void itemsListView_SelectedIndexChanged(object sender, EventArgs e) {
-      addButton.Enabled = itemsListView.SelectedItems.Count > 0 && !Content.IsReadOnly && !ReadOnly;
+      addButton.Enabled = itemsListView.SelectedItems.Count > 0 && !ReadOnly;
       moveUpButton.Enabled = itemsListView.SelectedItems.Count == 1 &&
                              itemsListView.SelectedIndices[0] != 0 &&
-                             !Content.IsReadOnly && !ReadOnly;
+                             !ReadOnly;
       moveDownButton.Enabled = itemsListView.SelectedItems.Count == 1 &&
                                itemsListView.SelectedIndices[0] != itemsListView.Items.Count - 1 &&
-                               !Content.IsReadOnly && !ReadOnly;
-      removeButton.Enabled = itemsListView.SelectedItems.Count > 0 && !Content.IsReadOnly && !ReadOnly;
+                               !ReadOnly;
+      removeButton.Enabled = itemsListView.SelectedItems.Count > 0 && !ReadOnly;
 
       if (itemsListView.SelectedItems.Count == 1) {
@@ -219,5 +227,5 @@
     protected virtual void itemsListView_KeyDown(object sender, KeyEventArgs e) {
       if (e.KeyCode == Keys.Delete) {
-        if ((itemsListView.SelectedItems.Count > 0) && !Content.IsReadOnly && !ReadOnly) {
+        if ((itemsListView.SelectedItems.Count > 0) && !ReadOnly) {
           foreach (ListViewItem item in itemsListView.SelectedItems)
             Content[item.Index] = null;
@@ -248,5 +256,5 @@
           data.SetData("Type", item.GetType());
           data.SetData("Value", item);
-          if (Content.IsReadOnly || ReadOnly) {
+          if (ReadOnly) {
             DoDragDrop(data, DragDropEffects.Copy | DragDropEffects.Link);
           } else {
@@ -261,5 +269,5 @@
       e.Effect = DragDropEffects.None;
       Type type = e.Data.GetData("Type") as Type;
-      if (!Content.IsReadOnly && !ReadOnly && (type != null) && (typeof(T).IsAssignableFrom(type))) {
+      if (!ReadOnly && (type != null) && (typeof(T).IsAssignableFrom(type))) {
         Point p = itemsListView.PointToClient(new Point(e.X, e.Y));
         ListViewItem listViewItem = itemsListView.GetItemAt(p.X, p.Y);
Index: trunk/sources/HeuristicLab.Core.Views/3.3/ItemCollectionView.cs
===================================================================
--- trunk/sources/HeuristicLab.Core.Views/3.3/ItemCollectionView.cs	(revision 3432)
+++ trunk/sources/HeuristicLab.Core.Views/3.3/ItemCollectionView.cs	(revision 3433)
@@ -40,4 +40,12 @@
     }
 
+    public override bool ReadOnly {
+      get {
+        if ((Content != null) && Content.IsReadOnly) return true;
+        else return base.ReadOnly;
+      }
+      set { base.ReadOnly = value; }
+    }
+
     public ListView ItemsListView {
       get { return itemsListView; }
@@ -94,8 +102,8 @@
         detailsGroupBox.Enabled = false;
       } else {
-        addButton.Enabled = !Content.IsReadOnly && !ReadOnly;
+        addButton.Enabled = !ReadOnly;
         sortAscendingButton.Enabled = itemsListView.Items.Count > 1;
         sortDescendingButton.Enabled = itemsListView.Items.Count > 1;
-        removeButton.Enabled = !Content.IsReadOnly && !ReadOnly && itemsListView.SelectedItems.Count > 0;
+        removeButton.Enabled = !ReadOnly && itemsListView.SelectedItems.Count > 0;
         itemsListView.Enabled = true;
         detailsGroupBox.Enabled = true;
@@ -168,5 +176,5 @@
     #region ListView Events
     protected virtual void itemsListView_SelectedIndexChanged(object sender, EventArgs e) {
-      removeButton.Enabled = !Content.IsReadOnly && !ReadOnly && itemsListView.SelectedItems.Count > 0;
+      removeButton.Enabled = !ReadOnly && itemsListView.SelectedItems.Count > 0;
       if (itemsListView.SelectedItems.Count == 1) {
         T item = (T)itemsListView.SelectedItems[0].Tag;
@@ -181,5 +189,5 @@
     protected virtual void itemsListView_KeyDown(object sender, KeyEventArgs e) {
       if (e.KeyCode == Keys.Delete) {
-        if ((itemsListView.SelectedItems.Count > 0) && !Content.IsReadOnly && !ReadOnly) {
+        if ((itemsListView.SelectedItems.Count > 0) && !ReadOnly) {
           foreach (ListViewItem item in itemsListView.SelectedItems)
             Content.Remove((T)item.Tag);
@@ -205,5 +213,5 @@
         data.SetData("Type", item.GetType());
         data.SetData("Value", item);
-        if (Content.IsReadOnly || ReadOnly) {
+        if (ReadOnly) {
           DoDragDrop(data, DragDropEffects.Copy | DragDropEffects.Link);
         } else {
@@ -217,5 +225,5 @@
       e.Effect = DragDropEffects.None;
       Type type = e.Data.GetData("Type") as Type;
-      if (!Content.IsReadOnly && !ReadOnly && (type != null) && (typeof(T).IsAssignableFrom(type))) {
+      if (!ReadOnly && (type != null) && (typeof(T).IsAssignableFrom(type))) {
         if ((e.KeyState & 8) == 8) e.Effect = DragDropEffects.Copy;  // CTRL key
         else if ((e.KeyState & 4) == 4) e.Effect = DragDropEffects.Move;  // SHIFT key
Index: trunk/sources/HeuristicLab.Core.Views/3.3/ItemListView.cs
===================================================================
--- trunk/sources/HeuristicLab.Core.Views/3.3/ItemListView.cs	(revision 3432)
+++ trunk/sources/HeuristicLab.Core.Views/3.3/ItemListView.cs	(revision 3433)
@@ -48,4 +48,12 @@
     }
 
+    public override bool ReadOnly {
+      get {
+        if ((Content != null) && Content.IsReadOnly) return true;
+        else return base.ReadOnly;
+      }
+      set { base.ReadOnly = value; }
+    }
+
     public ListView ItemsListView {
       get { return itemsListView; }
@@ -117,13 +125,13 @@
         detailsGroupBox.Enabled = false;
       } else {
-        addButton.Enabled = !Content.IsReadOnly && !ReadOnly;
+        addButton.Enabled = !ReadOnly;
         moveUpButton.Enabled = itemsListView.SelectedItems.Count == 1 &&
                                itemsListView.SelectedIndices[0] != 0 &&
-                               !Content.IsReadOnly && !ReadOnly;
+                               !ReadOnly;
         moveDownButton.Enabled = itemsListView.SelectedItems.Count == 1 &&
                                  itemsListView.SelectedIndices[0] != itemsListView.Items.Count - 1 &&
-                                 !Content.IsReadOnly && !ReadOnly;
+                                 !ReadOnly;
         removeButton.Enabled = itemsListView.SelectedItems.Count > 0 &&
-                               !Content.IsReadOnly && !ReadOnly;
+                               !ReadOnly;
         itemsListView.Enabled = true;
         detailsGroupBox.Enabled = true;
@@ -194,10 +202,10 @@
       moveUpButton.Enabled = itemsListView.SelectedItems.Count == 1 &&
                              itemsListView.SelectedIndices[0] != 0 &&
-                             !Content.IsReadOnly && !ReadOnly;
+                             !ReadOnly;
       moveDownButton.Enabled = itemsListView.SelectedItems.Count == 1 &&
                                itemsListView.SelectedIndices[0] != itemsListView.Items.Count - 1 &&
-                               !Content.IsReadOnly && !ReadOnly;
+                               !ReadOnly;
       removeButton.Enabled = itemsListView.SelectedItems.Count > 0 &&
-                             !Content.IsReadOnly && !ReadOnly;
+                             !ReadOnly;
 
       if (itemsListView.SelectedItems.Count == 1) {
@@ -214,5 +222,5 @@
     protected virtual void itemsListView_KeyDown(object sender, KeyEventArgs e) {
       if (e.KeyCode == Keys.Delete) {
-        if ((itemsListView.SelectedItems.Count > 0) && !Content.IsReadOnly && !ReadOnly) {
+        if ((itemsListView.SelectedItems.Count > 0) && !ReadOnly) {
           foreach (ListViewItem item in itemsListView.SelectedItems)
             Content.RemoveAt(item.Index);
@@ -240,5 +248,5 @@
         data.SetData("Type", item.GetType());
         data.SetData("Value", item);
-        if (Content.IsReadOnly || ReadOnly) {
+        if (ReadOnly) {
           DoDragDrop(data, DragDropEffects.Copy | DragDropEffects.Link);
         } else {
@@ -252,5 +260,5 @@
       e.Effect = DragDropEffects.None;
       Type type = e.Data.GetData("Type") as Type;
-      if (!Content.IsReadOnly && !ReadOnly && (type != null) && (typeof(T).IsAssignableFrom(type))) {
+      if (!ReadOnly && (type != null) && (typeof(T).IsAssignableFrom(type))) {
         if ((e.KeyState & 8) == 8) e.Effect = DragDropEffects.Copy;  // CTRL key
         else if ((e.KeyState & 4) == 4) e.Effect = DragDropEffects.Move;  // SHIFT key
Index: trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionView.cs
===================================================================
--- trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionView.cs	(revision 3432)
+++ trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionView.cs	(revision 3433)
@@ -37,4 +37,12 @@
       get { return (IItemCollection<IRun>)base.Content; }
       set { base.Content = value; }
+    }
+
+    public override bool ReadOnly {
+      get {
+        if ((Content != null) && Content.IsReadOnly) return true;
+        else return base.ReadOnly;
+      }
+      set { base.ReadOnly = value; }
     }
 
@@ -140,5 +148,5 @@
     #region ListView Events
     protected virtual void itemsListView_SelectedIndexChanged(object sender, EventArgs e) {
-      removeButton.Enabled = itemsListView.SelectedItems.Count > 0 && !Content.IsReadOnly;
+      removeButton.Enabled = itemsListView.SelectedItems.Count > 0 && !ReadOnly;
       if (itemsListView.SelectedItems.Count == 1) {
         IRun item = (IRun)itemsListView.SelectedItems[0].Tag;
@@ -157,5 +165,5 @@
     protected virtual void itemsListView_KeyDown(object sender, KeyEventArgs e) {
       if (e.KeyCode == Keys.Delete) {
-        if ((itemsListView.SelectedItems.Count > 0) && !Content.IsReadOnly) {
+        if ((itemsListView.SelectedItems.Count > 0) && !ReadOnly) {
           foreach (ListViewItem item in itemsListView.SelectedItems)
             Content.Remove((IRun)item.Tag);
@@ -181,5 +189,5 @@
         data.SetData("Type", item.GetType());
         data.SetData("Value", item);
-        if (Content.IsReadOnly || ReadOnly) {
+        if (ReadOnly) {
           DoDragDrop(data, DragDropEffects.Copy | DragDropEffects.Link);
         } else {
@@ -194,5 +202,5 @@
       if (ReadOnly) return;
       Type type = e.Data.GetData("Type") as Type;
-      if ((!Content.IsReadOnly) && (type != null) && (typeof(IRun).IsAssignableFrom(type))) {
+      if ((!ReadOnly) && (type != null) && (typeof(IRun).IsAssignableFrom(type))) {
         if ((e.KeyState & 8) == 8) e.Effect = DragDropEffects.Copy;  // CTRL key
         else if ((e.KeyState & 4) == 4) e.Effect = DragDropEffects.Move;  // SHIFT key
