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 d218833f82d2948eb1bd7d782e54b4c96e91c3be
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Jun 4 11:59:55 2026 +0200

    CAMEL-23672: camel-tui - Auto-select integration on startup and preload 
diagram for all tabs
    
    Co-Authored-By: Claude Opus 4.6 <[email protected]>
    Signed-off-by: Claus Ibsen <[email protected]>
---
 .../apache/camel/dsl/jbang/core/commands/tui/CamelMonitor.java |  9 +++++++++
 .../camel/dsl/jbang/core/commands/tui/DiagramSupport.java      |  8 ++++++++
 .../apache/camel/dsl/jbang/core/commands/tui/DiagramTab.java   | 10 +++++++++-
 3 files changed, 26 insertions(+), 1 deletion(-)

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 8dd977adef0a..cc99756562b6 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
@@ -351,6 +351,9 @@ public class CamelMonitor extends CamelCommand {
         // Initial data load (synchronous before TUI starts)
         refreshDataSync();
 
+        // Auto-select if there's exactly one integration running
+        overviewTab.selectCurrentIntegration();
+
         eventLog = new TuiEventLog(500);
         Path mcpJsonFile = null;
         if (mcp) {
@@ -372,6 +375,9 @@ public class CamelMonitor extends CamelCommand {
             ctx.runner = tui;
             actionsPopup.setScheduler(tui.scheduler());
             actionsPopup.setResetScreenAction(() -> tui.terminal().clear());
+            // Preload diagram data if an integration was auto-selected
+            routesTab.preloadDiagram();
+            diagramTab.preloadDiagram();
             // Intercept Ctrl+C: quit the TUI cleanly instead of letting
             // the JVM tear down the classloader while we're still running
             Signal.handle(new Signal("INT"), sig -> tui.quit());
@@ -867,6 +873,8 @@ public class CamelMonitor extends CamelCommand {
     private boolean handleTabKey(int tab) {
         if (tab != TAB_OVERVIEW) {
             overviewTab.selectCurrentIntegration();
+            routesTab.preloadDiagram();
+            diagramTab.preloadDiagram();
         }
         if (tab == TAB_LOG) {
             refreshLogData();
@@ -937,6 +945,7 @@ public class CamelMonitor extends CamelCommand {
 
         // Preload diagram data in background so it's ready when the user 
switches tabs
         routesTab.preloadDiagram();
+        diagramTab.preloadDiagram();
     }
 
     private void navigateUp() {
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 b6cd417462f2..3e36dbf77af6 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
@@ -97,6 +97,14 @@ class DiagramSupport {
         return showDiagram;
     }
 
+    void setShowDiagram(boolean show) {
+        this.showDiagram = show;
+    }
+
+    boolean isLoading() {
+        return loading.get();
+    }
+
     boolean isTopologyMode() {
         return topologyMode;
     }
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/DiagramTab.java
 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/DiagramTab.java
index bc9a88f79486..d6d5c984536b 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/DiagramTab.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/DiagramTab.java
@@ -279,7 +279,15 @@ class DiagramTab implements MonitorTab {
     @Override
     public void onTabSelected() {
         if (!diagram.isShowDiagram()) {
-            loadDiagram();
+            if (ctx.selectedPid != null && 
diagram.hasCachedData(ctx.selectedPid)) {
+                diagram.showCached();
+            } else {
+                // Show diagram immediately so preload results are rendered 
when they arrive
+                diagram.setShowDiagram(true);
+                if (!diagram.isLoading()) {
+                    loadDiagram();
+                }
+            }
         }
     }
 

Reply via email to