Index: /trunk/sources/HeuristicLab 3.3.sln
===================================================================
--- /trunk/sources/HeuristicLab 3.3.sln	(revision 7635)
+++ /trunk/sources/HeuristicLab 3.3.sln	(revision 7636)
@@ -94,4 +94,5 @@
 		{CCF61DA0-B226-4C0F-8052-29ACC6BDE6EE} = {CCF61DA0-B226-4C0F-8052-29ACC6BDE6EE}
 		{4FE983A1-AAF8-4977-B9E2-52B3224510CB} = {4FE983A1-AAF8-4977-B9E2-52B3224510CB}
+		{8C426FA3-6614-412C-B669-BCE58DB9710E} = {8C426FA3-6614-412C-B669-BCE58DB9710E}
 		{6410BDA6-3641-42B2-BABA-AA626E2F6F71} = {6410BDA6-3641-42B2-BABA-AA626E2F6F71}
 		{068C70A7-8CAF-4AB6-8721-4564D62292BC} = {068C70A7-8CAF-4AB6-8721-4564D62292BC}
@@ -290,4 +291,6 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.Instances.TSPLIB.Views-3.3", "HeuristicLab.Problems.Instances.TSPLIB.Views\3.3\HeuristicLab.Problems.Instances.TSPLIB.Views-3.3.csproj", "{8B2BC81F-6B6C-414D-A934-57FD3FA8D6DC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Operators.Programmable.Views", "HeuristicLab.Operators.Programmable.Views\3.3\HeuristicLab.Operators.Programmable.Views.csproj", "{8C426FA3-6614-412C-B669-BCE58DB9710E}"
 EndProject
 Global
@@ -1420,4 +1423,16 @@
 		{8B2BC81F-6B6C-414D-A934-57FD3FA8D6DC}.Release|x86.ActiveCfg = Release|x86
 		{8B2BC81F-6B6C-414D-A934-57FD3FA8D6DC}.Release|x86.Build.0 = Release|x86
+		{8C426FA3-6614-412C-B669-BCE58DB9710E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{8C426FA3-6614-412C-B669-BCE58DB9710E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{8C426FA3-6614-412C-B669-BCE58DB9710E}.Debug|x64.ActiveCfg = Debug|x64
+		{8C426FA3-6614-412C-B669-BCE58DB9710E}.Debug|x64.Build.0 = Debug|x64
+		{8C426FA3-6614-412C-B669-BCE58DB9710E}.Debug|x86.ActiveCfg = Debug|x86
+		{8C426FA3-6614-412C-B669-BCE58DB9710E}.Debug|x86.Build.0 = Debug|x86
+		{8C426FA3-6614-412C-B669-BCE58DB9710E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{8C426FA3-6614-412C-B669-BCE58DB9710E}.Release|Any CPU.Build.0 = Release|Any CPU
+		{8C426FA3-6614-412C-B669-BCE58DB9710E}.Release|x64.ActiveCfg = Release|x64
+		{8C426FA3-6614-412C-B669-BCE58DB9710E}.Release|x64.Build.0 = Release|x64
+		{8C426FA3-6614-412C-B669-BCE58DB9710E}.Release|x86.ActiveCfg = Release|x86
+		{8C426FA3-6614-412C-B669-BCE58DB9710E}.Release|x86.Build.0 = Release|x86
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
Index: /trunk/sources/HeuristicLab.Operators.Programmable.Views/3.3/HeuristicLab.Operators.Programmable.Views.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Programmable.Views/3.3/HeuristicLab.Operators.Programmable.Views.csproj	(revision 7636)
+++ /trunk/sources/HeuristicLab.Operators.Programmable.Views/3.3/HeuristicLab.Operators.Programmable.Views.csproj	(revision 7636)
@@ -0,0 +1,185 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{8C426FA3-6614-412C-B669-BCE58DB9710E}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Operators.Programmable.Views</RootNamespace>
+    <AssemblyName>HeuristicLab.Operators.Programmable.Views-3.3</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Debug\HeuristicLab.Operators.Programmable.Views.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Release\HeuristicLab.Operators.Programmable.Views.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
+    <CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Debug\HeuristicLab.Operators.Programmable.Views.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Release\HeuristicLab.Operators.Programmable.Views.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Plugin.cs" />
+    <Compile Include="ProgrammableOperatorView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ProgrammableOperatorView.Designer.cs">
+      <DependentUpon>ProgrammableOperatorView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <None Include="Properties\AssemblyInfo.cs.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Plugin.cs.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.CodeEditor\3.3\HeuristicLab.CodeEditor-3.3.csproj">
+      <Project>{489CFE09-FDF7-4C89-BAB5-BD09CADD61AD}</Project>
+      <Name>HeuristicLab.CodeEditor-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Collections\3.3\HeuristicLab.Collections-3.3.csproj">
+      <Project>{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}</Project>
+      <Name>HeuristicLab.Collections-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Common.Resources\3.3\HeuristicLab.Common.Resources-3.3.csproj">
+      <Project>{0E27A536-1C4A-4624-A65E-DC4F4F23E3E1}</Project>
+      <Name>HeuristicLab.Common.Resources-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Common\3.3\HeuristicLab.Common-3.3.csproj">
+      <Project>{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}</Project>
+      <Name>HeuristicLab.Common-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Core.Views\3.3\HeuristicLab.Core.Views-3.3.csproj">
+      <Project>{E226881D-315F-423D-B419-A766FE0D8685}</Project>
+      <Name>HeuristicLab.Core.Views-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
+      <Project>{C36BD924-A541-4A00-AFA8-41701378DDC5}</Project>
+      <Name>HeuristicLab.Core-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.MainForm.WindowsForms\3.3\HeuristicLab.MainForm.WindowsForms-3.3.csproj">
+      <Project>{AB687BBE-1BFE-476B-906D-44237135431D}</Project>
+      <Name>HeuristicLab.MainForm.WindowsForms-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.MainForm\3.3\HeuristicLab.MainForm-3.3.csproj">
+      <Project>{3BD61258-31DA-4B09-89C0-4F71FEF5F05A}</Project>
+      <Name>HeuristicLab.MainForm-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Operators.Programmable\3.3\HeuristicLab.Operators.Programmable-3.3.csproj">
+      <Project>{6A5F8C2D-B0C3-4B36-BC20-9B1A91EE6DB6}</Project>
+      <Name>HeuristicLab.Operators.Programmable-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Operators\3.3\HeuristicLab.Operators-3.3.csproj">
+      <Project>{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}</Project>
+      <Name>HeuristicLab.Operators-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\3.3\HeuristicLab.PluginInfrastructure-3.3.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure-3.3</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd
+</PreBuildEvent>
+  </PropertyGroup>
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: /trunk/sources/HeuristicLab.Operators.Programmable.Views/3.3/Plugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Programmable.Views/3.3/Plugin.cs.frame	(revision 7636)
+++ /trunk/sources/HeuristicLab.Operators.Programmable.Views/3.3/Plugin.cs.frame	(revision 7636)
@@ -0,0 +1,42 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Operators.Programmable {
+  [Plugin("HeuristicLab.Operators.Programmable.Views", "3.3.6.$WCREV$")]
+  [PluginFile("HeuristicLab.Operators.Programmable.Views-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.CodeEditor", "3.3")]
+  [PluginDependency("HeuristicLab.Collections", "3.3")]
+  [PluginDependency("HeuristicLab.Common", "3.3")]
+  [PluginDependency("HeuristicLab.Common.Resources", "3.3")]
+  [PluginDependency("HeuristicLab.Core", "3.3")]
+  [PluginDependency("HeuristicLab.Core.Views", "3.3")]
+  [PluginDependency("HeuristicLab.MainForm", "3.3")]
+  [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]
+  [PluginDependency("HeuristicLab.Operators", "3.3")]
+  [PluginDependency("HeuristicLab.Operators.Programmable", "3.3")]
+  public class HeuristicLabOperatorsProgrammablePlugin : PluginBase {
+  }
+}
Index: /trunk/sources/HeuristicLab.Operators.Programmable.Views/3.3/ProgrammableOperatorView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Programmable.Views/3.3/ProgrammableOperatorView.Designer.cs	(revision 7636)
+++ /trunk/sources/HeuristicLab.Operators.Programmable.Views/3.3/ProgrammableOperatorView.Designer.cs	(revision 7636)
@@ -0,0 +1,339 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Operators.Programmable {
+  partial class ProgrammableOperatorView {
+    /// <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.tabPage2 = new System.Windows.Forms.TabPage();
+      this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+      this.compilationLabel = new System.Windows.Forms.Label();
+      this.splitContainer2 = new System.Windows.Forms.SplitContainer();
+      this.assembliesBox = new System.Windows.Forms.GroupBox();
+      this.assembliesTreeView = new System.Windows.Forms.TreeView();
+      this.namespacesBox = new System.Windows.Forms.GroupBox();
+      this.namespacesTreeView = new System.Windows.Forms.TreeView();
+      this.showCodeButton = new System.Windows.Forms.Button();
+      this.compileButton = new System.Windows.Forms.Button();
+      this.codeEditor = new HeuristicLab.CodeEditor.CodeEditor();
+      this.tabControl1 = new HeuristicLab.MainForm.WindowsForms.DragOverTabControl();
+      this.tabPage1 = new System.Windows.Forms.TabPage();
+      this.parameterCollectionView = new HeuristicLab.Core.Views.ParameterCollectionView();
+      this.breakpointCheckBox = new System.Windows.Forms.CheckBox();
+      this.breakpointLabel = new System.Windows.Forms.Label();
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
+      this.tabPage2.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
+      this.splitContainer1.Panel1.SuspendLayout();
+      this.splitContainer1.Panel2.SuspendLayout();
+      this.splitContainer1.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
+      this.splitContainer2.Panel1.SuspendLayout();
+      this.splitContainer2.Panel2.SuspendLayout();
+      this.splitContainer2.SuspendLayout();
+      this.assembliesBox.SuspendLayout();
+      this.namespacesBox.SuspendLayout();
+      this.tabControl1.SuspendLayout();
+      this.tabPage1.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // nameTextBox
+      // 
+      this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
+      this.errorProvider.SetIconPadding(this.nameTextBox, 2);
+      this.nameTextBox.Location = new System.Drawing.Point(70, 0);
+      this.nameTextBox.Size = new System.Drawing.Size(890, 20);
+      // 
+      // infoLabel
+      // 
+      this.infoLabel.Location = new System.Drawing.Point(966, 3);
+      // 
+      // tabPage2
+      // 
+      this.tabPage2.Controls.Add(this.splitContainer1);
+      this.tabPage2.Location = new System.Drawing.Point(4, 22);
+      this.tabPage2.Name = "tabPage2";
+      this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
+      this.tabPage2.Size = new System.Drawing.Size(977, 625);
+      this.tabPage2.TabIndex = 1;
+      this.tabPage2.Text = "Code";
+      this.tabPage2.UseVisualStyleBackColor = true;
+      // 
+      // splitContainer1
+      // 
+      this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.splitContainer1.Location = new System.Drawing.Point(3, 3);
+      this.splitContainer1.Name = "splitContainer1";
+      // 
+      // splitContainer1.Panel1
+      // 
+      this.splitContainer1.Panel1.Controls.Add(this.compilationLabel);
+      this.splitContainer1.Panel1.Controls.Add(this.splitContainer2);
+      this.splitContainer1.Panel1.Controls.Add(this.showCodeButton);
+      this.splitContainer1.Panel1.Controls.Add(this.compileButton);
+      // 
+      // splitContainer1.Panel2
+      // 
+      this.splitContainer1.Panel2.Controls.Add(this.codeEditor);
+      this.splitContainer1.Size = new System.Drawing.Size(971, 619);
+      this.splitContainer1.SplitterDistance = 244;
+      this.splitContainer1.TabIndex = 0;
+      // 
+      // compilationLabel
+      // 
+      this.compilationLabel.AutoSize = true;
+      this.compilationLabel.ForeColor = System.Drawing.SystemColors.ControlDarkDark;
+      this.compilationLabel.Location = new System.Drawing.Point(63, 9);
+      this.compilationLabel.Name = "compilationLabel";
+      this.compilationLabel.Size = new System.Drawing.Size(69, 13);
+      this.compilationLabel.TabIndex = 2;
+      this.compilationLabel.Text = "Not compiled";
+      // 
+      // splitContainer2
+      // 
+      this.splitContainer2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.splitContainer2.Location = new System.Drawing.Point(0, 33);
+      this.splitContainer2.Name = "splitContainer2";
+      this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
+      // 
+      // splitContainer2.Panel1
+      // 
+      this.splitContainer2.Panel1.Controls.Add(this.assembliesBox);
+      // 
+      // splitContainer2.Panel2
+      // 
+      this.splitContainer2.Panel2.Controls.Add(this.namespacesBox);
+      this.splitContainer2.Size = new System.Drawing.Size(242, 589);
+      this.splitContainer2.SplitterDistance = 292;
+      this.splitContainer2.TabIndex = 2;
+      // 
+      // assembliesBox
+      // 
+      this.assembliesBox.Controls.Add(this.assembliesTreeView);
+      this.assembliesBox.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.assembliesBox.Location = new System.Drawing.Point(0, 0);
+      this.assembliesBox.Name = "assembliesBox";
+      this.assembliesBox.Size = new System.Drawing.Size(242, 292);
+      this.assembliesBox.TabIndex = 0;
+      this.assembliesBox.TabStop = false;
+      this.assembliesBox.Text = "Assemblies";
+      // 
+      // assembliesTreeView
+      // 
+      this.assembliesTreeView.CheckBoxes = true;
+      this.assembliesTreeView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.assembliesTreeView.Location = new System.Drawing.Point(3, 16);
+      this.assembliesTreeView.Name = "assembliesTreeView";
+      this.assembliesTreeView.Size = new System.Drawing.Size(236, 273);
+      this.assembliesTreeView.TabIndex = 0;
+      this.assembliesTreeView.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.assembliesTreeView_AfterCheck);
+      // 
+      // namespacesBox
+      // 
+      this.namespacesBox.Controls.Add(this.namespacesTreeView);
+      this.namespacesBox.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.namespacesBox.Location = new System.Drawing.Point(0, 0);
+      this.namespacesBox.Name = "namespacesBox";
+      this.namespacesBox.Size = new System.Drawing.Size(242, 293);
+      this.namespacesBox.TabIndex = 0;
+      this.namespacesBox.TabStop = false;
+      this.namespacesBox.Text = "Namespaces";
+      // 
+      // namespacesTreeView
+      // 
+      this.namespacesTreeView.CheckBoxes = true;
+      this.namespacesTreeView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.namespacesTreeView.Location = new System.Drawing.Point(3, 16);
+      this.namespacesTreeView.Name = "namespacesTreeView";
+      this.namespacesTreeView.PathSeparator = ".";
+      this.namespacesTreeView.Size = new System.Drawing.Size(236, 274);
+      this.namespacesTreeView.TabIndex = 0;
+      this.namespacesTreeView.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.namespacesTreeView_AfterCheck);
+      // 
+      // showCodeButton
+      // 
+      this.showCodeButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.PrintPreview;
+      this.showCodeButton.Location = new System.Drawing.Point(33, 3);
+      this.showCodeButton.Name = "showCodeButton";
+      this.showCodeButton.Size = new System.Drawing.Size(24, 24);
+      this.showCodeButton.TabIndex = 1;
+      this.showCodeButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
+      this.toolTip.SetToolTip(this.showCodeButton, "Show generated code");
+      this.showCodeButton.UseVisualStyleBackColor = false;
+      this.showCodeButton.Click += new System.EventHandler(this.showCodeButton_Click);
+      // 
+      // compileButton
+      // 
+      this.compileButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Script;
+      this.compileButton.Location = new System.Drawing.Point(3, 3);
+      this.compileButton.Name = "compileButton";
+      this.compileButton.Size = new System.Drawing.Size(24, 24);
+      this.compileButton.TabIndex = 0;
+      this.compileButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
+      this.toolTip.SetToolTip(this.compileButton, "Compile (F6)");
+      this.compileButton.UseVisualStyleBackColor = true;
+      this.compileButton.Click += new System.EventHandler(this.compileButton_Click);
+      // 
+      // codeEditor
+      // 
+      this.codeEditor.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.codeEditor.Location = new System.Drawing.Point(0, 0);
+      this.codeEditor.Name = "codeEditor";
+      this.codeEditor.Prefix = "";
+      this.codeEditor.Size = new System.Drawing.Size(723, 619);
+      this.codeEditor.Suffix = "";
+      this.codeEditor.TabIndex = 0;
+      this.codeEditor.UserCode = "";
+      this.codeEditor.Validated += new System.EventHandler(this.codeEditor_Validated);
+      // 
+      // tabControl1
+      // 
+      this.tabControl1.AllowDrop = true;
+      this.tabControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.tabControl1.Controls.Add(this.tabPage1);
+      this.tabControl1.Controls.Add(this.tabPage2);
+      this.tabControl1.Location = new System.Drawing.Point(0, 46);
+      this.tabControl1.Name = "tabControl1";
+      this.tabControl1.SelectedIndex = 0;
+      this.tabControl1.Size = new System.Drawing.Size(985, 651);
+      this.tabControl1.TabIndex = 5;
+      // 
+      // tabPage1
+      // 
+      this.tabPage1.Controls.Add(this.parameterCollectionView);
+      this.tabPage1.Location = new System.Drawing.Point(4, 22);
+      this.tabPage1.Name = "tabPage1";
+      this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
+      this.tabPage1.Size = new System.Drawing.Size(977, 625);
+      this.tabPage1.TabIndex = 0;
+      this.tabPage1.Text = "Parameters";
+      this.tabPage1.UseVisualStyleBackColor = true;
+      // 
+      // parameterCollectionView
+      // 
+      this.parameterCollectionView.Caption = "ParameterCollection View";
+      this.parameterCollectionView.Content = null;
+      this.parameterCollectionView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.parameterCollectionView.Location = new System.Drawing.Point(3, 3);
+      this.parameterCollectionView.Name = "parameterCollectionView";
+      this.parameterCollectionView.ReadOnly = false;
+      this.parameterCollectionView.Size = new System.Drawing.Size(971, 619);
+      this.parameterCollectionView.TabIndex = 0;
+      // 
+      // breakpointCheckBox
+      // 
+      this.breakpointCheckBox.AutoSize = true;
+      this.breakpointCheckBox.Location = new System.Drawing.Point(70, 26);
+      this.breakpointCheckBox.Name = "breakpointCheckBox";
+      this.breakpointCheckBox.Size = new System.Drawing.Size(15, 14);
+      this.breakpointCheckBox.TabIndex = 4;
+      this.breakpointCheckBox.UseVisualStyleBackColor = true;
+      this.breakpointCheckBox.CheckedChanged += new System.EventHandler(this.breakpointCheckBox_CheckedChanged);
+      // 
+      // breakpointLabel
+      // 
+      this.breakpointLabel.AutoSize = true;
+      this.breakpointLabel.Location = new System.Drawing.Point(3, 26);
+      this.breakpointLabel.Name = "breakpointLabel";
+      this.breakpointLabel.Size = new System.Drawing.Size(61, 13);
+      this.breakpointLabel.TabIndex = 3;
+      this.breakpointLabel.Text = "Breakpoint:";
+      // 
+      // ProgrammableOperatorView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.tabControl1);
+      this.Controls.Add(this.breakpointLabel);
+      this.Controls.Add(this.breakpointCheckBox);
+      this.Name = "ProgrammableOperatorView";
+      this.Size = new System.Drawing.Size(985, 697);
+      this.Controls.SetChildIndex(this.breakpointCheckBox, 0);
+      this.Controls.SetChildIndex(this.breakpointLabel, 0);
+      this.Controls.SetChildIndex(this.infoLabel, 0);
+      this.Controls.SetChildIndex(this.nameLabel, 0);
+      this.Controls.SetChildIndex(this.tabControl1, 0);
+      this.Controls.SetChildIndex(this.nameTextBox, 0);
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
+      this.tabPage2.ResumeLayout(false);
+      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.splitContainer2.Panel1.ResumeLayout(false);
+      this.splitContainer2.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
+      this.splitContainer2.ResumeLayout(false);
+      this.assembliesBox.ResumeLayout(false);
+      this.namespacesBox.ResumeLayout(false);
+      this.tabControl1.ResumeLayout(false);
+      this.tabPage1.ResumeLayout(false);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private HeuristicLab.MainForm.WindowsForms.DragOverTabControl tabControl1;
+    private System.Windows.Forms.TabPage tabPage1;
+    private HeuristicLab.Core.Views.ParameterCollectionView parameterCollectionView;
+    private System.Windows.Forms.SplitContainer splitContainer1;
+    private HeuristicLab.CodeEditor.CodeEditor codeEditor;
+    private System.Windows.Forms.Button compileButton;
+    private System.Windows.Forms.Button showCodeButton;
+    private System.Windows.Forms.SplitContainer splitContainer2;
+    private System.Windows.Forms.TreeView assembliesTreeView;
+    private System.Windows.Forms.TreeView namespacesTreeView;
+    private System.Windows.Forms.GroupBox assembliesBox;
+    private System.Windows.Forms.GroupBox namespacesBox;
+    private System.Windows.Forms.CheckBox breakpointCheckBox;
+    private System.Windows.Forms.Label compilationLabel;
+    private System.Windows.Forms.Label breakpointLabel;
+    private System.Windows.Forms.TabPage tabPage2;
+  }
+}
Index: /trunk/sources/HeuristicLab.Operators.Programmable.Views/3.3/ProgrammableOperatorView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Programmable.Views/3.3/ProgrammableOperatorView.cs	(revision 7636)
+++ /trunk/sources/HeuristicLab.Operators.Programmable.Views/3.3/ProgrammableOperatorView.cs	(revision 7636)
@@ -0,0 +1,319 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.CodeEditor;
+using HeuristicLab.Common.Resources;
+using HeuristicLab.Core.Views;
+using HeuristicLab.MainForm;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Operators.Programmable {
+
+  [View("ProgrammableOperator View")]
+  [Content(typeof(ProgrammableOperator), true)]
+  public partial class ProgrammableOperatorView : NamedItemView {
+
+    public ProgrammableOperator ProgrammableOperator {
+      get { return (ProgrammableOperator)base.Content; }
+      set { base.Content = (ProgrammableOperator)value; }
+    }
+
+    public ProgrammableOperatorView() {
+      InitializeComponent();
+      namespacesTreeView.ImageList = new ImageList();
+      namespacesTreeView.ImageList.Images.Add(VSImageLibrary.Namespace);
+      assembliesTreeView.ImageList = new ImageList();
+      assembliesTreeView.ImageList.Images.Add(VSImageLibrary.Assembly);
+      assembliesTreeView.ImageList.Images.Add(VSImageLibrary.Module);
+    }
+
+    protected override void RegisterContentEvents() {
+      base.RegisterContentEvents();
+      ProgrammableOperator.CodeChanged += ProgrammableOperator_CodeChanged;
+      ProgrammableOperator.SignatureChanged += ProgrammableOperator_SignatureChanged;
+      ProgrammableOperator.BreakpointChanged += ProgrammableOperator_BreakpointChanged;
+    }
+
+    protected override void DeregisterContentEvents() {
+      ProgrammableOperator.CodeChanged -= ProgrammableOperator_CodeChanged;
+      ProgrammableOperator.SignatureChanged -= ProgrammableOperator_SignatureChanged;
+      ProgrammableOperator.BreakpointChanged -= ProgrammableOperator_BreakpointChanged;
+      base.DeregisterContentEvents();
+    }
+
+    #region Content event handlers
+    void ProgrammableOperator_BreakpointChanged(object sender, EventArgs e) {
+      breakpointCheckBox.Checked = ProgrammableOperator.Breakpoint;
+    }
+    private void ProgrammableOperator_CodeChanged(object sender, EventArgs e) {
+      codeEditor.UserCode = ProgrammableOperator.Code;
+    }
+    private void ProgrammableOperator_SignatureChanged(object sender, EventArgs args) {
+      codeEditor.Prefix = GetGeneratedPrefix();
+    }
+    #endregion
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (ProgrammableOperator == null) {
+        codeEditor.UserCode = "";
+        assembliesTreeView.Nodes.Clear();
+        parameterCollectionView.Content = null;
+      } else {
+        codeEditor.Prefix = GetGeneratedPrefix();
+        codeEditor.Suffix = String.Format("    {0}\n  }}\n}}", ProgrammableOperator.MethodSuffix);
+        codeEditor.UserCode = ProgrammableOperator.Code;
+        if (codeEditor.UserCode == "")
+          codeEditor.UserCode = "    \n    \n    \n    \n";
+        InitializeAssemblyList();
+        InitializeNamespacesList();
+        foreach (var a in ProgrammableOperator.SelectedAssemblies) {
+          codeEditor.AddAssembly(a);
+        }
+        codeEditor.ScrollAfterPrefix();
+        codeEditor.ShowCompileErrors(ProgrammableOperator.CompileErrors, "ProgrammableOperator");
+        showCodeButton.Enabled =
+          ProgrammableOperator.CompilationUnitCode != null &&
+          ProgrammableOperator.CompilationUnitCode.Length > 0;
+        parameterCollectionView.Content = ProgrammableOperator.Parameters;
+        if (ProgrammableOperator.CompileErrors == null) {
+          compilationLabel.ForeColor = SystemColors.ControlDarkDark;
+          compilationLabel.Text = "Not compiled";
+        } else if (ProgrammableOperator.CompileErrors.HasErrors) {
+          compilationLabel.ForeColor = Color.DarkRed;
+          compilationLabel.Text = "Compilation failed";
+        } else {
+          compilationLabel.ForeColor = Color.DarkGreen;
+          compilationLabel.Text = "Compilation successful";
+        }
+
+      }
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      breakpointCheckBox.Enabled = Content != null && !Locked;
+      parameterCollectionView.Enabled = Content != null;
+      assembliesTreeView.Enabled = Content != null && !ReadOnly;
+      namespacesTreeView.Enabled = Content != null && !ReadOnly;
+      compileButton.Enabled = Content != null && !ReadOnly;
+      codeEditor.Enabled = Content != null && !ReadOnly;
+      showCodeButton.Enabled = Content != null && !string.IsNullOrEmpty(ProgrammableOperator.CompilationUnitCode) && !ReadOnly;
+    }
+
+    #region Child Control event handlers
+    private void compileButton_Click(object sender, EventArgs e) {
+      Recompile();
+    }
+    private void breakpointCheckBox_CheckedChanged(object sender, EventArgs e) {
+      if (ProgrammableOperator != null) ProgrammableOperator.Breakpoint = breakpointCheckBox.Checked;
+    }
+    private void showCodeButton_Click(object sender, EventArgs e) {
+      new CodeViewer(ProgrammableOperator.CompilationUnitCode).ShowDialog(this);
+    }
+    private void codeEditor_Validated(object sender, EventArgs e) {
+      ProgrammableOperator.Code = codeEditor.UserCode;
+    }
+    private void assembliesTreeView_AfterCheck(object sender, TreeViewEventArgs e) {
+      if (initializing)
+        return;
+      Assembly a = e.Node.Tag as Assembly;
+      if (a == null && e.Node.Nodes.Count > 0) {
+        foreach (TreeNode n in e.Node.Nodes)
+          n.Checked = e.Node.Checked;
+        return;
+      } else {
+        if (e.Node.Checked) {
+          ProgrammableOperator.SelectAssembly(a);
+          codeEditor.AddAssembly(a);
+        } else {
+          ProgrammableOperator.UnselectAssembly(a);
+          codeEditor.RemoveAssembly(a);
+        }
+      }
+      InitializeNamespacesList();
+      codeEditor.Prefix = GetGeneratedPrefix();
+    }
+    private void namespacesTreeView_AfterCheck(object sender, TreeViewEventArgs e) {
+      if (initializing)
+        return;
+      if (e.Node.Checked) {
+        ProgrammableOperator.SelectNamespace(e.Node.FullPath);
+      } else {
+        ProgrammableOperator.UnselectNamespace(e.Node.FullPath);
+      }
+      codeEditor.Prefix = GetGeneratedPrefix();
+    }
+    #endregion
+
+    #region global HotKeys
+    protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
+      if (keyData == Keys.F6) {
+        Control activeControl = ActiveControl;
+        compileButton.Focus();
+        Recompile();
+        if (activeControl != null)
+          activeControl.Focus();
+        return true;
+      }
+      return base.ProcessCmdKey(ref msg, keyData);
+    }
+    #endregion
+
+    #region Auxiliary functions
+
+    private string GetGeneratedPrefix() {
+      StringBuilder prefix = new StringBuilder();
+      foreach (var ns in ProgrammableOperator.GetSelectedAndValidNamespaces()) {
+        prefix.Append("using ").Append(ns).AppendLine(";");
+      }
+      prefix.AppendLine();
+      prefix.Append("public class ").Append(ProgrammableOperator.CompiledTypeName).AppendLine(" {");
+      prefix.Append("  ").Append(ProgrammableOperator.Signature).AppendLine(" {");
+      return prefix.ToString();
+    }
+
+    private void Recompile() {
+      this.Enabled = false;
+      try {
+        ProgrammableOperator.Compile();
+      } catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog(this, ex);
+      }
+      OnContentChanged();
+      this.Enabled = true;
+    }
+
+    private bool initializing = false;
+    private void InitializeAssemblyList() {
+      initializing = true;
+      assembliesTreeView.Enabled = false;
+      namespacesTreeView.Enabled = false;
+      assembliesTreeView.BeginUpdate();
+      assembliesTreeView.Nodes.Clear();
+      var selectedAssemblies = new HashSet<Assembly>(ProgrammableOperator.SelectedAssemblies);
+      foreach (var p in ProgrammableOperator.Plugins) {
+        var node = assembliesTreeView.Nodes.Add(p.Key);
+        node.Tag = p;
+        node.ImageIndex = 1;
+        foreach (var a in p.Value) {
+          var aNode = node.Nodes.Add(a.GetName().Name);
+          aNode.Tag = a;
+          aNode.ImageIndex = 0;
+          if (selectedAssemblies.Contains(a))
+            aNode.Checked = true;
+        }
+        if (node.Nodes.Count == 1 && node.Nodes[0].Name == node.Nodes[0].Name) {
+          node.Tag = node.Nodes[0].Tag;
+          node.ImageIndex = node.Nodes[0].ImageIndex;
+          node.Checked = node.Nodes[0].Checked;
+          node.Nodes.Clear();
+        } else if (node.Nodes.Count > 0 && node.Nodes.Cast<TreeNode>().All(n => n.Checked)) {
+          node.Checked = true;
+        }
+      }
+      assembliesTreeView.Sort();
+      assembliesTreeView.EndUpdate();
+      assembliesTreeView.Enabled = true;
+      namespacesTreeView.Enabled = true;
+      initializing = false;
+    }
+
+    private void InitializeNamespacesList() {
+      initializing = true;
+      namespacesTreeView.Enabled = false;
+      namespacesTreeView.BeginUpdate();
+      TreeNode oldTree = new TreeNode("root");
+      CloneTreeNodeCollection(oldTree, namespacesTreeView.Nodes);
+      namespacesTreeView.Nodes.Clear();
+      var selectedNamespaces = new HashSet<string>(ProgrammableOperator.Namespaces);
+      foreach (var ns in ProgrammableOperator.GetAllNamespaces(true))
+        AddNamespace(namespacesTreeView.Nodes, ns, selectedNamespaces.Contains(ns), oldTree);
+      codeEditor.Prefix = GetGeneratedPrefix();
+      namespacesTreeView.Sort();
+      namespacesTreeView.EndUpdate();
+      namespacesTreeView.Enabled = true;
+      initializing = false;
+    }
+
+    private void CloneTreeNodeCollection(TreeNode root, TreeNodeCollection nodes) {
+      foreach (TreeNode n in nodes) {
+        TreeNode newNode = root.Nodes.Add(n.Text, n.Text);
+        newNode.Checked = n.Checked;
+        newNode.ImageIndex = n.ImageIndex;
+        CloneTreeNodeCollection(newNode, n.Nodes);
+        if (n.IsExpanded)
+          newNode.Expand();
+      }
+    }
+
+    private bool AddNamespace(TreeNodeCollection parentNodes, string ns, bool isSelected, TreeNode oldTree) {
+      int dotIndex = ns.IndexOf('.');
+      string prefix = ns;
+      if (dotIndex != -1)
+        prefix = ns.Substring(0, dotIndex);
+      TreeNode node = GetOrCreateNode(parentNodes, prefix);
+      TreeNode oldNode = MaybeGetNode(oldTree, prefix);
+      bool isNew = oldNode == null;
+      if (dotIndex != -1 && dotIndex + 1 < ns.Length) {
+        isNew = AddNamespace(node.Nodes, ns.Substring(dotIndex + 1, ns.Length - (dotIndex + 1)), isSelected, oldNode);
+      } else {
+        node.Checked = isSelected;
+      }
+      if (isNew || oldNode != null && oldNode.IsExpanded)
+        node.Expand();
+      if (isNew) {
+        namespacesTreeView.SelectedNode = node;
+        node.ImageIndex = 0;
+      } else {
+        node.ImageIndex = oldNode.ImageIndex;
+      }
+      return isNew;
+    }
+
+    private static TreeNode MaybeGetNode(TreeNode parentNode, string key) {
+      if (parentNode == null)
+        return null;
+      if (parentNode.Nodes.ContainsKey(key))
+        return parentNode.Nodes[key];
+      return null;
+    }
+
+    private static TreeNode GetOrCreateNode(TreeNodeCollection parentNodes, string key) {
+      TreeNode node = null;
+      if (parentNodes.ContainsKey(key)) {
+        node = parentNodes[key];
+      } else {
+        node = parentNodes.Add(key, key);
+      }
+      return node;
+    }
+
+    #endregion
+  }
+}
Index: /trunk/sources/HeuristicLab.Operators.Programmable.Views/3.3/Properties/AssemblyInfo.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Programmable.Views/3.3/Properties/AssemblyInfo.cs.frame	(revision 7636)
+++ /trunk/sources/HeuristicLab.Operators.Programmable.Views/3.3/Properties/AssemblyInfo.cs.frame	(revision 7636)
@@ -0,0 +1,36 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.Operators.Programmable.Views")]
+[assembly: AssemblyDescription("Views for the programmable operators.")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002 - 2012 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("c5821a1a-a606-4470-96d9-29f789bde123")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("3.3.0.0")]
+[assembly: AssemblyFileVersion("3.3.6.$WCREV$")]
Index: /trunk/sources/HeuristicLab.Operators.Programmable/3.3/HeuristicLab.Operators.Programmable-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Programmable/3.3/HeuristicLab.Operators.Programmable-3.3.csproj	(revision 7635)
+++ /trunk/sources/HeuristicLab.Operators.Programmable/3.3/HeuristicLab.Operators.Programmable-3.3.csproj	(revision 7636)
@@ -103,11 +103,8 @@
       <RequiredTargetFramework>3.5</RequiredTargetFramework>
     </Reference>
