This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch feature/CAMEL-23672-tui-diagram in repository https://gitbox.apache.org/repos/asf/camel.git
commit c5780a320976991cf6a972d8d88db85a3ac363c2 Author: Claus Ibsen <[email protected]> AuthorDate: Thu Jun 4 11:24:02 2026 +0200 CAMEL-23672: camel-tui - Reset routes tab diagram on tab switch and fix async snap-back Pressing 4 for routes tab now always shows the table, closing any open diagram. Pressing d resets diagram state fully before loading. Async diagram load callbacks no longer re-enable showDiagram if the user closed it while loading, preventing the snap-back to diagram mode. Signed-off-by: Claus Ibsen <[email protected]> Co-Authored-By: Claude Opus 4.6 <[email protected]> Signed-off-by: Claus Ibsen <[email protected]> --- .../camel/dsl/jbang/core/commands/tui/CamelMonitor.java | 3 +++ .../camel/dsl/jbang/core/commands/tui/DiagramSupport.java | 15 ++++++--------- .../camel/dsl/jbang/core/commands/tui/RoutesTab.java | 3 ++- 3 files changed, 11 insertions(+), 10 deletions(-) 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 f4fd4a981036..8d9b4c401823 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 @@ -872,6 +872,9 @@ public class CamelMonitor extends CamelCommand { refreshLogData(); logTab.onTabSelected(); } + if (tab == TAB_ROUTES && routesTab != null && routesTab.isShowDiagram()) { + routesTab.closeDiagram(); + } if (tab == TAB_DIAGRAM) { diagramTab.onTabSelected(); } diff --git a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/DiagramSupport.java b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/DiagramSupport.java index d418dd15937b..72c360c6f8be 100644 --- a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/DiagramSupport.java +++ b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/DiagramSupport.java @@ -1159,6 +1159,9 @@ class DiagramSupport { return; } ctx.runner.runOnRenderThread(() -> { + if (!showDiagram) { + return; + } topologyLayout = finalTopoResult; topologyNodeWidth = finalNodeW; topologyNodes = finalTopoNodes; @@ -1192,8 +1195,6 @@ class DiagramSupport { selectedNodeIndex = -1; } } - - showDiagram = true; }); } @@ -1410,7 +1411,9 @@ class DiagramSupport { return; } ctx.runner.runOnRenderThread(() -> { - boolean wasShowing = showDiagram; + if (!showDiagram) { + return; + } lines = resultLines; counterPositions = positions; routeTitleRows = titleRows; @@ -1438,12 +1441,6 @@ class DiagramSupport { } else if (resultNodeBoxes.isEmpty()) { selectedNodeIndex = -1; } - - if (!wasShowing) { - scrollY = 0; - scrollX = 0; - } - showDiagram = true; }); } diff --git a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/RoutesTab.java b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/RoutesTab.java index e23ac133d74d..32720c47722f 100644 --- a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/RoutesTab.java +++ b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/RoutesTab.java @@ -697,6 +697,7 @@ class RoutesTab implements MonitorTab { topologyMode = true; drillDownRouteId = null; routeNavigationStack.clear(); + diagram.reset(); diagram.setTopologyMode(true); // Pre-select the currently highlighted route from the table @@ -708,7 +709,7 @@ class RoutesTab implements MonitorTab { loadDiagram(true); } - private void closeDiagram() { + void closeDiagram() { topologyMode = true; drillDownRouteId = null; routeNavigationStack.clear();
