Index: /trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperator.cs	(revision 3007)
+++ /trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperator.cs	(revision 3008)
@@ -44,7 +44,11 @@
   [Creatable("Test")]
   [StorableClass(StorableClassType.MarkedOnly)]  
-  public class ProgrammableOperator : Operator {
+  public class ProgrammableOperator : Operator, IParameterizedNamedItem {
 
     #region Fields & Properties
+
+    public new IObservableKeyedCollection<string, IParameter> Parameters {
+      get { return base.Parameters; }
+    }
 
     private MethodInfo executeMethod;
@@ -76,7 +80,7 @@
 
     [Storable]
-    private IEnumerable<string> _persistedAssemblyNames {
+    private List<string> _persistedAssemblyNames {
       get {
-        return Assemblies.Keys.Select(a => a.FullName);
+        return Assemblies.Keys.Select(a => a.FullName).ToList();
       }
       set {
@@ -106,5 +110,5 @@
         return true;
       }
-    }
+    }    
 
     #endregion
@@ -168,5 +172,5 @@
       Assemblies = defaultAssemblyDict;
       Plugins = defaultPluginDict;
-      namespaces = new HashSet<string>(DiscoverNamespaces());
+      namespaces = new HashSet<string>(DiscoverNamespaces());      
       Parameters.ItemsAdded += (s, a) => OnSignatureChanged(s, a);
       Parameters.ItemsRemoved += (s, a) => OnSignatureChanged(s, a);
Index: /trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.Designer.cs	(revision 3007)
+++ /trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.Designer.cs	(revision 3008)
@@ -86,5 +86,5 @@
       tabPage2.Name = "tabPage2";
       tabPage2.Padding = new System.Windows.Forms.Padding(3);
-      tabPage2.Size = new System.Drawing.Size(977, 593);
+      tabPage2.Size = new System.Drawing.Size(977, 619);
       tabPage2.TabIndex = 1;
       tabPage2.Text = "Code";
@@ -106,5 +106,5 @@
       // 
       this.splitContainer1.Panel2.Controls.Add(this.codeEditor);
-      this.splitContainer1.Size = new System.Drawing.Size(971, 587);
+      this.splitContainer1.Size = new System.Drawing.Size(971, 613);
       this.splitContainer1.SplitterDistance = 254;
       this.splitContainer1.TabIndex = 0;
@@ -126,6 +126,6 @@
       // 
       this.splitContainer2.Panel2.Controls.Add(this.namespacesTreeView);
-      this.splitContainer2.Size = new System.Drawing.Size(248, 552);
-      this.splitContainer2.SplitterDistance = 276;
+      this.splitContainer2.Size = new System.Drawing.Size(248, 578);
+      this.splitContainer2.SplitterDistance = 289;
       this.splitContainer2.TabIndex = 2;
       // 
@@ -136,5 +136,5 @@
       this.assembliesTreeView.Location = new System.Drawing.Point(0, 0);
       this.assembliesTreeView.Name = "assembliesTreeView";
-      this.assembliesTreeView.Size = new System.Drawing.Size(248, 276);
+      this.assembliesTreeView.Size = new System.Drawing.Size(248, 289);
       this.assembliesTreeView.TabIndex = 0;
       this.assembliesTreeView.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.assembliesTreeView_AfterCheck);
@@ -147,5 +147,5 @@
       this.namespacesTreeView.Name = "namespacesTreeView";
       this.namespacesTreeView.PathSeparator = ".";
-      this.namespacesTreeView.Size = new System.Drawing.Size(248, 272);
+      this.namespacesTreeView.Size = new System.Drawing.Size(248, 285);
       this.namespacesTreeView.TabIndex = 0;
       this.namespacesTreeView.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.namespacesTreeView_AfterCheck);
@@ -155,12 +155,9 @@
       this.showCodeButton.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.showCodeButton.BackColor = System.Drawing.SystemColors.GradientInactiveCaption;
-      this.showCodeButton.Cursor = System.Windows.Forms.Cursors.Hand;
-      this.showCodeButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
-      this.showCodeButton.Location = new System.Drawing.Point(65, 561);
+      this.showCodeButton.Location = new System.Drawing.Point(65, 587);
       this.showCodeButton.Name = "showCodeButton";
       this.showCodeButton.Size = new System.Drawing.Size(186, 23);
       this.showCodeButton.TabIndex = 0;
-      this.showCodeButton.Text = "&Show Generated Code";
+      this.showCodeButton.Text = "&Show Generated Code ...";
       this.showCodeButton.UseVisualStyleBackColor = false;
       this.showCodeButton.Click += new System.EventHandler(this.showCodeButton_Click);
@@ -169,5 +166,5 @@
       // 
       this.compileButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.compileButton.Location = new System.Drawing.Point(3, 561);
+      this.compileButton.Location = new System.Drawing.Point(3, 587);
       this.compileButton.Name = "compileButton";
       this.compileButton.Size = new System.Drawing.Size(56, 23);
@@ -183,5 +180,5 @@
       this.codeEditor.Name = "codeEditor";
       this.codeEditor.Prefix = "";
-      this.codeEditor.Size = new System.Drawing.Size(713, 587);
+      this.codeEditor.Size = new System.Drawing.Size(713, 613);
       this.codeEditor.Suffix = "";
       this.codeEditor.TabIndex = 0;
Index: /trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.cs	(revision 3007)
+++ /trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.cs	(revision 3008)
@@ -78,4 +78,5 @@
         descriptionTextBox.Enabled = false;
         assembliesTreeView.Nodes.Clear();
+        parameterCollectionView1.Content = null;
       } else {
         codeEditor.Enabled = true;
@@ -97,4 +98,8 @@
         codeEditor.ScrollAfterPrefix();
         codeEditor.ShowCompileErrors(ProgrammableOperator.CompileErrors, "ProgrammableOperator");
+        showCodeButton.Enabled = 
+          ProgrammableOperator.CompilationUnitCode != null && 
+          ProgrammableOperator.CompilationUnitCode.Length > 0;
+        parameterCollectionView1.Content = ProgrammableOperator.Parameters;        
       }
     }
Index: /trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.resx
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.resx	(revision 3007)
+++ /trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.resx	(revision 3008)
@@ -121,4 +121,7 @@
     <value>107, 17</value>
   </metadata>
+  <metadata name="errorProvider.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>107, 17</value>
+  </metadata>
   <metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
