JLCA 3.0 – Java Accessibility (JAAPI)


Java Accessibility allows extending programs by interfacing application components with assistive technologies -such as speech recognition and audio output- for users having special needs and/or permissions. Accessibility could be featured as a two-sided conversation between an assistive technology and accessibility-friendly components of the application. Java grants access to assistive technologies for all components in VM and brings the ability to relate –direct and quickly- assistive technologies with GUI applications without interfering. Java Accessibility is mainly converted to .NET Framework through classes AccessibleObject, AccessibleRole, AccessibleSelection, AccessibleStates and Control on System.Windows.Forms API.


 


Principally, JLCA 3.0 helps to convert the following features of Java Accessibility: Accessible Classes, Accessible Contexts (partially) and Accessible Components.


 


Table 25 and Table 26 contains relevant details about Accessibility conversion. In a summarized manner, they enunciate the Accessibility features preserved in converted applications.  On the other hand, they suggest the issues that the user should take care while converting applications using Accessibility.


 


Coverage Details




















































































Class / Interface in Package javax.accessibility


Functionality


JLCA 3.0 Coverage


Description


Accessible


Accessible is the main interface that should be implemented by all supporting this package.


Converted


Converted to System.Windows.Forms.Control.AccessibilityObject.


AccessibleAction


This interface provides assistive technology to determine object’s action or to ask objects to perform some action.


Not


Converted


This could be performed through AccessibilityObject members like: DefaultAction and DoDefaultAction.


AccessibleBundle


AccessibleResourceBundle


These classes are used to maintain a strongly typed enumeration.


 


Not


Converted


In .NET Framework, the Accessibility model has no common abstraction to display locale-based strings for roles and states.


AccessibleComponent


This interface should be supported by any object that is rendered on the screen.


Converted


Converted to System.Windows.Forms.Control. It provides access to component’s properties.


AccessibleContext


AccessibleContext represents the minimum information that all accessible objects return.


Converted


Converted to AccessibleObject as it provides information about any accessible component. This information is based on the role of the visual class being used.


AccessibleHypertext


AccessibleHyperlink


These are used to represent hypertext information on screen.


Not


Converted


Some behavior to navigate accessible hypertext can be performed through methods of AccessibleObject.


AccessibleIcon


This interface should be supported by any object that has an associated icon.


Not


Converted


In .NET Framework icons-related information is not exposed through .NET Framework's accessibility mechanism.


AccessibleRelation


AccessibleRelationSet


These are used to support relations for accessible objects.


Not


Converted


.NET Framework does not have equivalent.


AccessibleRole


AccessibleRole determines the role of a component.


Converted


Converted to System.Windows.Forms.AccessibleRole that allows describing the generic function of components.


AccessibleSelection


AccessibleSelection provides the standard mechanism for an assistive technology to determine what the current selected children are, as well as modify the selection set.


Not


Converted


In .NET Framework, it is handled differently. A workaround could require a check on AccessibleSelection and AccessibilityObject.State.


AccessibleState


AccessibleStateSet


These are used to determine component’s particular state or component’s state set.


Converted


Converted to System.Windows.Forms.AccessibleStates which allows describing the common states of components. State sets are converted through the enum’s functionality.


AccessibleTable


AccessibleTable describes a user-interface component that presents data in a two-dimensional table format.


Not


Converted


In .NET Framework, form tables can be accessed as simple lists within instances of AccessibleObject.


AccessibleTableModelChange


This interface describes a change to the table model.


Not


Converted


.NET Framework does not provide such functionality.


AccessibleText


This interface provides the standard mechanism for an assistive technology to access text via its content, attributes, and spatial location.


Not


Converted


In .NET Framework, there is no direct equivalent. Some behavior to navigate text in a character-based way could be achieved through property AccessibilityObject.Value.


AccessibleValue


This interface provides the standard mechanism for an assistive technology to determine and set the numerical value as well as get the minimum and maximum values.


Not Converted


Reduced behavior to provide a current state for a data type with a range of values could be performed through property AccessibilityObject.Value.


Table 25: Accessibility Conversion Coverage


Issues






















Issue


Description


Accessible Icons, Tables And Relations


These Java Accessibility features are not natively supported by .NET Framework’s accessibility model.


Accessible Texts, HyperTexts And HyperLinks


Java’s Accessibility Functionality to display text components and web content (through relations between hypertext and hyperlinks) is not converted to .NET Framework.


A workaround could require the use of components to display web content in an accessibility-like manner.


Broken Inheritance


In Java, most visual classes implementing interface Accessible also inherit from java.awt.Component. Conversion of Accessible classes is carried-out to System.Windows.Forms.Control.


Java classes inheriting from Component are converted to .NET Framework classes which are not derived from System.Windows.Forms.Control. As Control is the base class for .NET Framework’s Accessibility, these kinds of Java classes could not be converted to .NET Framework accessibility-compliant classes.


Broken Inheritance happens with the conversion of classes such as: javax.swing.JMenuItem, javax.swing.JMenuBar, javax.swing.JMenu, java.awt.MenuItem, java.awt.MenuBar and java.awt.Menu. In case of these classes, the accessibility methods are not converted.


 


General Issues And Accessibility Context Conversion


Conversion of Java’s Accessibility to .NET Framework’s Accessibility is very limited because both models are very different and .NET Framework has no support to advanced-key features of Java accessibility.


Accessibility conversion is based on class AccessibleContext since it manages the base information for all accessible components such as: name, description, role and state.


Conversion for Accessible.getAccessibleContext, AccessibleContext.getAccessibleComponent and AccessibleContext.setAccessibleDescription is based on source code patterns.


In .NET Framework accessibility descriptions are assigned directly to the controls (in Java are managed by a context), the conversion tool then should track which context belongs to the control. This support is based on source code patterns.


User-Defined Accessible Components


In Java, implementing own Accessible components is done through interfaces Accessible and AccessibleContext (to manage user-defined accessibility information).


In .NET Framework, classes implementing the Java’s interface Accessible will inherit from System.Windows.Forms.Control as in .NET accessibility support is built-in in Windows Forms. Since there is no multiple-inheritance in C# .NET, this could lead to compilation problems if the user-defined accessible component is extending from class which is not converted to a child of the Control.


A workaround could require redesigning the target hierarchy of user-defined accessible components. Consider to derive from classes like AccessibleObject or Control.ControlAccessibleObject (to provide the necessary accessibility information).


Table 26: Accessibility Conversion Issues


       

Skip to main content