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 9ba43a8e9ed8a954aaacd29090e9aaed32bbad7a
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Jun 4 07:31:39 2026 +0200

    CAMEL-23672: camel-tui - Collapse breadcrumb when navigating back to a 
previous route
    
    Co-Authored-By: Claude Opus 4.6 <[email protected]>
    Signed-off-by: Claus Ibsen <[email protected]>
    Signed-off-by: Claus Ibsen <[email protected]>
---
 .../camel/dsl/jbang/core/commands/tui/DiagramTab.java       | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

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 1560e690b30b..b6cae5d432d0 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
@@ -151,7 +151,18 @@ class DiagramTab implements MonitorTab {
         if (!topologyMode && ke.isConfirm() && 
!diagram.getEipNodeBoxes().isEmpty()) {
             String linkedRouteId = diagram.findLinkedRouteId(drillDownRouteId);
             if (linkedRouteId != null && diagram.getRouteLayout(linkedRouteId) 
!= null) {
-                routeNavigationStack.push(drillDownRouteId);
+                if (linkedRouteId.equals(drillDownRouteId)) {
+                    return true;
+                }
+                // Collapse breadcrumb if navigating back to a route already 
in the stack
+                if (routeNavigationStack.contains(linkedRouteId)) {
+                    while (!routeNavigationStack.isEmpty() && 
!linkedRouteId.equals(routeNavigationStack.peek())) {
+                        routeNavigationStack.pop();
+                    }
+                    routeNavigationStack.pop();
+                } else {
+                    routeNavigationStack.push(drillDownRouteId);
+                }
                 drillDownRouteId = linkedRouteId;
                 diagram.selectFromNode(linkedRouteId);
                 diagram.resetScroll();

Reply via email to