-    <Reference Include="System.Data" />
     <Reference Include="System.Data.Linq">
       <RequiredTargetFramework>3.5</RequiredTargetFramework>
     </Reference>
     <Reference Include="System.Drawing" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
@@ -115,10 +112,4 @@
     <Compile Include="Plugin.cs" />
     <Compile Include="ProgrammableOperator.cs" />
-    <Compile Include="ProgrammableOperatorView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="ProgrammableOperatorView.Designer.cs">
-      <DependentUpon>ProgrammableOperatorView.cs</DependentUpon>
-    </Compile>
     <Compile Include="ProgrammableSingleSuccessorOperator.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
@@ -129,9 +120,4 @@
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\..\HeuristicLab.CodeEditor\3.3\HeuristicLab.CodeEditor-3.3.csproj">
-      <Project>{489CFE09-FDF7-4C89-BAB5-BD09CADD61AD}</Project>
-      <Name>HeuristicLab.CodeEditor-3.3</Name>
-      <Private>False</Private>
-    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Collections\3.3\HeuristicLab.Collections-3.3.csproj">
       <Project>{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}</Project>
@@ -149,9 +135,4 @@
       <Private>False</Private>
     </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Core.Views\3.3\HeuristicLab.Core.Views-3.3.csproj">
-      <Project>{E226881D-315F-423D-B419-A766FE0D8685}</Project>
-      <Name>HeuristicLab.Core.Views-3.3</Name>
-      <Private>False</Private>
-    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
       <Project>{C36BD924-A541-4A00-AFA8-41701378DDC5}</Project>
