Index: trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/DataAnalysisProblemData.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/DataAnalysisProblemData.cs	(revision 3563)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/DataAnalysisProblemData.cs	(revision 3599)
@@ -46,6 +46,6 @@
     }
 
-    public IValueParameter<CheckedItemCollection<StringValue>> InputVariablesParameter {
-      get { return (IValueParameter<CheckedItemCollection<StringValue>>)Parameters["InputVariables"]; }
+    public IValueParameter<CheckedItemList<StringValue>> InputVariablesParameter {
+      get { return (IValueParameter<CheckedItemList<StringValue>>)Parameters["InputVariables"]; }
     }
 
@@ -85,6 +85,6 @@
       }
     }
-    public CheckedItemCollection<StringValue> InputVariables {
-      get { return (CheckedItemCollection<StringValue>)InputVariablesParameter.Value; }
+    public CheckedItemList<StringValue> InputVariables {
+      get { return (CheckedItemList<StringValue>)InputVariablesParameter.Value; }
       set {
         if (value != InputVariables) {
@@ -140,5 +140,5 @@
       : base() {
       Parameters.Add(new ValueParameter<Dataset>("Dataset", new Dataset()));
-      Parameters.Add(new ValueParameter<CheckedItemCollection<StringValue>>("InputVariables", new CheckedItemCollection<StringValue>()));
+      Parameters.Add(new ValueParameter<CheckedItemList<StringValue>>("InputVariables", new CheckedItemList<StringValue>()));
       Parameters.Add(new ConstrainedValueParameter<StringValue>("TargetVariable"));
       Parameters.Add(new ValueParameter<IntValue>("TrainingSamplesStart", new IntValue()));
@@ -249,38 +249,17 @@
 
     private void RegisterInputVariablesEventHandlers() {
-      InputVariables.CollectionReset += new HeuristicLab.Collections.CollectionItemsChangedEventHandler<StringValue>(InputVariables_CollectionReset);
-      InputVariables.ItemsAdded += new HeuristicLab.Collections.CollectionItemsChangedEventHandler<StringValue>(InputVariables_ItemsAdded);
-      InputVariables.ItemsRemoved += new HeuristicLab.Collections.CollectionItemsChangedEventHandler<StringValue>(InputVariables_ItemsRemoved);
-      InputVariables.CheckedItemsChanged += new HeuristicLab.Collections.CollectionItemsChangedEventHandler<StringValue>(InputVariables_ItemsChecked);
+      InputVariables.CollectionReset += new HeuristicLab.Collections.CollectionItemsChangedEventHandler<HeuristicLab.Collections.IndexedItem<StringValue>>(InputVariables_CollectionReset); 
+      InputVariables.ItemsAdded += new HeuristicLab.Collections.CollectionItemsChangedEventHandler<HeuristicLab.Collections.IndexedItem<StringValue>>(InputVariables_ItemsAdded);
+      InputVariables.ItemsRemoved += new HeuristicLab.Collections.CollectionItemsChangedEventHandler<HeuristicLab.Collections.IndexedItem<StringValue>>(InputVariables_ItemsRemoved);
+      InputVariables.CheckedItemsChanged += new HeuristicLab.Collections.CollectionItemsChangedEventHandler<HeuristicLab.Collections.IndexedItem<StringValue>>(InputVariables_CheckedItemsChanged);
       foreach (var item in InputVariables)
         item.ValueChanged += new EventHandler(InputVariable_ValueChanged);
     }
 
-    void InputVariables_ItemsChecked(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<StringValue> e) {
-      OnProblemDataChanged(e);
-    }
-
-    void InputVariables_ItemsRemoved(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<StringValue> e) {
-      foreach (var item in e.Items)
-        item.ValueChanged -= new EventHandler(InputVariable_ValueChanged);
-      OnProblemDataChanged(e);
-    }
-
-    void InputVariables_CollectionReset(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<StringValue> e) {
-      foreach (var item in e.OldItems)
-        item.ValueChanged -= new EventHandler(InputVariable_ValueChanged);
-      OnProblemDataChanged(e);
-    }
-
-    void InputVariables_ItemsAdded(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<StringValue> e) {
-      foreach (var item in e.Items)
-        item.ValueChanged += new EventHandler(InputVariable_ValueChanged);
-      OnProblemDataChanged(e);
-    }
-
     private void DeregisterInputVariablesEventHandlers() {
-      InputVariables.CollectionReset -= new HeuristicLab.Collections.CollectionItemsChangedEventHandler<StringValue>(InputVariables_CollectionReset);
-      InputVariables.ItemsAdded -= new HeuristicLab.Collections.CollectionItemsChangedEventHandler<StringValue>(InputVariables_ItemsAdded);
-      InputVariables.ItemsRemoved -= new HeuristicLab.Collections.CollectionItemsChangedEventHandler<StringValue>(InputVariables_ItemsRemoved);
+      InputVariables.CollectionReset -= new HeuristicLab.Collections.CollectionItemsChangedEventHandler<HeuristicLab.Collections.IndexedItem<StringValue>>(InputVariables_CollectionReset);
+      InputVariables.ItemsAdded -= new HeuristicLab.Collections.CollectionItemsChangedEventHandler<HeuristicLab.Collections.IndexedItem<StringValue>>(InputVariables_ItemsAdded);
+      InputVariables.ItemsRemoved -= new HeuristicLab.Collections.CollectionItemsChangedEventHandler<HeuristicLab.Collections.IndexedItem<StringValue>>(InputVariables_ItemsRemoved);
+      InputVariables.CheckedItemsChanged -= new HeuristicLab.Collections.CollectionItemsChangedEventHandler<HeuristicLab.Collections.IndexedItem<StringValue>>(InputVariables_CheckedItemsChanged);
       foreach (var item in InputVariables) {
         item.ValueChanged -= new EventHandler(InputVariable_ValueChanged);
@@ -288,4 +267,26 @@
     }
   
+    private void InputVariables_CheckedItemsChanged(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<HeuristicLab.Collections.IndexedItem<StringValue>> e) {
+      OnProblemDataChanged(e);
+    }
+
+    private void InputVariables_ItemsRemoved(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<HeuristicLab.Collections.IndexedItem<StringValue>> e) {
+      foreach (var indexedItem in e.Items)
+        indexedItem.Value.ValueChanged -= new EventHandler(InputVariable_ValueChanged);
+      OnProblemDataChanged(e);
+    }
+
+    private void InputVariables_ItemsAdded(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<HeuristicLab.Collections.IndexedItem<StringValue>> e) {
+      foreach (var indexedItem in e.Items)
+        indexedItem.Value.ValueChanged += new EventHandler(InputVariable_ValueChanged);
+      OnProblemDataChanged(e);
+    }
+
+    private void InputVariables_CollectionReset(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<HeuristicLab.Collections.IndexedItem<StringValue>> e) {
+      foreach (var indexedItem in e.OldItems)
+        indexedItem.Value.ValueChanged -= new EventHandler(InputVariable_ValueChanged);
+      OnProblemDataChanged(e);
+    }
+
     void InputVariable_ValueChanged(object sender, EventArgs e) {
       OnProblemDataChanged(e);
@@ -328,5 +329,5 @@
         ((ConstrainedValueParameter<StringValue>)TargetVariableParameter).ValidValues.Add(variableName);
       TargetVariable = variableNames.First();
-      InputVariables = new CheckedItemCollection<StringValue>(variableNames);
+      InputVariables = new CheckedItemList<StringValue>(variableNames);
       foreach (var variableName in variableNames.Skip(1))
         InputVariables.SetItemCheckedState(variableName, true);
