VIM-3948 Make FilterComponent Accessible

GitOrigin-RevId: a61a5093f0d9f39efea806d087259c6718810996
This commit is contained in:
1grzyb1
2026-02-05 15:23:42 +00:00
committed by intellij-monorepo-bot
parent 6561f4fb44
commit f1d283a84e
2 changed files with 38 additions and 1 deletions
@@ -331,6 +331,8 @@ vcs.log.table.accessible.name={0} log
vcs.log.changes.accessible.name=Commit changes browser
vcs.log.text.filter.accessible.name={0} log text or hash filter
vcs.log.filter.accessible.name={0}: {1}
vcs.log.filter.accessible.action.show.popup=Show Popup
vcs.log.filter.accessible.action.clear=Clear
# exceptions
vcs.log.failed.loading.details=Cannot load details for commit {0} in {1}
@@ -16,6 +16,7 @@ import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.accessibility.AccessibleAction;
import javax.accessibility.AccessibleContext;
import javax.accessibility.AccessibleRole;
import javax.swing.BorderFactory;
@@ -360,7 +361,7 @@ public abstract class FilterComponent extends JBPanel<FilterComponent> {
return accessibleContext;
}
private class AccessibleVcsLogPopupComponent extends AccessibleContextDelegate {
private class AccessibleVcsLogPopupComponent extends AccessibleContextDelegate implements AccessibleAction {
AccessibleVcsLogPopupComponent(AccessibleContext context) {
super(context);
@@ -380,5 +381,39 @@ public abstract class FilterComponent extends JBPanel<FilterComponent> {
public AccessibleRole getAccessibleRole() {
return AccessibleRole.POPUP_MENU;
}
@Override
public AccessibleAction getAccessibleAction() {
return this;
}
@Override
public int getAccessibleActionCount() {
return 2;
}
@Override
public String getAccessibleActionDescription(int i) {
return switch (i) {
case 0 -> VcsLogBundle.message("vcs.log.filter.accessible.action.show.popup");
case 1 -> VcsLogBundle.message("vcs.log.filter.accessible.action.clear");
default -> null;
};
}
@Override
public boolean doAccessibleAction(int i) {
return switch (i) {
case 0 -> {
showPopup();
yield true;
}
case 1 -> {
resetFilter();
yield true;
}
default -> false;
};
}
}
}