@@ -164,27 +145,7 @@
       <Private>False</Private>
     </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.MainForm.WindowsForms\3.3\HeuristicLab.MainForm.WindowsForms-3.3.csproj">
-      <Project>{AB687BBE-1BFE-476B-906D-44237135431D}</Project>
-      <Name>HeuristicLab.MainForm.WindowsForms-3.3</Name>
-      <Private>False</Private>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.MainForm\3.3\HeuristicLab.MainForm-3.3.csproj">
-      <Project>{3BD61258-31DA-4B09-89C0-4F71FEF5F05A}</Project>
-      <Name>HeuristicLab.MainForm-3.3</Name>
-      <Private>False</Private>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Operators.Views\3.3\HeuristicLab.Operators.Views-3.3.csproj">
-      <Project>{C49CB749-8B24-4628-8003-E86475749410}</Project>
-      <Name>HeuristicLab.Operators.Views-3.3</Name>
-      <Private>False</Private>
-    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Operators\3.3\HeuristicLab.Operators-3.3.csproj">
       <Project>{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}</Project>
       <Name>HeuristicLab.Operators-3.3</Name>
-      <Private>False</Private>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Parameters.Views\3.3\HeuristicLab.Parameters.Views-3.3.csproj">
-      <Project>{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}</Project>
-      <Name>HeuristicLab.Parameters.Views-3.3</Name>
       <Private>False</Private>
     </ProjectReference>
