This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch CAMEL-23512-fix-tui-tamboui-api
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 1623c67b7afcbf09637d80015dea731c4685fb89
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed May 13 22:10:15 2026 +0200

    CAMEL-23512: Use TamboUI semantic key bindings instead of raw KeyCode checks
    
    Replace raw KeyCode checks with semantic binding methods so vim/emacs
    key bindings are respected automatically via TamboUI's binding system.
    
    Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
---
 .../dsl/jbang/core/commands/tui/CamelCatalogTui.java     | 16 ++++++++--------
 .../camel/dsl/jbang/core/commands/tui/CamelMonitor.java  | 15 +++++++--------
 2 files changed, 15 insertions(+), 16 deletions(-)

diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CamelCatalogTui.java
 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CamelCatalogTui.java
index 6b2ffc12e9b3..9c77fe24cfe0 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CamelCatalogTui.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CamelCatalogTui.java
@@ -268,7 +268,7 @@ public class CamelCatalogTui extends CamelCommand {
             }
 
             // Escape: clear filter first, then go back, then quit
-            if (ke.isKey(KeyCode.ESCAPE)) {
+            if (ke.isCancel()) {
                 if (focus == FOCUS_OPTIONS && (!optionFilter.isEmpty() || 
optionFullText)) {
                     optionFilter.setLength(0);
                     optionFullText = false;
@@ -291,7 +291,7 @@ public class CamelCatalogTui extends CamelCommand {
             }
 
             // Backspace: delete from active filter
-            if (ke.isKey(KeyCode.BACKSPACE)) {
+            if (ke.isDeleteBackward()) {
                 if (focus == FOCUS_LIST && !componentFilter.isEmpty()) {
                     componentFilter.deleteCharAt(componentFilter.length() - 1);
                     applyComponentFilter();
@@ -303,7 +303,7 @@ public class CamelCatalogTui extends CamelCommand {
             }
 
             // Panel switching — only when no active filter on current panel
-            if (ke.isKey(KeyCode.TAB)) {
+            if (ke.isFocusNext()) {
                 if (focus == FOCUS_LIST) {
                     focus = FOCUS_OPTIONS;
                 } else {
@@ -312,19 +312,19 @@ public class CamelCatalogTui extends CamelCommand {
                 descriptionScroll = 0;
                 return true;
             }
-            if (ke.isKey(KeyCode.RIGHT) && focus == FOCUS_LIST) {
+            if (ke.isRight() && focus == FOCUS_LIST) {
                 focus = FOCUS_OPTIONS;
                 descriptionScroll = 0;
                 return true;
             }
-            if (ke.isKey(KeyCode.LEFT) && focus == FOCUS_OPTIONS) {
+            if (ke.isLeft() && focus == FOCUS_OPTIONS) {
                 focus = FOCUS_LIST;
                 descriptionScroll = 0;
                 return true;
             }
 
             // Enter drills into options
-            if (ke.isKey(KeyCode.ENTER) && focus == FOCUS_LIST) {
+            if (ke.isConfirm() && focus == FOCUS_LIST) {
                 focus = FOCUS_OPTIONS;
                 descriptionScroll = 0;
                 return true;
@@ -351,11 +351,11 @@ public class CamelCatalogTui extends CamelCommand {
                 }
                 return true;
             }
-            if (ke.isKey(KeyCode.PAGE_UP)) {
+            if (ke.isPageUp()) {
                 descriptionScroll = Math.max(0, descriptionScroll - 5);
                 return true;
             }
-            if (ke.isKey(KeyCode.PAGE_DOWN)) {
+            if (ke.isPageDown()) {
                 descriptionScroll += 5;
                 return true;
             }
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CamelMonitor.java
 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CamelMonitor.java
index ea17f985877c..f04aad0c7408 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CamelMonitor.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CamelMonitor.java
@@ -56,7 +56,6 @@ import dev.tamboui.text.Text;
 import dev.tamboui.tui.TuiConfig;
 import dev.tamboui.tui.TuiRunner;
 import dev.tamboui.tui.event.Event;
-import dev.tamboui.tui.event.KeyCode;
 import dev.tamboui.tui.event.KeyEvent;
 import dev.tamboui.tui.event.MouseEvent;
 import dev.tamboui.tui.event.MouseEventKind;
@@ -238,7 +237,7 @@ public class CamelMonitor extends CamelCommand {
         }
         if (event instanceof KeyEvent ke) {
             // Global keys
-            if (ke.isQuit() || ke.isCharIgnoreCase('q') || 
ke.isKey(KeyCode.ESCAPE)) {
+            if (ke.isQuit() || ke.isCharIgnoreCase('q') || ke.isCancel()) {
                 if (showDiagram) {
                     showDiagram = false;
                     diagramImageData = null;
@@ -280,7 +279,7 @@ public class CamelMonitor extends CamelCommand {
             }
 
             // Tab cycling
-            if (ke.isKey(KeyCode.TAB)) {
+            if (ke.isFocusNext()) {
                 int next = (tabsState.selected() + 1) % NUM_TABS;
                 if (next != TAB_OVERVIEW) {
                     selectCurrentIntegration();
@@ -309,7 +308,7 @@ public class CamelMonitor extends CamelCommand {
                 }
                 return true;
             }
-            if (ke.isKey(KeyCode.PAGE_UP)) {
+            if (ke.isPageUp()) {
                 if (showDiagram && tab == TAB_ROUTES) {
                     diagramScroll = Math.max(0, diagramScroll - 20);
                 } else if (tab == TAB_LOG) {
@@ -320,7 +319,7 @@ public class CamelMonitor extends CamelCommand {
                 }
                 return true;
             }
-            if (ke.isKey(KeyCode.PAGE_DOWN)) {
+            if (ke.isPageDown()) {
                 if (showDiagram && tab == TAB_ROUTES) {
                     diagramScroll += 20;
                 } else if (tab == TAB_LOG) {
@@ -342,14 +341,14 @@ public class CamelMonitor extends CamelCommand {
                     return true;
                 }
             }
-            if (ke.isKey(KeyCode.HOME)) {
+            if (ke.isHome()) {
                 if (showDiagram && tab == TAB_ROUTES) {
                     diagramScroll = 0;
                     diagramScrollX = 0;
                     return true;
                 }
             }
-            if (ke.isKey(KeyCode.END)) {
+            if (ke.isEnd()) {
                 if (showDiagram && tab == TAB_ROUTES) {
                     diagramScroll = Integer.MAX_VALUE;
                     return true;
@@ -357,7 +356,7 @@ public class CamelMonitor extends CamelCommand {
             }
 
             // Enter to drill into selected integration
-            if (ke.isKey(KeyCode.ENTER) && tab == TAB_OVERVIEW) {
+            if (ke.isConfirm() && tab == TAB_OVERVIEW) {
                 selectCurrentIntegration();
                 if (selectedPid != null) {
                     tabsState.select(TAB_ROUTES);

Reply via email to