From d6574a63b9e5afc3f16672a1b7e380cfaf92154a Mon Sep 17 00:00:00 2001 From: 0xboobface <0xboobface@gmail.com> Date: Sun, 26 Jan 2020 16:34:51 +0100 Subject: [PATCH] Jump to next recording with letter keys --- .../java/ctbrec/ui/tabs/RecordingsTab.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/client/src/main/java/ctbrec/ui/tabs/RecordingsTab.java b/client/src/main/java/ctbrec/ui/tabs/RecordingsTab.java index 9cfdf922..a9639059 100644 --- a/client/src/main/java/ctbrec/ui/tabs/RecordingsTab.java +++ b/client/src/main/java/ctbrec/ui/tabs/RecordingsTab.java @@ -232,6 +232,8 @@ public class RecordingsTab extends Tab implements TabSelectionListener { } } else if (event.getCode() == KeyCode.ENTER && status == FINISHED) { play(recordings.get(0)); + } else { + jumpToNextModel(event.getCode()); } } } @@ -416,6 +418,35 @@ public class RecordingsTab extends Tab implements TabSelectionListener { return contextMenu; } + private void jumpToNextModel(KeyCode code) { + if (!table.getItems().isEmpty() && (code.isLetterKey() || code.isDigitKey())) { + // determine where to start looking for the next model + int startAt = 0; + if (table.getSelectionModel().getSelectedIndex() >= 0) { + startAt = table.getSelectionModel().getSelectedIndex() + 1; + if (startAt >= table.getItems().size()) { + startAt = 0; + } + } + + String c = code.getChar().toLowerCase(); + int i = startAt; + do { + JavaFxRecording current = table.getItems().get(i); + if (current.getModel().getName().toLowerCase().replaceAll("[^0-9a-z]", "").startsWith(c)) { + table.getSelectionModel().clearAndSelect(i); + table.scrollTo(i); + break; + } + + i++; + if (i >= table.getItems().size()) { + i = 0; + } + } while (i != startAt); + } + } + private void onOpenDirectory(JavaFxRecording first) { String recordingsDir = Config.getInstance().getSettings().recordingsDir; String path = first.getPath();