diff --git a/src/AddIns/BackendBindings/Scripting/Test/Utils/MockEditableViewContent.cs b/src/AddIns/BackendBindings/Scripting/Test/Utils/MockEditableViewContent.cs
index ecbf9e86d5..18727f639f 100644
--- a/src/AddIns/BackendBindings/Scripting/Test/Utils/MockEditableViewContent.cs
+++ b/src/AddIns/BackendBindings/Scripting/Test/Utils/MockEditableViewContent.cs
@@ -12,7 +12,7 @@ namespace ICSharpCode.Scripting.Tests.Utils
///
/// Mock implementation of the IEditable and IViewContent.
///
- public class MockEditableViewContent : MockViewContent, IEditable, ITextEditorProvider
+ public class MockEditableViewContent : MockViewContent, IEditable
{
public MockTextEditor MockTextEditor = new MockTextEditor();
@@ -37,15 +37,6 @@ namespace ICSharpCode.Scripting.Tests.Utils
set { MockTextEditor.MockTextEditorOptions = value; }
}
- public ITextEditor TextEditor {
- get { return MockTextEditor; }
- }
-
- public IDocument GetDocumentForFile(OpenedFile file)
- {
- throw new NotImplementedException();
- }
-
public override object GetService(Type serviceType)
{
if (serviceType == typeof(ITextEditor)) {
diff --git a/src/AddIns/BackendBindings/Scripting/Test/Utils/MockTextEditorViewContent.cs b/src/AddIns/BackendBindings/Scripting/Test/Utils/MockTextEditorViewContent.cs
index 27f16959c0..018bc4da78 100644
--- a/src/AddIns/BackendBindings/Scripting/Test/Utils/MockTextEditorViewContent.cs
+++ b/src/AddIns/BackendBindings/Scripting/Test/Utils/MockTextEditorViewContent.cs
@@ -13,7 +13,7 @@ namespace ICSharpCode.Scripting.Tests.Utils
/// A mock IViewContent implementation that also implements the
/// ITextEditorControlProvider interface.
///
- public class MockTextEditorViewContent : MockViewContent, ITextEditorProvider
+ public class MockTextEditorViewContent : MockViewContent
{
ITextEditor textEditor;
@@ -21,14 +21,5 @@ namespace ICSharpCode.Scripting.Tests.Utils
{
textEditor = new AvalonEditTextEditorAdapter(new TextEditor());
}
-
- public ITextEditor TextEditor {
- get { return textEditor; }
- }
-
- public IDocument GetDocumentForFile(OpenedFile file)
- {
- throw new NotImplementedException();
- }
}
}
diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDialogDesigner.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDialogDesigner.cs
index c1509e44be..efd6148cc7 100644
--- a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDialogDesigner.cs
+++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDialogDesigner.cs
@@ -83,7 +83,7 @@ namespace ICSharpCode.WixBinding
// and text selection operations done by the WiX designer actually
// become visible in the text editor.
if (!this.SourceCodeStorage.ContainsFile(file)) {
- ITextEditor editor = ((ITextEditorProvider)this.PrimaryViewContent).TextEditor;
+ ITextEditor editor = this.PrimaryViewContent.GetService();
this.SourceCodeStorage.AddFile(file, editor.Document, SD.FileService.DefaultFileEncoding, true);
}
@@ -224,13 +224,7 @@ namespace ICSharpCode.WixBinding
/// Gets the active text area control.
///
ITextEditor ActiveTextEditor {
- get {
- ITextEditorProvider provider = this.PrimaryViewContent as ITextEditorProvider;
- if (provider != null) {
- return provider.TextEditor;
- }
- return null;
- }
+ get { return PrimaryViewContent.GetService(); }
}
void AddToErrorList(XmlException ex)
diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDialogDesignerDisplayBinding.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDialogDesignerDisplayBinding.cs
index 7b26d28b22..413f4ebfb8 100644
--- a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDialogDesignerDisplayBinding.cs
+++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDialogDesignerDisplayBinding.cs
@@ -37,8 +37,7 @@ namespace ICSharpCode.WixBinding
bool IsViewTextEditorProvider(IViewContent view)
{
- ITextEditorProvider textEditorProvider = view as ITextEditorProvider;
- return textEditorProvider != null;
+ return view.GetService() != null;
}
}
}
diff --git a/src/AddIns/BackendBindings/WixBinding/Test/Utils/MockTextEditorViewContent.cs b/src/AddIns/BackendBindings/WixBinding/Test/Utils/MockTextEditorViewContent.cs
index 5d7b5545ba..ecbeccbcab 100644
--- a/src/AddIns/BackendBindings/WixBinding/Test/Utils/MockTextEditorViewContent.cs
+++ b/src/AddIns/BackendBindings/WixBinding/Test/Utils/MockTextEditorViewContent.cs
@@ -11,13 +11,18 @@ namespace WixBinding.Tests.Utils
///
/// Mock IViewContent class that implements the ITextEditorProvider interface.
///
- public class MockTextEditorViewContent : MockViewContent, ITextEditorProvider
+ public class MockTextEditorViewContent : MockViewContent
{
public MockTextEditorViewContent()
{
}
- public ITextEditor TextEditor { get; set; }
+ ITextEditor textEditor;
+
+ public ITextEditor TextEditor {
+ get { return textEditor ?? new MockTextEditor(); }
+ set { textEditor = value; }
+ }
public IDocument GetDocumentForFile(OpenedFile file)
{
diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs
index 1f6f81afa6..f38a5168a3 100644
--- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs
+++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs
@@ -24,15 +24,8 @@ using ICSharpCode.SharpDevelop.Workbench;
namespace ICSharpCode.AvalonEdit.AddIn
{
- [ViewContentService]
- public interface ICodeEditorProvider : ITextEditorProvider
- {
- [Obsolete("Use viewContent.GetService() instead.")]
- CodeEditor CodeEditor { get; }
- }
-
public class AvalonEditViewContent
- : AbstractViewContent, IMementoCapable, ICodeEditorProvider, IPositionable, IToolsHost
+ : AbstractViewContent, IMementoCapable, IToolsHost
{
readonly CodeEditor codeEditor = new CodeEditor();
IAnalyticsMonitorTrackedFeature trackedFeature;
@@ -97,10 +90,6 @@ namespace ICSharpCode.AvalonEdit.AddIn
TextEditorSideBar.Instance.PutInClipboardRing(e.Text);
}
- public CodeEditor CodeEditor {
- get { return codeEditor; }
- }
-
public override object Control {
get { return codeEditor; }
}
@@ -194,17 +183,17 @@ namespace ICSharpCode.AvalonEdit.AddIn
public override INavigationPoint BuildNavPoint()
{
- int lineNumber = this.Line;
+ int lineNumber = codeEditor.Line;
string txt = codeEditor.Document.GetText(codeEditor.Document.GetLineByNumber(lineNumber));
- return new TextNavigationPoint(this.PrimaryFileName, lineNumber, this.Column, txt);
+ return new TextNavigationPoint(this.PrimaryFileName, lineNumber, codeEditor.Column, txt);
}
void CaretChanged(object sender, EventArgs e)
{
NavigationService.Log(this.BuildNavPoint());
var document = codeEditor.Document;
- int lineOffset = document.GetLineByNumber(this.Line).Offset;
- int chOffset = this.Column;
+ int lineOffset = document.GetLineByNumber(codeEditor.Line).Offset;
+ int chOffset = codeEditor.Column;
int col = 1;
for (int i = 1; i < chOffset; i++) {
if (document.GetCharAt(lineOffset + i - 1) == '\t')
@@ -212,7 +201,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
else
col += 1;
}
- SD.StatusBar.SetCaretPosition(col, this.Line, chOffset);
+ SD.StatusBar.SetCaretPosition(col, codeEditor.Line, chOffset);
}
public override bool IsReadOnly {
@@ -314,35 +303,6 @@ namespace ICSharpCode.AvalonEdit.AddIn
}
#endregion
- #region ITextEditorProvider
- public ITextEditor TextEditor {
- get { return codeEditor.ActiveTextEditorAdapter; }
- }
-
- public IDocument GetDocumentForFile(OpenedFile file)
- {
- if (file == this.PrimaryFile)
- return codeEditor.Document;
- else
- return null;
- }
- #endregion
-
- #region IPositionable
- public int Line {
- get { return this.TextEditor.Caret.Line; }
- }
-
- public int Column {
- get { return this.TextEditor.Caret.Column; }
- }
-
- public void JumpTo(int line, int column)
- {
- codeEditor.ActiveTextEditor.JumpTo(line, column);
- }
- #endregion
-
object IToolsHost.ToolsContent {
get { return TextEditorSideBar.Instance; }
}
diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs
index aff804a564..e19dfd589d 100644
--- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs
+++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs
@@ -39,7 +39,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
///
[TextEditorService, ViewContentService]
public class CodeEditor
- : Grid, IDisposable, ICSharpCode.SharpDevelop.Gui.IEditable, IFileDocumentProvider
+ : Grid, IDisposable, ICSharpCode.SharpDevelop.Gui.IEditable, IFileDocumentProvider, ICSharpCode.SharpDevelop.Gui.IPositionable, IServiceProvider
{
const string contextMenuPath = "/SharpDevelop/ViewContent/AvalonEdit/ContextMenu";
@@ -206,6 +206,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
textView.Services.AddService(typeof(ITextEditor), adapter);
textView.Services.AddService(typeof(CodeEditor), this);
textView.Services.AddService(typeof(ICSharpCode.SharpDevelop.Gui.IEditable), this);
+ textView.Services.AddService(typeof(ICSharpCode.SharpDevelop.Gui.IPositionable), this);
textView.Services.AddService(typeof(IFileDocumentProvider), this);
codeEditorView.TextArea.TextEntering += TextAreaTextEntering;
@@ -420,6 +421,28 @@ namespace ICSharpCode.AvalonEdit.AddIn
}
#endregion
+ #region IPositionable
+ public int Line {
+ get { return this.PrimaryTextEditor.Adapter.Caret.Line; }
+ }
+
+ public int Column {
+ get { return this.PrimaryTextEditor.Adapter.Caret.Column; }
+ }
+
+ public void JumpTo(int line, int column)
+ {
+ this.PrimaryTextEditor.JumpTo(line, column);
+ }
+ #endregion
+
+ #region IServiceProvider implementation
+ public object GetService(Type serviceType)
+ {
+ return this.primaryTextEditor.Adapter.GetService(serviceType);
+ }
+ #endregion
+
void TextAreaTextEntering(object sender, TextCompositionEventArgs e)
{
// don't start new code completion if there is still a completion window open
diff --git a/src/AddIns/DisplayBindings/ILSpyAddIn/ViewContent/DecompiledViewContent.cs b/src/AddIns/DisplayBindings/ILSpyAddIn/ViewContent/DecompiledViewContent.cs
index 287d0e57e6..2bf470d387 100644
--- a/src/AddIns/DisplayBindings/ILSpyAddIn/ViewContent/DecompiledViewContent.cs
+++ b/src/AddIns/DisplayBindings/ILSpyAddIn/ViewContent/DecompiledViewContent.cs
@@ -30,7 +30,7 @@ namespace ICSharpCode.ILSpyAddIn
///
/// Hosts a decompiled type.
///
- class DecompiledViewContent : AbstractViewContentWithoutFile, IPositionable
+ class DecompiledViewContent : AbstractViewContentWithoutFile
{
readonly FileName assemblyFile;
readonly string fullTypeName;
@@ -58,8 +58,7 @@ namespace ICSharpCode.ILSpyAddIn
{
this.VirtualFileName = FileName.Create("ilspy://" + assemblyFile + "/" + fullTypeName + ".cs");
- this.Services = codeEditor.PrimaryTextEditor.GetRequiredService();
- this.Services.AddService(typeof(IPositionable), this);
+ this.Services = codeEditor.GetRequiredService();
this.assemblyFile = assemblyFile;
this.fullTypeName = fullTypeName;
@@ -188,7 +187,7 @@ namespace ICSharpCode.ILSpyAddIn
}
TextLocation location;
if (entityIdString != null && memberLocations != null && memberLocations.TryGetValue(entityIdString, out location))
- this.JumpTo(location.Line, location.Column);
+ codeEditor.JumpTo(location.Line, location.Column);
}
#endregion
@@ -299,21 +298,6 @@ namespace ICSharpCode.ILSpyAddIn
}
#endregion
- #region IPositionable
- public int Line {
- get { return codeEditor.ActiveTextEditorAdapter.Caret.Line; }
- }
-
- public int Column {
- get { return codeEditor.ActiveTextEditorAdapter.Caret.Column; }
- }
-
- public void JumpTo(int line, int column)
- {
- codeEditor.ActiveTextEditor.JumpTo(line, column);
- }
- #endregion
-
#region Events
public event EventHandler DecompilationFinished;
diff --git a/src/AddIns/DisplayBindings/XmlEditor/Test/Utils/MockTextEditorProviderViewContent.cs b/src/AddIns/DisplayBindings/XmlEditor/Test/Utils/MockTextEditorProviderViewContent.cs
index f4a134fdc6..ecb291106f 100644
--- a/src/AddIns/DisplayBindings/XmlEditor/Test/Utils/MockTextEditorProviderViewContent.cs
+++ b/src/AddIns/DisplayBindings/XmlEditor/Test/Utils/MockTextEditorProviderViewContent.cs
@@ -9,23 +9,14 @@ using ICSharpCode.SharpDevelop.Workbench;
namespace XmlEditor.Tests.Utils
{
- public class MockTextEditorProviderViewContent : MockViewContent, ITextEditorProvider
+ public class MockTextEditorProviderViewContent : MockViewContent
{
MockTextEditor textEditor = new MockTextEditor();
- public ITextEditor TextEditor {
- get { return textEditor; }
- }
-
public MockTextEditor MockTextEditor {
get { return textEditor; }
}
- public IDocument GetDocumentForFile(OpenedFile file)
- {
- throw new NotImplementedException();
- }
-
public override object GetService(Type serviceType)
{
return textEditor.GetService(serviceType);
diff --git a/src/AddIns/DisplayBindings/XmlEditor/Test/XPath/RemoveXPathHighlightingCommandTestFixture.cs b/src/AddIns/DisplayBindings/XmlEditor/Test/XPath/RemoveXPathHighlightingCommandTestFixture.cs
index 210f894d70..326a48b80f 100644
--- a/src/AddIns/DisplayBindings/XmlEditor/Test/XPath/RemoveXPathHighlightingCommandTestFixture.cs
+++ b/src/AddIns/DisplayBindings/XmlEditor/Test/XPath/RemoveXPathHighlightingCommandTestFixture.cs
@@ -69,11 +69,5 @@ namespace XmlEditor.Tests.XPath
{
Assert.IsTrue(markerService.TextMarkers.Count() > 0);
}
-
- [Test]
- public void MockViewContentDoesNotImplementITextEditorProviderInterface()
- {
- Assert.IsNull(nonTextEditorProviderView as ITextEditorProvider);
- }
}
}
diff --git a/src/Main/Base/Project/Editor/ITextEditor.cs b/src/Main/Base/Project/Editor/ITextEditor.cs
index 583a956265..4e696e31ef 100644
--- a/src/Main/Base/Project/Editor/ITextEditor.cs
+++ b/src/Main/Base/Project/Editor/ITextEditor.cs
@@ -13,15 +13,6 @@ using ICSharpCode.SharpDevelop.Refactoring;
namespace ICSharpCode.SharpDevelop.Editor
{
- [ViewContentService]
- public interface ITextEditorProvider : IFileDocumentProvider
- {
- [Obsolete("Use viewContent.GetService() instead.")]
- ITextEditor TextEditor {
- get;
- }
- }
-
///
/// Interface for text editors.
///
diff --git a/src/Main/Base/Project/Src/Gui/Pads/AbstractConsolePad.cs b/src/Main/Base/Project/Src/Gui/Pads/AbstractConsolePad.cs
index 80adaf7a2b..af9b408298 100755
--- a/src/Main/Base/Project/Src/Gui/Pads/AbstractConsolePad.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/AbstractConsolePad.cs
@@ -24,7 +24,7 @@ using ICSharpCode.SharpDevelop.Workbench;
namespace ICSharpCode.SharpDevelop.Gui
{
- public abstract class AbstractConsolePad : AbstractPadContent, IEditable, IPositionable, ITextEditorProvider, IToolsHost
+ public abstract class AbstractConsolePad : AbstractPadContent, IEditable, IPositionable, IToolsHost
{
const string toolBarTreePath = "/SharpDevelop/Pads/CommonConsole/ToolBar";
diff --git a/src/Main/SharpDevelop/Workbench/FileService.cs b/src/Main/SharpDevelop/Workbench/FileService.cs
index a91e45dfe9..c52a3b65c5 100644
--- a/src/Main/SharpDevelop/Workbench/FileService.cs
+++ b/src/Main/SharpDevelop/Workbench/FileService.cs
@@ -454,12 +454,12 @@ namespace ICSharpCode.SharpDevelop.Workbench
try {
IViewContent content = OpenFile(fileName);
- if (content is IPositionable) {
- // TODO: enable jumping to a particular view
+ IPositionable positionable = content.GetService();
+ if (positionable != null) {
content.WorkbenchWindow.ActiveViewContent = content;
NavigationService.ResumeLogging();
loggingResumed = true;
- ((IPositionable)content).JumpTo(Math.Max(1, line), Math.Max(1, column));
+ positionable.JumpTo(Math.Max(1, line), Math.Max(1, column));
} else {
NavigationService.ResumeLogging();
loggingResumed = true;