Browse Source

remove interfaces:

- ITextEditorProvider
 - ICodeEditorProvider

move implementation of IPositionable to CodeEditor
pull/48/merge
Siegfried Pammer 12 years ago
parent
commit
d64e3f2657
  1. 11
      src/AddIns/BackendBindings/Scripting/Test/Utils/MockEditableViewContent.cs
  2. 11
      src/AddIns/BackendBindings/Scripting/Test/Utils/MockTextEditorViewContent.cs
  3. 10
      src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDialogDesigner.cs
  4. 3
      src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDialogDesignerDisplayBinding.cs
  5. 9
      src/AddIns/BackendBindings/WixBinding/Test/Utils/MockTextEditorViewContent.cs
  6. 52
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs
  7. 25
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs
  8. 22
      src/AddIns/DisplayBindings/ILSpyAddIn/ViewContent/DecompiledViewContent.cs
  9. 11
      src/AddIns/DisplayBindings/XmlEditor/Test/Utils/MockTextEditorProviderViewContent.cs
  10. 6
      src/AddIns/DisplayBindings/XmlEditor/Test/XPath/RemoveXPathHighlightingCommandTestFixture.cs
  11. 9
      src/Main/Base/Project/Editor/ITextEditor.cs
  12. 2
      src/Main/Base/Project/Src/Gui/Pads/AbstractConsolePad.cs
  13. 6
      src/Main/SharpDevelop/Workbench/FileService.cs

11
src/AddIns/BackendBindings/Scripting/Test/Utils/MockEditableViewContent.cs

@ -12,7 +12,7 @@ namespace ICSharpCode.Scripting.Tests.Utils @@ -12,7 +12,7 @@ namespace ICSharpCode.Scripting.Tests.Utils
/// <summary>
/// Mock implementation of the IEditable and IViewContent.
/// </summary>
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 @@ -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)) {

11
src/AddIns/BackendBindings/Scripting/Test/Utils/MockTextEditorViewContent.cs

@ -13,7 +13,7 @@ namespace ICSharpCode.Scripting.Tests.Utils @@ -13,7 +13,7 @@ namespace ICSharpCode.Scripting.Tests.Utils
/// A mock IViewContent implementation that also implements the
/// ITextEditorControlProvider interface.
/// </summary>
public class MockTextEditorViewContent : MockViewContent, ITextEditorProvider
public class MockTextEditorViewContent : MockViewContent
{
ITextEditor textEditor;
@ -21,14 +21,5 @@ namespace ICSharpCode.Scripting.Tests.Utils @@ -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();
}
}
}

10
src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDialogDesigner.cs

@ -83,7 +83,7 @@ namespace ICSharpCode.WixBinding @@ -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<ITextEditor>();
this.SourceCodeStorage.AddFile(file, editor.Document, SD.FileService.DefaultFileEncoding, true);
}
@ -224,13 +224,7 @@ namespace ICSharpCode.WixBinding @@ -224,13 +224,7 @@ namespace ICSharpCode.WixBinding
/// Gets the active text area control.
/// </summary>
ITextEditor ActiveTextEditor {
get {
ITextEditorProvider provider = this.PrimaryViewContent as ITextEditorProvider;
if (provider != null) {
return provider.TextEditor;
}
return null;
}
get { return PrimaryViewContent.GetService<ITextEditor>(); }
}
void AddToErrorList(XmlException ex)

3
src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDialogDesignerDisplayBinding.cs

@ -37,8 +37,7 @@ namespace ICSharpCode.WixBinding @@ -37,8 +37,7 @@ namespace ICSharpCode.WixBinding
bool IsViewTextEditorProvider(IViewContent view)
{
ITextEditorProvider textEditorProvider = view as ITextEditorProvider;
return textEditorProvider != null;
return view.GetService<ITextEditor>() != null;
}
}
}

9
src/AddIns/BackendBindings/WixBinding/Test/Utils/MockTextEditorViewContent.cs

