// Copyright 2007. Adobe Systems Incorporated. All Rights Reserved. package fl.accessibility { import fl.controls.LabelButton; import fl.controls.CheckBox; import fl.core.UIComponent; /** * The student_ar_fl_accessibility_CheckBoxAccImpl class, also called the CheckBox Accessibility Implementation class, * is used to make a CheckBox component accessible. This class enables communication * between a CheckBox component and a screen reader. Screen readers are used to translate * screen content into synthesized speech or braille for visually impaired users. * *
The student_ar_fl_accessibility_CheckBoxAccImpl class supports system roles, object-based events, and states.
* *A CheckBox reports the role ROLE_SYSTEM_CHECKBUTTON
(0x2C) to a screen
* reader.
A CheckBox reports the following states to a screen reader:
*STATE_SYSTEM_NORMAL
(0x00000000)STATE_SYSTEM_UNAVAILABLE
(0x00000001)STATE_SYSTEM_FOCUSED
(0x00000004)STATE_SYSTEM_PRESSED
(0x00000008)STATE_SYSTEM_CHECKED
(0x00000010)STATE_SYSTEM_FOCUSABLE
(0x00100000)A CheckBox dispatches the following events to a screen reader:
*EVENT_OBJECT_STATECHANGE
(0x800A)EVENT_OBJECT_NAMECHANGE
(0x800C)Screen reader users can activate a Checkbox component with the spacebar or the Enter key.
* * @see fl.controls.CheckBox CheckBox * * @langversion 3.0 * @playerversion Flash 9.0.28.0 */ public class student_ar_fl_accessibility_CheckBoxAccImpl extends LabelButtonAccImpl { /** * @private * Static variable triggering thehookAccessibility()
method.
* This is used for initializing student_ar_fl_accessibility_CheckBoxAccImpl class to hook its
* createAccessibilityImplementation()
method to CheckBox class
* before it gets called from UIComponent.
*
* @langversion 3.0
* @playerversion Flash 9.0.28.0
*/
private static var accessibilityHooked:Boolean = hookAccessibility();
/**
* @private
* Static method for swapping the createAccessibilityImplementation()
* method of CheckBox with the student_ar_fl_accessibility_CheckBoxAccImpl class.
*
* @langversion 3.0
* @playerversion Flash 9.0.28.0
*/
private static function hookAccessibility():Boolean {
CheckBox.createAccessibilityImplementation = createAccessibilityImplementation;
return true;
}
//--------------------------------------------------------------------------
// Class constants
//--------------------------------------------------------------------------
/**
* @private
*
* @langversion 3.0
* @playerversion Flash 9.0.28.0
*/
private static const STATE_SYSTEM_CHECKED:uint = 0x00000010;
//--------------------------------------------------------------------------
// Class methods
//--------------------------------------------------------------------------
/**
* @private
* Method for creating the Accessibility class.
* This method is called from UIComponent.
*
* @param component The UIComponent instance that this AccImpl instance
* is making accessible.
*
* @langversion 3.0
* @playerversion Flash 9.0.28.0
*/
public static function createAccessibilityImplementation(component:UIComponent):void {
component.accessibilityImplementation = new student_ar_fl_accessibility_CheckBoxAccImpl(component);
}
/**
* Enables accessibility for a CheckBox component.
* This method is required for the compiler to activate
* the accessibility classes for a component.
*
* @langversion 3.0
* @playerversion Flash 9.0.28.0
*/
public static function enableAccessibility():void {
}
//--------------------------------------------------------------------------
// Constructor
//--------------------------------------------------------------------------
/**
* @private
* @internal Nivesh says: I don't think we should document the constructors
* for the accessibility classes. End-users just have to call the
* static enableAccessibility method. They don't really create an
* instance of the classes.
*
* Creates a student_ar_fl_accessibility_CheckBoxAccImpl instance for the specified CheckBox component.
*
* @param component The CheckBox instance that this student_ar_fl_accessibility_CheckBoxAccImpl instance
* makes accessible.
*
* @langversion 3.0
* @playerversion Flash 9.0.28.0
*/
public function student_ar_fl_accessibility_CheckBoxAccImpl(component:UIComponent) {
super(component);
role = 0x2C;
}
//--------------------------------------------------------------------------
// Overridden methods: AccessibilityImplementation
//--------------------------------------------------------------------------
/**
* @private
* IAccessible method for returning the state of the CheckBox.
* States are predefined for all the components in MSAA.
* Values are assigned to each state.
* Depending upon whether the CheckBox is checked or unchecked,
* a value is returned.
*
* @param childID The child id.
*
* @return State.
*
* @langversion 3.0
* @playerversion Flash 9.0.28.0
*/
override public function get_accState(childID:uint):uint {
var accState:uint = getState(childID);
if (LabelButton(master).selected) {
accState |= STATE_SYSTEM_CHECKED;
}
return accState;
}
/**
* @private
* IAccessible method for returning the default action of
* the CheckBox, which is Check or UnCheck depending on the state.
*
* @param childID The child id.
*
* @return DefaultAction.
*
* @langversion 3.0
* @playerversion Flash 9.0.28.0
*/
override public function get_accDefaultAction(childID:uint):String {
return LabelButton(master).selected ? "UnCheck" : "Check";
}
}
}