1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 package org.openoffice.java.accessibility; 25 26 import com.sun.star.accessibility.XAccessible; 27 import com.sun.star.accessibility.XAccessibleContext; 28 29 /** This class maps the AccessibleRole(s) of the UNO accessibility API 30 * to the corresponding javax.accessibility objects. 31 */ 32 public abstract class AccessibleRoleAdapter { 33 34 /* This array is used as a mapping between the UNO AccessibleRole 35 * and the AccessibleRole objects of the Java accessibility API. 36 */ 37 public static final javax.accessibility.AccessibleRole[] data = { 38 javax.accessibility.AccessibleRole.UNKNOWN, 39 javax.accessibility.AccessibleRole.ALERT, 40 javax.accessibility.AccessibleRole.COLUMN_HEADER, 41 javax.accessibility.AccessibleRole.CANVAS, 42 javax.accessibility.AccessibleRole.CHECK_BOX, 43 javax.accessibility.AccessibleRole.CHECK_BOX, // CHECK_MENU_ITEM 44 javax.accessibility.AccessibleRole.COLOR_CHOOSER, 45 javax.accessibility.AccessibleRole.COMBO_BOX, 46 javax.accessibility.AccessibleRole.DATE_EDITOR, 47 javax.accessibility.AccessibleRole.DESKTOP_ICON, 48 javax.accessibility.AccessibleRole.DESKTOP_PANE, 49 javax.accessibility.AccessibleRole.DIRECTORY_PANE, 50 javax.accessibility.AccessibleRole.DIALOG, 51 javax.accessibility.AccessibleRole.CANVAS, // DOCUMENT 52 javax.accessibility.AccessibleRole.PANEL, // EMBEDDED_OBJECT 53 javax.accessibility.AccessibleRole.PANEL, // ENDNOTE 54 javax.accessibility.AccessibleRole.FILE_CHOOSER, 55 javax.accessibility.AccessibleRole.FILLER, 56 javax.accessibility.AccessibleRole.FONT_CHOOSER, 57 javax.accessibility.AccessibleRole.FOOTER, 58 javax.accessibility.AccessibleRole.PANEL, // FOOTNOTE 59 javax.accessibility.AccessibleRole.FRAME, 60 javax.accessibility.AccessibleRole.GLASS_PANE, 61 javax.accessibility.AccessibleRole.PANEL, // GRAPHIC 62 javax.accessibility.AccessibleRole.GROUP_BOX, 63 javax.accessibility.AccessibleRole.HEADER, 64 javax.accessibility.AccessibleRole.TEXT, // HEADING 65 javax.accessibility.AccessibleRole.HYPERLINK, 66 javax.accessibility.AccessibleRole.ICON, 67 javax.accessibility.AccessibleRole.INTERNAL_FRAME, 68 javax.accessibility.AccessibleRole.LABEL, 69 javax.accessibility.AccessibleRole.LAYERED_PANE, 70 javax.accessibility.AccessibleRole.LIST, 71 javax.accessibility.AccessibleRole.LABEL, // LIST_ITEM - required by Zoomtext 72 javax.accessibility.AccessibleRole.MENU, 73 javax.accessibility.AccessibleRole.MENU_BAR, 74 javax.accessibility.AccessibleRole.MENU_ITEM, 75 javax.accessibility.AccessibleRole.OPTION_PANE, 76 javax.accessibility.AccessibleRole.PAGE_TAB, 77 javax.accessibility.AccessibleRole.PAGE_TAB_LIST, 78 javax.accessibility.AccessibleRole.PANEL, 79 javax.accessibility.AccessibleRole.PARAGRAPH, 80 javax.accessibility.AccessibleRole.PASSWORD_TEXT, 81 javax.accessibility.AccessibleRole.POPUP_MENU, 82 javax.accessibility.AccessibleRole.PUSH_BUTTON, 83 javax.accessibility.AccessibleRole.PROGRESS_BAR, 84 javax.accessibility.AccessibleRole.RADIO_BUTTON, 85 javax.accessibility.AccessibleRole.RADIO_BUTTON, // RADIO_MENU_ITEM 86 javax.accessibility.AccessibleRole.ROW_HEADER, 87 javax.accessibility.AccessibleRole.ROOT_PANE, 88 javax.accessibility.AccessibleRole.SCROLL_BAR, 89 javax.accessibility.AccessibleRole.SCROLL_PANE, 90 javax.accessibility.AccessibleRole.CANVAS, // SHAPE 91 javax.accessibility.AccessibleRole.SEPARATOR, 92 javax.accessibility.AccessibleRole.SLIDER, 93 javax.accessibility.AccessibleRole.SPIN_BOX, 94 javax.accessibility.AccessibleRole.SPLIT_PANE, 95 javax.accessibility.AccessibleRole.STATUS_BAR, 96 javax.accessibility.AccessibleRole.TABLE, 97 javax.accessibility.AccessibleRole.LABEL, // TABLE_CELL - required by ZoomText 98 javax.accessibility.AccessibleRole.TEXT, 99 javax.accessibility.AccessibleRole.PANEL, // TEXT_FRAME 100 javax.accessibility.AccessibleRole.TOGGLE_BUTTON, 101 javax.accessibility.AccessibleRole.TOOL_BAR, 102 javax.accessibility.AccessibleRole.TOOL_TIP, 103 javax.accessibility.AccessibleRole.TREE, 104 javax.accessibility.AccessibleRole.VIEWPORT, 105 javax.accessibility.AccessibleRole.WINDOW, 106 javax.accessibility.AccessibleRole.RADIO_BUTTON, // BUTTON_DROPDOWN 107 javax.accessibility.AccessibleRole.RADIO_BUTTON, // BUTTON_MENU 108 javax.accessibility.AccessibleRole.PANEL, // CAPTION 109 javax.accessibility.AccessibleRole.PANEL, // CHART 110 javax.accessibility.AccessibleRole.EDITBAR, 111 javax.accessibility.AccessibleRole.PANEL, // FORM 112 javax.accessibility.AccessibleRole.PANEL, // IMAGE_MAP 113 javax.accessibility.AccessibleRole.PANEL, // NOTE 114 javax.accessibility.AccessibleRole.PANEL, // PAGE 115 javax.accessibility.AccessibleRole.RULER, 116 javax.accessibility.AccessibleRole.PANEL, // SECTION 117 javax.accessibility.AccessibleRole.LABEL, // TREE_ITEM 118 javax.accessibility.AccessibleRole.TABLE // TREE_TABLE 119 }; 120 getAccessibleRole(short role)121 public static javax.accessibility.AccessibleRole getAccessibleRole(short role) { 122 if(role < data.length) { 123 if(data[role] == null) { 124 System.err.println("Unmapped role: " + role); 125 } 126 return data[role]; 127 } 128 // FIXME: remove debug out 129 System.err.println("Unmappable role: " + role); 130 return null; 131 } 132 getAccessibleRole(XAccessible unoAccessible)133 public static javax.accessibility.AccessibleRole getAccessibleRole(XAccessible unoAccessible) { 134 try { 135 XAccessibleContext unoAccessibleContext = unoAccessible.getAccessibleContext(); 136 if (unoAccessibleContext != null) { 137 return getAccessibleRole(unoAccessibleContext.getAccessibleRole()); 138 } 139 return null; 140 } catch (com.sun.star.uno.RuntimeException e) { 141 return javax.accessibility.AccessibleRole.UNKNOWN; 142 } 143 } 144 } 145