diff --git a/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonConsoleHost.cs b/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonConsoleHost.cs
index 72349bdb18..40d21132e4 100644
--- a/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonConsoleHost.cs
+++ b/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonConsoleHost.cs
@@ -13,7 +13,7 @@ using Microsoft.Scripting.Hosting.Shell;
namespace ICSharpCode.PythonBinding
{
- public class PythonConsoleHost : ConsoleHost, IDisposable
+ public class PythonConsoleHost : ConsoleHost, IScriptingConsoleHost
{
Thread thread;
IScriptingConsoleTextEditor textEditor;
@@ -25,7 +25,7 @@ namespace ICSharpCode.PythonBinding
pythonConsole = new PythonConsole(textEditor, dispatcher);
}
- public PythonConsole PythonConsole {
+ public IScriptingConsole ScriptingConsole {
get { return pythonConsole; }
}
diff --git a/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonConsolePad.cs b/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonConsolePad.cs
index 051a280ff1..f52a3ed44d 100644
--- a/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonConsolePad.cs
+++ b/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonConsolePad.cs
@@ -3,53 +3,15 @@
using System;
using ICSharpCode.Scripting;
-using ICSharpCode.SharpDevelop.Editor;
-using ICSharpCode.SharpDevelop.Gui;
-using AvalonEdit = ICSharpCode.AvalonEdit;
namespace ICSharpCode.PythonBinding
{
- public class PythonConsolePad : AbstractPadContent, IScriptingConsolePad
- {
- ScriptingConsoleTextEditor consoleTextEditor;
- AvalonEdit.TextEditor textEditor;
- PythonConsoleHost host;
-
- public PythonConsolePad()
+ public class PythonConsolePad : ScriptingConsolePad
+ {
+ protected override IScriptingConsoleHost CreateConsoleHost(IScriptingConsoleTextEditor consoleTextEditor,
+ IControlDispatcher dispatcher)
{
- textEditor = CreateTextEditor();
- ControlDispatcher dispatcher = new ControlDispatcher(textEditor);
- consoleTextEditor = new ScriptingConsoleTextEditor(textEditor);
- host = new PythonConsoleHost(consoleTextEditor, dispatcher);
- host.Run();
- }
-
- AvalonEdit.TextEditor CreateTextEditor()
- {
- object textEditor;
- EditorControlService.CreateEditor(out textEditor);
- return (AvalonEdit.TextEditor)textEditor;
- }
-
- public IScriptingConsoleTextEditor ScriptingConsoleTextEditor {
- get { return consoleTextEditor; }
- }
-
- public IScriptingConsole ScriptingConsole {
- get { return host.PythonConsole; }
- }
-
- public override object Control {
- get { return textEditor; }
- }
-
- public override void Dispose()
- {
- host.Dispose();
- }
-
- public override object InitiallyFocusedControl {
- get { return textEditor; }
+ return new PythonConsoleHost(consoleTextEditor, dispatcher);
}
}
}
diff --git a/src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/RubyConsoleHost.cs b/src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/RubyConsoleHost.cs
index a7a7c7102a..67ed74cbd1 100644
--- a/src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/RubyConsoleHost.cs
+++ b/src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/RubyConsoleHost.cs
@@ -14,7 +14,7 @@ using Microsoft.Scripting.Hosting.Shell;
namespace ICSharpCode.RubyBinding
{
- public class RubyConsoleHost : ConsoleHost, IDisposable
+ public class RubyConsoleHost : ConsoleHost, IScriptingConsoleHost
{
Thread thread;
IScriptingConsoleTextEditor textEditor;
@@ -26,7 +26,7 @@ namespace ICSharpCode.RubyBinding
rubyConsole = new RubyConsole(textEditor, dispatcher);
}
- public RubyConsole RubyConsole {
+ public IScriptingConsole ScriptingConsole {
get { return rubyConsole; }
}
diff --git a/src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/RubyConsolePad.cs b/src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/RubyConsolePad.cs
index 4b9f6ecb73..d10cd1bb4a 100644
--- a/src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/RubyConsolePad.cs
+++ b/src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/RubyConsolePad.cs
@@ -3,53 +3,15 @@
using System;
using ICSharpCode.Scripting;
-using ICSharpCode.SharpDevelop.Editor;
-using ICSharpCode.SharpDevelop.Gui;
-using AvalonEdit = ICSharpCode.AvalonEdit;
namespace ICSharpCode.RubyBinding
{
- public class RubyConsolePad : AbstractPadContent, IScriptingConsolePad
- {
- ScriptingConsoleTextEditor consoleTextEditor;
- AvalonEdit.TextEditor textEditor;
- RubyConsoleHost host;
-
- public RubyConsolePad()
+ public class RubyConsolePad : ScriptingConsolePad
+ {
+ protected override IScriptingConsoleHost CreateConsoleHost(IScriptingConsoleTextEditor consoleTextEditor,
+ IControlDispatcher dispatcher)
{
- textEditor = CreateTextEditor();
- ControlDispatcher dispatcher = new ControlDispatcher(textEditor);
- consoleTextEditor = new ScriptingConsoleTextEditor(textEditor);
- host = new RubyConsoleHost(consoleTextEditor, dispatcher);
- host.Run();
- }
-
- AvalonEdit.TextEditor CreateTextEditor()
- {
- object textEditor;
- EditorControlService.CreateEditor(out textEditor);
- return (AvalonEdit.TextEditor)textEditor;
- }
-
- public IScriptingConsoleTextEditor ScriptingConsoleTextEditor {
- get { return consoleTextEditor; }
- }
-
- public IScriptingConsole ScriptingConsole {
- get { return host.RubyConsole; }
- }
-
- public override object Control {
- get { return textEditor; }
- }
-
- public override void Dispose()
- {
- host.Dispose();
- }
-
- public override object InitiallyFocusedControl {
- get { return textEditor; }
+ return new RubyConsoleHost(consoleTextEditor, dispatcher);
}
}
}
diff --git a/src/AddIns/BackendBindings/Scripting/Project/ICSharpCode.Scripting.csproj b/src/AddIns/BackendBindings/Scripting/Project/ICSharpCode.Scripting.csproj
index 2e30c750ed..f137ad0d6b 100644
--- a/src/AddIns/BackendBindings/Scripting/Project/ICSharpCode.Scripting.csproj
+++ b/src/AddIns/BackendBindings/Scripting/Project/ICSharpCode.Scripting.csproj
@@ -73,6 +73,7 @@
+
@@ -83,6 +84,7 @@
+
diff --git a/src/AddIns/BackendBindings/Scripting/Project/Src/IScriptingConsoleHost.cs b/src/AddIns/BackendBindings/Scripting/Project/Src/IScriptingConsoleHost.cs
new file mode 100644
index 0000000000..d8989d6b14
--- /dev/null
+++ b/src/AddIns/BackendBindings/Scripting/Project/Src/IScriptingConsoleHost.cs
@@ -0,0 +1,17 @@
+//
+//
+//
+//
+// $Revision$
+//
+
+using System;
+
+namespace ICSharpCode.Scripting
+{
+ public interface IScriptingConsoleHost : IDisposable
+ {
+ IScriptingConsole ScriptingConsole { get; }
+ void Run();
+ }
+}
diff --git a/src/AddIns/BackendBindings/Scripting/Project/Src/ScriptingConsolePad.cs b/src/AddIns/BackendBindings/Scripting/Project/Src/ScriptingConsolePad.cs
new file mode 100644
index 0000000000..c4fb9e5be7
--- /dev/null
+++ b/src/AddIns/BackendBindings/Scripting/Project/Src/ScriptingConsolePad.cs
@@ -0,0 +1,66 @@
+// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
+// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
+
+using System;
+using ICSharpCode.SharpDevelop.Editor;
+using ICSharpCode.SharpDevelop.Gui;
+using AvalonEdit = ICSharpCode.AvalonEdit;
+
+namespace ICSharpCode.Scripting
+{
+ public abstract class ScriptingConsolePad : AbstractPadContent, IScriptingConsolePad
+ {
+ ScriptingConsoleTextEditor consoleTextEditor;
+ AvalonEdit.TextEditor textEditor;
+ IScriptingConsoleHost host;
+
+ public ScriptingConsolePad()
+ {
+ textEditor = CreateTextEditor();
+ CreateConsoleHost();
+ host.Run();
+ }
+
+ AvalonEdit.TextEditor CreateTextEditor()
+ {
+ object textEditor;
+ EditorControlService.CreateEditor(out textEditor);
+ return (AvalonEdit.TextEditor)textEditor;
+ }
+
+ void CreateConsoleHost()
+ {
+ ControlDispatcher dispatcher = new ControlDispatcher(textEditor);
+ consoleTextEditor = new ScriptingConsoleTextEditor(textEditor);
+ host = CreateConsoleHost(consoleTextEditor, dispatcher);
+ }
+
+ protected virtual IScriptingConsoleHost CreateConsoleHost(
+ IScriptingConsoleTextEditor consoleTextEditor,
+ IControlDispatcher dispatcher)
+ {
+ return null;
+ }
+
+ public IScriptingConsoleTextEditor ScriptingConsoleTextEditor {
+ get { return consoleTextEditor; }
+ }
+
+ public IScriptingConsole ScriptingConsole {
+ get { return host.ScriptingConsole; }
+ }
+
+ public override object Control {
+ get { return textEditor; }
+ }
+
+ public override void Dispose()
+ {
+ host.Dispose();
+ }
+
+ public override object InitiallyFocusedControl {
+ get { return textEditor; }
+ }
+ }
+}