From e1f226c118b2bac30232a08b58fe43c3d3c6b3fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Sladk=C3=BD?= Date: Fri, 6 Feb 2026 16:00:38 +0100 Subject: [PATCH] backport 9e1a6bef2ac7f0c7615d153672a296847f09240a --- .../awt/regtesthelpers/PassFailJFrame.java | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/test/jdk/java/awt/regtesthelpers/PassFailJFrame.java b/test/jdk/java/awt/regtesthelpers/PassFailJFrame.java index a4ede371449..ddd700dec95 100644 --- a/test/jdk/java/awt/regtesthelpers/PassFailJFrame.java +++ b/test/jdk/java/awt/regtesthelpers/PassFailJFrame.java @@ -67,6 +67,7 @@ import javax.swing.JSplitPane; import javax.swing.JTextArea; import javax.swing.Timer; +import javax.swing.event.HyperlinkListener; import javax.swing.text.JTextComponent; import javax.swing.text.html.HTMLEditorKit; import javax.swing.text.html.StyleSheet; @@ -402,6 +403,7 @@ private static void createUI(String title, String instructions, frame.add(createInstructionUIPanel(instructions, testTimeOut, rows, columns, + null, enableScreenCapture, false, 0), BorderLayout.CENTER); @@ -420,6 +422,7 @@ private static void createUI(Builder builder) { createInstructionUIPanel(builder.instructions, builder.testTimeOut, builder.rows, builder.columns, + builder.hyperlinkListener, builder.screenCapture, builder.addLogArea, builder.logAreaRows); @@ -441,6 +444,7 @@ private static void createUI(Builder builder) { private static JComponent createInstructionUIPanel(String instructions, long testTimeOut, int rows, int columns, + HyperlinkListener hyperlinkListener, boolean enableScreenCapture, boolean addLogArea, int logAreaRows) { @@ -453,6 +457,9 @@ private static JComponent createInstructionUIPanel(String instructions, JTextComponent text = instructions.startsWith("") ? configureHTML(instructions, rows, columns) : configurePlainText(instructions, rows, columns); + if (hyperlinkListener != null && text instanceof JEditorPane) { + ((JEditorPane) text).addHyperlinkListener(hyperlinkListener); + } text.setEditable(false); main.add(new JScrollPane(text), BorderLayout.CENTER); @@ -517,7 +524,7 @@ private static JTextComponent configureHTML(String instructions, // Reduce the default margins styles.addRule("ol, ul { margin-left-ltr: 20; margin-left-rtl: 20 }"); // Make the size of code blocks the same as other text - styles.addRule("code { font-size: inherit }"); + styles.addRule("code { font-size: inherit; background: #DDD; }"); return text; } @@ -1111,6 +1118,7 @@ public static final class Builder { private int rows; private int columns; private boolean screenCapture; + private HyperlinkListener hyperlinkListener; private boolean addLogArea; private int logAreaRows = 10; @@ -1149,6 +1157,18 @@ public Builder columns(int columns) { return this; } + /** + * Sets a {@link HyperlinkListener} for navigating links inside + * the instructions pane. + * + * @param hyperlinkListener the listener + * @return this builder + */ + public Builder hyperlinkListener(HyperlinkListener hyperlinkListener) { + this.hyperlinkListener = hyperlinkListener; + return this; + } + public Builder screenCapture() { this.screenCapture = true; return this;