This is Flex's base accessibility implementation class for MX and Spark components. When a MX or Spark component is created, its accessibilityImplementation property is set to an instance of a subclass of this class. The Flash Player then uses this object to allow MSAA clients such as screen readers to see and manipulate the Button. See the flash.accessibility.AccessibilityImplementation classe for additional information about accessibility implementation classes and MSAA.
The Flash Player does not support a true hierarchy of accessible objects. If a DisplayObject has an accessibilityImplementation object, then the accessibilityImplementation objects of its children are ignored. However, the Player does allow a component's accessibility implementation class to expose MSAA information for its internal parts. (For example, a List exposes MSAA information about its items.)
The number of children (internal parts) and the child IDs used to identify them are determined by the getChildIDArray() method. In the Player's AccessibilityImplementation base class, this method simply returns null. Flex's AccImpl class overrides it to return an empty array. It also provides a protected utility method, createChildIDArray() which subclasses with internal parts can use in their overrides.
The MSAA Role of a component and its internal parts is determined by the get_accRole() method. In the Player's AccessibilityImplementation base class, this method throws a runtime error, since subclasses are expected to override it. Flex's AccImpl class has a protected 'role' property which subclasses generally set in their constructor, and it overrides get_accRole() to return this property.
The MSAA Name of a component and its internal parts is determined by the get_accName() method. In the Player's AccessibilityImplementation base class, this method simply returns null. Flex's AccImpl class overrides it to construct a name as follows, starting with an empty string and separating added portions with a single space:
The MSAA Description is determined solely by a component's accessibilityProperties object and not by its accessibilityImplementation object. Therefore there is no logic in AccessibilityImplementation or AccImpl or any subclasses of AccImpl related to the description. The normal way to set the description in Flex is via the accessibilityDescription property on UIComponent, which simply sets accessibilityProperties.description.
The MSAA State of a component and its internal parts is determined by the get_accState() method. In the Player's AccessibilityImplementation base class, this method throws a runtime error, since subclasses are expected to override it. Flex's AccImpl class does not override it, but provides a protected utility method, getState(), for subclasses to use in their overrides. The getState() method determines the state as a combination of
Note that by default all components are assumed to be focusable and thus the AccImpls for non-focusable components like Label must clear this state flag. When a component has a state of unavailable the focusable state is removed by this AccImpl.
The MSAA Value of a component and its internal parts is determined by the get_accValue() method. In the Player's AccessibilityImplementation base class, this method simply returns null. Flex's AccImpl class does not override it, but subclasses for components like TextInput do.
The MSAA Location for a component's internal parts -- but not the component itself -- is determined by the get_accLocation() method. This method is never called with a childID of 0; instead, the Flash Player determines the MSAA Location of a component based on its bounding rectangle as determined by getBounds(). Flex's AccImpl class does not override this method, but subclasses for components with internal parts do.
The MSAA DefaultAction for a component and its internal parts is determined by the get_accDefaultAction() method. In the Player's AccessibilityImplementation base class, this method simply returns null. Flex's AccImpl class does not override it, but subclasses with default actions do. These subclasses also override AccessibilityImplementation's accDoDefaultAction() method to perform the default action that they advertise.
xxx
xxx
The MSAA events EVENT_OBJECT_SHOW and EVENT_OBJECT_HIDE are sent when the object is shown or hidden. The corresponding states for these are covered by the Flash Player which does not render in MSAA components that are hidden. When the component is shown the states mention for the default AccImpl are used.