// // // // // $Revision$ // using ICSharpCode.SharpDevelop.Editor.CodeCompletion; using System; using ICSharpCode.PythonBinding; using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.TextEditor.Gui.CompletionWindow; namespace PythonBinding.Tests.Utils { /// /// Derived PythonCodeCompletion class that gives us access to /// various protected methods for testing. /// public class DerivedPythonCodeCompletionBinding : PythonCodeCompletionBinding { bool ctrlSpaceCompletionDataProviderCreated; bool codeCompletionWindowDisplayed; ICSharpCode.SharpDevelop.Editor.ITextEditor textEditorUsedToShowCompletionWindow; AbstractCompletionItemProvider completionProviderUsedWhenDisplayingCodeCompletionWindow; CtrlSpaceCompletionItemProvider ctrlSpaceCompletionDataProvider; char completionCharacter = '\0'; ExpressionContext expressionContext; public DerivedPythonCodeCompletionBinding() { } /// /// Gets whether the data provider was created by the /// base class PythonCodeCompletionBinding. /// public bool IsCtrlSpaceCompletionDataProviderCreated { get { return ctrlSpaceCompletionDataProviderCreated; } } /// /// Gets whether the base class PythonCodeCompletionBinding /// displayed the code completion window. /// public bool IsCodeCompletionWindowDisplayed { get { return codeCompletionWindowDisplayed; } } public ICSharpCode.SharpDevelop.Editor.ITextEditor TextEditorUsedToShowCompletionWindow { get { return textEditorUsedToShowCompletionWindow; } } public AbstractCompletionItemProvider CompletionProviderUsedWhenDisplayingCodeCompletionWindow { get { return completionProviderUsedWhenDisplayingCodeCompletionWindow; } } /// /// Gets the CtrlSpaceCompletionDataProvider created via the /// CreateCtrlSpaceCompletionDataProvider method. /// public CtrlSpaceCompletionItemProvider CtrlSpaceCompletionDataProvider { get { return ctrlSpaceCompletionDataProvider; } } /// /// Gets the character used when calling the TextAreaControl's /// ShowCompletionWindow method. /// public char CompletionCharacter { get { return completionCharacter; } } /// /// Gets the expression context used when the /// CtrlSpaceCompletionDataProvider is created. /// public ExpressionContext ExpressionContext { get { return expressionContext; } } /// /// Overrides the completion data provider creation to make sure /// it is called at the correct time. /// protected override CtrlSpaceCompletionItemProvider CreateCtrlSpaceCompletionDataProvider(ExpressionContext expressionContext) { ctrlSpaceCompletionDataProviderCreated = true; this.expressionContext = expressionContext; ctrlSpaceCompletionDataProvider = base.CreateCtrlSpaceCompletionDataProvider(expressionContext); return ctrlSpaceCompletionDataProvider; } /// /// Overrides the base class method so a code completion window is /// not displayed but the fact that this method is called is /// recorded. /// protected override void ShowCodeCompletionWindow(ICSharpCode.SharpDevelop.Editor.ITextEditor textEditor, AbstractCompletionItemProvider completionDataProvider, char ch) { textEditorUsedToShowCompletionWindow = textEditor; codeCompletionWindowDisplayed = true; completionCharacter = ch; completionProviderUsedWhenDisplayingCodeCompletionWindow = completionDataProvider; } } }