aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/MainView.xaml.cs
blob: ab181e8dcdb76c8202152e437734cc7159a628dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Tango.SharedUI;

namespace Tango.MachineStudio.Developer.Views
{
    /// <summary>
    /// Interaction logic for DeveloperView.xaml
    /// </summary>
    public partial class MainView : UserControl, IMainView
    {
        private bool _loaded;
        public static MainView Instance { get; set; }

        public MainView()
        {
            InitializeComponent();
            Instance = this;

            Loaded += (x, y) => 
            {
                if (!_loaded)
                {
                    _loaded = true;
                    ViewAttached?.Invoke(this, this);
                }
            };
        }

        public event EventHandler<IView> ViewAttached;
    }
}
lass="w"> RoutedCommand( "FindPrevious", typeof(SearchPanel), new InputGestureCollection { new KeyGesture(Key.F3, ModifierKeys.Shift) } ); /// <summary> /// Closes the SearchPanel. /// </summary> public static readonly RoutedCommand CloseSearchPanel = new RoutedCommand( "CloseSearchPanel", typeof(SearchPanel), new InputGestureCollection { new KeyGesture(Key.Escape) } ); } /// <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) { RegisterCommands(this.CommandBindings); panel = new SearchPanel(); panel.Attach(TextArea); } void RegisterCommands(ICollection<CommandBinding> 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(); } /// <summary> /// Fired when SearchOptions are modified inside the SearchPanel. /// </summary> public event EventHandler<SearchOptionsChangedEventArgs> SearchOptionsChanged { add { panel.SearchOptionsChanged += value; } remove { panel.SearchOptionsChanged -= value; } } } }