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 }; }
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); } }
private void OnMoveCaret() { if (GeneralOptions.Instance.WindowFocusEnabled) { ChangeFocus?.Invoke(); } if (GeneralOptions.Instance.CaretEnabled) { MoveCaret?.Invoke(); } }
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); } }
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(); } } }