Index: /trunk/sources/HeuristicLab.CodeEditor/3.4/CodeEditor.cs
===================================================================
--- /trunk/sources/HeuristicLab.CodeEditor/3.4/CodeEditor.cs	(revision 12472)
+++ /trunk/sources/HeuristicLab.CodeEditor/3.4/CodeEditor.cs	(revision 12473)
@@ -27,5 +27,4 @@
 using System.Threading.Tasks;
 using System.Windows.Documents;
-using HeuristicLab.Common;
 using ICSharpCode.AvalonEdit;
 using ICSharpCode.AvalonEdit.AddIn;
@@ -37,5 +36,4 @@
 using ICSharpCode.AvalonEdit.Search;
 using ICSharpCode.NRefactory.Editor;
-using ICSharpCode.NRefactory.TypeSystem;
 using ICSharpCode.SharpDevelop.Editor;
 using Forms = System.Windows.Forms;
@@ -44,5 +42,5 @@
 
 namespace HeuristicLab.CodeEditor {
-  public partial class CodeEditor : Forms.UserControl {
+  public partial class CodeEditor : CodeEditorBase {
     private static readonly Media.Color WarningColor = Media.Colors.Blue;
     private static readonly Media.Color ErrorColor = Media.Colors.Red;
@@ -73,5 +71,5 @@
     private ITextMarker prefixMarker;
     private string prefix = string.Empty;
-    public string Prefix {
+    public override string Prefix {
       get { return prefix; }
       set {
@@ -91,5 +89,5 @@
     private ITextMarker suffixMarker;
     private string suffix = string.Empty;
-    public string Suffix {
+    public override string Suffix {
       get { return suffix; }
       set {
@@ -108,5 +106,5 @@
     }
 
-    public string UserCode {
+    public override string UserCode {
       get { return Doc.GetText(prefix.Length, Doc.TextLength - suffix.Length - prefix.Length); }
       set {
@@ -163,5 +161,5 @@
     #endregion
 
-    public bool ReadOnly {
+    public override bool ReadOnly {
       get { return TextEditor.IsReadOnly; }
       set { TextEditor.IsReadOnly = value; }
@@ -259,22 +257,22 @@
 
     #region Assembly Management
-    public void AddAssembly(Assembly a) {
+    public override void AddAssembly(Assembly a) {
       assemblyLoader.AddAssembly(a);
     }
 
-    public void AddAssemblies(IEnumerable<Assembly> assemblies) {
+    public override void AddAssemblies(IEnumerable<Assembly> assemblies) {
       assemblyLoader.AddAssemblies(assemblies);
     }
 
-    public async Task AddAssembliesAsync(IEnumerable<Assembly> assemblies) {
+    public override async Task AddAssembliesAsync(IEnumerable<Assembly> assemblies) {
       await assemblyLoader.AddAssembliesAsync(assemblies);
     }
 
-    public void RemoveAssembly(Assembly a) {
+    public override void RemoveAssembly(Assembly a) {
       assemblyLoader.RemoveAssembly(a);
     }
     #endregion
 
-    public void ScrollToPosition(int line, int column) {
+    public override void ScrollToPosition(int line, int column) {
       var segment = GetSegmentAtLocation(line, column);
       TextEditor.CaretOffset = segment.Offset + segment.Length;
@@ -282,5 +280,5 @@
     }
 
-    public void ScrollAfterPrefix() {
+    public override void ScrollAfterPrefix() {
       var location = Doc.GetLocation(prefix.Length);
       ScrollToPosition(location.Line, location.Column);
@@ -399,5 +397,5 @@
 
     #region Compiler Errors
-    public void ShowCompileErrors(CompilerErrorCollection compilerErrors) {
+    public override void ShowCompileErrors(CompilerErrorCollection compilerErrors) {
       if (compilerErrors == null) return;
 
@@ -446,48 +444,4 @@
       }
     }
-
-    #region Events
-    public event EventHandler TextEditorTextChanged;
-    private void OnTextEditorTextChanged() {
-      var handler = TextEditorTextChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
-
-    public event EventHandler<EventArgs<IEnumerable<Assembly>>> AssembliesLoading;
-    private void OnAssembliesLoading(IEnumerable<Assembly> args) {
-      var handler = AssembliesLoading;
-      if (handler != null) handler(this, new EventArgs<IEnumerable<Assembly>>(args));
-    }
-
-    public event EventHandler<EventArgs<IEnumerable<Assembly>>> AssembliesLoaded;
-    private void OnAssembliesLoaded(IEnumerable<Assembly> args) {
-      var handler = AssembliesLoaded;
-      if (handler != null) handler(this, new EventArgs<IEnumerable<Assembly>>(args));
-    }
-
-    public event EventHandler<EventArgs<IEnumerable<IUnresolvedAssembly>>> InternalAssembliesLoaded;
-    private void OnInternalAssembliesLoaded(IEnumerable<IUnresolvedAssembly> args) {
-      var handler = InternalAssembliesLoaded;
-      if (handler != null) handler(this, new EventArgs<IEnumerable<IUnresolvedAssembly>>(args));
-    }
-
-    public event EventHandler<EventArgs<IEnumerable<Assembly>>> AssembliesUnloading;
-    private void OnAssembliesUnloading(IEnumerable<Assembly> args) {
-      var handler = AssembliesUnloading;
-      if (handler != null) handler(this, new EventArgs<IEnumerable<Assembly>>(args));
-    }
-
-    public event EventHandler<EventArgs<IEnumerable<Assembly>>> AssembliesUnloaded;
-    private void OnAssembliesUnloaded(IEnumerable<Assembly> args) {
-      var handler = AssembliesUnloaded;
-      if (handler != null) handler(this, new EventArgs<IEnumerable<Assembly>>(args));
-    }
-
-    public event EventHandler<EventArgs<IEnumerable<IUnresolvedAssembly>>> InternalAssembliesUnloaded;
-    private void OnInternalAssembliesUnloaded(IEnumerable<IUnresolvedAssembly> args) {
-      var handler = InternalAssembliesUnloaded;
-      if (handler != null) handler(this, new EventArgs<IEnumerable<IUnresolvedAssembly>>(args));
-    }
-    #endregion
   }
 }
Index: /trunk/sources/HeuristicLab.CodeEditor/3.4/CodeEditorBase.cs
===================================================================
--- /trunk/sources/HeuristicLab.CodeEditor/3.4/CodeEditorBase.cs	(revision 12473)
+++ /trunk/sources/HeuristicLab.CodeEditor/3.4/CodeEditorBase.cs	(revision 12473)
@@ -0,0 +1,109 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 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.CodeDom.Compiler;
+using System.Collections.Generic;
+using System.Reflection;
+using System.Threading.Tasks;
+using HeuristicLab.Common;
+using ICSharpCode.NRefactory.TypeSystem;
+
+namespace HeuristicLab.CodeEditor {
+  public class CodeEditorBase : System.Windows.Forms.UserControl {
+    public virtual string UserCode { get; set; }
+
+    public virtual string Prefix { get; set; }
+
+    public virtual string Suffix { get; set; }
+
+    public virtual bool ReadOnly { get; set; }
+
+    public virtual bool Locked { get; set; }
+
+    public virtual void AddAssemblies(IEnumerable<Assembly> assemblies) { }
+
+    public virtual Task AddAssembliesAsync(IEnumerable<Assembly> assemblies) {
+      return null;
+    }
+
+    public virtual void AddAssembly(Assembly assembly) { }
+
+    public virtual void RemoveAssembly(Assembly assembly) { }
+
+    public virtual void RemoveAssemblies(IEnumerable<Assembly> assemblies) { }
+
+    public virtual void ScrollAfterPrefix() { }
+
+    public virtual void ScrollToPosition(int line, int column) { }
+
+    public virtual void ShowCompileErrors(CompilerErrorCollection compileErrors) { }
+
+    #region Events
+    public event EventHandler TextEditorTextChanged;
+    protected virtual void TextEditor_TextChanged(object sender, EventArgs e) {
+      if (TextEditorTextChanged != null) {
+        TextEditorTextChanged(this, new EventArgs());
+      }
+    }
+    protected virtual void OnTextEditorTextChanged() {
+      var handler = TextEditorTextChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+
+    public event EventHandler<EventArgs<IEnumerable<Assembly>>> AssembliesLoading;
+    protected virtual void OnAssembliesLoading(IEnumerable<Assembly> args) {
+      var handler = AssembliesLoading;
+      if (handler != null) handler(this, new EventArgs<IEnumerable<Assembly>>(args));
+    }
+
+    public event EventHandler<EventArgs<IEnumerable<Assembly>>> AssembliesLoaded;
+    protected virtual void OnAssembliesLoaded(IEnumerable<Assembly> args) {
+      var handler = AssembliesLoaded;
+      if (handler != null) handler(this, new EventArgs<IEnumerable<Assembly>>(args));
+    }
+
+    public event EventHandler<EventArgs<IEnumerable<IUnresolvedAssembly>>> InternalAssembliesLoaded;
+    protected virtual void OnInternalAssembliesLoaded(IEnumerable<IUnresolvedAssembly> args) {
+      var handler = InternalAssembliesLoaded;
+      if (handler != null) handler(this, new EventArgs<IEnumerable<IUnresolvedAssembly>>(args));
+    }
+
+    public event EventHandler<EventArgs<IEnumerable<Assembly>>> AssembliesUnloading;
+    protected virtual void OnAssembliesUnloading(IEnumerable<Assembly> args) {
+      var handler = AssembliesUnloading;
+      if (handler != null) handler(this, new EventArgs<IEnumerable<Assembly>>(args));
+    }
+
+    public event EventHandler<EventArgs<IEnumerable<Assembly>>> AssembliesUnloaded;
+    protected virtual void OnAssembliesUnloaded(IEnumerable<Assembly> args) {
+      var handler = AssembliesUnloaded;
+      if (handler != null) handler(this, new EventArgs<IEnumerable<Assembly>>(args));
+    }
+
+    public event EventHandler<EventArgs<IEnumerable<IUnresolvedAssembly>>> InternalAssembliesUnloaded;
+    protected virtual void OnInternalAssembliesUnloaded(IEnumerable<IUnresolvedAssembly> args) {
+      var handler = InternalAssembliesUnloaded;
+      if (handler != null) handler(this, new EventArgs<IEnumerable<IUnresolvedAssembly>>(args));
+    }
+    #endregion
+  }
+}
Index: /trunk/sources/HeuristicLab.CodeEditor/3.4/HeuristicLab.CodeEditor-3.4.csproj
===================================================================
--- /trunk/sources/HeuristicLab.CodeEditor/3.4/HeuristicLab.CodeEditor-3.4.csproj	(revision 12472)
+++ /trunk/sources/HeuristicLab.CodeEditor/3.4/HeuristicLab.CodeEditor-3.4.csproj	(revision 12473)
@@ -136,4 +136,7 @@
     <Compile Include="GoToLineDialog.Designer.cs">
       <DependentUpon>GoToLineDialog.cs</DependentUpon>
+    </Compile>
+    <Compile Include="CodeEditorBase.cs">
+      <SubType>UserControl</SubType>
     </Compile>
     <Compile Include="LanguageFeatures\CodeFolding\CodeFoldingResult.cs" />
@@ -173,4 +176,10 @@
       <DependentUpon>CodeEditor.cs</DependentUpon>
     </Compile>
+    <Compile Include="SimpleCodeEditor.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="SimpleCodeEditor.Designer.cs">
+      <DependentUpon>SimpleCodeEditor.cs</DependentUpon>
+    </Compile>
     <Compile Include="AvalonEditWrapper.xaml.cs">
       <DependentUpon>AvalonEditWrapper.xaml</DependentUpon>
Index: /trunk/sources/HeuristicLab.CodeEditor/3.4/Plugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.CodeEditor/3.4/Plugin.cs.frame	(revision 12472)
+++ /trunk/sources/HeuristicLab.CodeEditor/3.4/Plugin.cs.frame	(revision 12473)
@@ -27,6 +27,8 @@
   [PluginDependency("HeuristicLab.Common", "3.3")]
   [PluginDependency("HeuristicLab.Common.Resources", "3.3")]
+  [PluginDependency("HeuristicLab.NRefactory", "5.5.0")]
+#if !__MonoCS__
   [PluginDependency("HeuristicLab.AvalonEdit", "5.0.1")]
-  [PluginDependency("HeuristicLab.NRefactory", "5.5.0")]
+#endif
   public class HeuristicLabCodeEditorPlugin : PluginBase {
   }
Index: /trunk/sources/HeuristicLab.CodeEditor/3.4/SimpleCodeEditor.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.CodeEditor/3.4/SimpleCodeEditor.Designer.cs	(revision 12473)
+++ /trunk/sources/HeuristicLab.CodeEditor/3.4/SimpleCodeEditor.Designer.cs	(revision 12473)
@@ -0,0 +1,56 @@
+﻿namespace HeuristicLab.CodeEditor {
+  partial class SimpleCodeEditor {
+    /// <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.TextEditor = new System.Windows.Forms.TextBox();
+      this.SuspendLayout();
+      // 
+      // TextEditor
+      // 
+      this.TextEditor.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.TextEditor.Location = new System.Drawing.Point(3, 3);
+      this.TextEditor.Multiline = true;
+      this.TextEditor.Name = "TextEditor";
+      this.TextEditor.Size = new System.Drawing.Size(158, 57);
+      this.TextEditor.TabIndex = 0;
+      // 
+      // CodeEditor
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.TextEditor);
+      this.Name = "CodeEditor";
+      this.Size = new System.Drawing.Size(164, 63);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.TextBox TextEditor;
+  }
+}
Index: /trunk/sources/HeuristicLab.CodeEditor/3.4/SimpleCodeEditor.cs
===================================================================
--- /trunk/sources/HeuristicLab.CodeEditor/3.4/SimpleCodeEditor.cs	(revision 12473)
+++ /trunk/sources/HeuristicLab.CodeEditor/3.4/SimpleCodeEditor.cs	(revision 12473)
@@ -0,0 +1,37 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 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.CodeEditor {
+  public partial class SimpleCodeEditor : CodeEditorBase {
+
+    public SimpleCodeEditor() {
+      InitializeComponent();
+    }
+
+    public override string UserCode {
+      get { return TextEditor.Text; }
+      set {
+        if (TextEditor.Text == value) return;
+        TextEditor.Text = value;
+      }
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Operators.Programmable.Views/3.3/ProgrammableOperatorView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Programmable.Views/3.3/ProgrammableOperatorView.Designer.cs	(revision 12472)
+++ /trunk/sources/HeuristicLab.Operators.Programmable.Views/3.3/ProgrammableOperatorView.Designer.cs	(revision 12473)
@@ -55,5 +55,9 @@
       this.showCodeButton = new System.Windows.Forms.Button();
       this.compileButton = new System.Windows.Forms.Button();
+#if __MonoCS__
+      this.codeEditor = new HeuristicLab.CodeEditor.SimpleCodeEditor();
+#else
       this.codeEditor = new HeuristicLab.CodeEditor.CodeEditor();
+#endif
       this.tabControl1 = new HeuristicLab.MainForm.WindowsForms.DragOverTabControl();
       this.tabPage1 = new System.Windows.Forms.TabPage();
@@ -324,5 +328,5 @@
     private HeuristicLab.Core.Views.ParameterCollectionView parameterCollectionView;
     private System.Windows.Forms.SplitContainer splitContainer1;
-    private HeuristicLab.CodeEditor.CodeEditor codeEditor;
+    private HeuristicLab.CodeEditor.CodeEditorBase codeEditor;
     private System.Windows.Forms.Button compileButton;
     private System.Windows.Forms.Button showCodeButton;
Index: /trunk/sources/HeuristicLab.Operators.Programmable.Views/3.3/ProgrammableOperatorView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Programmable.Views/3.3/ProgrammableOperatorView.cs	(revision 12472)
+++ /trunk/sources/HeuristicLab.Operators.Programmable.Views/3.3/ProgrammableOperatorView.cs	(revision 12473)
@@ -131,5 +131,9 @@
     }
     private void showCodeButton_Click(object sender, EventArgs e) {
+#if __MonoCS__
+      new TextDialog("CodeViewer", ProgrammableOperator.CompilationUnitCode, true).ShowDialog(this);
+#else
       new CodeViewer(ProgrammableOperator.CompilationUnitCode).ShowDialog(this);
+#endif
     }
     private void codeEditor_Validated(object sender, EventArgs e) {
@@ -199,5 +203,6 @@
       try {
         ProgrammableOperator.Compile();
-      } catch (Exception ex) {
+      }
+      catch (Exception ex) {
         ErrorHandling.ShowErrorDialog(this, ex);
       }
Index: /trunk/sources/HeuristicLab.Scripting.Views/3.3/ScriptView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Scripting.Views/3.3/ScriptView.Designer.cs	(revision 12472)
+++ /trunk/sources/HeuristicLab.Scripting.Views/3.3/ScriptView.Designer.cs	(revision 12473)
@@ -20,7 +20,4 @@
 #endregion
 
-using System.Collections.Generic;
-using System.Reflection;
-using HeuristicLab.Common;
 
 namespace HeuristicLab.Scripting.Views {
@@ -64,5 +61,9 @@
       this.columnColumnHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
       this.descriptionColumnHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
+#if __MonoCS__
+      this.codeEditor = new HeuristicLab.CodeEditor.SimpleCodeEditor();
+#else
       this.codeEditor = new HeuristicLab.CodeEditor.CodeEditor();
+#endif
       this.splitContainer1 = new System.Windows.Forms.SplitContainer();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
@@ -225,6 +226,6 @@
       // splitContainer1
       // 
-      this.splitContainer1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
-            | System.Windows.Forms.AnchorStyles.Left) 
+      this.splitContainer1.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.splitContainer1.Location = new System.Drawing.Point(0, 56);
@@ -287,5 +288,5 @@
     protected System.Windows.Forms.ColumnHeader columnColumnHeader;
     protected System.Windows.Forms.ColumnHeader descriptionColumnHeader;
-    protected CodeEditor.CodeEditor codeEditor;
+    protected CodeEditor.CodeEditorBase codeEditor;
     protected System.Windows.Forms.SplitContainer splitContainer1;
   }
