From fc8a05358a92cc3c77c5f1e30d536807ef0614fd Mon Sep 17 00:00:00 2001 From: Victoria Plitt Date: Mon, 8 Apr 2019 13:49:55 +0300 Subject: were added scripting projects --- .../Search/SearchCommands.cs | 105 +++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Search/SearchCommands.cs (limited to 'Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Search/SearchCommands.cs') diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Search/SearchCommands.cs b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Search/SearchCommands.cs new file mode 100644 index 000000000..4bb102e21 --- /dev/null +++ b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Search/SearchCommands.cs @@ -0,0 +1,105 @@ +// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) +// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Threading; +using Tango.Scripting.Editors.Document; +using Tango.Scripting.Editors.Editing; +using Tango.Scripting.Editors.Rendering; + +namespace Tango.Scripting.Editors.Search +{ + /// + /// Search commands for AvalonEdit. + /// + public static class SearchCommands + { + /// + /// Finds the next occurrence in the file. + /// + public static readonly RoutedCommand FindNext = new RoutedCommand( + "FindNext", typeof(SearchPanel), + new InputGestureCollection { new KeyGesture(Key.F3) } + ); + + /// + /// Finds the previous occurrence in the file. + /// + public static readonly RoutedCommand FindPrevious = new RoutedCommand( + "FindPrevious", typeof(SearchPanel), + new InputGestureCollection { new KeyGesture(Key.F3, ModifierKeys.Shift) } + ); + + /// + /// Closes the SearchPanel. + /// + public static readonly RoutedCommand CloseSearchPanel = new RoutedCommand( + "CloseSearchPanel", typeof(SearchPanel), + new InputGestureCollection { new KeyGesture(Key.Escape) } + ); + } + + /// + /// TextAreaInputHandler that registers all search-related commands. + /// + public class SearchInputHandler : TextAreaInputHandler + { + /// + /// Creates a new SearchInputHandler and registers the search-related commands. + /// + public SearchInputHandler(TextArea textArea) + : base(textArea) + { + RegisterCommands(this.CommandBindings); + panel = new SearchPanel(); + panel.Attach(TextArea); + } + + void RegisterCommands(ICollection commandBindings) + { + commandBindings.Add(new CommandBinding(ApplicationCommands.Find, ExecuteFind)); + commandBindings.Add(new CommandBinding(SearchCommands.FindNext, ExecuteFindNext)); + commandBindings.Add(new CommandBinding(SearchCommands.FindPrevious, ExecuteFindPrevious)); + commandBindings.Add(new CommandBinding(SearchCommands.CloseSearchPanel, ExecuteCloseSearchPanel)); + } + + SearchPanel panel; + + void ExecuteFind(object sender, ExecutedRoutedEventArgs e) + { + panel.Open(); + if (!(TextArea.Selection.IsEmpty || TextArea.Selection.IsMultiline)) + panel.SearchPattern = TextArea.Selection.GetText(); + Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Input, (Action)delegate { panel.Reactivate(); }); + } + + void ExecuteFindNext(object sender, ExecutedRoutedEventArgs e) + { + panel.FindNext(); + } + + void ExecuteFindPrevious(object sender, ExecutedRoutedEventArgs e) + { + panel.FindPrevious(); + } + + void ExecuteCloseSearchPanel(object sender, ExecutedRoutedEventArgs e) + { + panel.Close(); + } + + /// + /// Fired when SearchOptions are modified inside the SearchPanel. + /// + public event EventHandler SearchOptionsChanged { + add { panel.SearchOptionsChanged += value; } + remove { panel.SearchOptionsChanged -= value; } + } + } +} -- cgit v1.3.1