Information technology — Interoperability with Assistive Technology (AT) — Part 6: Java accessibility application programming interface (API)

ISO/IEC TR 13066-6:2014 provides an overview to the structure and terminology of the Java accessibility application programming interface (API) It will provide: A description of the overall architecture and terminology of the API; Further introductory explanations regarding the content and use of the API beyond those found in Annex A of ISO/IEC 13066-1; An overview of the main properties, including of: user interface elements; how to get and set focus; of communication mechanisms in the API; a discussion of design considerations for the API (e.g. pointers to external sources of information on accessibility guidance related to using the API); information on extending the API (and where this is appropriate); an introduction to the programming interface of the API (including pointers to external sources of information); an introduction to the Java Access Bridge for Windows and the Java Access Bridge for GNOME. It will provide this information as an introduction to the Java API to assist: IT system level developers who create custom controls and/or interface to them; AT developers involved in programming "hardware to software" and "software to software" interactions.

Technologies de l'information — Interopérabilité avec les technologies d'assistance — Partie 6: Interface de programmation d'applications (API) d'accessibilité Java

General Information

Status
Published
Publication Date
13-Jul-2014
Current Stage
9093 - International Standard confirmed
Completion Date
28-Jul-2017
Ref Project

Buy Standard

Technical report
ISO/IEC TR 13066-6:2014 - Information technology -- Interoperability with Assistive Technology (AT)
English language
40 pages
sale 15% off
Preview
sale 15% off
Preview

Standards Content (Sample)

TECHNICAL ISO/IEC
REPORT TR
13066-6
First edition
2014-07-15

Information technology — Interoperability
with assistive technology (AT) —
Part 6:
Java accessibility application
programming interface (API)
Technologies de l'information — Interopérabilité avec les technologies
d'assistance —
Partie 6: Interface de programmation d'applications (API) d'accessibilité
Java




Reference number
ISO/IEC TR 13066-6:2014(E)
©
ISO/IEC 2014

---------------------- Page: 1 ----------------------
ISO/IEC TR 13066-6:2014(E)

COPYRIGHT PROTECTED DOCUMENT


©  ISO/IEC 2014
All rights reserved. Unless otherwise specified, no part of this publication may be reproduced or utilized otherwise in any form or by any
means, electronic or mechanical, including photocopying, or posting on the internet or an intranet, without prior written permission.
Permission can be requested from either ISO at the address below or ISO’s member body in the country of the requester.
ISO copyright office
Case postale 56  CH-1211 Geneva 20
Tel. + 41 22 749 01 11
Fax + 41 22 749 09 47
E-mail copyright@iso.org
Web www.iso.org
Published in Switzerland

ii © ISO/IEC 2014 – All rights reserved

---------------------- Page: 2 ----------------------
ISO/IEC TR 13066-6:2014(E)
Contents Page
Foreword . v
Introduction . vi
1 Scope . 1
2 Terms and Definitions . 1
3 General Description . 5
3.1 General Description . 5
3.2 Architecture . 5
4 Using the API . 6
4.1 Overview . 6
4.2 Package javax.accessibility* . 7
4.2.1 The AccessibleContext class . 7
4.2.2 The AccessibleAction interface . 8
4.2.3 The AccessibleComponent and AccessibleExtendedComponent interfaces . 8
4.2.4 The AccessibleIcon interface . 10
4.2.5 The AccessibleSelection interface . 10
4.2.6 The AccessibleStreamable interface . 10
4.2.7 The AccessibleTable and AccessibleExtendedTable interfaces . 11
4.2.8 The AccessibleText, AccessibleEditableText, AccessibleExtendedText, and
AccessibleHypertextText interfaces . 12
4.2.9 The AccessibleValue interface . 13
4.3 Implementing the Java accessibility API . 13
4.3.1 Using existing accessible user interface components . 14
4.3.2 Subclassing existing accessible user interface components . 16
4.3.3 Creating accessible user interface components “from scratch” . 17
5 Exposing User Interface Element Information . 18
5.1 Role, state(s), boundary, name, and description of the user interface element . 18
5.1.1 Role information . 19
5.1.2 State(s) information . 19
5.1.3 Boundary information . 20
5.1.4 Name information . 21
5.1.5 Description information . 21
5.2 Current value and any minimum or maximum values, if the user interface element
represents one of a range of values . 22
5.2.1 Additional value information: setting values. 23
5.3 Text contents, text attributes, and the boundary of text rendered to the screen . 23
5.4 The relationship of the user interface element to other user interface elements. 24
5.4.1 in a single data value, whether this user interface element is a label for another user
interface element or is labelled by another user interface element . 24
5.4.2 in a table, the row and column that it is in, including headers of the row and column if
present. . 25
5.4.3 in a hierarchical relationship, any parent containing the user interface element, and any
children contained by the user interface element . 26
6 Exposing User Interface Element Actions . 27
7 Keyboard Focus . 28
7.1 Tracking (and modifying) focus . 28
7.2 Tracking (and modifying) text insertion point . 29
7.2.1 Tracking (and modifying) selection attributes . 30
© ISO/IEC 2014 – All rights reserved iii

