Browse Source

Replace ITextEditorProvider with GetService<ITextEditor>().

newNRvisualizers
Daniel Grunwald 13 years ago
parent
commit
05904c8407
  1. 5
      src/AddIns/BackendBindings/FSharpBinding/FSharpInteractive.cs
  2. 8
      src/AddIns/Debugger/Debugger.AddIn/DisableBreakpointMenuCommand.cs
  3. 8
      src/AddIns/Debugger/Debugger.AddIn/EnableBreakpointMenuCommand.cs
  4. 12
      src/AddIns/Debugger/Debugger.AddIn/IsActiveBreakpointCondition.cs
  5. 12
      src/AddIns/Debugger/Debugger.AddIn/IsBreakpointCondition.cs
  6. 9
      src/AddIns/Debugger/Debugger.AddIn/Service/RunToCursorCommand.cs
  7. 6
      src/AddIns/Debugger/Debugger.AddIn/Service/SetCurrentStatementCommand.cs
  8. 2
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs
  9. 2
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs
  10. 9
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Commands/FoldingCommands.cs
  11. 10
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Commands/SaveFileWithEncoding.cs
  12. 9
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Commands/SortSelectionCommand.cs
  13. 13
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Commands/SurroundWithCommand.cs
  14. 8
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ContextActionsPopup.cs
  15. 11
      src/AddIns/DisplayBindings/XmlEditor/Project/Src/FormatXmlCommand.cs
  16. 6
      src/AddIns/DisplayBindings/XmlEditor/Project/Src/RemoveXPathHighlightingCommand.cs
  17. 10
      src/AddIns/DisplayBindings/XmlEditor/Project/Src/RunXslTransformCommand.cs
  18. 9
      src/AddIns/DisplayBindings/XmlEditor/Project/Src/XPathNodeTextMarker.cs
  19. 4
      src/AddIns/DisplayBindings/XmlEditor/Project/Src/XPathQueryControl.cs
  20. 9
      src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlDisplayBinding.cs
  21. 7
      src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlView.cs
  22. 4
      src/AddIns/DisplayBindings/XmlEditor/Project/Src/XslOutputView.cs
  23. 15
      src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchLocation.cs
  24. 17
      src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchManager.cs
  25. 3
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Document/TextDocument.cs
  26. 5
      src/Main/Base/Project/Src/Bookmarks/Commands/MenuCommands.cs
  27. 10
      src/Main/Base/Project/Src/Commands/CustomStringTagProvider.cs
  28. 15
      src/Main/Base/Project/Src/Commands/DebugCommands.cs
  29. 9
      src/Main/Base/Project/Src/Editor/AvalonEdit/TextContentCondition.cs
  30. 5
      src/Main/Base/Project/Src/Editor/AvalonEdit/TextSelectedCondition.cs
  31. 11
      src/Main/Base/Project/Src/Editor/Commands/CommentRegion.cs
  32. 6
      src/Main/Base/Project/Src/Editor/Commands/GoToMatchingBrace.cs
  33. 17
      src/Main/Base/Project/Src/Editor/Commands/IndentSelection.cs
  34. 7
      src/Main/Base/Project/Src/Editor/Commands/InsertGuidCommand.cs
  35. 14
      src/Main/Base/Project/Src/Editor/Commands/PasteAsCommands.cs
  36. 7
      src/Main/Base/Project/Src/Editor/Commands/ShowColorDialog.cs
  37. 6
      src/Main/Base/Project/Src/Editor/Commands/SymbolUnderCaretMenuCommand.cs
  38. 1
      src/Main/Base/Project/Src/Editor/IFileDocumentProvider.cs
  39. 3
      src/Main/Base/Project/Src/Editor/ITextEditor.cs
  40. 1
      src/Main/Base/Project/Src/Gui/ContentInterfaces/IEditable.cs
  41. 1
      src/Main/Base/Project/Src/Gui/ContentInterfaces/IPositionable.cs
  42. 6
      src/Main/Base/Project/Src/Gui/Dialogs/GotoDialog.cs
  43. 6
      src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/ServiceReference/ActiveTextEditors.cs
  44. 4
      src/Main/Base/Project/Src/Gui/Dialogs/WordCountDialog.cs
  45. 28
      src/Main/Base/Project/Src/Gui/Pads/DefinitionViewPad.cs
  46. 12
      src/Main/Base/Project/Src/Gui/Pads/TaskList/TaskListPad.cs
  47. 3
      src/Main/Base/Project/Src/Gui/Pads/ToolsPad.cs
  48. 8
      src/Main/Base/Project/Src/Services/Debugger/CurrentLineBookmark.cs
  49. 8
      src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs
  50. 2
      src/Main/Base/Project/Src/Services/File/IFileService.cs
  51. 2
      src/Main/Base/Project/Src/Services/File/OpenedFile.cs
  52. 27
      src/Main/Base/Project/Src/Services/SD.cs
  53. 3
      src/Main/Core/Project/Src/Services/PropertyService/Properties.cs
  54. 8
      src/Main/SharpDevelop/Sda/Document.cs
  55. 4
      src/Main/SharpDevelop/Workbench/WpfWorkbench.cs

5
src/AddIns/BackendBindings/FSharpBinding/FSharpInteractive.cs

