<AWT Dev> RFR: 8264305: Create implementation for native accessibility peer for Statusbar java role

Alexander Zuev kizune at openjdk.java.net
Fri Jun 4 03:12:54 UTC 2021


On Wed, 2 Jun 2021 13:58:24 GMT, Pankaj Bansal <pbansal at openjdk.org> wrote:

> 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;
>                 }
>             }
>         }
>     }
> 
> 
> `

Marked as reviewed by kizune (Reviewer).

-------------

PR: https://git.openjdk.java.net/jdk/pull/4307


More information about the awt-dev mailing list