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(); + } + } } }