@ -142,9 +142,8 @@ namespace FSharpBinding @@ -142,9 +142,8 @@ namespace FSharpBinding
pad.BringPadToFront();
FSharpInteractive fsharpInteractive = (FSharpInteractive)pad.PadContent;
if (fsharpInteractive.foundCompiler) {
ITextEditorProvider editorProvider = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider;
if (editorProvider != null) {
var textEditor = editorProvider.TextEditor;
ITextEditor textEditor = SD.GetActiveViewContentService<ITextEditor>();
if (textEditor != null) {
if (textEditor.SelectionLength > 0) {
fsharpInteractive.fsiProcess.StandardInput.WriteLine(textEditor.SelectedText);
} else {

8
src/AddIns/Debugger/Debugger.AddIn/DisableBreakpointMenuCommand.cs

@ -21,13 +21,15 @@ namespace Debugger.AddIn @@ -21,13 +21,15 @@ namespace Debugger.AddIn
{
public override void Run()
{
ITextEditorProvider provider = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ActiveViewContent as ITextEditorProvider;
ITextEditor editor = SD.GetActiveViewContentService<ITextEditor>();
if (editor == null)
return;
BreakpointBookmark point = null;
foreach (BreakpointBookmark breakpoint in DebuggerService.Breakpoints) {
if ((breakpoint.FileName == provider.TextEditor.FileName) &&
(breakpoint.LineNumber == provider.TextEditor.Caret.Line)) {
if ((breakpoint.FileName == editor.FileName) &&
(breakpoint.LineNumber == editor.Caret.Line)) {
point = breakpoint;
break;
}

8
src/AddIns/Debugger/Debugger.AddIn/EnableBreakpointMenuCommand.cs

@ -21,13 +21,15 @@ namespace Debugger.AddIn @@ -21,13 +21,15 @@ namespace Debugger.AddIn
{
public override void Run()
{
ITextEditorProvider provider = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ActiveViewContent as ITextEditorProvider;
ITextEditor editor = SD.GetActiveViewContentService<ITextEditor>();
if (editor == null)
return;
BreakpointBookmark point = null;
foreach (BreakpointBookmark breakpoint in DebuggerService.Breakpoints) {
if ((breakpoint.FileName == provider.TextEditor.FileName) &&
(breakpoint.LineNumber == provider.TextEditor.Caret.Line)) {
if ((breakpoint.FileName == editor.FileName) &&
(breakpoint.LineNumber == editor.Caret.Line)) {
point = breakpoint;
break;
}

12
src/AddIns/Debugger/Debugger.AddIn/IsActiveBreakpointCondition.cs

@ -25,19 +25,17 @@ namespace Debugger.AddIn @@ -25,19 +25,17 @@ namespace Debugger.AddIn
public bool IsValid(object caller, Condition condition)
{
if (WorkbenchSingleton.Workbench == null || WorkbenchSingleton.Workbench.ActiveWorkbenchWindow == null)
ITextEditor editor = SD.GetActiveViewContentService<ITextEditor>();
if (editor == null)
return false;
ITextEditorProvider provider = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ActiveViewContent as ITextEditorProvider;
if (provider == null)
return false;
if (string.IsNullOrEmpty(provider.TextEditor.FileName))
if (string.IsNullOrEmpty(editor.FileName))
return false;
BreakpointBookmark point = null;
foreach (BreakpointBookmark breakpoint in DebuggerService.Breakpoints) {
if ((breakpoint.FileName == provider.TextEditor.FileName) &&
(breakpoint.LineNumber == provider.TextEditor.Caret.Line)) {
if ((breakpoint.FileName == editor.FileName) &&
(breakpoint.LineNumber == editor.Caret.Line)) {
point = breakpoint;
break;
}

12
src/AddIns/Debugger/Debugger.AddIn/IsBreakpointCondition.cs

@ -25,17 +25,15 @@ namespace Debugger.AddIn @@ -25,17 +25,15 @@ namespace Debugger.AddIn
public bool IsValid(object caller, Condition condition)
{
if (WorkbenchSingleton.Workbench == null || WorkbenchSingleton.Workbench.ActiveWorkbenchWindow == null)
ITextEditor editor = SD.GetActiveViewContentService<ITextEditor>();
if (editor == null)
return false;
ITextEditorProvider provider = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ActiveViewContent as ITextEditorProvider;
if (provider == null)
return false;
if (string.IsNullOrEmpty(provider.TextEditor.FileName))
if (string.IsNullOrEmpty(editor.FileName))
return false;
foreach (BreakpointBookmark mark in DebuggerService.Breakpoints) {
if ((mark.FileName == provider.TextEditor.FileName) &&
(mark.LineNumber == provider.TextEditor.Caret.Line))
if ((mark.FileName == editor.FileName) &&
(mark.LineNumber == editor.Caret.Line))
return true;
}

9
src/AddIns/Debugger/Debugger.AddIn/Service/RunToCursorCommand.cs

@ -14,13 +14,10 @@ namespace ICSharpCode.SharpDevelop.Services @@ -14,13 +14,10 @@ namespace ICSharpCode.SharpDevelop.Services
{
public override void Run()
{
ITextEditorProvider provider = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider;
if (provider == null || WindowsDebugger.CurrentProcess == null)
ITextEditor editor = SD.GetActiveViewContentService<ITextEditor>();
if (editor == null || WindowsDebugger.CurrentProcess == null)
return;
ITextEditor textEditor = provider.TextEditor;
WindowsDebugger.CurrentProcess.RunTo(textEditor.FileName, textEditor.Caret.Line, textEditor.Caret.Column);
WindowsDebugger.CurrentProcess.RunTo(editor.FileName, editor.Caret.Line, editor.Caret.Column);
}
}
}

6
src/AddIns/Debugger/Debugger.AddIn/Service/SetCurrentStatementCommand.cs

@ -12,13 +12,11 @@ namespace ICSharpCode.SharpDevelop.Services @@ -12,13 +12,11 @@ namespace ICSharpCode.SharpDevelop.Services
{
public override void Run()
{
ITextEditorProvider provider = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider;
ITextEditor textEditor = SD.GetActiveViewContentService<ITextEditor>();
if (provider == null || DebuggerService.CurrentDebugger == null)
if (textEditor == null || DebuggerService.CurrentDebugger == null)
return;
ITextEditor textEditor = provider.TextEditor;
DebuggerService.CurrentDebugger.SetInstructionPointer(textEditor.FileName, textEditor.Caret.Line, textEditor.Caret.Column, false);
}
}

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

@ -22,8 +22,10 @@ using ICSharpCode.SharpDevelop.Project; @@ -22,8 +22,10 @@ using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.AvalonEdit.AddIn
{
[ViewContentService]
public interface ICodeEditorProvider : ITextEditorProvider
{
[Obsolete("Use viewContent.GetService<CodeEditor>() instead.")]
CodeEditor CodeEditor { get; }
}

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

@ -37,7 +37,7 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -37,7 +37,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
/// Integrates AvalonEdit with SharpDevelop.
/// Also provides support for Split-View (showing two AvalonEdit instances using the same TextDocument)
/// </summary>
[TextEditorService]
[TextEditorService, ViewContentService]
public class CodeEditor : Grid, IDisposable
{
const string contextMenuPath = "/SharpDevelop/ViewContent/AvalonEdit/ContextMenu";

9
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Commands/FoldingCommands.cs

@ -15,8 +15,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.Commands @@ -15,8 +15,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.Commands
{
public override void Run()
{
ITextEditorProvider provider = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider;
ITextEditor editor = provider.TextEditor;
ITextEditor editor = SD.GetActiveViewContentService<ITextEditor>();
FoldingManager foldingManager = editor.GetService(typeof(FoldingManager)) as FoldingManager;
if (foldingManager != null) {
@ -37,8 +36,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.Commands @@ -37,8 +36,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.Commands
{
public override void Run()
{
ITextEditorProvider provider = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider;
ITextEditor editor = provider.TextEditor;
ITextEditor editor = SD.GetActiveViewContentService<ITextEditor>();
FoldingManager foldingManager = editor.GetService(typeof(FoldingManager)) as FoldingManager;
if (foldingManager != null) {
@ -60,8 +58,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.Commands @@ -60,8 +58,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.Commands
{
public override void Run()
{
ITextEditorProvider provider = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider;
ITextEditor editor = provider.TextEditor;
ITextEditor editor = SD.GetActiveViewContentService<ITextEditor>();
FoldingManager foldingManager = editor.GetService(typeof(FoldingManager)) as FoldingManager;
if (foldingManager != null) {

10
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Commands/SaveFileWithEncoding.cs

@ -15,13 +15,15 @@ namespace ICSharpCode.AvalonEdit.AddIn.Commands @@ -15,13 +15,15 @@ namespace ICSharpCode.AvalonEdit.AddIn.Commands
public override void Run()
{
IViewContent vc = WorkbenchSingleton.Workbench.ActiveViewContent;
ICodeEditorProvider cep = vc as ICodeEditorProvider;
if (cep != null) {
if (vc == null)
return;
var codeEditor = vc.GetService<CodeEditor>();
if (codeEditor != null) {
ChooseEncodingDialog dlg = new ChooseEncodingDialog();
dlg.Owner = WorkbenchSingleton.MainWindow;
dlg.Encoding = cep.CodeEditor.PrimaryTextEditor.Encoding;
dlg.Encoding = codeEditor.PrimaryTextEditor.Encoding;
if (dlg.ShowDialog() == true) {
cep.CodeEditor.PrimaryTextEditor.Encoding = dlg.Encoding;
codeEditor.PrimaryTextEditor.Encoding = dlg.Encoding;
SharpDevelop.Commands.SaveFile.Save(vc.PrimaryFile);
}
}

9
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Commands/SortSelectionCommand.cs

@ -2,12 +2,14 @@ @@ -2,12 +2,14 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Linq;
using ICSharpCode.Core;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Gui;
using System.Collections.Generic;
namespace ICSharpCode.AvalonEdit.AddIn.Commands
{
@ -24,9 +26,8 @@ namespace ICSharpCode.AvalonEdit.AddIn.Commands @@ -24,9 +26,8 @@ namespace ICSharpCode.AvalonEdit.AddIn.Commands
if (SortOptions.SortDirection == SortDirection.Descending)
comparer = new DescendingStringComparer(comparer);
ITextEditorProvider provider = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider;
if (provider != null) {
ITextEditor editor = provider.TextEditor;
ITextEditor editor = SD.GetActiveViewContentService<ITextEditor>();
if (editor != null) {
if (editor.SelectionLength > 0) {
int start = editor.Document.GetLineByOffset(editor.SelectionStart).LineNumber;
int end = editor.Document.GetLineByOffset(editor.SelectionStart + editor.SelectionLength).LineNumber;

13
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Commands/SurroundWithCommand.cs

@ -4,10 +4,10 @@ @@ -4,10 +4,10 @@
using System;
using System.IO;
using System.Linq;
using ICSharpCode.AvalonEdit.AddIn.Snippets;
using ICSharpCode.AvalonEdit.Editing;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.CodeCompletion;
using ICSharpCode.SharpDevelop.Gui;
@ -21,21 +21,20 @@ namespace ICSharpCode.AvalonEdit.AddIn.Commands @@ -21,21 +21,20 @@ namespace ICSharpCode.AvalonEdit.AddIn.Commands
/// </summary>
public override void Run()
{
ICodeEditorProvider provider = WorkbenchSingleton.Workbench.ActiveViewContent as ICodeEditorProvider;
if (provider == null)
ITextEditor editor = SD.GetActiveViewContentService<ITextEditor>();
if (editor == null)
return;
CodeSnippetGroup group = SnippetManager.Instance.FindGroup(Path.GetExtension(provider.TextEditor.FileName));
CodeSnippetGroup group = SnippetManager.Instance.FindGroup(Path.GetExtension(editor.FileName));
if (group == null)
return;
DefaultCompletionItemList list = new DefaultCompletionItemList();
list.Items.AddRange(group.Snippets.Where(i => i.HasSelection).Select(item => item.CreateCompletionItem(provider.TextEditor)));
list.Items.AddRange(group.Snippets.Where(i => i.HasSelection).Select(item => item.CreateCompletionItem(editor)));
new CodeSnippetCompletionWindow(provider.TextEditor, list).Show();
new CodeSnippetCompletionWindow(editor, list).Show();
}
}
}

8
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ContextActionsPopup.cs

@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
using System;
using System.Windows.Controls.Primitives;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Gui;
@ -61,12 +62,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.ContextActions @@ -61,12 +62,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.ContextActions
ITextEditor GetCurrentEditor()
{
if (WorkbenchSingleton.Workbench == null)
return null;
var activeViewContent = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider;
if (activeViewContent == null)
return null;
return activeViewContent.TextEditor;
return SD.GetActiveViewContentService<ITextEditor>();
}
void OpenAtMousePosition()

11
src/AddIns/DisplayBindings/XmlEditor/Project/Src/FormatXmlCommand.cs

@ -1,10 +1,10 @@ @@ -1,10 +1,10 @@
// 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 ICSharpCode.SharpDevelop.Editor;
using System;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
namespace ICSharpCode.XmlEditor
{
@ -15,10 +15,9 @@ namespace ICSharpCode.XmlEditor @@ -15,10 +15,9 @@ namespace ICSharpCode.XmlEditor
{
public override void Run()
{
ITextEditorProvider provider = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider;
if (provider != null) {
XmlView.FormatXml(provider.TextEditor);
ITextEditor textEditor = SD.GetActiveViewContentService<ITextEditor>();
if (textEditor != null) {
XmlView.FormatXml(textEditor);
}
}
}

6
src/AddIns/DisplayBindings/XmlEditor/Project/Src/RemoveXPathHighlightingCommand.cs

@ -30,11 +30,7 @@ namespace ICSharpCode.XmlEditor @@ -30,11 +30,7 @@ namespace ICSharpCode.XmlEditor
public void RemoveXPathNodeTextMarkers()
{
foreach (IViewContent view in workbench.ViewContentCollection) {
ITextEditorProvider textEditorProvider = view as ITextEditorProvider;
if (textEditorProvider != null) {
XPathNodeTextMarker marker = new XPathNodeTextMarker(textEditorProvider.TextEditor.Document);
marker.RemoveMarkers();
}
XPathNodeTextMarker.RemoveMarkers(view);
}
}
}

10
src/AddIns/DisplayBindings/XmlEditor/Project/Src/RunXslTransformCommand.cs

@ -70,15 +70,7 @@ namespace ICSharpCode.XmlEditor @@ -70,15 +70,7 @@ namespace ICSharpCode.XmlEditor
static string GetStylesheetContent(string fileName)
{
// File already open?
ITextEditorProvider view = FileService.GetOpenFile(fileName) as ITextEditorProvider;
if (view != null) {
return view.TextEditor.Document.Text;
}
// Read in file contents.
StreamReader reader = new StreamReader(fileName, true);
return reader.ReadToEnd();
return SD.FileService.GetFileContent(fileName).Text;
}
}
}

9
src/AddIns/DisplayBindings/XmlEditor/Project/Src/XPathNodeTextMarker.cs

@ -45,15 +45,18 @@ namespace ICSharpCode.XmlEditor @@ -45,15 +45,18 @@ namespace ICSharpCode.XmlEditor
}
}
public void RemoveMarkers()
/// <summary>
/// Removes all markers from the given view content or text editor.
/// </summary>
public static void RemoveMarkers(IServiceProvider serviceProvider)
{
ITextMarkerService markerService = document.GetService(typeof(ITextMarkerService)) as ITextMarkerService;
ITextMarkerService markerService = serviceProvider.GetService(typeof(ITextMarkerService)) as ITextMarkerService;
if (markerService != null) {
markerService.RemoveAll(IsXPathNodeTextMarker);
}
}
bool IsXPathNodeTextMarker(ITextMarker marker)
static bool IsXPathNodeTextMarker(ITextMarker marker)
{
return (Type)marker.Tag == typeof(XPathNodeTextMarker);
}

4
src/AddIns/DisplayBindings/XmlEditor/Project/Src/XPathQueryControl.cs

@ -428,14 +428,14 @@ namespace ICSharpCode.XmlEditor @@ -428,14 +428,14 @@ namespace ICSharpCode.XmlEditor
// Clear previous XPath results.
ClearResults();
XPathNodeTextMarker marker = new XPathNodeTextMarker(xmlView.TextEditor.Document);
marker.RemoveMarkers();
XPathNodeTextMarker.RemoveMarkers(xmlView.TextEditor.Document);
// Run XPath query.
XPathQuery query = new XPathQuery(xmlView.TextEditor, GetNamespaces());
XPathNodeMatch[] nodes = query.FindNodes(xpathComboBox.Text);
if (nodes.Length > 0) {
AddXPathResults(nodes);
XPathNodeTextMarker marker = new XPathNodeTextMarker(xmlView.TextEditor.Document);
marker.AddMarkers(nodes);
} else {
AddNoXPathResult();

9
src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlDisplayBinding.cs

@ -63,12 +63,9 @@ namespace ICSharpCode.XmlEditor @@ -63,12 +63,9 @@ namespace ICSharpCode.XmlEditor
public static bool XmlViewContentActive {
get {
if (WorkbenchSingleton.Workbench == null) {
return false;
}
ITextEditorProvider view = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider;
if (view != null) {
return IsFileNameHandled(view.TextEditor.FileName);
ITextEditor editor = SD.GetActiveViewContentService<ITextEditor>();
if (editor != null) {
return IsFileNameHandled(editor.FileName);
}
return false;
}

7
src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlView.cs

@ -82,11 +82,12 @@ namespace ICSharpCode.XmlEditor @@ -82,11 +82,12 @@ namespace ICSharpCode.XmlEditor
{
get {
foreach (IViewContent view in File.RegisteredViewContents) {
ITextEditorProvider provider = view as ITextEditorProvider;
if (provider != null) {
IFileDocumentProvider provider = view.GetService<IFileDocumentProvider>();
ITextEditor textEditor = view.GetService<ITextEditor>();
if (textEditor != null && provider != null) {
IDocument document = provider.GetDocumentForFile(File);
if (document != null) {
return provider.TextEditor;
return textEditor;
}
}
}

4
src/AddIns/DisplayBindings/XmlEditor/Project/Src/XslOutputView.cs

@ -21,7 +21,7 @@ namespace ICSharpCode.XmlEditor @@ -21,7 +21,7 @@ namespace ICSharpCode.XmlEditor
get {
if (editor == null) {
instance = FileService.NewFile("xslOutput.xml", "");
editor = (instance as ITextEditorProvider).TextEditor;
editor = instance.GetService<ITextEditor>();
instance.Disposed += new EventHandler(InstanceDisposed);
}
@ -33,7 +33,7 @@ namespace ICSharpCode.XmlEditor @@ -33,7 +33,7 @@ namespace ICSharpCode.XmlEditor
get {
if (instance == null) {
instance = FileService.NewFile("xslOutput.xml", "");
editor = (instance as ITextEditorProvider).TextEditor;
editor = instance.GetService<ITextEditor>();
instance.Disposed += new EventHandler(InstanceDisposed);
} else {
instance.WorkbenchWindow.SelectWindow();

15
src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchLocation.cs

@ -8,6 +8,7 @@ using System.Linq; @@ -8,6 +8,7 @@ using System.Linq;
using ICSharpCode.Core;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
@ -47,16 +48,20 @@ namespace SearchAndReplace @@ -47,16 +48,20 @@ namespace SearchAndReplace
{
List<FileName> files = new List<FileName>();
ITextEditor editor;
switch (Target) {
case SearchTarget.CurrentDocument:
case SearchTarget.CurrentSelection:
ITextEditorProvider vc = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider;
if (vc != null)
files.Add(vc.TextEditor.FileName);
editor = SD.GetActiveViewContentService<ITextEditor>();
if (editor != null)
files.Add(editor.FileName);
break;
case SearchTarget.AllOpenFiles:
foreach (ITextEditorProvider editor in WorkbenchSingleton.Workbench.ViewContentCollection.OfType<ITextEditorProvider>())
files.Add(editor.TextEditor.FileName);
foreach (var vc in WorkbenchSingleton.Workbench.ViewContentCollection) {
editor = vc.GetService<ITextEditor>();
if (editor != null)
files.Add(editor.FileName);
}
break;
case SearchTarget.WholeProject:
if (ProjectService.CurrentProject == null)

17
src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchManager.cs

@ -420,27 +420,22 @@ namespace SearchAndReplace @@ -420,27 +420,22 @@ namespace SearchAndReplace
#region TextEditor helpers
static ITextEditor OpenTextArea(string fileName, bool switchToOpenedView = true)
{
ITextEditorProvider textEditorProvider;
IViewContent viewContent;
if (fileName != null) {
textEditorProvider = FileService.OpenFile(fileName, switchToOpenedView) as ITextEditorProvider;
viewContent = FileService.OpenFile(fileName, switchToOpenedView);
} else {
textEditorProvider = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider;
viewContent = WorkbenchSingleton.Workbench.ActiveViewContent;
}
if (textEditorProvider != null) {
return textEditorProvider.TextEditor;
if (viewContent != null) {
return viewContent.GetService<ITextEditor>();
}
return null;
}
public static ITextEditor GetActiveTextEditor()
{
ITextEditorProvider provider = SD.Workbench.ActiveViewContent as ITextEditorProvider;
if (provider != null) {
return provider.TextEditor;
} else {
return null;
}
return SD.GetActiveViewContentService<ITextEditor>();
}
public static ISegment GetActiveSelection(bool useAnchors)

3
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Document/TextDocument.cs

@ -118,6 +118,9 @@ namespace ICSharpCode.AvalonEdit.Document @@ -118,6 +118,9 @@ namespace ICSharpCode.AvalonEdit.Document
if (textSource == null)
throw new ArgumentNullException("textSource");
if (textSource is ReadOnlyDocument)
textSource = textSource.CreateSnapshot(); // retrieve underlying text source, which might be a RopeTextSource
RopeTextSource rts = textSource as RopeTextSource;
if (rts != null)
return rts.GetRope();

5
src/Main/Base/Project/Src/Bookmarks/Commands/MenuCommands.cs

@ -14,9 +14,8 @@ namespace ICSharpCode.SharpDevelop.Bookmarks @@ -14,9 +14,8 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
{
public override void Run()
{
ITextEditorProvider provider = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider;
if (provider != null) {
ITextEditor editor = provider.TextEditor;
ITextEditor editor = SD.GetActiveViewContentService<ITextEditor>();
if (editor != null) {
IBookmarkMargin margin = editor.GetService(typeof(IBookmarkMargin)) as IBookmarkMargin;
if (editor != null && margin != null) {
Run(editor, margin);

10
src/Main/Base/Project/Src/Commands/CustomStringTagProvider.cs

@ -84,23 +84,23 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -84,23 +84,23 @@ namespace ICSharpCode.SharpDevelop.Commands
case "CURLINE":
{
IPositionable positionable = WorkbenchSingleton.Workbench.ActiveViewContent as IPositionable;
IPositionable positionable = SD.GetActiveViewContentService<IPositionable>();
if (positionable != null)
return positionable.Line.ToString();
return string.Empty;
}
case "CURCOL":
{
IPositionable positionable = WorkbenchSingleton.Workbench.ActiveViewContent as IPositionable;
IPositionable positionable = SD.GetActiveViewContentService<IPositionable>();
if (positionable != null)
return positionable.Column.ToString();
return string.Empty;
}
case "CURTEXT":
{
var tecp = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider;
if (tecp != null) {
return tecp.TextEditor.SelectedText;
ITextEditor editor = SD.GetActiveViewContentService<ITextEditor>();
if (editor != null) {
return editor.SelectedText;
}
return string.Empty;
}

15
src/Main/Base/Project/Src/Commands/DebugCommands.cs

@ -117,23 +117,12 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -117,23 +117,12 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
{
public override void Run()
{
var viewContent = WorkbenchSingleton.Workbench.ActiveContent;
ITextEditorProvider provider = viewContent as ITextEditorProvider;
ITextEditor editor = null;
ITextEditor editor = SD.GetActiveViewContentService<ITextEditor>();
if (provider != null) {
editor = provider.TextEditor;
if (editor != null) {
if (!string.IsNullOrEmpty(editor.FileName)) {
DebuggerService.ToggleBreakpointAt(editor, editor.Caret.Line, typeof(BreakpointBookmark));
}
} else {
var view = viewContent as AbstractViewContentWithoutFile;
if (view != null) {
editor = view.GetService(typeof(ITextEditor)) as ITextEditor;
if (editor != null) {
DebuggerService.ToggleBreakpointAt(editor, editor.Caret.Line, typeof(DecompiledBreakpointBookmark));
}
}
}
}
}

9
src/Main/Base/Project/Src/Editor/AvalonEdit/TextContentCondition.cs

@ -21,12 +21,9 @@ namespace ICSharpCode.SharpDevelop.Editor.AvalonEdit @@ -21,12 +21,9 @@ namespace ICSharpCode.SharpDevelop.Editor.AvalonEdit
public bool IsValid(object caller, Condition condition)
{
string textcontent = condition.Properties["textcontent"];
IViewContent content = WorkbenchSingleton.Workbench.ActiveViewContent;
if (content is ITextEditorProvider) {
var ctrl = (content as ITextEditorProvider).TextEditor.GetService(typeof(ICSharpCode.AvalonEdit.TextEditor)) as ICSharpCode.AvalonEdit.TextEditor;
if (ctrl != null && ctrl.SyntaxHighlighting != null) {
return string.Equals(textcontent, ctrl.SyntaxHighlighting.Name, StringComparison.OrdinalIgnoreCase);
}
var editor = SD.GetActiveViewContentService<ICSharpCode.AvalonEdit.TextEditor>();
if (editor != null) {
return string.Equals(textcontent, editor.SyntaxHighlighting.Name, StringComparison.OrdinalIgnoreCase);
}
return false;
}

5
src/Main/Base/Project/Src/Editor/AvalonEdit/TextSelectedCondition.cs

@ -11,9 +11,8 @@ namespace ICSharpCode.SharpDevelop.Editor.AvalonEdit @@ -11,9 +11,8 @@ namespace ICSharpCode.SharpDevelop.Editor.AvalonEdit
{
public bool IsValid(object owner, Condition condition)
{
ITextEditorProvider textEditorProvider = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider;
if (textEditorProvider != null) {
ITextEditor textEditor = textEditorProvider.TextEditor;
ITextEditor textEditor = SD.GetActiveViewContentService<ITextEditor>();
if (textEditor != null) {
return textEditor.SelectionLength > 0;
}
return false;

11
src/Main/Base/Project/Src/Editor/Commands/CommentRegion.cs

@ -9,7 +9,7 @@ using ICSharpCode.SharpDevelop; @@ -9,7 +9,7 @@ using ICSharpCode.SharpDevelop;
namespace ICSharpCode.SharpDevelop.Editor.Commands
{
/// <summary>
/// Description of CommentRegion
/// Surrounds the selected text in a comment
/// </summary>
public class CommentRegion : AbstractMenuCommand
{
@ -18,13 +18,12 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands @@ -18,13 +18,12 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
/// </summary>
public override void Run()
{
ITextEditorProvider provider = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider;
if (provider == null)
ITextEditor editor = SD.GetActiveViewContentService<ITextEditor>();
if (editor == null)
return;
using (provider.TextEditor.Document.OpenUndoGroup())
provider.TextEditor.Language.FormattingStrategy.SurroundSelectionWithComment(provider.TextEditor);
using (editor.Document.OpenUndoGroup())
editor.Language.FormattingStrategy.SurroundSelectionWithComment(editor);
}
}
}

6
src/Main/Base/Project/Src/Editor/Commands/GoToMatchingBrace.cs

@ -11,9 +11,9 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands @@ -11,9 +11,9 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
{
public override void Run()
{
ITextEditorProvider editorProvider = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider;
if (editorProvider != null) {
Run(editorProvider.TextEditor, editorProvider.TextEditor.Caret.Offset);
ITextEditor editor = SD.GetActiveViewContentService<ITextEditor>();
if (editor != null) {
Run(editor, editor.Caret.Offset);
}
}

17
src/Main/Base/Project/Src/Editor/Commands/IndentSelection.cs

@ -20,21 +20,20 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands @@ -20,21 +20,20 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
/// </summary>
public override void Run()
{
ITextEditorProvider provider = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider;
if (provider == null)
ITextEditor editor = SD.GetActiveViewContentService<ITextEditor>();
if (editor == null)
return;
int beginLine = 1;
int endLine = provider.TextEditor.Document.LineCount;
int endLine = editor.Document.LineCount;
if (provider.TextEditor.SelectionLength != 0) {
beginLine = provider.TextEditor.Document.GetLineByOffset(provider.TextEditor.SelectionStart).LineNumber;
endLine = provider.TextEditor.Document.GetLineByOffset(provider.TextEditor.SelectionStart + provider.TextEditor.SelectionLength).LineNumber;
if (editor.SelectionLength != 0) {
beginLine = editor.Document.GetLineByOffset(editor.SelectionStart).LineNumber;
endLine = editor.Document.GetLineByOffset(editor.SelectionStart + editor.SelectionLength).LineNumber;
}
using (provider.TextEditor.Document.OpenUndoGroup())
provider.TextEditor.Language.FormattingStrategy.IndentLines(provider.TextEditor, beginLine, endLine);
using (editor.Document.OpenUndoGroup())
editor.Language.FormattingStrategy.IndentLines(editor, beginLine, endLine);
}
}
}

7
src/Main/Base/Project/Src/Editor/Commands/InsertGuidCommand.cs

@ -11,12 +11,7 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands @@ -11,12 +11,7 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
{
public override void Run()
{
IViewContent viewContent = WorkbenchSingleton.Workbench.ActiveViewContent;
if (viewContent == null || !(viewContent is ITextEditorProvider)) {
return;
}
ITextEditor textEditor = ((ITextEditorProvider)viewContent).TextEditor;
ITextEditor textEditor = SD.GetActiveViewContentService<ITextEditor>();
if (textEditor == null) {
return;
}

14
src/Main/Base/Project/Src/Editor/Commands/PasteAsCommands.cs

@ -14,19 +14,13 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands @@ -14,19 +14,13 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
{
public override void Run()
{
string clipboardText = ClipboardWrapper.GetText();
if (string.IsNullOrEmpty(clipboardText))
return;
IViewContent viewContent = WorkbenchSingleton.Workbench.ActiveViewContent;
if (viewContent == null || !(viewContent is ITextEditorProvider)) {
ITextEditor textEditor = SD.GetActiveViewContentService<ITextEditor>();
if (textEditor == null)
return;
}
ITextEditor textEditor = ((ITextEditorProvider)viewContent).TextEditor;
if (textEditor == null) {
string clipboardText = ClipboardWrapper.GetText();
if (string.IsNullOrEmpty(clipboardText))
return;
}
using (textEditor.Document.OpenUndoGroup())
Run(textEditor, clipboardText);

7
src/Main/Base/Project/Src/Editor/Commands/ShowColorDialog.cs

@ -13,12 +13,9 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands @@ -13,12 +13,9 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
{
public override void Run()
{
IViewContent viewContent = WorkbenchSingleton.Workbench.ActiveViewContent;
if (viewContent == null || !(viewContent is ITextEditorProvider)) {
ITextEditor textEditor = SD.GetActiveViewContentService<ITextEditor>();
if (textEditor == null)
return;
}
ITextEditor textEditor = ((ITextEditorProvider)viewContent).TextEditor;
using (SharpDevelopColorDialog cd = new SharpDevelopColorDialog()) {
if (cd.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainWin32Window) == DialogResult.OK) {

6
src/Main/Base/Project/Src/Editor/Commands/SymbolUnderCaretMenuCommand.cs

@ -18,9 +18,9 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands @@ -18,9 +18,9 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
{
public override void Run()
{
ITextEditorProvider editorProvider = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider;
if (editorProvider != null) {
Run(editorProvider.TextEditor, editorProvider.TextEditor.Caret.Offset);
ITextEditor editor = SD.GetActiveViewContentService<ITextEditor>();
if (editor != null) {
Run(editor, editor.Caret.Offset);
}
}

1
src/Main/Base/Project/Src/Editor/IFileDocumentProvider.cs

@ -10,6 +10,7 @@ namespace ICSharpCode.SharpDevelop.Editor @@ -10,6 +10,7 @@ namespace ICSharpCode.SharpDevelop.Editor
/// Interface for view contents that provide a text editor document
/// for one or more <see cref="OpenedFile"/>s.
/// </summary>
[ViewContentService]
public interface IFileDocumentProvider
{
/// <summary>

3
src/Main/Base/Project/Src/Editor/ITextEditor.cs

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

1
src/Main/Base/Project/Src/Gui/ContentInterfaces/IEditable.cs

@ -7,6 +7,7 @@ using System; @@ -7,6 +7,7 @@ using System;
namespace ICSharpCode.SharpDevelop.Gui
{
[ViewContentService]
public interface IEditable
{
/// <summary>

1
src/Main/Base/Project/Src/Gui/ContentInterfaces/IPositionable.cs

@ -8,6 +8,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -8,6 +8,7 @@ namespace ICSharpCode.SharpDevelop.Gui
/// that it's a texteditor which could set the caret to a position inside
/// a file.
/// </summary>
[ViewContentService]
public interface IPositionable
{
/// <summary>

6
src/Main/Base/Project/Src/Gui/Dialogs/GotoDialog.cs

@ -336,11 +336,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -336,11 +336,7 @@ namespace ICSharpCode.SharpDevelop.Gui
ITextEditor GetEditor()
{
IViewContent viewContent = WorkbenchSingleton.Workbench.ActiveViewContent;
if (viewContent is ITextEditorProvider) {
return ((ITextEditorProvider)viewContent).TextEditor;
}
return null;
return SD.GetActiveViewContentService<ITextEditor>();
}
void okButtonClick(object sender, RoutedEventArgs e)

6
src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/ServiceReference/ActiveTextEditors.cs

@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Editor;
namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference
@ -20,9 +21,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference @@ -20,9 +21,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference
ITextEditor GetTextEditor(string fileName)
{
IViewContent viewContent = FileService.GetOpenFile(fileName);
var textEditorProvider = viewContent as ITextEditorProvider;
if (textEditorProvider != null) {
return textEditorProvider.TextEditor;
if (viewContent != null) {
return viewContent.GetService<ITextEditor>();
}
return null;
}

4
src/Main/Base/Project/Src/Gui/Dialogs/WordCountDialog.cs

@ -95,7 +95,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -95,7 +95,7 @@ namespace ICSharpCode.SharpDevelop.Gui
case 0: {// current file
IViewContent viewContent = WorkbenchSingleton.Workbench.ActiveViewContent;
if (viewContent != null) {
IEditable editable = viewContent as IEditable;
IEditable editable = viewContent.GetService<IEditable>();
if (editable == null) {
MessageService.ShowWarning("${res:Dialog.WordCountDialog.IsNotTextFile}");
} else {
@ -109,7 +109,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -109,7 +109,7 @@ namespace ICSharpCode.SharpDevelop.Gui
if (WorkbenchSingleton.Workbench.ViewContentCollection.Count > 0) {
total = new Report(StringParser.Parse("${res:Dialog.WordCountDialog.TotalText}"), 0, 0, 0);
foreach (IViewContent content in WorkbenchSingleton.Workbench.ViewContentCollection) {
IEditable editable = content as IEditable;
IEditable editable = content.GetService<IEditable>();
if (editable != null) {
Report r = GetReport(content, editable.CreateSnapshot().CreateReader());
if (r != null) {

28
src/Main/Base/Project/Src/Gui/Pads/DefinitionViewPad.cs

@ -87,14 +87,19 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -87,14 +87,19 @@ namespace ICSharpCode.SharpDevelop.Gui
Task<ResolveResult> ResolveAtCaretAsync(ParserUpdateStepEventArgs e)
{
IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow;
if (window == null) return Task.FromResult<ResolveResult>(null);
ITextEditorProvider provider = window.ActiveViewContent as ITextEditorProvider;
if (provider == null) return Task.FromResult<ResolveResult>(null);
ITextEditor editor = provider.TextEditor;
if (window == null)
return Task.FromResult<ResolveResult>(null);
IViewContent viewContent = window.ActiveViewContent;
if (viewContent == null)
return Task.FromResult<ResolveResult>(null);
ITextEditor editor = viewContent.GetService<ITextEditor>();
if (editor == null)
return Task.FromResult<ResolveResult>(null);
// e might be null when this is a manually triggered update
// don't resolve when an unrelated file was changed
if (e != null && editor.FileName != e.FileName) return null;
if (e != null && editor.FileName != e.FileName)
return Task.FromResult<ResolveResult>(null);
return SD.ParserService.ResolveAsync(editor.FileName, editor.Caret.Location, editor.Document);
}
@ -121,19 +126,8 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -121,19 +126,8 @@ namespace ICSharpCode.SharpDevelop.Gui
/// </summary>
void LoadFile(string fileName)
{
// Get currently open text editor that matches the filename.
ITextEditor openTextEditor = null;
ITextEditorProvider provider = FileService.GetOpenFile(fileName) as ITextEditorProvider;
if (provider != null) {
openTextEditor = provider.TextEditor;
}
// Load the text into the definition view's text editor.
if (openTextEditor != null) {
ctl.Text = openTextEditor.Document.Text;
} else {
ctl.Load(fileName);
}
ctl.Document = new TextDocument(SD.FileService.GetFileContent(fileName));
currentFileName = fileName;
ctl.SyntaxHighlighting = HighlightingManager.Instance.GetDefinitionByExtension(Path.GetExtension(fileName));
}

12
src/Main/Base/Project/Src/Gui/Pads/TaskList/TaskListPad.cs

@ -95,12 +95,12 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -95,12 +95,12 @@ namespace ICSharpCode.SharpDevelop.Gui
if (isInitialized)
UpdateItems();
ITextEditorProvider provider = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider;
ITextEditor editor = SD.GetActiveViewContentService<ITextEditor>();
if (provider != null) {
if (editor != null) {
// ensure we don't attach multiple times to the same editor
provider.TextEditor.Caret.LocationChanged -= CaretPositionChanged;
provider.TextEditor.Caret.LocationChanged += CaretPositionChanged;
editor.Caret.LocationChanged -= CaretPositionChanged;
editor.Caret.LocationChanged += CaretPositionChanged;
}
}
@ -199,7 +199,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -199,7 +199,7 @@ namespace ICSharpCode.SharpDevelop.Gui
return ProjectService.CurrentProject != null && ProjectService.CurrentProject.FindFile(item.FileName) != null;
case 2:
// All open documents
return WorkbenchSingleton.Workbench.ViewContentCollection.OfType<ITextEditorProvider>().Any(provider => item.FileName == provider.TextEditor.FileName);
return WorkbenchSingleton.Workbench.ViewContentCollection.Select(vc => vc.GetService<ITextEditor>()).Any(editor => editor != null && item.FileName == editor.FileName);
case 3:
// Document
return WorkbenchSingleton.Workbench.ActiveViewContent != null && WorkbenchSingleton.Workbench.ActiveViewContent.PrimaryFileName == item.FileName;
@ -221,7 +221,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -221,7 +221,7 @@ namespace ICSharpCode.SharpDevelop.Gui
IUnresolvedFile parseInfo = SD.ParserService.GetExistingUnresolvedFile(WorkbenchSingleton.Workbench.ActiveViewContent.PrimaryFileName);
if (parseInfo != null) {
IPositionable positionable = WorkbenchSingleton.Workbench.ActiveViewContent as IPositionable;
IPositionable positionable = WorkbenchSingleton.Workbench.ActiveViewContent.GetService<IPositionable>();
if (positionable != null) {
var c = parseInfo.GetInnermostTypeDefinition(positionable.Line, positionable.Column);
if (c != null) return c;

3
src/Main/Base/Project/Src/Gui/Pads/ToolsPad.cs

@ -10,6 +10,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -10,6 +10,7 @@ namespace ICSharpCode.SharpDevelop.Gui
/// <summary>
/// Implement this interface to make your view content display tools in the tool box.
/// </summary>
[ViewContentService]
public interface IToolsHost
{
/// <summary>
@ -39,7 +40,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -39,7 +40,7 @@ namespace ICSharpCode.SharpDevelop.Gui
void WorkbenchActiveContentChanged(object sender, EventArgs e)
{
IToolsHost th = WorkbenchSingleton.Workbench.ActiveViewContent as IToolsHost;
IToolsHost th = SD.GetActiveViewContentService<IToolsHost>();
if (th != null && th.ToolsContent != null) {
contentControl.SetContent(th.ToolsContent, th);
} else {

8
src/Main/Base/Project/Src/Services/Debugger/CurrentLineBookmark.cs

@ -24,9 +24,11 @@ namespace ICSharpCode.SharpDevelop.Debugging @@ -24,9 +24,11 @@ namespace ICSharpCode.SharpDevelop.Debugging
public static void SetPosition(IViewContent viewContent, int markerStartLine, int markerStartColumn, int markerEndLine, int markerEndColumn)
{
ITextEditorProvider tecp = viewContent as ITextEditorProvider;
if (tecp != null) {
SetPosition(tecp.TextEditor.FileName, tecp.TextEditor.Document, markerStartLine, markerStartColumn, markerEndLine, markerEndColumn);
if (viewContent == null)
return;
ITextEditor editor = viewContent.GetService<ITextEditor>();
if (editor != null) {
SetPosition(editor.FileName, editor.Document, markerStartLine, markerStartColumn, markerEndLine, markerEndColumn);
}
}

8
src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs

@ -289,8 +289,12 @@ namespace ICSharpCode.SharpDevelop.Debugging @@ -289,8 +289,12 @@ namespace ICSharpCode.SharpDevelop.Debugging
public static void JumpToCurrentLine(string sourceFullFilename, int startLine, int startColumn, int endLine, int endColumn)
{
IViewContent viewContent = FileService.OpenFile(sourceFullFilename);
if (viewContent is ITextEditorProvider)
((ITextEditorProvider)viewContent).TextEditor.JumpTo(startLine, startColumn);
if (viewContent != null) {
IPositionable positionable = viewContent.GetService<IPositionable>();
if (positionable != null) {
positionable.JumpTo(startLine, startColumn);
}
}
CurrentLineBookmark.SetPosition(viewContent, startLine, startColumn, endLine, endColumn);
}
}

2
src/Main/Base/Project/Src/Services/File/IFileService.cs

@ -44,6 +44,7 @@ namespace ICSharpCode.SharpDevelop @@ -44,6 +44,7 @@ namespace ICSharpCode.SharpDevelop
/// <remarks>
/// This method is thread-safe. This method involves waiting for the main thread, so using it while
/// holding a lock can lead to deadlocks.
/// This method never returns null.
/// </remarks>
ITextSource GetFileContent(FileName fileName);
@ -65,6 +66,7 @@ namespace ICSharpCode.SharpDevelop @@ -65,6 +66,7 @@ namespace ICSharpCode.SharpDevelop
/// </summary>
/// <remarks>
/// This method is thread-safe.
/// This method never returns null.
/// </remarks>
ITextSource GetFileContentFromDisk(FileName fileName, CancellationToken cancellationToken = default(CancellationToken));
#endregion

2
src/Main/Base/Project/Src/Services/File/OpenedFile.cs

@ -348,7 +348,7 @@ namespace ICSharpCode.SharpDevelop @@ -348,7 +348,7 @@ namespace ICSharpCode.SharpDevelop
static Properties GetMemento(IViewContent viewContent)
{
IMementoCapable mementoCapable = viewContent as IMementoCapable;
IMementoCapable mementoCapable = viewContent.GetService<IMementoCapable>();
if (mementoCapable == null) {
return null;
} else {

27
src/Main/Base/Project/Src/Services/SD.cs

@ -58,6 +58,33 @@ namespace ICSharpCode.SharpDevelop @@ -58,6 +58,33 @@ namespace ICSharpCode.SharpDevelop
return ServiceSingleton.ServiceProvider.GetRequiredService<T>();
}
/// <summary>
/// Equivalent to <code>SD.Workbench.ActiveViewContent.GetService&lt;T&gt;()</code>,
/// but does not throw a NullReferenceException when ActiveViewContent is null.
/// (instead, null is returned).
/// </summary>
public static T GetActiveViewContentService<T>() where T : class
{
return (T)GetActiveViewContentService(typeof(T));
}
/// <summary>
/// Equivalent to <code>SD.Workbench.ActiveViewContent.GetService(type)</code>,
/// but does not throw a NullReferenceException when ActiveViewContent is null.
/// (instead, null is returned).
/// </summary>
public static object GetActiveViewContentService(Type type)
{
var workbench = ServiceSingleton.ServiceProvider.GetService(typeof(IWorkbench)) as IWorkbench;
if (workbench != null) {
var activeViewContent = workbench.ActiveViewContent;
if (activeViewContent != null) {
return activeViewContent.GetService(type);
}
}
return null;
}
/// <summary>
/// Gets the workbench.
/// </summary>

3
src/Main/Core/Project/Src/Services/PropertyService/Properties.cs

@ -21,6 +21,9 @@ namespace ICSharpCode.Core @@ -21,6 +21,9 @@ namespace ICSharpCode.Core
/// and set from a object from the same class.
/// This is used to save and restore the state of GUI objects.
/// </summary>
/// <remarks>
/// This interface is used as a [ViewContentService]
/// </remarks>
public interface IMementoCapable
{
/// <summary>

8
src/Main/SharpDevelop/Sda/Document.cs

@ -15,9 +15,11 @@ namespace ICSharpCode.SharpDevelop.Sda @@ -15,9 +15,11 @@ namespace ICSharpCode.SharpDevelop.Sda
{
internal static Document FromWindow(IViewContent viewContent)
{
ITextEditorProvider editable = viewContent as ITextEditorProvider;
if (editable != null) {
return new Document(viewContent, editable.TextEditor.PrimaryView.Document);
if (viewContent == null)
return null;
ITextEditor editor = viewContent.GetService(typeof(ITextEditor)) as ITextEditor;
if (editor != null) {
return new Document(viewContent, editor.Document);
} else {
return null;
}

4
src/Main/SharpDevelop/Workbench/WpfWorkbench.cs

@ -493,7 +493,7 @@ namespace ICSharpCode.SharpDevelop.Workbench @@ -493,7 +493,7 @@ namespace ICSharpCode.SharpDevelop.Workbench
/// </summary>
public void StoreMemento(IViewContent viewContent)
{
IMementoCapable mementoCapable = viewContent as IMementoCapable;
IMementoCapable mementoCapable = viewContent.GetService<IMementoCapable>();
if (mementoCapable != null && LoadDocumentProperties) {
if (viewContent.PrimaryFileName == null)
return;
@ -510,7 +510,7 @@ namespace ICSharpCode.SharpDevelop.Workbench @@ -510,7 +510,7 @@ namespace ICSharpCode.SharpDevelop.Workbench
void LoadViewContentMemento(IViewContent viewContent)
{
IMementoCapable mementoCapable = viewContent as IMementoCapable;
IMementoCapable mementoCapable = viewContent.GetService<IMementoCapable>();
if (mementoCapable != null && LoadDocumentProperties) {
if (viewContent.PrimaryFileName == null)
return;

Loading…
Cancel
Save