From 65170308b014a00791cbbe132a9f8918272d0974 Mon Sep 17 00:00:00 2001 From: Dmitry Drobotov Date: Wed, 9 Oct 2024 18:47:59 +0200 Subject: [PATCH] IJPL-159592 Set accessible name for product chooser list items GitOrigin-RevId: 84e1e3066fa35a836d5a46346ee7e23395e69ebf --- .../productChooser/ProductChooserRenderer.kt | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/productChooser/ProductChooserRenderer.kt b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/productChooser/ProductChooserRenderer.kt index 0a7df299e422..2a9792e20f62 100644 --- a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/productChooser/ProductChooserRenderer.kt +++ b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/productChooser/ProductChooserRenderer.kt @@ -18,9 +18,11 @@ import com.intellij.ui.popup.list.SelectablePanel import com.intellij.util.ui.JBUI import com.intellij.util.ui.NamedColorUtil import com.intellij.util.ui.UIUtil +import com.intellij.util.ui.accessibility.AccessibleContextUtil import org.jetbrains.annotations.Nls import java.awt.BorderLayout import java.awt.Component +import javax.accessibility.AccessibleContext import javax.swing.* class ProductChooserRenderer : ListCellRenderer { @@ -102,6 +104,7 @@ class ProductChooserRenderer : ListCellRenderer { path.isVisible = action.comment != null result.selectionColor = if (isSelected) ListPluginComponent.SELECTION_COLOR else null + result.accessibleContext.accessibleName = AccessibleContextUtil.combineAccessibleStrings(action.name, ", ", action.comment) } init { @@ -152,7 +155,16 @@ class ProductChooserRenderer : ListCellRenderer { res.revalidate() } - private val withSeparator = NonOpaquePanel(BorderLayout()).apply { + private val withSeparator = object : NonOpaquePanel(BorderLayout()) { + override fun getAccessibleContext(): AccessibleContext { + if (accessibleContext == null) { + accessibleContext = object : AccessibleJPanel() { + override fun getAccessibleName(): String? = result.accessibleContext.accessibleName + } + } + return accessibleContext + } + }.apply { border = JBUI.Borders.empty() add(separator, BorderLayout.NORTH) add(result, BorderLayout.CENTER)