You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2026/06/04 10:37:03 UTC
(camel) 32/33: CAMEL-23672: camel-tui - Auto-select integration on startup and preload diagram for all tabs
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 <cl...@gmail.com>
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 <no...@anthropic.com>
Signed-off-by: Claus Ibsen <cl...@gmail.com>
---
.../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();
+ }
+ }
}
}