Browse Source

Extract scripting console unread lines code to separate class.

pull/1/head
mrward 15 years ago
parent
commit
b96c13cabb
  1. 1
      src/AddIns/BackendBindings/Scripting/Project/ICSharpCode.Scripting.csproj
  2. 49
      src/AddIns/BackendBindings/Scripting/Project/Src/ScriptingConsole.cs
  3. 54
      src/AddIns/BackendBindings/Scripting/Project/Src/ScriptingConsoleUnreadLines.cs
  4. 17
      src/AddIns/BackendBindings/Scripting/Test/Utils/TestableScriptingConsole.cs

1
src/AddIns/BackendBindings/Scripting/Project/ICSharpCode.Scripting.csproj

@ -86,6 +86,7 @@ @@ -86,6 +86,7 @@
<Compile Include="Src\ScriptingConsolePad.cs" />
<Compile Include="Src\ScriptingConsoleTextEditor.cs" />
<Compile Include="Src\ScriptingConsoleTextEditorKeyEventArgs.cs" />
<Compile Include="Src\ScriptingConsoleUnreadLines.cs" />
<Compile Include="Src\ScriptingDesignerGenerator.cs" />
<Compile Include="Src\ScriptingDesignerLoader.cs" />
<Compile Include="Src\ScriptingFileService.cs" />

49
src/AddIns/BackendBindings/Scripting/Project/Src/ScriptingConsole.cs

@ -13,21 +13,26 @@ namespace ICSharpCode.Scripting @@ -13,21 +13,26 @@ namespace ICSharpCode.Scripting
public class ScriptingConsole : IDisposable, IScriptingConsole
{
IScriptingConsoleTextEditor textEditor;
CommandLineHistory commandLineHistory = new CommandLineHistory();
ScriptingConsoleUnreadLines unreadLines;
int promptLength;
bool firstPromptDisplayed;
List<string> savedTextLines = new List<string>();
CommandLineHistory commandLineHistory = new CommandLineHistory();
protected List<string> unreadLines = new List<string>();
public event EventHandler LineReceived;
public IMemberProvider MemberProvider { get; set; }
public ScriptingConsole(IScriptingConsoleTextEditor textEditor)
: this(textEditor, new ScriptingConsoleUnreadLines())
{
}
public ScriptingConsole(IScriptingConsoleTextEditor textEditor, ScriptingConsoleUnreadLines unreadLines)
{
this.textEditor = textEditor;
this.unreadLines = unreadLines;
textEditor.PreviewKeyDown += ProcessPreviewKeyDown;
}
@ -46,7 +51,7 @@ namespace ICSharpCode.Scripting @@ -46,7 +51,7 @@ namespace ICSharpCode.Scripting
Write(indent, ScriptingStyle.Prompt);
}
string line = ReadLineFromTextEditor();
string line = ReadFirstUnreadLine();
if (line != null) {
return indent + line;
}
@ -101,9 +106,7 @@ namespace ICSharpCode.Scripting @@ -101,9 +106,7 @@ namespace ICSharpCode.Scripting
/// Indicates whether there is a line already read by the console and waiting to be processed.
/// </summary>
public bool IsLineAvailable {
get {
return (unreadLines.Count > 0);
}
get { return (unreadLines.Count > 0); }
}
/// <summary>
@ -121,16 +124,6 @@ namespace ICSharpCode.Scripting @@ -121,16 +124,6 @@ namespace ICSharpCode.Scripting
return textEditor.GetLine(textEditor.TotalLines - 1);
}
string ReadLineFromTextEditor()
{
if (IsLineAvailable) {
string line = unreadLines[0];
unreadLines.RemoveAt(0);
return line;
}
return null;
}
/// <summary>
/// Processes characters entered into the text editor by the user.
/// </summary>
@ -206,7 +199,7 @@ namespace ICSharpCode.Scripting @@ -206,7 +199,7 @@ namespace ICSharpCode.Scripting
void SaveLastTextEditorLine()
{
string currentLine = GetCurrentLine();
unreadLines.Add(currentLine);
unreadLines.AddLine(currentLine);
commandLineHistory.Add(currentLine);
}
@ -290,7 +283,7 @@ namespace ICSharpCode.Scripting @@ -290,7 +283,7 @@ namespace ICSharpCode.Scripting
public void SendLine(string line)
{
unreadLines.Add(line);
unreadLines.AddLine(line);
FireLineReceivedEvent();
MoveCursorToEndOfLastTextEditorLine();
WriteTextIfFirstPromptHasBeenDisplayed(line + "\r\n");
@ -340,7 +333,7 @@ namespace ICSharpCode.Scripting @@ -340,7 +333,7 @@ namespace ICSharpCode.Scripting
{
List<string> lines = GetLines(text);
if (lines.Count > 1) {
AddAllLinesButLastToUnreadLines(lines);
unreadLines.AddAllLinesExceptLast(lines);
FireLineReceivedEvent();
}
WriteFirstLineIfFirstPromptHasBeenDisplayed(lines);
@ -362,23 +355,9 @@ namespace ICSharpCode.Scripting @@ -362,23 +355,9 @@ namespace ICSharpCode.Scripting
return lines[0];
}
void AddAllLinesButLastToUnreadLines(List<string> lines)
{
int howMany = lines.Count - 1;
for (int i = 0; i < howMany; ++i) {
string line = lines[i];
unreadLines.Add(line);
}
}
public string ReadFirstUnreadLine()
{
if (unreadLines.Count > 0) {
string line = unreadLines[0];
unreadLines.RemoveAt(0);
return line;
}
return null;
return unreadLines.RemoveFirstLine();
}
}
}