---------------------- Page: 3 ----------------------
ISO/IEC TR 13066-6:2014(E)
8 Events . 31
8.1 changes in the user interface element value . 31
8.2 changes in the name of the user interface element . 31
8.3 changes in the description of the user interface element . 31
8.4 changes in the boundary of the user interface element . 31
8.5 changes in the hierarchy of the user interface element . 32
8.6 changes in other accessibility aspects of user interface components . 32
9 Programmatic Modifications of States, Properties, Values, and Text . 33
9.1 Programmatic Modifications of States . 33
9.2 Programmatic Modifications of Properties . 34
9.3 Programmatic Modifications of Values . 34
9.4 Programmatic Modifications of Text. 34
10 Design Considerations . 35
10.1 Java Access Bridge for Windows . 35
10.2 Java Access Bridge for Linux / UNIX graphical environments . 36
11 Further Information. 38
11.1 Role extensibility . 38
11.2 State extensibility . 39
11.3 Relation extensibility . 39
11.4 Interface extensibility . 39
Bibliography . 40


iv © ISO/IEC 2014 – All rights reserved

---------------------- Page: 4 ----------------------
ISO/IEC TR 13066-6:2014(E)
Foreword
ISO (the International Organization for Standardization) and IEC (the International Electrotechnical
Commission) form the specialized system for worldwide standardization. National bodies that are members of
ISO or IEC participate in the development of International Standards through technical committees
established by the respective organization to deal with particular fields of technical activity. ISO and IEC
technical committees collaborate in fields of mutual interest. Other international organizations, governmental
and non-governmental, in liaison with ISO and IEC, also take part in the work. In the field of information
technology, ISO and IEC have established a joint technical committee, ISO/IEC JTC 1.
The procedures used to develop this document and those intended for its further maintenance are described
in the ISO/IEC Directives, Part 1. In particular the different approval criteria needed for the different types of
document should be noted. This document was drafted in accordance with the editorial rules of the
ISO/IEC Directives, Part 2 (see www.iso.org/directives).
Attention is drawn to the possibility that some of the elements of this document may be the subject of patent
rights. ISO and IEC shall not be held responsible for identifying any or all such patent rights. Details of any
patent rights identified during the development of the document will be in the Introduction and/or on the ISO
list of patent declarations received (see www.iso.org/patents).
Any trade name used in this document is information given for the convenience of users and does not
constitute an endorsement.
For an explanation on the meaning of ISO specific terms and expressions related to conformity assessment,
as well as information about ISO's adherence to the WTO principles in the Technical Barriers to Trade (TBT)
see the following URL: Foreword - Supplementary information
The committee responsible for this document is ISO/IEC JTC 1, Information technology, Subcommittee
SC 35, User interfaces.
ISO/IEC 13066 consists of the following parts, under the general title Information technology —
Interoperability with assistive technology (AT):
 Part 1: Requirements and recommendations for interoperability
 Part 2: Windows accessibility application programming interface (API)
 Part 3: IAccessible2 accessibility application programming interface (API)
 Part 4: Linux/UNIX graphical environments accessibility application programming interface (API)
 Part 6: Java accessibility application programming interface (API)

© ISO/IEC 2014 – All rights reserved v

