Browse Source

remove search commands from the TextAreaDefaultInputHandlers; register SearchInputHandler manually -> we don't want Ctrl+F in every AE instance (e.g. Condition-Field in BreakpointsPad)

pull/23/head
Siegfried Pammer 14 years ago
parent
commit
713e43efc7
  1. 3
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs
  2. 27
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/TextAreaDefaultInputHandlers.cs
  3. 40
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Search/SearchCommands.cs

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

@ -13,12 +13,12 @@ using System.Windows.Controls;
using System.Windows.Data; using System.Windows.Data;
using System.Windows.Input; using System.Windows.Input;
using System.Windows.Threading; using System.Windows.Threading;
using ICSharpCode.AvalonEdit.AddIn.Options; using ICSharpCode.AvalonEdit.AddIn.Options;
using ICSharpCode.AvalonEdit.Document; using ICSharpCode.AvalonEdit.Document;
using ICSharpCode.AvalonEdit.Editing; using ICSharpCode.AvalonEdit.Editing;
using ICSharpCode.AvalonEdit.Highlighting; using ICSharpCode.AvalonEdit.Highlighting;
using ICSharpCode.AvalonEdit.Rendering; using ICSharpCode.AvalonEdit.Rendering;
using ICSharpCode.AvalonEdit.Search;
using ICSharpCode.AvalonEdit.Utils; using ICSharpCode.AvalonEdit.Utils;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.Core.Presentation; using ICSharpCode.Core.Presentation;
@ -206,6 +206,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
codeEditorView.TextArea.Caret.PositionChanged += TextAreaCaretPositionChanged; codeEditorView.TextArea.Caret.PositionChanged += TextAreaCaretPositionChanged;
codeEditorView.TextArea.DefaultInputHandler.CommandBindings.Add( codeEditorView.TextArea.DefaultInputHandler.CommandBindings.Add(
new CommandBinding(CustomCommands.CtrlSpaceCompletion, OnCodeCompletion)); new CommandBinding(CustomCommands.CtrlSpaceCompletion, OnCodeCompletion));
codeEditorView.TextArea.DefaultInputHandler.NestedInputHandlers.Add(new SearchInputHandler(codeEditorView.TextArea));
textView.BackgroundRenderers.Add(textMarkerService); textView.BackgroundRenderers.Add(textMarkerService);
textView.LineTransformers.Add(textMarkerService); textView.LineTransformers.Add(textMarkerService);

27
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/TextAreaDefaultInputHandlers.cs

@ -7,7 +7,6 @@ using System.Windows;
using System.Windows.Input; using System.Windows.Input;
using ICSharpCode.AvalonEdit.Document; using ICSharpCode.AvalonEdit.Document;
using ICSharpCode.AvalonEdit.Search;
namespace ICSharpCode.AvalonEdit.Editing namespace ICSharpCode.AvalonEdit.Editing
{ {
@ -42,9 +41,6 @@ namespace ICSharpCode.AvalonEdit.Editing
this.CommandBindings.Add(new CommandBinding(ApplicationCommands.Undo, ExecuteUndo, CanExecuteUndo)); this.CommandBindings.Add(new CommandBinding(ApplicationCommands.Undo, ExecuteUndo, CanExecuteUndo));
this.CommandBindings.Add(new CommandBinding(ApplicationCommands.Redo, ExecuteRedo, CanExecuteRedo)); this.CommandBindings.Add(new CommandBinding(ApplicationCommands.Redo, ExecuteRedo, CanExecuteRedo));
this.CommandBindings.Add(new CommandBinding(ApplicationCommands.Find, ExecuteFind));
this.CommandBindings.Add(new CommandBinding(SearchCommands.FindNext, ExecuteFindNext));
this.CommandBindings.Add(new CommandBinding(SearchCommands.FindPrevious, ExecuteFindPrevious));
} }
internal static KeyBinding CreateFrozenKeyBinding(ICommand command, ModifierKeys modifiers, Key key) internal static KeyBinding CreateFrozenKeyBinding(ICommand command, ModifierKeys modifiers, Key key)
@ -110,28 +106,5 @@ namespace ICSharpCode.AvalonEdit.Editing
} }
} }
#endregion #endregion
void ExecuteFind(object sender, ExecutedRoutedEventArgs e)
{
var panel = TextArea.TextView.Layers.OfType<SearchPanel>().FirstOrDefault();
if (panel == null)
new SearchPanel(TextArea);
else
panel.Reactivate();
}
void ExecuteFindNext(object sender, ExecutedRoutedEventArgs e)
{
var panel = TextArea.TextView.Layers.OfType<SearchPanel>().FirstOrDefault();
if (panel != null)
panel.FindNext();
}
void ExecuteFindPrevious(object sender, ExecutedRoutedEventArgs e)
{
var panel = TextArea.TextView.Layers.OfType<SearchPanel>().FirstOrDefault();
if (panel != null)
panel.FindPrevious();
}
} }
} }

40
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Search/SearchCommands.cs

@ -35,4 +35,44 @@ namespace ICSharpCode.AvalonEdit.Search
new InputGestureCollection { new KeyGesture(Key.F3, ModifierKeys.Shift) } new InputGestureCollection { new KeyGesture(Key.F3, ModifierKeys.Shift) }
); );
} }
/// <summary>
/// TextAreaInputHandler that registers all search-related commands.
/// </summary>
public class SearchInputHandler : TextAreaInputHandler
{
/// <summary>
/// Creates a new SearchInputHandler and registers the search-related commands.
/// </summary>
public SearchInputHandler(TextArea textArea)
: base(textArea)
{
this.CommandBindings.Add(new CommandBinding(ApplicationCommands.Find, ExecuteFind));
this.CommandBindings.Add(new CommandBinding(SearchCommands.FindNext, ExecuteFindNext));
this.CommandBindings.Add(new CommandBinding(SearchCommands.FindPrevious, ExecuteFindPrevious));
}
void ExecuteFind(object sender, ExecutedRoutedEventArgs e)
{
var panel = TextArea.TextView.Layers.OfType<SearchPanel>().FirstOrDefault();
if (panel == null)
new SearchPanel(TextArea);
else
panel.Reactivate();
}
void ExecuteFindNext(object sender, ExecutedRoutedEventArgs e)
{
var panel = TextArea.TextView.Layers.OfType<SearchPanel>().FirstOrDefault();
if (panel != null)
panel.FindNext();
}
void ExecuteFindPrevious(object sender, ExecutedRoutedEventArgs e)
{
var panel = TextArea.TextView.Layers.OfType<SearchPanel>().FirstOrDefault();
if (panel != null)
panel.FindPrevious();
}
}
} }

Loading…
Cancel
Save