< prev index next >
src/java.desktop/macosx/native/libawt_lwawt/awt/JavaComponentAccessibility.m
Print this page
*** 52,61 ****
--- 52,62 ----
#define JAVA_AX_SELECTED_CHILDREN (-2)
#define JAVA_AX_VISIBLE_CHILDREN (-3)
// If the value is >=0, it's an index
static JNF_STATIC_MEMBER_CACHE(jm_getChildrenAndRoles, sjc_CAccessibility, "getChildrenAndRoles", "(Ljavax/accessibility/Accessible;Ljava/awt/Component;IZ)[Ljava/lang/Object;");
+ static JNF_STATIC_MEMBER_CACHE(jm_getTableInfo, sjc_CAccessibility, "getTableInfo", "(Ljavax/accessibility/Accessible;Ljava/awt/Component;I)I");
static JNF_STATIC_MEMBER_CACHE(sjm_getAccessibleComponent, sjc_CAccessibility, "getAccessibleComponent", "(Ljavax/accessibility/Accessible;Ljava/awt/Component;)Ljavax/accessibility/AccessibleComponent;");
static JNF_STATIC_MEMBER_CACHE(sjm_getAccessibleValue, sjc_CAccessibility, "getAccessibleValue", "(Ljavax/accessibility/Accessible;Ljava/awt/Component;)Ljavax/accessibility/AccessibleValue;");
static JNF_STATIC_MEMBER_CACHE(sjm_getAccessibleName, sjc_CAccessibility, "getAccessibleName", "(Ljavax/accessibility/Accessible;Ljava/awt/Component;)Ljava/lang/String;");
static JNF_STATIC_MEMBER_CACHE(sjm_getAccessibleDescription, sjc_CAccessibility, "getAccessibleDescription", "(Ljavax/accessibility/Accessible;Ljava/awt/Component;)Ljava/lang/String;");
static JNF_STATIC_MEMBER_CACHE(sjm_isFocusTraversable, sjc_CAccessibility, "isFocusTraversable", "(Ljavax/accessibility/Accessible;Ljava/awt/Component;)Z");
*** 115,124 ****
--- 116,133 ----
- (BOOL)accessibilityIsVerticalScrollBarAttributeSettable;
- (id)accessibilityHorizontalScrollBarAttribute;
- (BOOL)accessibilityIsHorizontalScrollBarAttributeSettable;
@end
+ @interface TableAccessibility : JavaComponentAccessibility {
+
+ }
+ - (NSArray *)initializeAttributeNamesWithEnv:(JNIEnv *)env;
+ - (NSArray *)accessibilityRowsAttribute;
+ - (NSArray *)accessibilityColumnsAttribute;
+ @end
+
@implementation JavaComponentAccessibility
- (NSString *)description
{
*** 368,377 ****
--- 377,388 ----
// otherwise, create a new instance
JavaComponentAccessibility *newChild = nil;
if ([javaRole isEqualToString:@"pagetablist"]) {
newChild = [TabGroupAccessibility alloc];
+ } else if ([javaRole isEqualToString:@"table"]) {
+ newChild = [TableAccessibility alloc];
} else if ([javaRole isEqualToString:@"scrollpane"]) {
newChild = [ScrollAreaAccessibility alloc];
} else {
NSString *nsRole = [sRoles objectForKey:javaRole];
if ([nsRole isEqualToString:NSAccessibilityStaticTextRole] || [nsRole isEqualToString:NSAccessibilityTextAreaRole] || [nsRole isEqualToString:NSAccessibilityTextFieldRole]) {
*** 482,492 ****
}
// children
if (attributeStatesArray[6]) {
[attributeNames addObject:NSAccessibilityChildrenAttribute];
! if ([javaRole isEqualToString:@"list"]) {
[attributeNames addObject:NSAccessibilitySelectedChildrenAttribute];
[attributeNames addObject:NSAccessibilityVisibleChildrenAttribute];
}
// Just above, the below mentioned support has been added back in for lists.
// However, the following comments may still be useful for future fixes.
--- 493,504 ----
}
// children
if (attributeStatesArray[6]) {
[attributeNames addObject:NSAccessibilityChildrenAttribute];
! if ([javaRole isEqualToString:@"list"]
! || [javaRole isEqualToString:@"table"]) {
[attributeNames addObject:NSAccessibilitySelectedChildrenAttribute];
[attributeNames addObject:NSAccessibilityVisibleChildrenAttribute];
}
// Just above, the below mentioned support has been added back in for lists.
// However, the following comments may still be useful for future fixes.
*** 650,660 ****
return names;
}
id myParent = [self accessibilityParentAttribute];
if ([myParent isKindOfClass:[JavaComponentAccessibility class]]) {
NSString *parentRole = [(JavaComponentAccessibility *)myParent javaRole];
! if ([parentRole isEqualToString:@"list"]) {
NSMutableArray *moreNames =
[[NSMutableArray alloc] initWithCapacity: [names count] + 2];
[moreNames addObjectsFromArray: names];
[moreNames addObject:NSAccessibilitySelectedAttribute];
[moreNames addObject:NSAccessibilityIndexAttribute];
--- 662,674 ----
return names;
}
id myParent = [self accessibilityParentAttribute];
if ([myParent isKindOfClass:[JavaComponentAccessibility class]]) {
NSString *parentRole = [(JavaComponentAccessibility *)myParent javaRole];
!
! if ([parentRole isEqualToString:@"list"]
! || [parentRole isEqualToString:@"table"]) {
NSMutableArray *moreNames =
[[NSMutableArray alloc] initWithCapacity: [names count] + 2];
[moreNames addObjectsFromArray: names];
[moreNames addObject:NSAccessibilitySelectedAttribute];
[moreNames addObject:NSAccessibilityIndexAttribute];
*** 1845,1854 ****
--- 1859,1903 ----
return NO;
}
@end
+ // these constants are duplicated in CAccessibility.java
+ #define JAVA_AX_ROWS (1)
+ #define JAVA_AX_COLS (2)
+
+ @implementation TableAccessibility
+
+ - (NSArray *)initializeAttributeNamesWithEnv:(JNIEnv *)env
+ {
+ NSMutableArray *names = (NSMutableArray *)[super initializeAttributeNamesWithEnv:env];
+
+ [names addObject:NSAccessibilityRowCountAttribute];
+ [names addObject:NSAccessibilityColumnCountAttribute];
+ return names;
+ }
+
+ - (id)getTableInfo:(jint)info {
+ if (fAccessible == NULL) return 0;
+
+ JNIEnv* env = [ThreadUtilities getJNIEnv];
+ jint count = JNFCallStaticIntMethod(env, jm_getTableInfo, fAccessible,
+ fComponent, info);
+ NSNumber *index = [NSNumber numberWithInt:count];
+ return index;
+ }
+
+
+ - (id)accessibilityRowCountAttribute {
+ return [self getTableInfo:JAVA_AX_ROWS];
+ }
+
+ - (id)accessibilityColumnCountAttribute {
+ return [self getTableInfo:JAVA_AX_COLS];
+ }
+ @end
+
/*
* Returns Object.equals for the two items
* This may use LWCToolkit.invokeAndWait(); don't call while holding fLock
* and try to pass a component so the event happens on the correct thread.
*/
< prev index next >