Skip to content

Move generic breadcrumb implementation from JDT to JFace #4495 - #4496

Open
LukasHackl2 wants to merge 1 commit into
eclipse-platform:masterfrom
LukasHackl2:feature/jface-breadcrumb
Open

LukasHackl2 wants to merge 1 commit into
eclipse-platform:masterfrom
LukasHackl2:feature/jface-breadcrumb

Conversation

@LukasHackl2

@LukasHackl2 LukasHackl2 commented Oct 15, 2026 •

Copy link
Copy Markdown

Move the generic breadcrumb viewer implementation from JDT to JFace so it can be reused by other clients.

The change introduces the breadcrumb viewer classes in org.eclipse.jface.viewers and keeps JDT-specific behavior configurable through extension hooks.

In particular, clients can customize:

  • the drop-down TreeViewer
  • whether elements can be opened directly
  • the dialog settings used for breadcrumb UI state

This allows JDT to keep using ProblemTreeViewer, preserve Java-specific openability semantics and persist the drop-down height while keeping JFace independent of JDT.

Issue:
#4495

Corresponding JDT pull request:
eclipse-jdt/eclipse.jdt.ui#3265

LukasHackl2 added a commit to LukasHackl2/eclipse.jdt.ui that referenced this pull request Oct 15, 2026
Adapt the Java editor breadcrumb to use the generic JFace breadcrumb implementation. Preserve JDT-specific behavior through extension hooks for ProblemTreeViewer, Java element openability and persistent dialog settings. Remove the obsolete JDT breadcrumb implementation and messages resources, and bump the org.eclipse.jdt.ui bundle version.

Issue: eclipse-platform/eclipse.platform.ui#4495

Depends on: eclipse-platform/eclipse.platform.ui#4496

Assisted-by: OpenAI GPT-5.6 Sol
Signed-off-by: LukasHackl2 <lukas.h95@hotmail.de>
@LukasHackl2
LukasHackl2 force-pushed the feature/jface-breadcrumb branch from 7dcd2a2 to 8892f27 Compare October 15, 2026 16:17
LukasHackl2 added a commit to LukasHackl2/eclipse.jdt.ui that referenced this pull request Oct 15, 2026
Adapt the Java editor breadcrumb to use the generic JFace breadcrumb implementation. Preserve JDT-specific behavior through extension hooks for ProblemTreeViewer, Java element openability and persistent dialog settings. Remove the obsolete JDT breadcrumb implementation and messages resources, and bump the org.eclipse.jdt.ui bundle version.

Issue: eclipse-platform/eclipse.platform.ui#4495

Depends on: eclipse-platform/eclipse.platform.ui#4496

Assisted-by: OpenAI GPT-5.6 Sol
Signed-off-by: LukasHackl2 <lukas.h95@hotmail.de>
@github-actions

github-actions Bot commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Test Results

   867 files  ±0     867 suites  ±0   49m 6s ⏱️ - 17m 27s
 8 463 tests ±0   8 221 ✅ ±0  242 💤 ±0  0 ❌ ±0 
21 267 runs  ±0  20 584 ✅ ±0  683 💤 ±0  0 ❌ ±0 

Results for commit 981322e. ± Comparison against base commit 5441e2e.

♻️ This comment has been updated with latest results.

@merks merks left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think all the @since versions need attention.

Comment thread bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/BreadcrumbItem.java Outdated
Comment thread bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/BreadcrumbViewerRow.java Outdated
…form#4495

Move the reusable breadcrumb viewer implementation from JDT to org.eclipse.jface.viewers. Keep JDT-specific behavior configurable through extension hooks for drop-down viewers, element openability and dialog settings.

Issue: eclipse-platform#4495

Corresponding JDT PR: eclipse-jdt/eclipse.jdt.ui#3265

Assisted-by: OpenAI GPT-5.6 Sol
Signed-off-by: LukasHackl2 <lukas.h95@hotmail.de>
@LukasHackl2
LukasHackl2 force-pushed the feature/jface-breadcrumb branch from 8892f27 to 981322e Compare October 15, 2026 22:55
@LukasHackl2

LukasHackl2 commented Oct 15, 2026 •

Copy link
Copy Markdown
Author

Thanks. org.eclipse.jface is already at 3.41.0.qualifier on the current PR base, so I kept BreadcrumbViewer at @since 3.41. I updated the @since 3.4 tags inherited from the JDT implementation to @since 3.41.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

org.eclipse.debug.ui also has a class called "BreadcrumbItem". Looks like we already have a copy of the JDT think there.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was so nice, we did it twice:

image

It will be even nicer when we do it only once in a reusable way. 😀

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

agree

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@LukasHackl2 : could you please check if you also can provide platform PR and replace classes added in eclipse-platform/eclipse.platform@56f6a79 to use new API?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can check this. I see that the Debug UI breadcrumb implementation has diverged somewhat from the JDT version, in particular around the TreePath-based content/label providers and its custom drop-down handling. I’ll check what is needed to adapt it to the new JFace API and provide a corresponding Platform PR if feasible.

@merks merks left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks good to me.

I assume this is literally just copied over from JDT with only package name changes so there is no need to review all the code in detail because it has been fully functional for a very long time, right?

@LukasHackl2

Copy link
Copy Markdown
Author

Yes, the implementation is based on the long-standing JDT breadcrumb code. It is not a pure package-name copy though: I removed the JDT-specific dependencies and added extension points needed to preserve the JDT-specific behavior, such as the custom drop-down viewer, element openability and dialog settings. The core breadcrumb viewer/item behavior itself is otherwise retained.

@merks

merks commented Oct 16, 2026

Copy link
Copy Markdown
Contributor

I'm really personally all for merging this as soon as possible. I assume the plan is immediate follow up rework the two other copies to valid the utility of what's in JFace. (I think I already saw such a comment about JDT, but I get so many notifications is hard to keep track.)

@iloveeclipse @BeckerWdf

Are you guys okay with merging this soonish so that the downstream work can proceed?

@iloveeclipse

Copy link
Copy Markdown
Member

Are you guys okay with merging this soonish so that the downstream work can proceed?

I would wait the check offered by @LukasHackl2 whether the new API copied from JDT fits the second platform debug implementation mentioned above. If it fits and no extra API change needed for that, I'm OK. Otherwise we will need to touch JDT again.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants