1*5fdc4257SSteve Yin /************************************************************************* 2*5fdc4257SSteve Yin * 3*5fdc4257SSteve Yin * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*5fdc4257SSteve Yin * 5*5fdc4257SSteve Yin * Copyright IBM Corporation 2010. 6*5fdc4257SSteve Yin * Copyright 2000, 2010 Oracle and/or its affiliates. 7*5fdc4257SSteve Yin * 8*5fdc4257SSteve Yin * OpenOffice.org - a multi-platform office productivity suite 9*5fdc4257SSteve Yin * 10*5fdc4257SSteve Yin * This file is part of OpenOffice.org. 11*5fdc4257SSteve Yin * 12*5fdc4257SSteve Yin * OpenOffice.org is free software: you can redistribute it and/or modify 13*5fdc4257SSteve Yin * it under the terms of the GNU Lesser General Public License version 3 14*5fdc4257SSteve Yin * only, as published by the Free Software Foundation. 15*5fdc4257SSteve Yin * 16*5fdc4257SSteve Yin * OpenOffice.org is distributed in the hope that it will be useful, 17*5fdc4257SSteve Yin * but WITHOUT ANY WARRANTY; without even the implied warranty of 18*5fdc4257SSteve Yin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19*5fdc4257SSteve Yin * GNU Lesser General Public License version 3 for more details 20*5fdc4257SSteve Yin * (a copy is included in the LICENSE file that accompanied this code). 21*5fdc4257SSteve Yin * 22*5fdc4257SSteve Yin * You should have received a copy of the GNU Lesser General Public License 23*5fdc4257SSteve Yin * version 3 along with OpenOffice.org. If not, see 24*5fdc4257SSteve Yin * <http://www.openoffice.org/license.html> 25*5fdc4257SSteve Yin * for a copy of the LGPLv3 License. 26*5fdc4257SSteve Yin * 27*5fdc4257SSteve Yin ************************************************************************/ 28*5fdc4257SSteve Yin 29*5fdc4257SSteve Yin #ifndef __ACCHELPER_HXX 30*5fdc4257SSteve Yin #define __ACCHELPER_HXX 31*5fdc4257SSteve Yin 32*5fdc4257SSteve Yin #include <com/sun/star/accessibility/XAccessibleText.hpp> 33*5fdc4257SSteve Yin #include <com/sun/star/accessibility/AccessibleRole.hpp> 34*5fdc4257SSteve Yin #include <com/sun/star/accessibility/AccessibleStateType.hpp> 35*5fdc4257SSteve Yin 36*5fdc4257SSteve Yin #include "AccessibleRole.h" 37*5fdc4257SSteve Yin 38*5fdc4257SSteve Yin 39*5fdc4257SSteve Yin #include "UAccCOM2.h" 40*5fdc4257SSteve Yin 41*5fdc4257SSteve Yin enum DIRECTION 42*5fdc4257SSteve Yin { 43*5fdc4257SSteve Yin FIRST_CHILD=0, 44*5fdc4257SSteve Yin LAST_CHILD=-1, 45*5fdc4257SSteve Yin BEFORE_CHILD=1 , 46*5fdc4257SSteve Yin AFTER_CHILD=2 47*5fdc4257SSteve Yin }; 48*5fdc4257SSteve Yin 49*5fdc4257SSteve Yin #define CHILDID_SELF 0 50*5fdc4257SSteve Yin #define UNO_MSAA_UNMAPPING 0x00000000 51*5fdc4257SSteve Yin 52*5fdc4257SSteve Yin using namespace com::sun::star::uno; 53*5fdc4257SSteve Yin using namespace com::sun::star::accessibility::AccessibleRole; 54*5fdc4257SSteve Yin using namespace com::sun::star::accessibility::AccessibleStateType; 55*5fdc4257SSteve Yin 56*5fdc4257SSteve Yin //Role mapping table,left side is UNO role, right side is MSAA role 57*5fdc4257SSteve Yin const short ROLE_TABLE[][2] = 58*5fdc4257SSteve Yin { 59*5fdc4257SSteve Yin {UNKNOWN, IA2_ROLE_UNKNOWN}, 60*5fdc4257SSteve Yin {ALERT , ROLE_SYSTEM_DIALOG}, 61*5fdc4257SSteve Yin {COLUMN_HEADER , ROLE_SYSTEM_COLUMNHEADER}, 62*5fdc4257SSteve Yin //{CANVAS , ROLE_SYSTEM_CLIENT}, 63*5fdc4257SSteve Yin {CANVAS , IA2_ROLE_CANVAS}, 64*5fdc4257SSteve Yin {CHECK_BOX , ROLE_SYSTEM_CHECKBUTTON}, 65*5fdc4257SSteve Yin {CHECK_MENU_ITEM , IA2_ROLE_CHECK_MENU_ITEM}, 66*5fdc4257SSteve Yin {COLOR_CHOOSER, IA2_ROLE_COLOR_CHOOSER}, 67*5fdc4257SSteve Yin {COMBO_BOX , ROLE_SYSTEM_COMBOBOX}, 68*5fdc4257SSteve Yin {DATE_EDITOR , IA2_ROLE_DATE_EDITOR}, 69*5fdc4257SSteve Yin {DESKTOP_ICON , IA2_ROLE_DESKTOP_ICON}, 70*5fdc4257SSteve Yin {DESKTOP_PANE, IA2_ROLE_DESKTOP_PANE}, 71*5fdc4257SSteve Yin {DIRECTORY_PANE, IA2_ROLE_DIRECTORY_PANE}, 72*5fdc4257SSteve Yin {DIALOG, ROLE_SYSTEM_DIALOG}, 73*5fdc4257SSteve Yin {DOCUMENT, ROLE_SYSTEM_DOCUMENT}, 74*5fdc4257SSteve Yin {EMBEDDED_OBJECT , IA2_ROLE_EMBEDDED_OBJECT }, 75*5fdc4257SSteve Yin {END_NOTE , IA2_ROLE_ENDNOTE }, 76*5fdc4257SSteve Yin {FILE_CHOOSER , IA2_ROLE_FILE_CHOOSER }, 77*5fdc4257SSteve Yin {FILLER, ROLE_SYSTEM_WHITESPACE}, 78*5fdc4257SSteve Yin {FONT_CHOOSER, IA2_ROLE_FONT_CHOOSER}, 79*5fdc4257SSteve Yin {FOOTER, IA2_ROLE_FOOTER}, 80*5fdc4257SSteve Yin {FOOTNOTE, IA2_ROLE_FOOTNOTE}, 81*5fdc4257SSteve Yin //{FRAME, IA2_ROLE_FRAME}, 82*5fdc4257SSteve Yin {FRAME, ROLE_SYSTEM_DIALOG}, 83*5fdc4257SSteve Yin {GLASS_PANE , IA2_ROLE_GLASS_PANE}, 84*5fdc4257SSteve Yin {GRAPHIC , ROLE_SYSTEM_GRAPHIC}, 85*5fdc4257SSteve Yin {GROUP_BOX, ROLE_SYSTEM_GROUPING}, 86*5fdc4257SSteve Yin {HEADER , IA2_ROLE_HEADER}, 87*5fdc4257SSteve Yin {HEADING , IA2_ROLE_HEADING}, 88*5fdc4257SSteve Yin {HYPER_LINK , ROLE_SYSTEM_TEXT}, 89*5fdc4257SSteve Yin {ICON , IA2_ROLE_ICON}, 90*5fdc4257SSteve Yin {INTERNAL_FRAME, IA2_ROLE_INTERNAL_FRAME}, 91*5fdc4257SSteve Yin {LABEL, ROLE_SYSTEM_STATICTEXT}, 92*5fdc4257SSteve Yin {LAYERED_PANE , IA2_ROLE_LAYERED_PANE}, 93*5fdc4257SSteve Yin {LIST , ROLE_SYSTEM_LIST}, 94*5fdc4257SSteve Yin {LIST_ITEM , ROLE_SYSTEM_LISTITEM}, 95*5fdc4257SSteve Yin //{MENU , ROLE_SYSTEM_MENUPOPUP}, 96*5fdc4257SSteve Yin {MENU, ROLE_SYSTEM_MENUITEM}, 97*5fdc4257SSteve Yin {MENU_BAR, ROLE_SYSTEM_MENUBAR}, 98*5fdc4257SSteve Yin {MENU_ITEM, ROLE_SYSTEM_MENUITEM}, 99*5fdc4257SSteve Yin {OPTION_PANE , IA2_ROLE_OPTION_PANE}, 100*5fdc4257SSteve Yin {PAGE_TAB, ROLE_SYSTEM_PAGETAB}, 101*5fdc4257SSteve Yin {PAGE_TAB_LIST, ROLE_SYSTEM_PAGETABLIST}, 102*5fdc4257SSteve Yin {PANEL, IA2_ROLE_OPTION_PANE}, 103*5fdc4257SSteve Yin {PARAGRAPH, IA2_ROLE_PARAGRAPH}, 104*5fdc4257SSteve Yin {PASSWORD_TEXT, ROLE_SYSTEM_TEXT}, 105*5fdc4257SSteve Yin {POPUP_MENU, ROLE_SYSTEM_MENUPOPUP}, 106*5fdc4257SSteve Yin {PUSH_BUTTON, ROLE_SYSTEM_PUSHBUTTON}, 107*5fdc4257SSteve Yin {PROGRESS_BAR, ROLE_SYSTEM_PROGRESSBAR}, 108*5fdc4257SSteve Yin {RADIO_BUTTON, ROLE_SYSTEM_RADIOBUTTON}, 109*5fdc4257SSteve Yin {RADIO_MENU_ITEM, IA2_ROLE_RADIO_MENU_ITEM}, 110*5fdc4257SSteve Yin {ROW_HEADER , ROLE_SYSTEM_ROWHEADER}, 111*5fdc4257SSteve Yin {ROOT_PANE, IA2_ROLE_ROOT_PANE}, 112*5fdc4257SSteve Yin {SCROLL_BAR , ROLE_SYSTEM_SCROLLBAR}, 113*5fdc4257SSteve Yin {SCROLL_PANE , IA2_ROLE_SCROLL_PANE}, 114*5fdc4257SSteve Yin {SHAPE, IA2_ROLE_SHAPE}, 115*5fdc4257SSteve Yin {SEPARATOR , ROLE_SYSTEM_SEPARATOR}, 116*5fdc4257SSteve Yin {SLIDER , ROLE_SYSTEM_SLIDER}, 117*5fdc4257SSteve Yin {SPIN_BOX , ROLE_SYSTEM_SPINBUTTON}, 118*5fdc4257SSteve Yin {SPLIT_PANE, IA2_ROLE_SPLIT_PANE}, 119*5fdc4257SSteve Yin {STATUS_BAR, ROLE_SYSTEM_STATUSBAR}, 120*5fdc4257SSteve Yin {TABLE, ROLE_SYSTEM_TABLE}, 121*5fdc4257SSteve Yin {TABLE_CELL , ROLE_SYSTEM_CELL}, 122*5fdc4257SSteve Yin {TEXT, ROLE_SYSTEM_TEXT}, 123*5fdc4257SSteve Yin {TEXT_FRAME , IA2_ROLE_TEXT_FRAME}, 124*5fdc4257SSteve Yin //for change toggle button to push button for jaws 125*5fdc4257SSteve Yin {TOGGLE_BUTTON, ROLE_SYSTEM_PUSHBUTTON}, 126*5fdc4257SSteve Yin 127*5fdc4257SSteve Yin {TOOL_BAR, ROLE_SYSTEM_TOOLBAR}, 128*5fdc4257SSteve Yin {TOOL_TIP, ROLE_SYSTEM_TOOLTIP}, 129*5fdc4257SSteve Yin {TREE , ROLE_SYSTEM_OUTLINE}, 130*5fdc4257SSteve Yin {VIEW_PORT , IA2_ROLE_VIEW_PORT}, 131*5fdc4257SSteve Yin {WINDOW, ROLE_SYSTEM_WINDOW}, 132*5fdc4257SSteve Yin {BUTTON_DROPDOWN, ROLE_SYSTEM_BUTTONDROPDOWN}, 133*5fdc4257SSteve Yin {BUTTON_MENU, ROLE_SYSTEM_BUTTONMENU}, 134*5fdc4257SSteve Yin {CAPTION, IA2_ROLE_CAPTION}, 135*5fdc4257SSteve Yin {CHART, IA2_ROLE_SHAPE}, 136*5fdc4257SSteve Yin {EDIT_BAR, IA2_ROLE_EDITBAR}, 137*5fdc4257SSteve Yin {FORM, IA2_ROLE_FORM}, 138*5fdc4257SSteve Yin {IMAGE_MAP , IA2_ROLE_IMAGE_MAP}, 139*5fdc4257SSteve Yin {NOTE, IA2_ROLE_NOTE}, 140*5fdc4257SSteve Yin {PAGE, IA2_ROLE_PAGE}, 141*5fdc4257SSteve Yin {RULER , IA2_ROLE_RULER}, 142*5fdc4257SSteve Yin {SECTION, IA2_ROLE_SECTION}, 143*5fdc4257SSteve Yin {TREE_ITEM , ROLE_SYSTEM_OUTLINEITEM}, 144*5fdc4257SSteve Yin {TREE_TABLE, ROLE_SYSTEM_OUTLINE} 145*5fdc4257SSteve Yin }; 146*5fdc4257SSteve Yin 147*5fdc4257SSteve Yin struct ltstr4 148*5fdc4257SSteve Yin { 149*5fdc4257SSteve Yin bool operator()(const long s1, const long s2) const 150*5fdc4257SSteve Yin { 151*5fdc4257SSteve Yin return long(s1)<long(s2); 152*5fdc4257SSteve Yin } 153*5fdc4257SSteve Yin }; 154*5fdc4257SSteve Yin 155*5fdc4257SSteve Yin #endif 156