306 jobject jkey = JNFGetObjectField(env, jchildJavaRole, sjf_key);
307 childJavaRole = JNFJavaToNSString(env, jkey);
308 (*env)->DeleteLocalRef(env, jkey);
309 }
310
311 JavaComponentAccessibility *child = [self createWithParent:parent accessible:jchild role:childJavaRole index:childIndex withEnv:env withView:parent->fView];
312
313 (*env)->DeleteLocalRef(env, jchild);
314 (*env)->DeleteLocalRef(env, jchildJavaRole);
315
316 [children addObject:child];
317 childIndex++;
318 }
319 (*env)->DeleteLocalRef(env, jchildrenAndRoles);
320
321 return children;
322 }
323
324 + (JavaComponentAccessibility *)createWithAccessible:(jobject)jaccessible withEnv:(JNIEnv *)env withView:(NSView *)view
325 {
326 jobject jcomponent = [(AWTView *)view awtComponent:env];
327 jint index = JNFCallStaticIntMethod(env, sjm_getAccessibleIndexInParent, jaccessible, jcomponent);
328 NSString *javaRole = getJavaRole(env, jaccessible, jcomponent);
329 (*env)->DeleteLocalRef(env, jcomponent);
330 return [self createWithAccessible:jaccessible role:javaRole index:index withEnv:env withView:view];
331 }
332
333 + (JavaComponentAccessibility *) createWithAccessible:(jobject)jaccessible role:(NSString *)javaRole index:(jint)index withEnv:(JNIEnv *)env withView:(NSView *)view
334 {
335 return [self createWithParent:nil accessible:jaccessible role:javaRole index:index withEnv:env withView:view];
336 }
337
338 + (JavaComponentAccessibility *) createWithParent:(JavaComponentAccessibility *)parent accessible:(jobject)jaccessible role:(NSString *)javaRole index:(jint)index withEnv:(JNIEnv *)env withView:(NSView *)view
339 {
340 // try to fetch the jCAX from Java, and return autoreleased
341 jobject jCAX = [JavaComponentAccessibility getCAccessible:jaccessible withEnv:env];
342 if (jCAX == NULL) return nil;
343 JavaComponentAccessibility *value = (JavaComponentAccessibility *) jlong_to_ptr(JNFGetLongField(env, jCAX, jf_ptr));
344 if (value != nil) {
345 (*env)->DeleteLocalRef(env, jCAX);
346 return [[value retain] autorelease];
347 }
348
349 // otherwise, create a new instance
350 JavaComponentAccessibility *newChild = nil;
|
306 jobject jkey = JNFGetObjectField(env, jchildJavaRole, sjf_key);
307 childJavaRole = JNFJavaToNSString(env, jkey);
308 (*env)->DeleteLocalRef(env, jkey);
309 }
310
311 JavaComponentAccessibility *child = [self createWithParent:parent accessible:jchild role:childJavaRole index:childIndex withEnv:env withView:parent->fView];
312
313 (*env)->DeleteLocalRef(env, jchild);
314 (*env)->DeleteLocalRef(env, jchildJavaRole);
315
316 [children addObject:child];
317 childIndex++;
318 }
319 (*env)->DeleteLocalRef(env, jchildrenAndRoles);
320
321 return children;
322 }
323
324 + (JavaComponentAccessibility *)createWithAccessible:(jobject)jaccessible withEnv:(JNIEnv *)env withView:(NSView *)view
325 {
326 JavaComponentAccessibility *ret = nil;
327 jobject jcomponent = [(AWTView *)view awtComponent:env];
328 jint index = JNFCallStaticIntMethod(env, sjm_getAccessibleIndexInParent, jaccessible, jcomponent);
329 if (index >= 0) {
330 NSString *javaRole = getJavaRole(env, jaccessible, jcomponent);
331 ret = [self createWithAccessible:jaccessible role:javaRole index:index withEnv:env withView:view];
332 }
333 (*env)->DeleteLocalRef(env, jcomponent);
334 return ret;
335 }
336
337 + (JavaComponentAccessibility *) createWithAccessible:(jobject)jaccessible role:(NSString *)javaRole index:(jint)index withEnv:(JNIEnv *)env withView:(NSView *)view
338 {
339 return [self createWithParent:nil accessible:jaccessible role:javaRole index:index withEnv:env withView:view];
340 }
341
342 + (JavaComponentAccessibility *) createWithParent:(JavaComponentAccessibility *)parent accessible:(jobject)jaccessible role:(NSString *)javaRole index:(jint)index withEnv:(JNIEnv *)env withView:(NSView *)view
343 {
344 // try to fetch the jCAX from Java, and return autoreleased
345 jobject jCAX = [JavaComponentAccessibility getCAccessible:jaccessible withEnv:env];
346 if (jCAX == NULL) return nil;
347 JavaComponentAccessibility *value = (JavaComponentAccessibility *) jlong_to_ptr(JNFGetLongField(env, jCAX, jf_ptr));
348 if (value != nil) {
349 (*env)->DeleteLocalRef(env, jCAX);
350 return [[value retain] autorelease];
351 }
352
353 // otherwise, create a new instance
354 JavaComponentAccessibility *newChild = nil;
|