< prev index next >

src/java.desktop/macosx/classes/sun/lwawt/macosx/CAccessibility.java

Print this page

        

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.  Oracle designates this

@@ -23,21 +23,43 @@
  * questions.
  */
 
 package sun.lwawt.macosx;
 
-import sun.lwawt.LWWindowPeer;
-
-import java.awt.*;
-import java.beans.*;
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.KeyboardFocusManager;
+import java.awt.Point;
+import java.awt.Window;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
 import java.lang.reflect.InvocationTargetException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Set;
 import java.util.concurrent.Callable;
 
-import javax.accessibility.*;
-import javax.swing.*;
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleAction;
+import javax.accessibility.AccessibleComponent;
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleRole;
+import javax.accessibility.AccessibleSelection;
+import javax.accessibility.AccessibleState;
+import javax.accessibility.AccessibleStateSet;
+import javax.accessibility.AccessibleTable;
+import javax.accessibility.AccessibleText;
+import javax.accessibility.AccessibleValue;
+import javax.swing.Icon;
+import javax.swing.JComponent;
+import javax.swing.JEditorPane;
+import javax.swing.JLabel;
+import javax.swing.JTextArea;
+
 import sun.awt.AWTAccessor;
+import sun.lwawt.LWWindowPeer;
 
 class CAccessibility implements PropertyChangeListener {
     private static Set<String> ignoredRoles;
 
     static {

@@ -624,11 +646,11 @@
                                 // Is this the active descendant?
                                 currentAccessible = (Accessible)childrenAndRoles.get(i);
                                 currentAC = currentAccessible.getAccessibleContext();
                                 currentName = currentAC.getAccessibleName();
                                 currentRole = (AccessibleRole)childrenAndRoles.get(i+1);
-                                if ( currentName.equals(activeDescendantName) &&
+                                if (currentName != null && currentName.equals(activeDescendantName) &&
                                      currentRole.equals(activeDescendantRole) ) {
                                     newArray.add(0, currentAccessible);
                                     newArray.add(1, currentRole);
                                 } else {
                                     newArray.add(currentAccessible);

@@ -647,10 +669,28 @@
                 return new Object[] { childrenAndRoles.get(whichChildren * 2), childrenAndRoles.get((whichChildren * 2) + 1) };
             }
         }, c);
     }
 
+    private static final int JAVA_AX_ROWS = 1;
+    private static final int JAVA_AX_COLS = 2;
+
+    public static int getTableInfo(final Accessible a, final Component c,
+                                   final int info) {
+        if (a == null) return 0;
+        return invokeAndWait(() -> {
+            AccessibleContext ac = a.getAccessibleContext();
+            AccessibleTable table = ac.getAccessibleTable();
+            if (info == JAVA_AX_COLS) {
+                return table.getAccessibleColumnCount();
+            } else if (info == JAVA_AX_ROWS) {
+                return table.getAccessibleRowCount();
+            } else
+                return 0;
+        }, c);
+    }
+
     private static AccessibleRole getAccessibleRoleForLabel(JLabel l, AccessibleRole fallback) {
         String text = l.getText();
         if (text != null && text.length() > 0) {
             return fallback;
         }
< prev index next >