From 4fcb17dd971ec06eb5bfb70439d82b9d10116278 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Thu, 18 Jul 2013 21:43:43 +0200 Subject: [PATCH] move IEditable implementation to CodeEditor --- .../Src/ScriptingTextEditorViewContent.cs | 4 ++-- .../Src/AvalonEditViewContent.cs | 18 +---------------- .../AvalonEdit.AddIn/Src/CodeEditor.cs | 20 +++++++++++++++++-- .../WpfDesign.AddIn/Src/WpfDisplayBinding.cs | 2 +- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/AddIns/BackendBindings/Scripting/Project/Src/ScriptingTextEditorViewContent.cs b/src/AddIns/BackendBindings/Scripting/Project/Src/ScriptingTextEditorViewContent.cs index 64007d5cde..8774549594 100644 --- a/src/AddIns/BackendBindings/Scripting/Project/Src/ScriptingTextEditorViewContent.cs +++ b/src/AddIns/BackendBindings/Scripting/Project/Src/ScriptingTextEditorViewContent.cs @@ -29,8 +29,8 @@ namespace ICSharpCode.Scripting void Init(IViewContent view) { this.view = view; - editable = view as IEditable; - textEditor = view.GetService(typeof(ITextEditor)) as ITextEditor; + editable = view.GetService(); + textEditor = view.GetService(); textEditorOptions = textEditor.Options; } diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs index 52e1a449ae..1f6f81afa6 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs @@ -32,7 +32,7 @@ namespace ICSharpCode.AvalonEdit.AddIn } public class AvalonEditViewContent - : AbstractViewContent, IEditable, IMementoCapable, ICodeEditorProvider, IPositionable, IToolsHost + : AbstractViewContent, IMementoCapable, ICodeEditorProvider, IPositionable, IToolsHost { readonly CodeEditor codeEditor = new CodeEditor(); IAnalyticsMonitorTrackedFeature trackedFeature; @@ -294,22 +294,6 @@ namespace ICSharpCode.AvalonEdit.AddIn return "[" + GetType().Name + " " + this.PrimaryFileName + "]"; } - #region IEditable - public ITextSource CreateSnapshot() - { - return codeEditor.Document.CreateSnapshot(); - } - - /// - /// Gets the document text. - /// - public string Text { - get { - return codeEditor.Document.Text; - } - } - #endregion - #region IMementoCapable public Properties CreateMemento() { diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs index 7bfb0efae6..230f4a18b0 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs @@ -38,14 +38,13 @@ namespace ICSharpCode.AvalonEdit.AddIn /// Also provides support for Split-View (showing two AvalonEdit instances using the same TextDocument) /// [TextEditorService, ViewContentService] - public class CodeEditor : Grid, IDisposable + public class CodeEditor : Grid, IDisposable, ICSharpCode.SharpDevelop.Gui.IEditable { const string contextMenuPath = "/SharpDevelop/ViewContent/AvalonEdit/ContextMenu"; QuickClassBrowser quickClassBrowser; readonly CodeEditorView primaryTextEditor; readonly CodeEditorAdapter primaryTextEditorAdapter; - GridSplitter gridSplitter; readonly IconBarManager iconBarManager; readonly TextMarkerService textMarkerService; readonly IChangeWatcher changeWatcher; @@ -205,6 +204,7 @@ namespace ICSharpCode.AvalonEdit.AddIn TextView textView = codeEditorView.TextArea.TextView; textView.Services.AddService(typeof(ITextEditor), adapter); textView.Services.AddService(typeof(CodeEditor), this); + textView.Services.AddService(typeof(ICSharpCode.SharpDevelop.Gui.IEditable), this); codeEditorView.TextArea.TextEntering += TextAreaTextEntering; codeEditorView.TextArea.TextEntered += TextAreaTextEntered; @@ -392,6 +392,22 @@ namespace ICSharpCode.AvalonEdit.AddIn } } + #region IEditable + public ITextSource CreateSnapshot() + { + return this.Document.CreateSnapshot(); + } + + /// + /// Gets the document text. + /// + public string Text { + get { + return this.Document.Text; + } + } + #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/WpfDesign/WpfDesign.AddIn/Src/WpfDisplayBinding.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfDisplayBinding.cs index 93ac02c450..b86bf70870 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfDisplayBinding.cs +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfDisplayBinding.cs @@ -45,7 +45,7 @@ namespace ICSharpCode.WpfDesign.AddIn public bool CanAttachTo(IViewContent content) { if (Path.GetExtension(content.PrimaryFileName).Equals(".xaml", StringComparison.OrdinalIgnoreCase)) { - IEditable editable = content as IEditable; + IEditable editable = content.GetService(); if (editable != null) { try { XmlTextReader r = new XmlTextReader(editable.CreateSnapshot().CreateReader());