Browse Source

Added AutomationPeer for AvalonEdit TextEditor. Based on patch by Amir Tuval.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@4232 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 16 years ago
parent
commit
4d8bde1e77
  1. 4
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/ICSharpCode.AvalonEdit.csproj
  2. 20
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/TextEditor.cs
  3. 61
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/TextEditorAutomationPeer.cs

4
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/ICSharpCode.AvalonEdit.csproj

@ -65,6 +65,9 @@ @@ -65,6 +65,9 @@
<Reference Include="System.Xml.Linq">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="UIAutomationProvider">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference>
<Reference Include="WindowsBase">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference>
@ -261,6 +264,7 @@ @@ -261,6 +264,7 @@
<DependentUpon>VisualLine.cs</DependentUpon>
</Compile>
<Compile Include="TextEditor.cs" />
<Compile Include="TextEditorAutomationPeer.cs" />
<Compile Include="TextEditorComponent.cs">
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />

20
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/TextEditor.cs

@ -5,22 +5,20 @@ @@ -5,22 +5,20 @@
// <version>$Revision$</version>
// </file>
using ICSharpCode.AvalonEdit.Rendering;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Input;
using System.Windows.Markup;
using ICSharpCode.AvalonEdit.CodeCompletion;
using ICSharpCode.AvalonEdit.Document;
using ICSharpCode.AvalonEdit.Editing;
using ICSharpCode.AvalonEdit.Highlighting;
using ICSharpCode.AvalonEdit.Rendering;
using ICSharpCode.AvalonEdit.Utils;
namespace ICSharpCode.AvalonEdit
@ -64,6 +62,12 @@ namespace ICSharpCode.AvalonEdit @@ -64,6 +62,12 @@ namespace ICSharpCode.AvalonEdit
textArea.SetBinding(TextArea.OptionsProperty, new Binding(OptionsProperty.Name) { Source = this });
}
/// <inheritdoc/>
protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutomationPeer()
{
return new TextEditorAutomationPeer(this);
}
// Forward focus to TextArea.
/// <inheritdoc/>
protected override void OnGotKeyboardFocus(KeyboardFocusChangedEventArgs e)
@ -255,6 +259,14 @@ namespace ICSharpCode.AvalonEdit @@ -255,6 +259,14 @@ namespace ICSharpCode.AvalonEdit
}
}
/// <summary>
/// Gets the scroll viewer used by the text editor.
/// This property can return null if the template has not been applied / does not contain a scroll viewer.
/// </summary>
internal ScrollViewer ScrollViewer {
get { return scrollViewer; }
}
bool CanExecute(RoutedUICommand command)
{
TextArea textArea = this.TextArea;

61
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/TextEditorAutomationPeer.cs

@ -0,0 +1,61 @@ @@ -0,0 +1,61 @@
/*
* Created by SharpDevelop.
* User: Daniel
* Date: 04.06.2009
* Time: 20:46
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Windows.Automation.Peers;
using System.Windows.Automation.Provider;
using System.Windows.Controls;
namespace ICSharpCode.AvalonEdit
{
/// <summary>
/// Exposes <see cref="TextEditor"/> to automation.
/// </summary>
public class TextEditorAutomationPeer : FrameworkElementAutomationPeer, IValueProvider
{
/// <summary>
/// Creates a new TextEditorAutomationPeer instance.
/// </summary>
public TextEditorAutomationPeer(TextEditor owner) : base(owner)
{
}
private TextEditor TextEditor {
get { return (TextEditor)base.Owner; }
}
void IValueProvider.SetValue(string value)
{
this.TextEditor.Text = value;
}
string IValueProvider.Value {
get { return this.TextEditor.Text; }
}
bool IValueProvider.IsReadOnly {
get { return false; }
}
/// <inheritdoc/>
public override object GetPattern(PatternInterface patternInterface)
{
if (patternInterface == PatternInterface.Value)
return this;
if (patternInterface == PatternInterface.Scroll) {
ScrollViewer scrollViewer = this.TextEditor.ScrollViewer;
if (scrollViewer != null)
return UIElementAutomationPeer.CreatePeerForElement(scrollViewer);
}
return base.GetPattern(patternInterface);
}
}
}
Loading…
Cancel
Save