< 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 >