---------------------- Page: 5 ----------------------
ISO/IEC TR 13066-6:2014(E)
Introduction
Assistive technology (AT) is specialized information technology (IT) hardware or software that is added to or
incorporated within a system that increases accessibility for an individual. In other words, it is special purpose
IT that interoperates with another IT product enabling a person with a disability to use the IT product.
Interoperability involves the ability to add or replace Assistive Technology (AT) to existing components of
Information Technology (IT) systems. Interoperability between AT and IT is best facilitated via the use of
standardized, public interfaces for all IT components.
This part of ISO/IEC 13066 describes the Java accessibility API that can be used as a framework to support
software to software IT-AT interoperability on the multiple computing platforms. It also describes the Java
Access Bridge for Windows – for enabling AT on Windows to interoperate with accessible Java applications
on the Microsoft Windows platform – and the Java Access Bridge for GNOME – for enabling AT on UNIX and
GNU/Linux platforms running the GNOME graphical desktop to interoperate with accessible Java applications
on UNIX and GNU/Linux environments.
NOTE 1 GNOME is both a common and accessible graphical desktop for Linux / UNIX graphical environments, as well
as an open source project delivering a collection of software libraries and applications. It was formerly an acronym
meaning “GNU Network Object Model Environment”.
NOTE 2 The code examples contained in this document are illustrative in nature. With rare exception, they do not
include error checking or exception handling, and should be treated more like pseudo-code than as cookbook templates
that can use directly in applications or assistive technologies.
vi © ISO/IEC 2014 – All rights reserved

---------------------- Page: 6 ----------------------
TECHNICAL REPORT ISO/IEC TR 13066-6:2014(E)

Information technology — Interoperability with assistive
technology (AT) —
Part 6:
Java accessibility application programming interface (API)
1 Scope
This part of ISO/IEC 13066 provides an overview to the structure and terminology of the Java accessibility API
It will provide:
 A description of the overall architecture and terminology of the API;
 Further introductory explanations regarding the content and use of the API beyond those found in Annex
A of ISO/IEC 13066-1;
 An overview of the main properties, including of:
 user interface elements;
 how to get and set focus;
 of communication mechanisms in the API;
 a discussion of design considerations for the API (e.g. pointers to external sources of information on
accessibility guidance related to using the API);
 information on extending the API (and where this is appropriate);
 an introduction to the programming interface of the API (including pointers to external sources of
information).
 an introduction to the Java Access Bridge for Windows and the Java Access Bridge for GNOME
It will provide this information as an introduction to the Java API to assist:
 IT system level developers who create custom controls and/or interface to them;
 AT developers involved in programming "hardware to software" and "software to software" interactions
2 Terms and Definitions
For the purposes of this document, the following terms and definitions apply.
2.1
accessible object
a part of the user interface that is accessible by and exposes the Java accessibility API
Note 1 to entry An accessible object is represented by an object of the “AccessibleContext” Java class
© ISO/IEC 2014 – All rights reserved
1

---------------------- Page: 7 ----------------------
ISO/IEC TR 13066-6:2014(E)
2.2
application programming interface
API
collection of invocation methods and associated parameters used by one piece of software to request actions
from another piece of software
[SOURCE: ISO/IEC 18012-1 Information technology – Home electronic system – Guidelines for product
interoperability – Introduction, definition 3.1.1]
2.3
application software
software that is specific to the solution of an application problem
[SOURCE: ISO/IEC 2381-1, definition 10.04.01]
EXAMPLE A spreadsheet program is application software.
2.4
Assistive Technology
(AT)
hardware or software that is added to or incorporated within a system that increases accessibility for an
individual
EXAMPLE Braille displays, screen readers, screen magnification software and eye tracking devices are assistive
technologies.
[SOURCE: ISO 9241-171, definition 3.5]
Note 1 to entry Within this document, where Assistive Technology (and its abbreviation AT) is used, it is to be considered
as both singular and plural, without distinction. If it is to be used in the singular only, it will be preceded by the article "an"
(i.e. an Assistive Technology). If it is to be used in the plural only, it will be preceded by the adjective "multiple" (i.e.
multiple AT).
2.5
class
a term from object oriented programming, also used in the Java programming language, denoting the
definition/description of an object containing code (methods) and data (fields)
EXAMPLE All objects in object oriented programming belong to a class (e.g. a specific window object is an instance
of the window class).
Note 1 to entry Much of the Java accessibility API consists of these class definitions, and implementations of the Java
accessibility API are instances of these classes.
Note 2 to entry In objected oriented programming – and specifically in the Java programming language – classes can be
“subclassed” (e.g. a dialog box class is a subclass of the more generic window class), and portions of the Java
accessibility API are implemented as subclasses (e.g. AccessibleRole, AccessibleState, and AccessibleRelation are all
subclasses of the more generic AccessibleBundle class).
2.6
compatibility
the capability of a functional unit to meet the requirements of a specified interface without appreciable
modification
[SOURCE: ISO/IEC 2381-1, definition 10.06.11]
© ISO/IEC 2014 – All rights reserved
2

