From 9044930561dbdce9724960f4f7e35a6a9e4fceec Mon Sep 17 00:00:00 2001 From: Pasam Soujanya Date: Wed, 30 Apr 2025 08:09:58 +0530 Subject: [PATCH] Add tabindex to grid columns which has only plain text to make it tabable Signed-off-by: Pasam Soujanya --- .../internal/doclets/formats/html/Table.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Table.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Table.java index 6ba40145e8f..3c18afb2faf 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Table.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Table.java @@ -22,6 +22,11 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ +/* + * =========================================================================== + * (c) Copyright IBM Corp. 2025, 2025 All Rights Reserved + * =========================================================================== + */ package jdk.javadoc.internal.doclets.formats.html; @@ -33,6 +38,7 @@ import java.util.List; import java.util.Set; import java.util.function.Predicate; +import java.util.regex.Pattern; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.html.Content; @@ -86,6 +92,7 @@ public class Table extends Content { private HtmlStyle gridStyle; private final List bodyRows; private HtmlId id; + private static final Pattern checkFormElements = Pattern.compile("<(?:a|area|button|input|object|select|textarea)\\b"); /** * A record containing the data for a table tab. @@ -326,10 +333,19 @@ public void addRow(T item, List contents) { HtmlStyle cellStyle = columnStyles.get(colIndex); // Always add content to make sure the cell isn't dropped var cell = HtmlTree.DIV(cellStyle).addUnchecked(c.isEmpty() ? Text.EMPTY : c); + boolean matchFound = c.isEmpty() || checkFormElements.matcher(c.toString()).find(); cell.addStyle(rowStyle); + if (!matchFound) { + cell.put(HtmlAttr.ROLE, "tablist") + .put(HtmlAttr.TABINDEX, "0"); + } for (String tabClass : tabClasses) { cell.addStyle(tabClass); + if (!matchFound) { + cell.put(HtmlAttr.ROLE, "tablist") + .put(HtmlAttr.TABINDEX, "0"); + } } row.add(cell); colIndex++;