@ -11,13 +11,18 @@ namespace WixBinding.Tests.Utils @@ -11,13 +11,18 @@ namespace WixBinding.Tests.Utils
/// <summary>
/// Mock IViewContent class that implements the ITextEditorProvider interface.
/// </summary>
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)
{

52
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs

@ -24,15 +24,8 @@ using ICSharpCode.SharpDevelop.Workbench; @@ -24,15 +24,8 @@ using ICSharpCode.SharpDevelop.Workbench;
namespace ICSharpCode.AvalonEdit.AddIn
{
[ViewContentService]
public interface ICodeEditorProvider : ITextEditorProvider
{
[Obsolete("Use viewContent.GetService<CodeEditor>() 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 @@ -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 @@ -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 @@ -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 @@ -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; }
}

25
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs

@ -39,7 +39,7 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -39,7 +39,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
/// </summary>
[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 @@ -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 @@ -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

22
src/AddIns/DisplayBindings/ILSpyAddIn/ViewContent/DecompiledViewContent.cs

@ -30,7 +30,7 @@ namespace ICSharpCode.ILSpyAddIn @@ -30,7 +30,7 @@ namespace ICSharpCode.ILSpyAddIn
/// <summary>
/// Hosts a decompiled type.
/// </summary>
class DecompiledViewContent : AbstractViewContentWithoutFile, IPositionable
class DecompiledViewContent : AbstractViewContentWithoutFile
{
readonly FileName assemblyFile;
readonly string fullTypeName;
@ -58,8 +58,7 @@ namespace ICSharpCode.ILSpyAddIn @@ -58,8 +58,7 @@ namespace ICSharpCode.ILSpyAddIn
{
this.VirtualFileName = FileName.Create("ilspy://" + assemblyFile + "/" + fullTypeName + ".cs");
this.Services = codeEditor.PrimaryTextEditor.GetRequiredService<IServiceContainer>();
this.Services.AddService(typeof(IPositionable), this);
this.Services = codeEditor.GetRequiredService<IServiceContainer>();
this.assemblyFile = assemblyFile;
this.fullTypeName = fullTypeName;
@ -188,7 +187,7 @@ namespace ICSharpCode.ILSpyAddIn @@ -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 @@ -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;

11
src/AddIns/DisplayBindings/XmlEditor/Test/Utils/MockTextEditorProviderViewContent.cs

@ -9,23 +9,14 @@ using ICSharpCode.SharpDevelop.Workbench; @@ -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);

6
src/AddIns/DisplayBindings/XmlEditor/Test/XPath/RemoveXPathHighlightingCommandTestFixture.cs

@ -69,11 +69,5 @@ namespace XmlEditor.Tests.XPath @@ -69,11 +69,5 @@ namespace XmlEditor.Tests.XPath
{
Assert.IsTrue(markerService.TextMarkers.Count() > 0);
}
[Test]
public void MockViewContentDoesNotImplementITextEditorProviderInterface()
{
Assert.IsNull(nonTextEditorProviderView as ITextEditorProvider);
}
}
}

9
src/Main/Base/Project/Editor/ITextEditor.cs

@ -13,15 +13,6 @@ using ICSharpCode.SharpDevelop.Refactoring; @@ -13,15 +13,6 @@ using ICSharpCode.SharpDevelop.Refactoring;
namespace ICSharpCode.SharpDevelop.Editor
{
[ViewContentService]
public interface ITextEditorProvider : IFileDocumentProvider
{
[Obsolete("Use viewContent.GetService<ITextEditor>() instead.")]
ITextEditor TextEditor {
get;
}
}
/// <summary>
/// Interface for text editors.
/// </summary>

2
src/Main/Base/Project/Src/Gui/Pads/AbstractConsolePad.cs

@ -24,7 +24,7 @@ using ICSharpCode.SharpDevelop.Workbench; @@ -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";

6
src/Main/SharpDevelop/Workbench/FileService.cs

@ -454,12 +454,12 @@ namespace ICSharpCode.SharpDevelop.Workbench @@ -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<IPositionable>();
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;

Loading…
Cancel
Save