コード例 #1
0
        public void Rebuild()
        {
            //string docName = "UNKNOWN";
            //if (_textView.TextBuffer.Properties.TryGetProperty<ITextDocument>(typeof(ITextDocument), out var textDoc))
            //{
            //    docName = System.IO.Path.GetFileName(textDoc.FilePath);
            //}
            //Logger.Log($"Rebuilding keyboard handler for {docName}");

            var moveCaret = new KeyboardSequenceDetector(
                new DateTimeClock(),
                () => MoveCaret?.Invoke(),
                new[]
            {
                new KeyFrame(_settings.MoveCaretKey, true, 0),
                new KeyFrame(_settings.MoveCaretKey, false, _settings.DoubleTapReleaseTimeMs),
                new KeyFrame(_settings.MoveCaretKey, true, _settings.DoubleTapIntervalTimeMs),
                new KeyFrame(_settings.MoveCaretKey, false, _settings.DoubleTapReleaseTimeMs),
            });

            var startScroll = new KeyboardSequenceDetector(
                new DateTimeClock(),
                () =>
            {
                if (_scrollState != ScrollRequest.Start)
                {
                    _scrollState = ScrollRequest.Start;
                    UpdateScroll?.Invoke(ScrollRequest.Start);
                }
            },
                new[]
            {
                new KeyFrame(_settings.ScrollKey, true, 0),
                new KeyFrame(_settings.ScrollKey, false, _settings.DoubleTapReleaseTimeMs),
                new KeyFrame(_settings.ScrollKey, true, _settings.DoubleTapIntervalTimeMs),
                new KeyFrame(_settings.ScrollKey, true, _settings.DoubleTapHoldTimeMs),
            });

            var stopScroll = new KeyboardSequenceDetector(
                new DateTimeClock(),
                () =>
            {
                if (_scrollState != ScrollRequest.Stop)
                {
                    _scrollState = ScrollRequest.Stop;
                    UpdateScroll?.Invoke(ScrollRequest.Stop);
                }
            },
                new[]
            {
                new KeyFrame(_settings.ScrollKey, false, 0),
            });

            _detectors = new[]
            {
                moveCaret,
                startScroll,
                stopScroll
            };
        }
コード例 #2
0
 void MoveCaretToXPathNodeMatch(MoveCaret moveCaret, XPathNodeMatch node)
 {
     if (moveCaret == MoveCaret.ByJumping)
     {
         JumpTo(fileName, node.LineNumber, node.LinePosition);
     }
     else
     {
         ScrollTo(fileName, node.LineNumber, node.LinePosition, node.Value.Length);
     }
 }
コード例 #3
0
        private void OnMoveCaret()
        {
            if (GeneralOptions.Instance.WindowFocusEnabled)
            {
                ChangeFocus?.Invoke();
            }

            if (GeneralOptions.Instance.CaretEnabled)
            {
                MoveCaret?.Invoke();
            }
        }
コード例 #4
0
        void MoveCaretToXmlException(MoveCaret moveCaret, XmlException ex)
        {
            int line   = ex.LineNumber - 1;
            int column = ex.LinePosition - 1;

            if (moveCaret == MoveCaret.ByJumping)
            {
                JumpTo(fileName, line, column);
            }
            else
            {
                ScrollTo(fileName, line, column);
            }
        }
コード例 #5
0
 void MoveCaretToResultLocation(MoveCaret moveCaret)
 {
     if (xPathResultsListView.SelectedItems.Count > 0)
     {
         ListViewItem   item           = xPathResultsListView.SelectedItems[0];
         XPathNodeMatch xPathNodeMatch = item.Tag as XPathNodeMatch;
         XPathException xpathException = item.Tag as XPathException;
         XmlException   xmlException   = item.Tag as XmlException;
         if (xPathNodeMatch != null)
         {
             MoveCaretToXPathNodeMatch(moveCaret, xPathNodeMatch);
         }
         else if (xmlException != null)
         {
             MoveCaretToXmlException(moveCaret, xmlException);
         }
         else if (xpathException != null && moveCaret == MoveCaret.ByJumping)
         {
             xpathComboBox.Focus();
         }
     }
 }
コード例 #6
0
 void MoveCaretToXPathNodeMatch(MoveCaret moveCaret, XPathNodeMatch node)
 {
     if (moveCaret == MoveCaret.ByJumping) {
         JumpTo(fileName, node.LineNumber, node.LinePosition);
     } else {
         ScrollTo(fileName, node.LineNumber, node.LinePosition, node.Value.Length);
     }
 }
コード例 #7
0
 void MoveCaretToXmlException(MoveCaret moveCaret, XmlException ex)
 {
     int line =  ex.LineNumber - 1;
     int column = ex.LinePosition - 1;
     if (moveCaret == MoveCaret.ByJumping) {
         JumpTo(fileName, line, column);
     } else {
         ScrollTo(fileName, line, column);
     }
 }
コード例 #8
0
 void MoveCaretToResultLocation(MoveCaret moveCaret)
 {
     if (xPathResultsListView.SelectedItems.Count > 0) {
         ListViewItem item = xPathResultsListView.SelectedItems[0];
         XPathNodeMatch xPathNodeMatch = item.Tag as XPathNodeMatch;
         XPathException xpathException = item.Tag as XPathException;
         XmlException xmlException = item.Tag as XmlException;
         if (xPathNodeMatch != null) {
             MoveCaretToXPathNodeMatch(moveCaret, xPathNodeMatch);
         } else if (xmlException != null) {
             MoveCaretToXmlException(moveCaret, xmlException);
         } else if (xpathException != null && moveCaret == MoveCaret.ByJumping) {
             xpathComboBox.Focus();
         }
     }
 }