Browse Source

move IEditable implementation to CodeEditor

pull/48/merge
Siegfried Pammer 12 years ago
parent
commit
4fcb17dd97
  1. 4
      src/AddIns/BackendBindings/Scripting/Project/Src/ScriptingTextEditorViewContent.cs
  2. 18
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs
  3. 20
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs
  4. 2
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfDisplayBinding.cs

4
src/AddIns/BackendBindings/Scripting/Project/Src/ScriptingTextEditorViewContent.cs

@ -29,8 +29,8 @@ namespace ICSharpCode.Scripting
void Init(IViewContent view) void Init(IViewContent view)
{ {
this.view = view; this.view = view;
editable = view as IEditable; editable = view.GetService<IEditable>();
textEditor = view.GetService(typeof(ITextEditor)) as ITextEditor; textEditor = view.GetService<ITextEditor>();
textEditorOptions = textEditor.Options; textEditorOptions = textEditor.Options;
} }

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

@ -32,7 +32,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
} }
public class AvalonEditViewContent public class AvalonEditViewContent
: AbstractViewContent, IEditable, IMementoCapable, ICodeEditorProvider, IPositionable, IToolsHost : AbstractViewContent, IMementoCapable, ICodeEditorProvider, IPositionable, IToolsHost
{ {
readonly CodeEditor codeEditor = new CodeEditor(); readonly CodeEditor codeEditor = new CodeEditor();
IAnalyticsMonitorTrackedFeature trackedFeature; IAnalyticsMonitorTrackedFeature trackedFeature;
@ -294,22 +294,6 @@ namespace ICSharpCode.AvalonEdit.AddIn
return "[" + GetType().Name + " " + this.PrimaryFileName + "]"; return "[" + GetType().Name + " " + this.PrimaryFileName + "]";
} }
#region IEditable
public ITextSource CreateSnapshot()
{
return codeEditor.Document.CreateSnapshot();
}
/// <summary>
/// Gets the document text.
/// </summary>
public string Text {
get {
return codeEditor.Document.Text;
}
}
#endregion
#region IMementoCapable #region IMementoCapable
public Properties CreateMemento() public Properties CreateMemento()
{ {

20
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) /// Also provides support for Split-View (showing two AvalonEdit instances using the same TextDocument)
/// </summary> /// </summary>
[TextEditorService, ViewContentService] [TextEditorService, ViewContentService]
public class CodeEditor : Grid, IDisposable public class CodeEditor : Grid, IDisposable, ICSharpCode.SharpDevelop.Gui.IEditable
{ {
const string contextMenuPath = "/SharpDevelop/ViewContent/AvalonEdit/ContextMenu"; const string contextMenuPath = "/SharpDevelop/ViewContent/AvalonEdit/ContextMenu";
QuickClassBrowser quickClassBrowser; QuickClassBrowser quickClassBrowser;
readonly CodeEditorView primaryTextEditor; readonly CodeEditorView primaryTextEditor;
readonly CodeEditorAdapter primaryTextEditorAdapter; readonly CodeEditorAdapter primaryTextEditorAdapter;
GridSplitter gridSplitter;
readonly IconBarManager iconBarManager; readonly IconBarManager iconBarManager;
readonly TextMarkerService textMarkerService; readonly TextMarkerService textMarkerService;
readonly IChangeWatcher changeWatcher; readonly IChangeWatcher changeWatcher;
@ -205,6 +204,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
TextView textView = codeEditorView.TextArea.TextView; TextView textView = codeEditorView.TextArea.TextView;
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);
codeEditorView.TextArea.TextEntering += TextAreaTextEntering; codeEditorView.TextArea.TextEntering += TextAreaTextEntering;
codeEditorView.TextArea.TextEntered += TextAreaTextEntered; codeEditorView.TextArea.TextEntered += TextAreaTextEntered;
@ -392,6 +392,22 @@ namespace ICSharpCode.AvalonEdit.AddIn
} }
} }
#region IEditable
public ITextSource CreateSnapshot()
{
return this.Document.CreateSnapshot();
}
/// <summary>
/// Gets the document text.
/// </summary>
public string Text {
get {
return this.Document.Text;
}
}
#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

2
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfDisplayBinding.cs

@ -45,7 +45,7 @@ namespace ICSharpCode.WpfDesign.AddIn
public bool CanAttachTo(IViewContent content) public bool CanAttachTo(IViewContent content)
{ {
if (Path.GetExtension(content.PrimaryFileName).Equals(".xaml", StringComparison.OrdinalIgnoreCase)) { if (Path.GetExtension(content.PrimaryFileName).Equals(".xaml", StringComparison.OrdinalIgnoreCase)) {
IEditable editable = content as IEditable; IEditable editable = content.GetService<IEditable>();
if (editable != null) { if (editable != null) {
try { try {
XmlTextReader r = new XmlTextReader(editable.CreateSnapshot().CreateReader()); XmlTextReader r = new XmlTextReader(editable.CreateSnapshot().CreateReader());

Loading…
Cancel
Save