Beispiel #1
0
 private void Acts_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
 {
     if (e.PropertyName == "CurrentItem")
     {
         // since we can get event while GingerRunner is on another thread we need dispatcher
         ActionsListBox.Dispatcher.Invoke(() => {
             ActionsListBox.SelectedItem = mActivity.Acts.CurrentItem;
             ActionsListBox.Refresh();
         });
     }
 }
Beispiel #2
0
        private void InputBox_OnPreviewKeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Return)
            {
                if (_mainWindowViewModel.SelectedAction == null)
                {
                    _mainWindowViewModel.ExecuteActionWhenAvailable = true;
                }
                else
                {
                    if ((e.KeyStates & KeyStates.Down) == KeyStates.Down)
                    {
                        _mainWindowViewModel.ExecuteSelectedAction();
                    }
                }

                return;
            }

            if (e.Key == Key.Tab)
            {
                e.Handled = true;

                if (_mainWindowViewModel.SelectedAction == null)
                {
                    if (string.IsNullOrEmpty(_mainWindowViewModel.Query))
                    {
                        _mainWindowViewModel.UpdateActions();
                    }
                }
                else
                {
                    _mainWindowViewModel.AccumulatedActions.Add(_mainWindowViewModel.SelectedAction.Action);
                    _mainWindowViewModel.PreviousQueries.Push(_mainWindowViewModel.Query);
                    _mainWindowViewModel.Query = string.Empty;
                }

                return;
            }

            if (e.Key == Key.Back && string.IsNullOrEmpty(_mainWindowViewModel.Query) && _mainWindowViewModel.AccumulatedActions.Count > 0)
            {
                _mainWindowViewModel.AccumulatedActions.RemoveAt(_mainWindowViewModel.AccumulatedActions.Count - 1);

                if (_mainWindowViewModel.PreviousQueries.Count > 0)
                {
                    _mainWindowViewModel.Query = _mainWindowViewModel.PreviousQueries.Pop();
                    InputBox.SelectionStart    = InputBox.Text.Length;
                }

                _mainWindowViewModel.UpdateActions();

                e.Handled = true;

                return;
            }

            if (e.Key == Key.Escape)
            {
                HideMe();

                return;
            }

            var itemCount = _mainWindowViewModel.Actions.Count;

            if (itemCount > 0)
            {
                int index;

                if (e.Key == Key.Down)
                {
                    index = ActionsListBox.SelectedIndex + 1;
                }
                else if (e.Key == Key.Up)
                {
                    index = ActionsListBox.SelectedIndex - 1;
                }
                else
                {
                    return;
                }

                if (index < 0)
                {
                    index += itemCount;
                }

                ActionsListBox.SelectedIndex = index % itemCount;
                ActionsListBox.ScrollIntoView(_mainWindowViewModel.SelectedAction);
            }
        }