From 1b504b303e13d36bc63a608a808aa227d53eead0 Mon Sep 17 00:00:00 2001 From: Artem Semenov Date: Thu, 24 Sep 2020 15:23:54 +0300 Subject: [PATCH] IDEA-CR-67094: IDEA-250871 Class import menu items are not spoken GitOrigin-RevId: af825316b58982142d81d97b027bd46b57af88f6 --- .../daemon/impl/actions/AddImportAction.java | 13 ++++++++++++- .../com/intellij/ui/GroupedElementsRenderer.java | 8 +++++++- .../ui/popup/list/PopupListElementRenderer.java | 13 ++++++++++++- 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/actions/AddImportAction.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/actions/AddImportAction.java index 791b9c7ce89a..a5e7d8c043b2 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/actions/AddImportAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/actions/AddImportAction.java @@ -36,6 +36,7 @@ import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import javax.accessibility.AccessibleContext; import javax.swing.*; import java.awt.*; import java.util.ArrayList; @@ -136,8 +137,18 @@ public class AddImportAction implements QuestionAction { PopupListElementRenderer baseRenderer = (PopupListElementRenderer)super.getListElementRenderer(); ListCellRenderer psiRenderer = new DefaultPsiElementCellRenderer(); return (list, value, index, isSelected, cellHasFocus) -> { - JPanel panel = new JPanel(new BorderLayout()); baseRenderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); + JPanel panel = new JPanel(new BorderLayout()) { + private final AccessibleContext myAccessibleContext = baseRenderer.getAccessibleContext(); + + @Override + public AccessibleContext getAccessibleContext() { + if (myAccessibleContext == null) { + return super.getAccessibleContext(); + } + return myAccessibleContext; + } + }; panel.add(baseRenderer.getNextStepLabel(), BorderLayout.EAST); panel.add(psiRenderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus)); return panel; diff --git a/platform/platform-api/src/com/intellij/ui/GroupedElementsRenderer.java b/platform/platform-api/src/com/intellij/ui/GroupedElementsRenderer.java index 0acae9fb07f2..428f168cdc67 100644 --- a/platform/platform-api/src/com/intellij/ui/GroupedElementsRenderer.java +++ b/platform/platform-api/src/com/intellij/ui/GroupedElementsRenderer.java @@ -7,6 +7,8 @@ import com.intellij.ui.components.panels.OpaquePanel; import com.intellij.util.ui.UIUtil; import com.intellij.util.ui.accessibility.AccessibleContextUtil; +import javax.accessibility.Accessible; +import javax.accessibility.AccessibleContext; import javax.swing.*; import javax.swing.border.Border; import javax.swing.border.EmptyBorder; @@ -15,7 +17,7 @@ import java.awt.*; import static com.intellij.ui.RelativeFont.BOLD; -public abstract class GroupedElementsRenderer { +public abstract class GroupedElementsRenderer implements Accessible { protected SeparatorWithText mySeparatorComponent = createSeparator(); protected abstract JComponent createItemComponent(); @@ -178,4 +180,8 @@ public abstract class GroupedElementsRenderer { } } + @Override + public AccessibleContext getAccessibleContext() { + return myRendererComponent.getAccessibleContext(); + } } diff --git a/platform/platform-impl/src/com/intellij/ui/popup/list/PopupListElementRenderer.java b/platform/platform-impl/src/com/intellij/ui/popup/list/PopupListElementRenderer.java index f886c363fabc..57a8808f1917 100644 --- a/platform/platform-impl/src/com/intellij/ui/popup/list/PopupListElementRenderer.java +++ b/platform/platform-impl/src/com/intellij/ui/popup/list/PopupListElementRenderer.java @@ -18,6 +18,7 @@ import com.intellij.util.ui.JBUI; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.Nullable; +import javax.accessibility.AccessibleContext; import javax.swing.*; import java.awt.*; @@ -66,8 +67,18 @@ public class PopupListElementRenderer extends GroupedItemsListRenderer { @Override protected JComponent createItemComponent() { - JPanel panel = new JPanel(new BorderLayout()); createLabel(); + JPanel panel = new JPanel(new BorderLayout()) { + private final AccessibleContext myAccessibleContext = myTextLabel.getAccessibleContext(); + + @Override + public AccessibleContext getAccessibleContext() { + if (myAccessibleContext == null) { + return super.getAccessibleContext(); + } + return myAccessibleContext; + } + }; panel.add(myTextLabel, BorderLayout.WEST); myValueLabel = new JLabel(); myValueLabel.setEnabled(false);