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
/// <summary> /// <summary>
/// Mock implementation of the IEditable and IViewContent. /// Mock implementation of the IEditable and IViewContent.
/// </summary> /// </summary>
public class MockEditableViewContent : MockViewContent, IEditable, ITextEditorProvider public class MockEditableViewContent : MockViewContent, IEditable
{ {
public MockTextEditor MockTextEditor = new MockTextEditor(); public MockTextEditor MockTextEditor = new MockTextEditor();
@ -37,15 +37,6 @@ namespace ICSharpCode.Scripting.Tests.Utils
set { MockTextEditor.MockTextEditorOptions = value; } set { MockTextEditor.MockTextEditorOptions = value; }
} }
public ITextEditor TextEditor {
get { return MockTextEditor; }
}
public IDocument GetDocumentForFile(OpenedFile file)
{
throw new NotImplementedException();
}
public override object GetService(Type serviceType) public override object GetService(Type serviceType)
{ {
if (serviceType == typeof(ITextEditor)) { if (serviceType == typeof(ITextEditor)) {

11
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 /// A mock IViewContent implementation that also implements the
/// ITextEditorControlProvider interface. /// ITextEditorControlProvider interface.
/// </summary> /// </summary>
public class MockTextEditorViewContent : MockViewContent, ITextEditorProvider public class MockTextEditorViewContent : MockViewContent
{ {
ITextEditor textEditor; ITextEditor textEditor;
@ -21,14 +21,5 @@ namespace ICSharpCode.Scripting.Tests.Utils
{ {
textEditor = new AvalonEditTextEditorAdapter(new TextEditor()); 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
// and text selection operations done by the WiX designer actually // and text selection operations done by the WiX designer actually
// become visible in the text editor. // become visible in the text editor.
if (!this.SourceCodeStorage.ContainsFile(file)) { 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); this.SourceCodeStorage.AddFile(file, editor.Document, SD.FileService.DefaultFileEncoding, true);
} }
@ -224,13 +224,7 @@ namespace ICSharpCode.WixBinding
/// Gets the active text area control. /// Gets the active text area control.
/// </summary> /// </summary>
ITextEditor ActiveTextEditor { ITextEditor ActiveTextEditor {
get { get { return PrimaryViewContent.GetService<ITextEditor>(); }
ITextEditorProvider provider = this.PrimaryViewContent as ITextEditorProvider;
if (provider != null) {
return provider.TextEditor;
}
return null;
}
} }
void AddToErrorList(XmlException ex) void AddToErrorList(XmlException ex)

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

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

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

@ -11,13 +11,18 @@ namespace WixBinding.Tests.Utils
/// <summary> /// <summary>
/// Mock IViewContent class that implements the ITextEditorProvider interface. /// Mock IViewContent class that implements the ITextEditorProvider interface.
/// </summary> /// </summary>
public class MockTextEditorViewContent : MockViewContent, ITextEditorProvider public class MockTextEditorViewContent : MockViewContent
{ {
public MockTextEditorViewContent() 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) public IDocument GetDocumentForFile(OpenedFile file)
{ {

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

@ -24,15 +24,8 @@ using ICSharpCode.SharpDevelop.Workbench;
namespace ICSharpCode.AvalonEdit.AddIn namespace ICSharpCode.AvalonEdit.AddIn
{ {
[ViewContentService]
public interface ICodeEditorProvider : ITextEditorProvider
{
[Obsolete("Use viewContent.GetService<CodeEditor>() instead.")]
CodeEditor CodeEditor { get; }
}
public class AvalonEditViewContent public class AvalonEditViewContent
: AbstractViewContent, IMementoCapable, ICodeEditorProvider, IPositionable, IToolsHost : AbstractViewContent, IMementoCapable, IToolsHost
{ {
readonly CodeEditor codeEditor = new CodeEditor(); readonly CodeEditor codeEditor = new CodeEditor();
IAnalyticsMonitorTrackedFeature trackedFeature; IAnalyticsMonitorTrackedFeature trackedFeature;
@ -97,10 +90,6 @@ namespace ICSharpCode.AvalonEdit.AddIn
TextEditorSideBar.Instance.PutInClipboardRing(e.Text); TextEditorSideBar.Instance.PutInClipboardRing(e.Text);
} }
public CodeEditor CodeEditor {
get { return codeEditor; }
}
public override object Control { public override object Control {
get { return codeEditor; } get { return codeEditor; }
} }
@ -194,17 +183,17 @@ namespace ICSharpCode.AvalonEdit.AddIn
public override INavigationPoint BuildNavPoint() public override INavigationPoint BuildNavPoint()
{ {
int lineNumber = this.Line; int lineNumber = codeEditor.Line;
string txt = codeEditor.Document.GetText(codeEditor.Document.GetLineByNumber(lineNumber)); 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) void CaretChanged(object sender, EventArgs e)
{ {
NavigationService.Log(this.BuildNavPoint()); NavigationService.Log(this.BuildNavPoint());
var document = codeEditor.Document; var document = codeEditor.Document;
int lineOffset = document.GetLineByNumber(this.Line).Offset; int lineOffset = document.GetLineByNumber(codeEditor.Line).Offset;
int chOffset = this.Column; int chOffset = codeEditor.Column;
int col = 1; int col = 1;
for (int i = 1; i < chOffset; i++) { for (int i = 1; i < chOffset; i++) {
if (document.GetCharAt(lineOffset + i - 1) == '\t') if (document.GetCharAt(lineOffset + i - 1) == '\t')
@ -212,7 +201,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
else else
col += 1; col += 1;
} }
SD.StatusBar.SetCaretPosition(col, this.Line, chOffset); SD.StatusBar.SetCaretPosition(col, codeEditor.Line, chOffset);
} }
public override bool IsReadOnly { public override bool IsReadOnly {
@ -314,35 +303,6 @@ namespace ICSharpCode.AvalonEdit.AddIn
} }
#endregion #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 { object IToolsHost.ToolsContent {
get { return TextEditorSideBar.Instance; } get { return TextEditorSideBar.Instance; }
} }

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

@ -39,7 +39,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
/// </summary> /// </summary>
[TextEditorService, ViewContentService] [TextEditorService, ViewContentService]
public class CodeEditor 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"; 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(ITextEditor), adapter);
textView.Services.AddService(typeof(CodeEditor), this); textView.Services.AddService(typeof(CodeEditor), this);
textView.Services.AddService(typeof(ICSharpCode.SharpDevelop.Gui.IEditable), 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); textView.Services.AddService(typeof(IFileDocumentProvider), this);
codeEditorView.TextArea.TextEntering += TextAreaTextEntering; codeEditorView.TextArea.TextEntering += TextAreaTextEntering;
@ -420,6 +421,28 @@ namespace ICSharpCode.AvalonEdit.AddIn
} }
#endregion #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) void TextAreaTextEntering(object sender, TextCompositionEventArgs e)
{ {
// don't start new code completion if there is still a completion window open // 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
/// <summary> /// <summary>
/// Hosts a decompiled type. /// Hosts a decompiled type.
/// </summary> /// </summary>
class DecompiledViewContent : AbstractViewContentWithoutFile, IPositionable class DecompiledViewContent : AbstractViewContentWithoutFile
{ {
readonly FileName assemblyFile; readonly FileName assemblyFile;
readonly string fullTypeName; readonly string fullTypeName;
@ -58,8 +58,7 @@ namespace ICSharpCode.ILSpyAddIn
{ {
this.VirtualFileName = FileName.Create("ilspy://" + assemblyFile + "/" + fullTypeName + ".cs"); this.VirtualFileName = FileName.Create("ilspy://" + assemblyFile + "/" + fullTypeName + ".cs");
this.Services = codeEditor.PrimaryTextEditor.GetRequiredService<IServiceContainer>(); this.Services = codeEditor.GetRequiredService<IServiceContainer>();
this.Services.AddService(typeof(IPositionable), this);
this.assemblyFile = assemblyFile; this.assemblyFile = assemblyFile;
this.fullTypeName = fullTypeName; this.fullTypeName = fullTypeName;
@ -188,7 +187,7 @@ namespace ICSharpCode.ILSpyAddIn
} }
TextLocation location; TextLocation location;
if (entityIdString != null && memberLocations != null && memberLocations.TryGetValue(entityIdString, out location)) if (entityIdString != null && memberLocations != null && memberLocations.TryGetValue(entityIdString, out location))
this.JumpTo(location.Line, location.Column); codeEditor.JumpTo(location.Line, location.Column);
} }
#endregion #endregion
@ -299,21 +298,6 @@ namespace ICSharpCode.ILSpyAddIn
} }
#endregion #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 #region Events
public event EventHandler DecompilationFinished; public event EventHandler DecompilationFinished;

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

@ -9,23 +9,14 @@ using ICSharpCode.SharpDevelop.Workbench;
namespace XmlEditor.Tests.Utils namespace XmlEditor.Tests.Utils
{ {
public class MockTextEditorProviderViewContent : MockViewContent, ITextEditorProvider public class MockTextEditorProviderViewContent : MockViewContent
{ {
MockTextEditor textEditor = new MockTextEditor(); MockTextEditor textEditor = new MockTextEditor();
public ITextEditor TextEditor {
get { return textEditor; }
}
public MockTextEditor MockTextEditor { public MockTextEditor MockTextEditor {
get { return textEditor; } get { return textEditor; }
} }
public IDocument GetDocumentForFile(OpenedFile file)
{
throw new NotImplementedException();
}
public override object GetService(Type serviceType) public override object GetService(Type serviceType)
{ {
return textEditor.GetService(serviceType); return textEditor.GetService(serviceType);

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

@ -69,11 +69,5 @@ namespace XmlEditor.Tests.XPath
{ {
Assert.IsTrue(markerService.TextMarkers.Count() > 0); 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;
namespace ICSharpCode.SharpDevelop.Editor namespace ICSharpCode.SharpDevelop.Editor
{ {
[ViewContentService]
public interface ITextEditorProvider : IFileDocumentProvider
{
[Obsolete("Use viewContent.GetService<ITextEditor>() instead.")]
ITextEditor TextEditor {
get;
}
}
/// <summary> /// <summary>
/// Interface for text editors. /// Interface for text editors.
/// </summary> /// </summary>

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

@ -24,7 +24,7 @@ using ICSharpCode.SharpDevelop.Workbench;
namespace ICSharpCode.SharpDevelop.Gui 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"; const string toolBarTreePath = "/SharpDevelop/Pads/CommonConsole/ToolBar";

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

@ -454,12 +454,12 @@ namespace ICSharpCode.SharpDevelop.Workbench
try { try {
IViewContent content = OpenFile(fileName); IViewContent content = OpenFile(fileName);
if (content is IPositionable) { IPositionable positionable = content.GetService<IPositionable>();
// TODO: enable jumping to a particular view if (positionable != null) {
content.WorkbenchWindow.ActiveViewContent = content; content.WorkbenchWindow.ActiveViewContent = content;
NavigationService.ResumeLogging(); NavigationService.ResumeLogging();
loggingResumed = true; loggingResumed = true;
((IPositionable)content).JumpTo(Math.Max(1, line), Math.Max(1, column)); positionable.JumpTo(Math.Max(1, line), Math.Max(1, column));
} else { } else {
NavigationService.ResumeLogging(); NavigationService.ResumeLogging();
loggingResumed = true; loggingResumed = true;

Loading…
Cancel
Save