---------------------- Page: 8 ----------------------
ISO/IEC TR 13066-6:2014(E)
2.7
information/communication technology
(ICT)
technology for gathering, storing, retrieving, processing, analysing and transmitting information
[SOURCE: ISO 9241-20, definition 3.4]
EXAMPLE A computer system is a type of ICT.2.13
2.8
interface
a shared boundary between two functional units, defined by various characteristics
pertaining to the functions, physical interconnections, signal exchanges, and other characteristics, as
appropriate
[SOURCE: ISO/IEC 2381-1, definition 10.01.38]
2.9
interface
in object oriented programming generally – and the Java language in
particular – an interface is a set of public methods (and potentially public fields) that all objects implementing
the interface must include
Note 1 to entry As with Java programming language classes that can be “subclassed”, interfaces can be “subclassed” as
well – and the result is called a “subinterface”.
Note 2 to entry Much of the Java accessibility API is implemented as Java interfaces, and some of these as subinterfaces
(e.g. the AccessibleEditableText interface is a subinterface of the more generic AccessibleText interface).
2.10
interoperability
the capability to communicate, execute programs, or transfer data among various functional units in a manner
that requires the user to have little or no knowledge of the unique characteristics of those units
[SOURCE: ISO/IEC 2381-1, definition 10.01.47]
2.11
inter-process communication
(IPC)
a mechanism by which different software processes communicate with each other – across process
boundaries, runtime environments, and sometimes also computers and operating systems
2.12
operating system
(OS)
software that controls the execution of programs and that may provide services such as resource allocation,
scheduling, input-output control, and data management
Note 1 to entry Although operating systems are predominantly software, partial hardware implementations are possible.
[SOURCE: ISO/IEC 2381-1, definition 10.04.08]
© ISO/IEC 2014 – All rights reserved
3

---------------------- Page: 9 ----------------------
ISO/IEC TR 13066-6:2014(E)
2.13
package
a collection of class and interface definitions that are related to one another,
and which are bundled together (into a package)
EXAMPLE The Java accessibility API is collected together into the core Java platform package
javax.accessibility.* and the fully qualified name of each class or interface in this package begins with the
package name, e.g. javax.accessibility.AccessibleEditableText.
2.14
runtime environment
a software environment that provides all of the resources necessary for software applications to run, yet is not
itself an operating system
EXAMPLE 1 The Java runtime environment.
EXAMPLE 2 Adobe Flash player.
EXAMPLE 3 Microsoft Silverlight's runtime.
Note 1 to entry Virtual machines are type of runtime environment, which are explicitly emulating one or more specific sets
of hardware.
2.15
software
all or part of the programs, procedures, rules, and associated documentation of an information processing
system
Note 1 to entry Software is an intellectual creation that is independent of the medium on which it is recorded.
[SOURCE: ISO/IEC 2381-1, definition 10.01.08]
2.16
user interface
(UI)
mechanisms by which a person interacts with a computer system
Note 1 to entry The user interface provides input mechanisms, allowing users to manipulate a system. It also provides
output mechanisms, allowing the system to produce the effects of the users’ manipulation.
2.17
user interface element
user interface object
user interface component
entity of the user interface that is presented to the user by the software
[SOURCE: ISO 9241-171 definition 3.38]
Note 1 to entry User interface elements may or may not be interactive.
Note 2 to entry Both entities relevant to the task and entities of the user interface are regarded as user interface elements.
Different user interface element types are text, graphics and controls. A user interface element may be a representation or
an interaction mechanism for a task object (such as a letter, a sales order, electronic parts, or a wiring diagram) or a
system object (such as a printer, hard disk, or network connection). It may be possible for the user to directly manipulate
some of these user interface elements.
© ISO/IEC 2014 – All rights reserved
4