54
src/AddIns/BackendBindings/Scripting/Project/Src/ScriptingConsoleUnreadLines.cs

@ -0,0 +1,54 @@ @@ -0,0 +1,54 @@
// 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 System.Collections.Generic;
namespace ICSharpCode.Scripting
{
public class ScriptingConsoleUnreadLines
{
List<string> unreadLines = new List<string>();
public ScriptingConsoleUnreadLines()
{
}
public bool IsLineAvailable {
get { return unreadLines.Count > 0; }
}
public int Count {
get { return unreadLines.Count; }
}
public string RemoveFirstLine()
{
if (IsLineAvailable) {
string line = unreadLines[0];
unreadLines.RemoveAt(0);
return line;
}
return null;
}
public void AddLine(string line)
{
unreadLines.Add(line);
}
public void AddAllLinesExceptLast(IList<string> lines)
{
int howMany = lines.Count - 1;
for (int i = 0; i < howMany; ++i) {
string line = lines[i];
unreadLines.Add(line);
}
}
public string[] ToArray()
{
return unreadLines.ToArray();
}
}
}

17
src/AddIns/BackendBindings/Scripting/Test/Utils/TestableScriptingConsole.cs

@ -13,33 +13,30 @@ namespace ICSharpCode.Scripting.Tests.Utils @@ -13,33 +13,30 @@ namespace ICSharpCode.Scripting.Tests.Utils
public FakeConsoleTextEditor FakeConsoleTextEditor;
public bool IsLineReceivedEventFired;
public int UnreadLineCountWhenLineReceivedEventFired = -1;
public ScriptingConsoleUnreadLines UnreadLines;
public TestableScriptingConsole()
: this(new FakeConsoleTextEditor())
: this(new FakeConsoleTextEditor(), new ScriptingConsoleUnreadLines())
{
MemberProvider = new MockMemberProvider();
}
TestableScriptingConsole(IScriptingConsoleTextEditor consoleTextEditor)
: base(consoleTextEditor)
TestableScriptingConsole(IScriptingConsoleTextEditor consoleTextEditor, ScriptingConsoleUnreadLines unreadLines)
: base(consoleTextEditor, unreadLines)
{
FakeConsoleTextEditor = (FakeConsoleTextEditor)consoleTextEditor;
}
public List<string> GetUnreadLinesList()
{
return base.unreadLines;
UnreadLines = unreadLines;
}
public string[] GetUnreadLines()
{
return base.unreadLines.ToArray();
return UnreadLines.ToArray();
}
protected override void FireLineReceivedEvent()
{
IsLineReceivedEventFired = true;
UnreadLineCountWhenLineReceivedEventFired = base.unreadLines.Count;
UnreadLineCountWhenLineReceivedEventFired = UnreadLines.Count;
}
public void CallBaseFireLineReceivedEvent()

Loading…
Cancel
Save