/* * Copyright 2012 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.aria.client; ///////////////////////////////////////////////////////// // This is auto-generated code. Do not manually edit! // ///////////////////////////////////////////////////////// import com.google.gwt.dom.client.Element; import java.util.HashMap; import java.util.Map; /** * <p>A factory providing each concrete role in the ARIA specification. Each role implements * methods that a GWT application can use to modify the appropriate DOM attributes for that * role.</p> * * <p>For example, suppose our GWT app has a image button and we want to make it visible in screen * readers as a button with some help text. To do this, we add a <i>button</i> role to the image and * set the ARIA <i>label</i> property to the help text that the screen reader can use:</p> * * <pre> * Roles.getButtonRole().set(img.getElement()); * Roles.getButtonRole().setAriaLabelProperty(img.getElement(), "some help text"); * </pre> * * <p>Most ARIA properties have a prefix of "aria-" and only affect screen readers, but there is * one exception: the "tabindex" property is the same one used for tab order in regular widgets. * For example, to set tabindex to 0 for the button: * </p> * * <pre> * Roles.getButtonRole().setTabindexExtraAttribute(img.getElement(), 0); * </pre> * * <p>When the button changes state (it's enabled or disabled), we can change the ARIA enabled * state to match, like this:</p> * * <pre> * Roles.getButtonRole().setAriaEnabledState(img.getElement(), isEnabled); * </pre> * * <p>ARIA distinguishes between properties (which change rarely and could be set in static HTML) * and states (which need to be updated in response to user input). This distinction can get a bit * blurry when a GWT app updates the DOM dynamically. Generally you should update ARIA * attributes at the same time that you change the CSS styles on a DOM node, so that a screen * reader will see the same state as someone viewing the page visually.</p> * * <p>The role interfaces form a hierarchy whose root is the {@link Role} interface, which contains * generic methods that aren't specific to a role. Some abstract roles include:</p> * <ol> * <li>{@link WidgetRole}, for DOM elements that represent either standalone or composite widgets. * <li>{@link CompositeRole}, for widgets that contain other widgets.</li> * <li>{@link StructureRole}, for DOM elements that are part of the page layout.</li> * <li>{@link LandmarkRole}, for DOM elements defining common regions of a page.</li> * <li>{@link WindowRole}, for DOM elements that define windows and dialogs.</li> * </ol> * </p> * * @see <a href="http://www.w3.org/TR/wai-aria/roles">the W3C specification</a> */ public final class Roles { private static final AlertdialogRole ALERTDIALOG = new AlertdialogRoleImpl("alertdialog"); private static final AlertRole ALERT = new AlertRoleImpl("alert"); private static final ApplicationRole APPLICATION = new ApplicationRoleImpl("application"); private static final ArticleRole ARTICLE = new ArticleRoleImpl("article"); private static final BannerRole BANNER = new BannerRoleImpl("banner"); private static final ButtonRole BUTTON = new ButtonRoleImpl("button"); private static final CheckboxRole CHECKBOX = new CheckboxRoleImpl("checkbox"); private static final ColumnheaderRole COLUMNHEADER = new ColumnheaderRoleImpl("columnheader"); private static final ComboboxRole COMBOBOX = new ComboboxRoleImpl("combobox"); private static final ComplementaryRole COMPLEMENTARY = new ComplementaryRoleImpl("complementary"); private static final ContentinfoRole CONTENTINFO = new ContentinfoRoleImpl("contentinfo"); private static final DefinitionRole DEFINITION = new DefinitionRoleImpl("definition"); private static final DialogRole DIALOG = new DialogRoleImpl("dialog"); private static final DirectoryRole DIRECTORY = new DirectoryRoleImpl("directory"); private static final DocumentRole DOCUMENT = new DocumentRoleImpl("document"); private static final FormRole FORM = new FormRoleImpl("form"); private static final GridcellRole GRIDCELL = new GridcellRoleImpl("gridcell"); private static final GridRole GRID = new GridRoleImpl("grid"); private static final GroupRole GROUP = new GroupRoleImpl("group"); private static final HeadingRole HEADING = new HeadingRoleImpl("heading"); private static final ImgRole IMG = new ImgRoleImpl("img"); private static final LinkRole LINK = new LinkRoleImpl("link"); private static final ListboxRole LISTBOX = new ListboxRoleImpl("listbox"); private static final ListitemRole LISTITEM = new ListitemRoleImpl("listitem"); private static final ListRole LIST = new ListRoleImpl("list"); private static final LogRole LOG = new LogRoleImpl("log"); private static final MainRole MAIN = new MainRoleImpl("main"); private static final MarqueeRole MARQUEE = new MarqueeRoleImpl("marquee"); private static final MathRole MATH = new MathRoleImpl("math"); private static final MenubarRole MENUBAR = new MenubarRoleImpl("menubar"); private static final MenuitemcheckboxRole MENUITEMCHECKBOX = new MenuitemcheckboxRoleImpl("menuitemcheckbox"); private static final MenuitemradioRole MENUITEMRADIO = new MenuitemradioRoleImpl("menuitemradio"); private static final MenuitemRole MENUITEM = new MenuitemRoleImpl("menuitem"); private static final MenuRole MENU = new MenuRoleImpl("menu"); private static final NavigationRole NAVIGATION = new NavigationRoleImpl("navigation"); private static final NoteRole NOTE = new NoteRoleImpl("note"); private static final OptionRole OPTION = new OptionRoleImpl("option"); private static final PresentationRole PRESENTATION = new PresentationRoleImpl("presentation"); private static final ProgressbarRole PROGRESSBAR = new ProgressbarRoleImpl("progressbar"); private static final RadiogroupRole RADIOGROUP = new RadiogroupRoleImpl("radiogroup"); private static final RadioRole RADIO = new RadioRoleImpl("radio"); private static final RegionRole REGION = new RegionRoleImpl("region"); private static final RowgroupRole ROWGROUP = new RowgroupRoleImpl("rowgroup"); private static final RowheaderRole ROWHEADER = new RowheaderRoleImpl("rowheader"); private static final RowRole ROW = new RowRoleImpl("row"); private static final ScrollbarRole SCROLLBAR = new ScrollbarRoleImpl("scrollbar"); private static final SearchRole SEARCH = new SearchRoleImpl("search"); private static final SeparatorRole SEPARATOR = new SeparatorRoleImpl("separator"); private static final SliderRole SLIDER = new SliderRoleImpl("slider"); private static final SpinbuttonRole SPINBUTTON = new SpinbuttonRoleImpl("spinbutton"); private static final StatusRole STATUS = new StatusRoleImpl("status"); private static final TablistRole TABLIST = new TablistRoleImpl("tablist"); private static final TabpanelRole TABPANEL = new TabpanelRoleImpl("tabpanel"); private static final TabRole TAB = new TabRoleImpl("tab"); private static final TextboxRole TEXTBOX = new TextboxRoleImpl("textbox"); private static final TimerRole TIMER = new TimerRoleImpl("timer"); private static final ToolbarRole TOOLBAR = new ToolbarRoleImpl("toolbar"); private static final TooltipRole TOOLTIP = new TooltipRoleImpl("tooltip"); private static final TreegridRole TREEGRID = new TreegridRoleImpl("treegrid"); private static final TreeitemRole TREEITEM = new TreeitemRoleImpl("treeitem"); private static final TreeRole TREE = new TreeRoleImpl("tree"); private static final Map<String, Role> ROLES_MAP = new HashMap<String, Role>(); static { ROLES_MAP.put("region", REGION); ROLES_MAP.put("alert", ALERT); ROLES_MAP.put("dialog", DIALOG); ROLES_MAP.put("alertdialog", ALERTDIALOG); ROLES_MAP.put("application", APPLICATION); ROLES_MAP.put("document", DOCUMENT); ROLES_MAP.put("article", ARTICLE); ROLES_MAP.put("banner", BANNER); ROLES_MAP.put("button", BUTTON); ROLES_MAP.put("checkbox", CHECKBOX); ROLES_MAP.put("gridcell", GRIDCELL); ROLES_MAP.put("columnheader", COLUMNHEADER); ROLES_MAP.put("group", GROUP); ROLES_MAP.put("combobox", COMBOBOX); ROLES_MAP.put("complementary", COMPLEMENTARY); ROLES_MAP.put("contentinfo", CONTENTINFO); ROLES_MAP.put("definition", DEFINITION); ROLES_MAP.put("list", LIST); ROLES_MAP.put("directory", DIRECTORY); ROLES_MAP.put("form", FORM); ROLES_MAP.put("grid", GRID); ROLES_MAP.put("heading", HEADING); ROLES_MAP.put("img", IMG); ROLES_MAP.put("link", LINK); ROLES_MAP.put("listbox", LISTBOX); ROLES_MAP.put("listitem", LISTITEM); ROLES_MAP.put("log", LOG); ROLES_MAP.put("main", MAIN); ROLES_MAP.put("marquee", MARQUEE); ROLES_MAP.put("math", MATH); ROLES_MAP.put("menu", MENU); ROLES_MAP.put("menubar", MENUBAR); ROLES_MAP.put("menuitem", MENUITEM); ROLES_MAP.put("menuitemcheckbox", MENUITEMCHECKBOX); ROLES_MAP.put("option", OPTION); ROLES_MAP.put("radio", RADIO); ROLES_MAP.put("menuitemradio", MENUITEMRADIO); ROLES_MAP.put("navigation", NAVIGATION); ROLES_MAP.put("note", NOTE); ROLES_MAP.put("presentation", PRESENTATION); ROLES_MAP.put("progressbar", PROGRESSBAR); ROLES_MAP.put("radiogroup", RADIOGROUP); ROLES_MAP.put("row", ROW); ROLES_MAP.put("rowgroup", ROWGROUP); ROLES_MAP.put("rowheader", ROWHEADER); ROLES_MAP.put("search", SEARCH); ROLES_MAP.put("separator", SEPARATOR); ROLES_MAP.put("scrollbar", SCROLLBAR); ROLES_MAP.put("slider", SLIDER); ROLES_MAP.put("spinbutton", SPINBUTTON); ROLES_MAP.put("status", STATUS); ROLES_MAP.put("tab", TAB); ROLES_MAP.put("tablist", TABLIST); ROLES_MAP.put("tabpanel", TABPANEL); ROLES_MAP.put("textbox", TEXTBOX); ROLES_MAP.put("timer", TIMER); ROLES_MAP.put("toolbar", TOOLBAR); ROLES_MAP.put("tooltip", TOOLTIP); ROLES_MAP.put("tree", TREE); ROLES_MAP.put("treegrid", TREEGRID); ROLES_MAP.put("treeitem", TREEITEM); } public static AlertdialogRole getAlertdialogRole() { return ALERTDIALOG; } public static AlertRole getAlertRole() { return ALERT; } public static ApplicationRole getApplicationRole() { return APPLICATION; } public static ArticleRole getArticleRole() { return ARTICLE; } public static BannerRole getBannerRole() { return BANNER; } public static ButtonRole getButtonRole() { return BUTTON; } public static CheckboxRole getCheckboxRole() { return CHECKBOX; } public static ColumnheaderRole getColumnheaderRole() { return COLUMNHEADER; } public static ComboboxRole getComboboxRole() { return COMBOBOX; } public static ComplementaryRole getComplementaryRole() { return COMPLEMENTARY; } public static ContentinfoRole getContentinfoRole() { return CONTENTINFO; } public static DefinitionRole getDefinitionRole() { return DEFINITION; } public static DialogRole getDialogRole() { return DIALOG; } public static DirectoryRole getDirectoryRole() { return DIRECTORY; } public static DocumentRole getDocumentRole() { return DOCUMENT; } public static FormRole getFormRole() { return FORM; } public static GridcellRole getGridcellRole() { return GRIDCELL; } public static GridRole getGridRole() { return GRID; } public static GroupRole getGroupRole() { return GROUP; } public static HeadingRole getHeadingRole() { return HEADING; } public static ImgRole getImgRole() { return IMG; } public static LinkRole getLinkRole() { return LINK; } public static ListboxRole getListboxRole() { return LISTBOX; } public static ListitemRole getListitemRole() { return LISTITEM; } public static ListRole getListRole() { return LIST; } public static LogRole getLogRole() { return LOG; } public static MainRole getMainRole() { return MAIN; } public static MarqueeRole getMarqueeRole() { return MARQUEE; } public static MathRole getMathRole() { return MATH; } public static MenubarRole getMenubarRole() { return MENUBAR; } public static MenuitemcheckboxRole getMenuitemcheckboxRole() { return MENUITEMCHECKBOX; } public static MenuitemradioRole getMenuitemradioRole() { return MENUITEMRADIO; } public static MenuitemRole getMenuitemRole() { return MENUITEM; } public static MenuRole getMenuRole() { return MENU; } public static NavigationRole getNavigationRole() { return NAVIGATION; } public static NoteRole getNoteRole() { return NOTE; } public static OptionRole getOptionRole() { return OPTION; } public static PresentationRole getPresentationRole() { return PRESENTATION; } public static ProgressbarRole getProgressbarRole() { return PROGRESSBAR; } public static RadiogroupRole getRadiogroupRole() { return RADIOGROUP; } public static RadioRole getRadioRole() { return RADIO; } public static RegionRole getRegionRole() { return REGION; } public static RowgroupRole getRowgroupRole() { return ROWGROUP; } public static RowheaderRole getRowheaderRole() { return ROWHEADER; } public static RowRole getRowRole() { return ROW; } public static ScrollbarRole getScrollbarRole() { return SCROLLBAR; } public static SearchRole getSearchRole() { return SEARCH; } public static SeparatorRole getSeparatorRole() { return SEPARATOR; } public static SliderRole getSliderRole() { return SLIDER; } public static SpinbuttonRole getSpinbuttonRole() { return SPINBUTTON; } public static StatusRole getStatusRole() { return STATUS; } public static TablistRole getTablistRole() { return TABLIST; } public static TabpanelRole getTabpanelRole() { return TABPANEL; } public static TabRole getTabRole() { return TAB; } public static TextboxRole getTextboxRole() { return TEXTBOX; } public static TimerRole getTimerRole() { return TIMER; } public static ToolbarRole getToolbarRole() { return TOOLBAR; } public static TooltipRole getTooltipRole() { return TOOLTIP; } public static TreegridRole getTreegridRole() { return TREEGRID; } public static TreeitemRole getTreeitemRole() { return TREEITEM; } public static TreeRole getTreeRole() { return TREE; } /** * Returns the WAI-ARIA role for the {@code element}. If no 'role' attribute is set to the * {@code element} or if the set role tokens do not include a WAI-ARIA role, * null is returned. Otherwise, if a WAI_ARIA role is among the role tokens in the 'role' * attribute token list, a {@link Role} corresponding the WAI-ARIA role is returned. */ public static Role roleOf(Element element) { assert element != null : "Element cannot be null."; String roleAttributeValue = element.getAttribute("role"); for (String testRoleName : roleAttributeValue.split("\\s+")) { Role role = ROLES_MAP.get(testRoleName); if (role != null) { return role; } } return null; } }