---------------------- Page: 10 ----------------------
ISO/IEC TR 13066-6:2014(E)
EXAMPLE 1 User interface elements in a graphical user interface include such things as basic objects (such as
window title bars, menu items, push buttons, image maps, and editable text fields) or containers (such as windows,
grouping boxes, menu bars, menus, groups of mutually-exclusive option buttons, and compound images that are made up
of several smaller images).
EXAMPLE 2 User interface elements in an audio user interface include such things as menus, menu items, messages,
and action prompts.
EXAMPLE 3 User interface elements in tactile interfaces include such things as tactile dots, tactile bars, surfaces,
knobs, and grips.
3 General Description
3.1 General Description
The Java accessibility API was developed by Sun Microsystems, Inc. as part of the Java Foundation Classes
(along with the “Swing” user interface library), and was then folded into the Java Platform release 1.2. Work
began in early 1997, based on requirements gathered from industry and assistive technology stakeholders,
and with review and design feedback from many of these stakeholders as it matured. The 1.0 release
shipped with the Java Foundation Classes release 1.0, in 1997, and was folded into the Java SE platform in
January 1998. An initial implementation of the API in the “Swing” library was also part of that release.
The Java Accessibility API was born out of necessity – the first screen access techniques for graphical
systems of the Macintosh and Windows reverse-engineered and hooked into the graphics rendering pipeline
to build off-screen models for screen readers (also known as “screen scraping”) – techniques that would not
work in the Java environment. The Java accessibility API was the first comprehensive accessibility API (a
“3rd generation accessibility API”). It provided support for everything that a screen reader needed, and is the
progenitor of the UNIX accessibility API (described in ISO/IEC 13066-4) and the UNO accessibility API of
Oracle Open Office (which is the basis for IAccessible2, described in ISO/IEC 13066-3). It was also a model
for the WAI-ARIA specification (described in ISO/IEC 13066-5).
Because the Java platform is commonly running on top of some other, underlying operating system (e.g.
Microsoft Windows or Solaris or GNU/Linux or Macintosh), and users with significant disabilities are using
assistive technologies designed to work with the underlying operating system, a key facet of AT-IT
interoperability on the Java platform is the use of a “bridge”, which exposes the Java accessibility API outside
of the Java platform, and to assistive technologies running on the underlying operating system. While it is
certainly possible to use AT directly within the Java platform – and such technologies have been created – it is
rarely used in this fashion.
3.2 Architecture
The Java accessibility API is based on the Java object model. The API itself is contained in a Java package
(javax.accessibility.*), that is a core part of the Java platform. User interface components that are
accessible must directly implement the javax.accessibility.Accessible interface (and for the rest of this
document we will drop the package name and simply use the class or interface names, e.g. Accessible).
When requested by an AT (or by a bridge on behalf of the AT), the accessible user interface component must
then return an object that implements the Java accessibility API (the Accessible.getAccessibleContext()
method). This object then handles all accessibility API calls on behalf of the user interface component. This
architecture means that implementation of the Java accessibility API can either be implemented directly by
that object, or be “delegated” to some other object or library.
In addition to this “delegation” model, the Java accessibility API is implemented as a core
AccessibleContext object – containing all of the information common to every user interface component –
and then a set of accessibility “sub-interfaces” or “specializations” which are implemented only as appropriate
for the user interface component in question. For example, components containing text would implement the
AccessibleText optional interface (and more specifically, the AccessibleEditableText optional interface if
that text were editable). Components which take on one of a range of values would implement the
AccessibleValue optional interface. etc.
© ISO/IEC 2014 – All rights reserved
5

---------------------- Page: 11 ----------------------
ISO/IEC TR 13066-6:2014(E)
The diagram below shows the Java Foundation Classes user interface component javax.swing.JSlider,
and those aspects of the Java Accessibility API implemented for it:

Figure 1 – IIlustration of the accessibility interfaces implemented by the Swing JSlider component
4 Using the API
4.1 Overview
The Java accessibility API is contained in the javax.accessibility.* package. It consists of a
core/tagging interface that all accessible user interface components must implement, a core accessibility class
containing that portion of the Java accessibility API that all accessible user interface components must
provide, an optional set of accessibility sub-interfaces, and then a set of helper classes. These are described
below in the subclause
Applications can implement the Java Accessibility API in one of three ways:
a) They can use user interface components that have already implemented the Java accessibility API (such
as those in the Java Foundation Classes or “Swing” lib
...

Questions, Comments and Discussion

Ask us and Technical Secretary will try to provide an answer. You can facilitate discussion about the standard in here.