xref: /AOO41X/main/winaccessibility/inc/accHelper.hxx (revision 5fdc4257b5e43545f8f7841d9e8303d3a99b1714)
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