<AWT Dev> RFR: 8264305: Create implementation for native accessibility peer for Statusbar java role
Pankaj Bansal
pbansal at openjdk.java.net
Wed Jun 2 14:10:48 UTC 2021
Create implementation for native accessibility peer for Statusbar java role. I do not see any Swing component with StatusBar accessibility role, so I have created a component with the StatusBar role to test this. I have tested the implementation with the following example and a few more similar examples. I do not see any difference in Voice Over output.
`
import javax.accessibility.Accessible;
import javax.accessibility.AccessibleContext;
import javax.accessibility.AccessibleRole;
import javax.accessibility.AccessibleStateSet;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
import javax.swing.border.BevelBorder;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DateFormat;
public class StatusBarDemo {
public static void main(String[] args) throws Exception {
StatusBarDemo demo = new StatusBarDemo();
SwingUtilities.invokeAndWait(demo::createAndShowGUI);
}
void createAndShowGUI() {
JFrame jframe = new JFrame("StatusBar Demo");
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jframe.setLayout(new BorderLayout());
jframe.setSize(200, 200);
// create the status bar panel and shove it down the bottom of the frame
JPanel statusPanel = new StatusBar();
statusPanel.setBorder(new BevelBorder(BevelBorder.LOWERED));
statusPanel.setPreferredSize(new Dimension(jframe.getWidth(), 16));
statusPanel.setLayout(new BorderLayout());
JLabel date = new JLabel();
date.setOpaque(true);
date.setBackground(Color.black);
date.setForeground(Color.WHITE);
statusPanel.setLayout(new BorderLayout());
statusPanel.setBackground(Color.LIGHT_GRAY);
statusPanel.add(date, BorderLayout.CENTER);
Timer timer = new javax.swing.Timer(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
java.util.Date now = new java.util.Date();
String ss = DateFormat.getDateTimeInstance().format(now);
date.setText(ss);
date.setToolTipText("Welcome, Today is " + ss);
}
});
timer.start();
jframe.add(statusPanel, BorderLayout.SOUTH);
jframe.setLocationRelativeTo(null);
jframe.setVisible(true);
}
class StatusBar extends JPanel implements Accessible {
AccessibleContext accessibleContext;
public AccessibleContext getAccessibleContext() {
if (accessibleContext == null) {
accessibleContext = new StatusBar.AccessibleJStatusBar();
}
return accessibleContext;
}
protected class AccessibleJStatusBar extends AccessibleJComponent {
public AccessibleStateSet getAccessibleStateSet() {
AccessibleStateSet states = super.getAccessibleStateSet();
return states;
}
public AccessibleRole getAccessibleRole() {
return AccessibleRole.STATUS_BAR;
}
}
}
}
`
-------------
Commit messages:
- 8264305: Create implementation for native accessibility peer for Statusbar java role
Changes: https://git.openjdk.java.net/jdk/pull/4307/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=4307&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8264305
Stats: 41 lines in 3 files changed: 39 ins; 0 del; 2 mod
Patch: https://git.openjdk.java.net/jdk/pull/4307.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/4307/head:pull/4307
PR: https://git.openjdk.java.net/jdk/pull/4307
More information about the awt-dev
mailing list