mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
In screen reader mode is not possible to select a JDK for a project: IDEA-236480
GitOrigin-RevId: 9d7634ad4398ea1ee24716ae597cd57059716e08
This commit is contained in:
committed by
intellij-monorepo-bot
parent
8d14f35815
commit
7d5c56282d
+3
-1
@@ -98,7 +98,9 @@ public class ProjectJdkConfigurable implements UnnamedConfigurable {
|
||||
clearCaches();
|
||||
}
|
||||
});
|
||||
myJdkPanel.add(new JLabel(JavaUiBundle.message("module.libraries.target.jdk.project.radio")), new GridBagConstraints(0, 0, 3, 1, 0, 0, NORTHWEST, NONE, JBUI.insetsBottom(4), 0, 0));
|
||||
JLabel myCbProjectJdkLabel = new JLabel(JavaUiBundle.message("module.libraries.target.jdk.project.radio"));
|
||||
myCbProjectJdkLabel.setLabelFor(myCbProjectJdk);
|
||||
myJdkPanel.add(myCbProjectJdkLabel, new GridBagConstraints(0, 0, 3, 1, 0, 0, NORTHWEST, NONE, JBUI.insetsBottom(4), 0, 0));
|
||||
myJdkPanel.add(myCbProjectJdk, new GridBagConstraints(0, 1, 1, 1, 0, 1.0, NORTHWEST, NONE, JBUI.insetsLeft(4), 0, 0));
|
||||
final JButton editButton = new JButton(ApplicationBundle.message("button.edit"));
|
||||
myCbProjectJdk.setEditButton(editButton, myProject, () -> myJdksModel.getProjectSdk());
|
||||
|
||||
+43
-1
@@ -18,9 +18,11 @@ import com.intellij.util.Function;
|
||||
import com.intellij.util.IconUtil;
|
||||
import com.intellij.util.Producer;
|
||||
import com.intellij.util.ui.EmptyIcon;
|
||||
import com.intellij.util.ui.accessibility.AccessibleContextDelegate;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.accessibility.AccessibleContext;
|
||||
import javax.swing.*;
|
||||
import javax.swing.border.Border;
|
||||
import java.awt.*;
|
||||
@@ -62,6 +64,13 @@ public final class SdkListPresenter extends ColoredListCellRenderer<SdkListItem>
|
||||
|
||||
SimpleColoredComponent component = (SimpleColoredComponent)super.getListCellRendererComponent(list, value, index, selected, hasFocus);
|
||||
JPanel panel = new JPanel(new BorderLayout()) {
|
||||
private final AccessibleContext myContext = component.getAccessibleContext();
|
||||
|
||||
@Override
|
||||
public AccessibleContext getAccessibleContext() {
|
||||
return myContext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBorder(Border border) {
|
||||
// we do not want to outer UI to add a border to that JPanel
|
||||
@@ -119,6 +128,7 @@ public final class SdkListPresenter extends ColoredListCellRenderer<SdkListItem>
|
||||
boolean hasFocus) {
|
||||
|
||||
setIcon(EMPTY_ICON); // to fix vertical size
|
||||
getAccessibleContext().setAccessibleName(null);
|
||||
if (value instanceof InvalidSdkItem) {
|
||||
InvalidSdkItem item = (InvalidSdkItem)value;
|
||||
final String str = ProjectBundle.message("jdk.combo.box.invalid.item", item.getSdkName());
|
||||
@@ -203,8 +213,9 @@ public final class SdkListPresenter extends ColoredListCellRenderer<SdkListItem>
|
||||
SdkAppearanceService.getInstance()
|
||||
.forNullSdk(selected)
|
||||
.customize(this);
|
||||
getAccessibleContext().setAccessibleName(ProjectBundle.message("jdk.combo.box.no.sdk.item.accessibility"));
|
||||
}
|
||||
else if(value instanceof SdkReferenceItem) {
|
||||
else if (value instanceof SdkReferenceItem) {
|
||||
SdkReferenceItem item = (SdkReferenceItem)value;
|
||||
|
||||
SdkAppearanceService.getInstance()
|
||||
@@ -237,4 +248,35 @@ public final class SdkListPresenter extends ColoredListCellRenderer<SdkListItem>
|
||||
home = StringUtil.shortenTextWithEllipsis(home, maxLength, suffixLength);
|
||||
return home;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AccessibleContext getAccessibleContext() {
|
||||
if (accessibleContext == null) {
|
||||
accessibleContext = new AccessibleSdkListPresenter(super.getAccessibleContext());
|
||||
}
|
||||
return accessibleContext;
|
||||
}
|
||||
|
||||
static private class AccessibleSdkListPresenter extends AccessibleContextDelegate {
|
||||
private String myAccessibleString = null;
|
||||
|
||||
AccessibleSdkListPresenter(AccessibleContext context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Container getDelegateParent() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getAccessibleName() {
|
||||
return myAccessibleString == null ? super.getDelegate().getAccessibleName() : myAccessibleString;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAccessibleName(String s) {
|
||||
myAccessibleString = s;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -107,6 +107,7 @@ jdk.combo.box.autodetected=Detected SDKs
|
||||
jdk.combo.box.search.of.sdks=Detecting SDKs...
|
||||
jdk.combo.box.project.item=<No Project SDK>
|
||||
jdk.combo.box.invalid.item={0} [Invalid]
|
||||
jdk.combo.box.no.sdk.item.accessibility=No SDK
|
||||
progress.title.jdk.combo.box.resolving.jdk.home=Scanning JDK Home
|
||||
progress.text.jdk.combo.box.resolving.jdk.home=Refreshing {0}...
|
||||
module.libraries.javadoc.url.button=Specify Documentation &URL...
|
||||
|
||||
Reference in New Issue
Block a user