blob: b523f176dc104e3621b53b53b6eebbd90aa8907e [file] [log] [blame]
/*
* Copyright 2008 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.gwt.user.client.ui;
import com.google.gwt.user.client.Element;
/**
* <p>Allows ARIA attributes to be added to widgets so that they can be
* identified by assistive technologies. Firefox 3, Firefox 2 (via FireVox),
* and Opera 9.5 are the only released browsers that currently support this
* feature, but in the near future it will be available in Safari and Internet
* Explorer 8. Individual screen reader applications may also support ARIA, to
* varying extents.</p>
*
* <p>A 'role' describes the role a widget plays in a page: i.e. a checkbox
* widget is assigned a "checkbox" role.</p>
*
* <p>A 'state' describes the current state of the widget. For example, a
* checkbox widget has the state "checked", which is given a value of "true" or
* "false" depending on whether it is currently checked or unchecked.</p>
*
* <p>See <a href="http://developer.mozilla.org/en/docs/Accessible_DHTML">the
* MDC page on Accessible DHTML</a> for more information.</p>
*
* <p>Note that although this API is public, the ARIA specification is still
* somewhat in flux. As a result, this API is subject to change as the
* specification stabilizes; we will do our best to keep the community
* updated on changes.</p>
*/
public final class Accessibility {
public static final String ROLE_TREE = "tree";
public static final String ROLE_TREEITEM = "treeitem";
public static final String ROLE_BUTTON = "button";
public static final String ROLE_TABLIST = "tablist";
public static final String ROLE_TAB = "tab";
public static final String ROLE_TABPANEL = "tabpanel";
public static final String ROLE_MENUBAR = "menubar";
public static final String ROLE_MENUITEM = "menuitem";
public static final String STATE_ACTIVEDESCENDANT = "aria-activedescendant";
public static final String STATE_POSINSET = "aria-posinset";
public static final String STATE_SETSIZE = "aria-setsize";
public static final String STATE_SELECTED = "aria-selected";
public static final String STATE_EXPANDED = "aria-expanded";
public static final String STATE_LEVEL = "aria-level";
public static final String STATE_HASPOPUP = "aria-haspopup";
public static final String STATE_PRESSED = "aria-pressed";
private static final String ATTR_NAME_ROLE = "role";
/**
* Requests the string value of the role with the specified namespace.
*
* @param elem the element which has the specified role
* @return the value of the role, or an empty string if none exists
*/
public static String getRole(Element elem) {
return elem.getAttribute(ATTR_NAME_ROLE);
}
/**
* Requests the string value of the state with the specified namespace.
*
* @param elem the element which has the specified state
* @param stateName the name of the state
* @return the value of the state, or an empty string if none exists
*/
public static String getState(Element elem, String stateName) {
return elem.getAttribute(stateName);
}
/**
* Removes the state from the given element.
*
* @param elem the element which has the specified state
* @param stateName the name of the state to remove
*/
public static void removeState(Element elem, String stateName) {
elem.removeAttribute(stateName);
}
/**
* Assigns the specified element the specified role and value for that role.
*
* @param elem the element to be given the specified role
* @param roleName the name of the role
*/
public static void setRole(Element elem, String roleName) {
elem.setAttribute(ATTR_NAME_ROLE, roleName);
}
/**
* Assigns the specified element the specified state and value for that state.
*
* @param elem the element to be given the specified state
* @param stateName the name of the state
* @param stateValue the value of the state
*/
public static void setState(Element elem, String stateName, String stateValue) {
elem.setAttribute(stateName, stateValue);
}
private Accessibility() {
}
}