Index: /trunk/sources/HeuristicLab.Operators.Programmable/3.3/Plugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Programmable/3.3/Plugin.cs.frame	(revision 7635)
+++ /trunk/sources/HeuristicLab.Operators.Programmable/3.3/Plugin.cs.frame	(revision 7636)
@@ -28,13 +28,9 @@
   [Plugin("HeuristicLab.Operators.Programmable", "3.3.6.$WCREV$")]
   [PluginFile("HeuristicLab.Operators.Programmable-3.3.dll", PluginFileType.Assembly)]
-  [PluginDependency("HeuristicLab.CodeEditor", "3.3")]
   [PluginDependency("HeuristicLab.Collections", "3.3")]
   [PluginDependency("HeuristicLab.Common", "3.3")]
   [PluginDependency("HeuristicLab.Common.Resources", "3.3")]
   [PluginDependency("HeuristicLab.Core", "3.3")]
-  [PluginDependency("HeuristicLab.Core.Views", "3.3")]
   [PluginDependency("HeuristicLab.Data", "3.3")]
-  [PluginDependency("HeuristicLab.MainForm", "3.3")]
-  [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]
   [PluginDependency("HeuristicLab.Operators", "3.3")]
   [PluginDependency("HeuristicLab.Parameters", "3.3")]
