From c1cbcc855428ad775ee97add673af7284e427d27 Mon Sep 17 00:00:00 2001 From: 0xboobface <0xboobface@gmail.com> Date: Fri, 24 Jan 2020 20:37:28 +0100 Subject: [PATCH] Jump to next model with letter keys --- .../java/ctbrec/ui/RecordedModelsTab.java | 36 ++++++++++++++++--- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/client/src/main/java/ctbrec/ui/RecordedModelsTab.java b/client/src/main/java/ctbrec/ui/RecordedModelsTab.java index f28dd1ae..ea07eeb8 100644 --- a/client/src/main/java/ctbrec/ui/RecordedModelsTab.java +++ b/client/src/main/java/ctbrec/ui/RecordedModelsTab.java @@ -229,11 +229,8 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener { List selectedModels = table.getSelectionModel().getSelectedItems(); if (event.getCode() == KeyCode.DELETE) { stopAction(selectedModels); - } else if (event.getCode() == KeyCode.P) { - List pausedModels = selectedModels.stream().filter(JavaFxModel::isSuspended).collect(Collectors.toList()); - List runningModels = selectedModels.stream().filter(m -> !m.isSuspended()).collect(Collectors.toList()); - resumeRecording(pausedModels); - pauseRecording(runningModels); + } else { + jumpToNextModel(event.getCode()); } }); @@ -289,6 +286,35 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener { restoreState(); } + 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 { + JavaFxModel current = table.getItems().get(i); + if (current.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 onUpdatePriority(CellEditEvent evt) { try { int prio = Optional.ofNullable(evt.getNewValue()).map(Number::intValue).orElse(-1);