From 871e875ad0aa8ad93ac181739d139fa2c050edbb Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sun, 26 Jul 2009 12:50:48 +0000 Subject: [PATCH] Add "ITextEditor.PrimaryView" property to allow language bindings to detect split-views. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@4546 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../AvalonEdit.AddIn/Src/CodeEditor.cs | 8 +++++--- .../AvalonEdit.AddIn/Src/CodeEditorAdapter.cs | 6 +++++- .../ICSharpCode.TreeView.Demo.csproj | 4 ++-- .../AvalonEdit/AvalonEditTextEditorAdapter.cs | 6 ++++++ .../Base/Project/Src/Editor/ITextEditor.cs | 18 ++++++++++++++++++ .../Src/TextEditor/Gui/TextEditorAdapter.cs | 6 ++++++ 6 files changed, 42 insertions(+), 6 deletions(-) diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs index f83a0b1942..55a3057cb5 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs @@ -35,6 +35,7 @@ namespace ICSharpCode.AvalonEdit.AddIn { /// /// Integrates AvalonEdit with SharpDevelop. + /// Also provides support for Split-View (showing two AvalonEdit instances using the same TextDocument) /// public class CodeEditor : Grid { @@ -85,8 +86,11 @@ namespace ICSharpCode.AvalonEdit.AddIn get { return primaryTextEditorAdapter.Document; } } + public ITextEditor PrimaryTextEditorAdapter { + get { return primaryTextEditorAdapter; } + } - public CodeEditorAdapter ActiveTextEditorAdapter { + public ITextEditor ActiveTextEditorAdapter { get { return GetAdapter(this.ActiveTextEditor); } } @@ -234,8 +238,6 @@ namespace ICSharpCode.AvalonEdit.AddIn secondaryTextEditor.SetBinding(TextEditor.DocumentProperty, new Binding(TextEditor.DocumentProperty.Name) { Source = primaryTextEditor }); - secondaryTextEditor.TextArea.SetBinding(TextArea.IndentationStrategyProperty, - new Binding(TextArea.IndentationStrategyProperty.Name) { Source = primaryTextEditor.TextArea }); secondaryTextEditor.SyntaxHighlighting = primaryTextEditor.SyntaxHighlighting; SetRow(secondaryTextEditor, 2); diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorAdapter.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorAdapter.cs index 3088674165..96e02823ca 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorAdapter.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorAdapter.cs @@ -19,7 +19,7 @@ namespace ICSharpCode.AvalonEdit.AddIn /// /// Wraps the CodeEditor class to provide the ITextEditor interface. /// - public class CodeEditorAdapter : AvalonEditTextEditorAdapter + sealed class CodeEditorAdapter : AvalonEditTextEditorAdapter { readonly CodeEditor codeEditor; @@ -88,5 +88,9 @@ namespace ICSharpCode.AvalonEdit.AddIn public override IInsightWindow ActiveInsightWindow { get { return codeEditor.ActiveInsightWindow; } } + + public override ITextEditor PrimaryView { + get { return codeEditor.PrimaryTextEditorAdapter; } + } } } diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/ICSharpCode.TreeView.Demo.csproj b/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/ICSharpCode.TreeView.Demo.csproj index 2032f2470f..128aea42a8 100644 --- a/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/ICSharpCode.TreeView.Demo.csproj +++ b/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/ICSharpCode.TreeView.Demo.csproj @@ -1,5 +1,5 @@  - + Debug AnyCPU @@ -10,7 +10,7 @@ Properties ICSharpCode.TreeView.Demo ICSharpCode.TreeView.Demo - v3.5 + v4.0 512 {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 4 diff --git a/src/Main/Base/Project/Src/Editor/AvalonEdit/AvalonEditTextEditorAdapter.cs b/src/Main/Base/Project/Src/Editor/AvalonEdit/AvalonEditTextEditorAdapter.cs index 295ac7a6a2..3f1bf35d67 100644 --- a/src/Main/Base/Project/Src/Editor/AvalonEdit/AvalonEditTextEditorAdapter.cs +++ b/src/Main/Base/Project/Src/Editor/AvalonEdit/AvalonEditTextEditorAdapter.cs @@ -223,5 +223,11 @@ namespace ICSharpCode.SharpDevelop.Editor.AvalonEdit { return null; } + + public virtual ITextEditor PrimaryView { + get { + return this; + } + } } } diff --git a/src/Main/Base/Project/Src/Editor/ITextEditor.cs b/src/Main/Base/Project/Src/Editor/ITextEditor.cs index 09741eea29..44bc3dbe73 100644 --- a/src/Main/Base/Project/Src/Editor/ITextEditor.cs +++ b/src/Main/Base/Project/Src/Editor/ITextEditor.cs @@ -26,8 +26,26 @@ namespace ICSharpCode.SharpDevelop.Editor /// public interface ITextEditor : IServiceProvider { + /// + /// Gets the primary view if split-view is active. + /// If split-view is disabled, the current ITextEditor instance is returned. + /// + /// bool isSecondaryView = (editor != editor.PrimaryView); + ITextEditor PrimaryView { get; } + + /// + /// Gets the document that is being edited. + /// IDocument Document { get; } + + /// + /// Gets an object that represents the caret inside this text editor. + /// ITextEditorCaret Caret { get; } + + /// + /// Gets the set of options used in the text editor. + /// ITextEditorOptions Options { get; } ILanguageBinding Language { get; } diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/TextEditorAdapter.cs b/src/Main/Base/Project/Src/TextEditor/Gui/TextEditorAdapter.cs index f1e8127027..c4344f536a 100644 --- a/src/Main/Base/Project/Src/TextEditor/Gui/TextEditorAdapter.cs +++ b/src/Main/Base/Project/Src/TextEditor/Gui/TextEditorAdapter.cs @@ -250,6 +250,12 @@ namespace ICSharpCode.SharpDevelop throw new NotImplementedException(); } } + + public ITextEditor PrimaryView { + get { + return this; + } + } } sealed class CompletionItemListAdapter : ICompletionDataProvider