Index: unk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.Designer.cs	(revision 7635)
+++ 	(revision )
@@ -1,339 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.Operators.Programmable {
-  partial class ProgrammableOperatorView {
-    /// <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.tabPage2 = new System.Windows.Forms.TabPage();
-      this.splitContainer1 = new System.Windows.Forms.SplitContainer();
-      this.compilationLabel = new System.Windows.Forms.Label();
-      this.splitContainer2 = new System.Windows.Forms.SplitContainer();
-      this.assembliesBox = new System.Windows.Forms.GroupBox();
-      this.assembliesTreeView = new System.Windows.Forms.TreeView();
-      this.namespacesBox = new System.Windows.Forms.GroupBox();
-      this.namespacesTreeView = new System.Windows.Forms.TreeView();
-      this.showCodeButton = new System.Windows.Forms.Button();
-      this.compileButton = new System.Windows.Forms.Button();
-      this.codeEditor = new HeuristicLab.CodeEditor.CodeEditor();
-      this.tabControl1 = new HeuristicLab.MainForm.WindowsForms.DragOverTabControl();
-      this.tabPage1 = new System.Windows.Forms.TabPage();
-      this.parameterCollectionView = new HeuristicLab.Core.Views.ParameterCollectionView();
-      this.breakpointCheckBox = new System.Windows.Forms.CheckBox();
-      this.breakpointLabel = new System.Windows.Forms.Label();
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
-      this.tabPage2.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
-      this.splitContainer1.Panel1.SuspendLayout();
-      this.splitContainer1.Panel2.SuspendLayout();
-      this.splitContainer1.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
-      this.splitContainer2.Panel1.SuspendLayout();
-      this.splitContainer2.Panel2.SuspendLayout();
-      this.splitContainer2.SuspendLayout();
-      this.assembliesBox.SuspendLayout();
-      this.namespacesBox.SuspendLayout();
-      this.tabControl1.SuspendLayout();
-      this.tabPage1.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // nameTextBox
-      // 
-      this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
-      this.errorProvider.SetIconPadding(this.nameTextBox, 2);
-      this.nameTextBox.Location = new System.Drawing.Point(70, 0);
-      this.nameTextBox.Size = new System.Drawing.Size(890, 20);
-      // 
-      // infoLabel
-      // 
-      this.infoLabel.Location = new System.Drawing.Point(966, 3);
-      // 
-      // tabPage2
-      // 
-      this.tabPage2.Controls.Add(this.splitContainer1);
-      this.tabPage2.Location = new System.Drawing.Point(4, 22);
-      this.tabPage2.Name = "tabPage2";
-      this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
-      this.tabPage2.Size = new System.Drawing.Size(977, 625);
-      this.tabPage2.TabIndex = 1;
-      this.tabPage2.Text = "Code";
-      this.tabPage2.UseVisualStyleBackColor = true;
-      // 
-      // splitContainer1
-      // 
-      this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.splitContainer1.Location = new System.Drawing.Point(3, 3);
-      this.splitContainer1.Name = "splitContainer1";
-      // 
-      // splitContainer1.Panel1
-      // 
-      this.splitContainer1.Panel1.Controls.Add(this.compilationLabel);
-      this.splitContainer1.Panel1.Controls.Add(this.splitContainer2);
-      this.splitContainer1.Panel1.Controls.Add(this.showCodeButton);
-      this.splitContainer1.Panel1.Controls.Add(this.compileButton);
-      // 
-      // splitContainer1.Panel2
-      // 
-      this.splitContainer1.Panel2.Controls.Add(this.codeEditor);
-      this.splitContainer1.Size = new System.Drawing.Size(971, 619);
-      this.splitContainer1.SplitterDistance = 244;
-      this.splitContainer1.TabIndex = 0;
-      // 
-      // compilationLabel
-      // 
-      this.compilationLabel.AutoSize = true;
-      this.compilationLabel.ForeColor = System.Drawing.SystemColors.ControlDarkDark;
-      this.compilationLabel.Location = new System.Drawing.Point(63, 9);
-      this.compilationLabel.Name = "compilationLabel";
-      this.compilationLabel.Size = new System.Drawing.Size(69, 13);
-      this.compilationLabel.TabIndex = 2;
-      this.compilationLabel.Text = "Not compiled";
-      // 
-      // splitContainer2
-      // 
-      this.splitContainer2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.splitContainer2.Location = new System.Drawing.Point(0, 33);
-      this.splitContainer2.Name = "splitContainer2";
-      this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
-      // 
-      // splitContainer2.Panel1
-      // 
-      this.splitContainer2.Panel1.Controls.Add(this.assembliesBox);
-      // 
-      // splitContainer2.Panel2
-      // 
-      this.splitContainer2.Panel2.Controls.Add(this.namespacesBox);
-      this.splitContainer2.Size = new System.Drawing.Size(242, 589);
-      this.splitContainer2.SplitterDistance = 292;
-      this.splitContainer2.TabIndex = 2;
-      // 
-      // assembliesBox
-      // 
-      this.assembliesBox.Controls.Add(this.assembliesTreeView);
-      this.assembliesBox.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.assembliesBox.Location = new System.Drawing.Point(0, 0);
-      this.assembliesBox.Name = "assembliesBox";
-      this.assembliesBox.Size = new System.Drawing.Size(242, 292);
-      this.assembliesBox.TabIndex = 0;
-      this.assembliesBox.TabStop = false;
-      this.assembliesBox.Text = "Assemblies";
-      // 
-      // assembliesTreeView
-      // 
-      this.assembliesTreeView.CheckBoxes = true;
-      this.assembliesTreeView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.assembliesTreeView.Location = new System.Drawing.Point(3, 16);
-      this.assembliesTreeView.Name = "assembliesTreeView";
-      this.assembliesTreeView.Size = new System.Drawing.Size(236, 273);
-      this.assembliesTreeView.TabIndex = 0;
-      this.assembliesTreeView.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.assembliesTreeView_AfterCheck);
-      // 
-      // namespacesBox
-      // 
-      this.namespacesBox.Controls.Add(this.namespacesTreeView);
-      this.namespacesBox.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.namespacesBox.Location = new System.Drawing.Point(0, 0);
-      this.namespacesBox.Name = "namespacesBox";
-      this.namespacesBox.Size = new System.Drawing.Size(242, 293);
-      this.namespacesBox.TabIndex = 0;
-      this.namespacesBox.TabStop = false;
-      this.namespacesBox.Text = "Namespaces";
-      // 
-      // namespacesTreeView
-      // 
-      this.namespacesTreeView.CheckBoxes = true;
-      this.namespacesTreeView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.namespacesTreeView.Location = new System.Drawing.Point(3, 16);
-      this.namespacesTreeView.Name = "namespacesTreeView";
-      this.namespacesTreeView.PathSeparator = ".";
-      this.namespacesTreeView.Size = new System.Drawing.Size(236, 274);
-      this.namespacesTreeView.TabIndex = 0;
-      this.namespacesTreeView.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.namespacesTreeView_AfterCheck);
-      // 
-      // showCodeButton
-      // 
-      this.showCodeButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.PrintPreview;
-      this.showCodeButton.Location = new System.Drawing.Point(33, 3);
-      this.showCodeButton.Name = "showCodeButton";
-      this.showCodeButton.Size = new System.Drawing.Size(24, 24);
-      this.showCodeButton.TabIndex = 1;
-      this.showCodeButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
-      this.toolTip.SetToolTip(this.showCodeButton, "Show generated code");
-      this.showCodeButton.UseVisualStyleBackColor = false;
-      this.showCodeButton.Click += new System.EventHandler(this.showCodeButton_Click);
-      // 
-      // compileButton
-      // 
-      this.compileButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Script;
-      this.compileButton.Location = new System.Drawing.Point(3, 3);
-      this.compileButton.Name = "compileButton";
-      this.compileButton.Size = new System.Drawing.Size(24, 24);
-      this.compileButton.TabIndex = 0;
-      this.compileButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
-      this.toolTip.SetToolTip(this.compileButton, "Compile (F6)");
-      this.compileButton.UseVisualStyleBackColor = true;
-      this.compileButton.Click += new System.EventHandler(this.compileButton_Click);
-      // 
-      // codeEditor
-      // 
-      this.codeEditor.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.codeEditor.Location = new System.Drawing.Point(0, 0);
-      this.codeEditor.Name = "codeEditor";
-      this.codeEditor.Prefix = "";
-      this.codeEditor.Size = new System.Drawing.Size(723, 619);
-      this.codeEditor.Suffix = "";
-      this.codeEditor.TabIndex = 0;
-      this.codeEditor.UserCode = "";
-      this.codeEditor.Validated += new System.EventHandler(this.codeEditor_Validated);
-      // 
-      // tabControl1
-      // 
-      this.tabControl1.AllowDrop = true;
-      this.tabControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.tabControl1.Controls.Add(this.tabPage1);
-      this.tabControl1.Controls.Add(this.tabPage2);
-      this.tabControl1.Location = new System.Drawing.Point(0, 46);
-      this.tabControl1.Name = "tabControl1";
-      this.tabControl1.SelectedIndex = 0;
-      this.tabControl1.Size = new System.Drawing.Size(985, 651);
-      this.tabControl1.TabIndex = 5;
-      // 
-      // tabPage1
-      // 
-      this.tabPage1.Controls.Add(this.parameterCollectionView);
-      this.tabPage1.Location = new System.Drawing.Point(4, 22);
-      this.tabPage1.Name = "tabPage1";
-      this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
-      this.tabPage1.Size = new System.Drawing.Size(977, 625);
-      this.tabPage1.TabIndex = 0;
-      this.tabPage1.Text = "Parameters";
-      this.tabPage1.UseVisualStyleBackColor = true;
-      // 
-      // parameterCollectionView
-      // 
-      this.parameterCollectionView.Caption = "ParameterCollection View";
-      this.parameterCollectionView.Content = null;
-      this.parameterCollectionView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.parameterCollectionView.Location = new System.Drawing.Point(3, 3);
-      this.parameterCollectionView.Name = "parameterCollectionView";
-      this.parameterCollectionView.ReadOnly = false;
-      this.parameterCollectionView.Size = new System.Drawing.Size(971, 619);
-      this.parameterCollectionView.TabIndex = 0;
-      // 
-      // breakpointCheckBox
-      // 
-      this.breakpointCheckBox.AutoSize = true;
-      this.breakpointCheckBox.Location = new System.Drawing.Point(70, 26);
-      this.breakpointCheckBox.Name = "breakpointCheckBox";
-      this.breakpointCheckBox.Size = new System.Drawing.Size(15, 14);
-      this.breakpointCheckBox.TabIndex = 4;
-      this.breakpointCheckBox.UseVisualStyleBackColor = true;
-      this.breakpointCheckBox.CheckedChanged += new System.EventHandler(this.breakpointCheckBox_CheckedChanged);
-      // 
-      // breakpointLabel
-      // 
-      this.breakpointLabel.AutoSize = true;
-      this.breakpointLabel.Location = new System.Drawing.Point(3, 26);
-      this.breakpointLabel.Name = "breakpointLabel";
-      this.breakpointLabel.Size = new System.Drawing.Size(61, 13);
-      this.breakpointLabel.TabIndex = 3;
-      this.breakpointLabel.Text = "Breakpoint:";
-      // 
-      // ProgrammableOperatorView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.tabControl1);
-      this.Controls.Add(this.breakpointLabel);
-      this.Controls.Add(this.breakpointCheckBox);
-      this.Name = "ProgrammableOperatorView";
-      this.Size = new System.Drawing.Size(985, 697);
-      this.Controls.SetChildIndex(this.breakpointCheckBox, 0);
-      this.Controls.SetChildIndex(this.breakpointLabel, 0);
-      this.Controls.SetChildIndex(this.infoLabel, 0);
-      this.Controls.SetChildIndex(this.nameLabel, 0);
-      this.Controls.SetChildIndex(this.tabControl1, 0);
-      this.Controls.SetChildIndex(this.nameTextBox, 0);
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
-      this.tabPage2.ResumeLayout(false);
-      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.splitContainer2.Panel1.ResumeLayout(false);
-      this.splitContainer2.Panel2.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
-      this.splitContainer2.ResumeLayout(false);
-      this.assembliesBox.ResumeLayout(false);
-      this.namespacesBox.ResumeLayout(false);
-      this.tabControl1.ResumeLayout(false);
-      this.tabPage1.ResumeLayout(false);
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private HeuristicLab.MainForm.WindowsForms.DragOverTabControl tabControl1;
-    private System.Windows.Forms.TabPage tabPage1;
-    private HeuristicLab.Core.Views.ParameterCollectionView parameterCollectionView;
-    private System.Windows.Forms.SplitContainer splitContainer1;
-    private HeuristicLab.CodeEditor.CodeEditor codeEditor;
-    private System.Windows.Forms.Button compileButton;
-    private System.Windows.Forms.Button showCodeButton;
-    private System.Windows.Forms.SplitContainer splitContainer2;
-    private System.Windows.Forms.TreeView assembliesTreeView;
-    private System.Windows.Forms.TreeView namespacesTreeView;
-    private System.Windows.Forms.GroupBox assembliesBox;
-    private System.Windows.Forms.GroupBox namespacesBox;
-    private System.Windows.Forms.CheckBox breakpointCheckBox;
-    private System.Windows.Forms.Label compilationLabel;
-    private System.Windows.Forms.Label breakpointLabel;
-    private System.Windows.Forms.TabPage tabPage2;
-  }
-}
Index: unk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.cs	(revision 7635)
+++ 	(revision )
@@ -1,319 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Linq;
-using System.Reflection;
-using System.Text;
-using System.Windows.Forms;
-using HeuristicLab.CodeEditor;
-using HeuristicLab.Common.Resources;
-using HeuristicLab.Core.Views;
-using HeuristicLab.MainForm;
-using HeuristicLab.PluginInfrastructure;
-
-namespace HeuristicLab.Operators.Programmable {
-
-  [View("ProgrammableOperator View")]
-  [Content(typeof(ProgrammableOperator), true)]
-  public partial class ProgrammableOperatorView : NamedItemView {
-
-    public ProgrammableOperator ProgrammableOperator {
-      get { return (ProgrammableOperator)base.Content; }
-      set { base.Content = (ProgrammableOperator)value; }
-    }
-
-    public ProgrammableOperatorView() {
-      InitializeComponent();
-      namespacesTreeView.ImageList = new ImageList();
-      namespacesTreeView.ImageList.Images.Add(VSImageLibrary.Namespace);
-      assembliesTreeView.ImageList = new ImageList();
-      assembliesTreeView.ImageList.Images.Add(VSImageLibrary.Assembly);
-      assembliesTreeView.ImageList.Images.Add(VSImageLibrary.Module);
-    }
-
-    protected override void RegisterContentEvents() {
-      base.RegisterContentEvents();
-      ProgrammableOperator.CodeChanged += ProgrammableOperator_CodeChanged;
-      ProgrammableOperator.SignatureChanged += ProgrammableOperator_SignatureChanged;
-      ProgrammableOperator.BreakpointChanged += ProgrammableOperator_BreakpointChanged;
-    }
-
-    protected override void DeregisterContentEvents() {
-      ProgrammableOperator.CodeChanged -= ProgrammableOperator_CodeChanged;
-      ProgrammableOperator.SignatureChanged -= ProgrammableOperator_SignatureChanged;
-      ProgrammableOperator.BreakpointChanged -= ProgrammableOperator_BreakpointChanged;
-      base.DeregisterContentEvents();
-    }
-
-    #region Content event handlers
-    void ProgrammableOperator_BreakpointChanged(object sender, EventArgs e) {
-      breakpointCheckBox.Checked = ProgrammableOperator.Breakpoint;
-    }
-    private void ProgrammableOperator_CodeChanged(object sender, EventArgs e) {
-      codeEditor.UserCode = ProgrammableOperator.Code;
-    }
-    private void ProgrammableOperator_SignatureChanged(object sender, EventArgs args) {
-      codeEditor.Prefix = GetGeneratedPrefix();
-    }
-    #endregion
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      if (ProgrammableOperator == null) {
-        codeEditor.UserCode = "";
-        assembliesTreeView.Nodes.Clear();
-        parameterCollectionView.Content = null;
-      } else {
-        codeEditor.Prefix = GetGeneratedPrefix();
-        codeEditor.Suffix = String.Format("    {0}\n  }}\n}}", ProgrammableOperator.MethodSuffix);
-        codeEditor.UserCode = ProgrammableOperator.Code;
-        if (codeEditor.UserCode == "")
-          codeEditor.UserCode = "    \n    \n    \n    \n";
-        InitializeAssemblyList();
-        InitializeNamespacesList();
-        foreach (var a in ProgrammableOperator.SelectedAssemblies) {
-          codeEditor.AddAssembly(a);
-        }
-        codeEditor.ScrollAfterPrefix();
-        codeEditor.ShowCompileErrors(ProgrammableOperator.CompileErrors, "ProgrammableOperator");
-        showCodeButton.Enabled =
-          ProgrammableOperator.CompilationUnitCode != null &&
-          ProgrammableOperator.CompilationUnitCode.Length > 0;
-        parameterCollectionView.Content = ProgrammableOperator.Parameters;
-        if (ProgrammableOperator.CompileErrors == null) {
-          compilationLabel.ForeColor = SystemColors.ControlDarkDark;
-          compilationLabel.Text = "Not compiled";
-        } else if (ProgrammableOperator.CompileErrors.HasErrors) {
-          compilationLabel.ForeColor = Color.DarkRed;
-          compilationLabel.Text = "Compilation failed";
-        } else {
-          compilationLabel.ForeColor = Color.DarkGreen;
-          compilationLabel.Text = "Compilation successful";
-        }
-
-      }
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-      breakpointCheckBox.Enabled = Content != null && !Locked;
-      parameterCollectionView.Enabled = Content != null;
-      assembliesTreeView.Enabled = Content != null && !ReadOnly;
-      namespacesTreeView.Enabled = Content != null && !ReadOnly;
-      compileButton.Enabled = Content != null && !ReadOnly;
-      codeEditor.Enabled = Content != null && !ReadOnly;
-      showCodeButton.Enabled = Content != null && !string.IsNullOrEmpty(ProgrammableOperator.CompilationUnitCode) && !ReadOnly;
-    }
-
-    #region Child Control event handlers
-    private void compileButton_Click(object sender, EventArgs e) {
-      Recompile();
-    }
-    private void breakpointCheckBox_CheckedChanged(object sender, EventArgs e) {
-      if (ProgrammableOperator != null) ProgrammableOperator.Breakpoint = breakpointCheckBox.Checked;
-    }
-    private void showCodeButton_Click(object sender, EventArgs e) {
-      new CodeViewer(ProgrammableOperator.CompilationUnitCode).ShowDialog(this);
-    }
-    private void codeEditor_Validated(object sender, EventArgs e) {
-      ProgrammableOperator.Code = codeEditor.UserCode;
-    }
-    private void assembliesTreeView_AfterCheck(object sender, TreeViewEventArgs e) {
-      if (initializing)
-        return;
-      Assembly a = e.Node.Tag as Assembly;
-      if (a == null && e.Node.Nodes.Count > 0) {
-        foreach (TreeNode n in e.Node.Nodes)
-          n.Checked = e.Node.Checked;
-        return;
-      } else {
-        if (e.Node.Checked) {
-          ProgrammableOperator.SelectAssembly(a);
-          codeEditor.AddAssembly(a);
-        } else {
-          ProgrammableOperator.UnselectAssembly(a);
-          codeEditor.RemoveAssembly(a);
-        }
-      }
-      InitializeNamespacesList();
-      codeEditor.Prefix = GetGeneratedPrefix();
-    }
-    private void namespacesTreeView_AfterCheck(object sender, TreeViewEventArgs e) {
-      if (initializing)
-        return;
-      if (e.Node.Checked) {
-        ProgrammableOperator.SelectNamespace(e.Node.FullPath);
-      } else {
-        ProgrammableOperator.UnselectNamespace(e.Node.FullPath);
-      }
-      codeEditor.Prefix = GetGeneratedPrefix();
-    }
-    #endregion
-
-    #region global HotKeys
-    protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
-      if (keyData == Keys.F6) {
-        Control activeControl = ActiveControl;
-        compileButton.Focus();
-        Recompile();
-        if (activeControl != null)
-          activeControl.Focus();
-        return true;
-      }
-      return base.ProcessCmdKey(ref msg, keyData);
-    }
-    #endregion
-
-    #region Auxiliary functions
-
-    private string GetGeneratedPrefix() {
-      StringBuilder prefix = new StringBuilder();
-      foreach (var ns in ProgrammableOperator.GetSelectedAndValidNamespaces()) {
-        prefix.Append("using ").Append(ns).AppendLine(";");
-      }
-      prefix.AppendLine();
-      prefix.Append("public class ").Append(ProgrammableOperator.CompiledTypeName).AppendLine(" {");
-      prefix.Append("  ").Append(ProgrammableOperator.Signature).AppendLine(" {");
-      return prefix.ToString();
-    }
-
-    private void Recompile() {
-      this.Enabled = false;
-      try {
-        ProgrammableOperator.Compile();
-      } catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog(this, ex);
-      }
-      OnContentChanged();
-      this.Enabled = true;
-    }
-
-    private bool initializing = false;
-    private void InitializeAssemblyList() {
-      initializing = true;
-      assembliesTreeView.Enabled = false;
-      namespacesTreeView.Enabled = false;
-      assembliesTreeView.BeginUpdate();
-      assembliesTreeView.Nodes.Clear();
-      var selectedAssemblies = new HashSet<Assembly>(ProgrammableOperator.SelectedAssemblies);
-      foreach (var p in ProgrammableOperator.Plugins) {
-        var node = assembliesTreeView.Nodes.Add(p.Key);
-        node.Tag = p;
-        node.ImageIndex = 1;
-        foreach (var a in p.Value) {
-          var aNode = node.Nodes.Add(a.GetName().Name);
-          aNode.Tag = a;
-          aNode.ImageIndex = 0;
-          if (selectedAssemblies.Contains(a))
-            aNode.Checked = true;
-        }
-        if (node.Nodes.Count == 1 && node.Nodes[0].Name == node.Nodes[0].Name) {
-          node.Tag = node.Nodes[0].Tag;
-          node.ImageIndex = node.Nodes[0].ImageIndex;
-          node.Checked = node.Nodes[0].Checked;
-          node.Nodes.Clear();
-        } else if (node.Nodes.Count > 0 && node.Nodes.Cast<TreeNode>().All(n => n.Checked)) {
-          node.Checked = true;
-        }
-      }
-      assembliesTreeView.Sort();
-      assembliesTreeView.EndUpdate();
-      assembliesTreeView.Enabled = true;
-      namespacesTreeView.Enabled = true;
-      initializing = false;
-    }
-
-    private void InitializeNamespacesList() {
-      initializing = true;
-      namespacesTreeView.Enabled = false;
-      namespacesTreeView.BeginUpdate();
-      TreeNode oldTree = new TreeNode("root");
-      CloneTreeNodeCollection(oldTree, namespacesTreeView.Nodes);
-      namespacesTreeView.Nodes.Clear();
-      var selectedNamespaces = new HashSet<string>(ProgrammableOperator.Namespaces);
-      foreach (var ns in ProgrammableOperator.GetAllNamespaces(true))
-        AddNamespace(namespacesTreeView.Nodes, ns, selectedNamespaces.Contains(ns), oldTree);
-      codeEditor.Prefix = GetGeneratedPrefix();
-      namespacesTreeView.Sort();
-      namespacesTreeView.EndUpdate();
-      namespacesTreeView.Enabled = true;
-      initializing = false;
-    }
-
-    private void CloneTreeNodeCollection(TreeNode root, TreeNodeCollection nodes) {
-      foreach (TreeNode n in nodes) {
-        TreeNode newNode = root.Nodes.Add(n.Text, n.Text);
-        newNode.Checked = n.Checked;
-        newNode.ImageIndex = n.ImageIndex;
-        CloneTreeNodeCollection(newNode, n.Nodes);
-        if (n.IsExpanded)
-          newNode.Expand();
-      }
-    }
-
-    private bool AddNamespace(TreeNodeCollection parentNodes, string ns, bool isSelected, TreeNode oldTree) {
-      int dotIndex = ns.IndexOf('.');
-      string prefix = ns;
-      if (dotIndex != -1)
-        prefix = ns.Substring(0, dotIndex);
-      TreeNode node = GetOrCreateNode(parentNodes, prefix);
-      TreeNode oldNode = MaybeGetNode(oldTree, prefix);
-      bool isNew = oldNode == null;
-      if (dotIndex != -1 && dotIndex + 1 < ns.Length) {
-        isNew = AddNamespace(node.Nodes, ns.Substring(dotIndex + 1, ns.Length - (dotIndex + 1)), isSelected, oldNode);
-      } else {
-        node.Checked = isSelected;
-      }
-      if (isNew || oldNode != null && oldNode.IsExpanded)
-        node.Expand();
-      if (isNew) {
-        namespacesTreeView.SelectedNode = node;
-        node.ImageIndex = 0;
-      } else {
-        node.ImageIndex = oldNode.ImageIndex;
-      }
-      return isNew;
-    }
-
-    private static TreeNode MaybeGetNode(TreeNode parentNode, string key) {
-      if (parentNode == null)
-        return null;
-      if (parentNode.Nodes.ContainsKey(key))
-        return parentNode.Nodes[key];
-      return null;
-    }
-
-    private static TreeNode GetOrCreateNode(TreeNodeCollection parentNodes, string key) {
-      TreeNode node = null;
-      if (parentNodes.ContainsKey(key)) {
-        node = parentNodes[key];
-      } else {
-        node = parentNodes.Add(key, key);
-      }
-      return node;
-    }
-
-    #endregion
-  }
-}
