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 #ifndef __ACCHELPER_HXX
23 #define __ACCHELPER_HXX
24 
25 #include <com/sun/star/accessibility/XAccessibleText.hpp>
26 #include <com/sun/star/accessibility/AccessibleRole.hpp>
27 #include <com/sun/star/accessibility/AccessibleStateType.hpp>
28 
29 #include "AccessibleRole.h"
30 
31 
32 #include "UAccCOM2.h"
33 
34 enum DIRECTION
35 {
36     FIRST_CHILD=0,
37     LAST_CHILD=-1,
38     BEFORE_CHILD=1 ,
39     AFTER_CHILD=2
40 };
41 
42 #define CHILDID_SELF			 0
43 #define UNO_MSAA_UNMAPPING		 0x00000000
44 
45 using namespace com::sun::star::uno;
46 using namespace com::sun::star::accessibility::AccessibleRole;
47 using namespace com::sun::star::accessibility::AccessibleStateType;
48 
49 //Role mapping table,left side is UNO role, right side is MSAA role
50 const short ROLE_TABLE[][2] =
51     {
52         {UNKNOWN,				   IA2_ROLE_UNKNOWN},
53         {ALERT ,                   ROLE_SYSTEM_DIALOG},
54         {COLUMN_HEADER ,           ROLE_SYSTEM_COLUMNHEADER},
55         //{CANVAS ,                  ROLE_SYSTEM_CLIENT},
56         {CANVAS ,                  IA2_ROLE_CANVAS},
57         {CHECK_BOX ,               ROLE_SYSTEM_CHECKBUTTON},
58         {CHECK_MENU_ITEM ,         IA2_ROLE_CHECK_MENU_ITEM},
59         {COLOR_CHOOSER,			   IA2_ROLE_COLOR_CHOOSER},
60         {COMBO_BOX ,               ROLE_SYSTEM_COMBOBOX},
61         {DATE_EDITOR ,             IA2_ROLE_DATE_EDITOR},
62         {DESKTOP_ICON ,			   IA2_ROLE_DESKTOP_ICON},
63         {DESKTOP_PANE,             IA2_ROLE_DESKTOP_PANE},
64         {DIRECTORY_PANE,           IA2_ROLE_DIRECTORY_PANE},
65         {DIALOG,                   ROLE_SYSTEM_DIALOG},
66         {DOCUMENT,                 ROLE_SYSTEM_DOCUMENT},
67         {EMBEDDED_OBJECT ,		   IA2_ROLE_EMBEDDED_OBJECT },
68         {END_NOTE ,				   IA2_ROLE_ENDNOTE },
69         {FILE_CHOOSER ,			   IA2_ROLE_FILE_CHOOSER },
70         {FILLER,                   ROLE_SYSTEM_WHITESPACE},
71         {FONT_CHOOSER,			   IA2_ROLE_FONT_CHOOSER},
72         {FOOTER,				   IA2_ROLE_FOOTER},
73         {FOOTNOTE,				   IA2_ROLE_FOOTNOTE},
74         //{FRAME,					   IA2_ROLE_FRAME},
75         {FRAME,					   ROLE_SYSTEM_DIALOG},
76         {GLASS_PANE ,              IA2_ROLE_GLASS_PANE},
77         {GRAPHIC ,                 ROLE_SYSTEM_GRAPHIC},
78         {GROUP_BOX,                ROLE_SYSTEM_GROUPING},
79         {HEADER	,				   IA2_ROLE_HEADER},
80         {HEADING ,                 IA2_ROLE_HEADING},
81         {HYPER_LINK ,              ROLE_SYSTEM_TEXT},
82         {ICON ,                    IA2_ROLE_ICON},
83         {INTERNAL_FRAME,           IA2_ROLE_INTERNAL_FRAME},
84         {LABEL,                    ROLE_SYSTEM_STATICTEXT},
85         {LAYERED_PANE ,            IA2_ROLE_LAYERED_PANE},
86         {LIST ,                    ROLE_SYSTEM_LIST},
87         {LIST_ITEM ,               ROLE_SYSTEM_LISTITEM},
88         //{MENU ,                    ROLE_SYSTEM_MENUPOPUP},
89         {MENU,                ROLE_SYSTEM_MENUITEM},
90         {MENU_BAR,                 ROLE_SYSTEM_MENUBAR},
91         {MENU_ITEM,                ROLE_SYSTEM_MENUITEM},
92         {OPTION_PANE ,             IA2_ROLE_OPTION_PANE},
93         {PAGE_TAB,                 ROLE_SYSTEM_PAGETAB},
94         {PAGE_TAB_LIST,            ROLE_SYSTEM_PAGETABLIST},
95         {PANEL,                    IA2_ROLE_OPTION_PANE},
96         {PARAGRAPH,                IA2_ROLE_PARAGRAPH},
97         {PASSWORD_TEXT,            ROLE_SYSTEM_TEXT},
98         {POPUP_MENU,               ROLE_SYSTEM_MENUPOPUP},
99         {PUSH_BUTTON,              ROLE_SYSTEM_PUSHBUTTON},
100         {PROGRESS_BAR,             ROLE_SYSTEM_PROGRESSBAR},
101         {RADIO_BUTTON,             ROLE_SYSTEM_RADIOBUTTON},
102         {RADIO_MENU_ITEM,     	   IA2_ROLE_RADIO_MENU_ITEM},
103         {ROW_HEADER ,              ROLE_SYSTEM_ROWHEADER},
104         {ROOT_PANE,                IA2_ROLE_ROOT_PANE},
105         {SCROLL_BAR ,              ROLE_SYSTEM_SCROLLBAR},
106         {SCROLL_PANE ,             IA2_ROLE_SCROLL_PANE},
107         {SHAPE,					   IA2_ROLE_SHAPE},
108         {SEPARATOR ,               ROLE_SYSTEM_SEPARATOR},
109         {SLIDER ,                  ROLE_SYSTEM_SLIDER},
110         {SPIN_BOX ,                ROLE_SYSTEM_SPINBUTTON},
111         {SPLIT_PANE,               IA2_ROLE_SPLIT_PANE},
112         {STATUS_BAR,               ROLE_SYSTEM_STATUSBAR},
113         {TABLE,                    ROLE_SYSTEM_TABLE},
114         {TABLE_CELL ,              ROLE_SYSTEM_CELL},
115         {TEXT,                     ROLE_SYSTEM_TEXT},
116         {TEXT_FRAME ,			   IA2_ROLE_TEXT_FRAME},
117         //for change toggle button to push button for jaws
118         {TOGGLE_BUTTON,            ROLE_SYSTEM_PUSHBUTTON},
119 
120         {TOOL_BAR,                 ROLE_SYSTEM_TOOLBAR},
121         {TOOL_TIP,                 ROLE_SYSTEM_TOOLTIP},
122         {TREE ,                    ROLE_SYSTEM_OUTLINE},
123         {VIEW_PORT ,			   IA2_ROLE_VIEW_PORT},
124         {WINDOW,                   ROLE_SYSTEM_WINDOW},
125 		{BUTTON_DROPDOWN,  ROLE_SYSTEM_BUTTONDROPDOWN},
126 		{BUTTON_MENU,			  ROLE_SYSTEM_BUTTONMENU},
127 		{CAPTION,					IA2_ROLE_CAPTION},
128 		{CHART,						IA2_ROLE_SHAPE},
129 		{EDIT_BAR,					IA2_ROLE_EDITBAR},
130 		{FORM,						IA2_ROLE_FORM},
131 		{IMAGE_MAP ,			  IA2_ROLE_IMAGE_MAP},
132 		{NOTE,						IA2_ROLE_NOTE},
133 		{PAGE,						IA2_ROLE_PAGE},
134 		{RULER ,				  IA2_ROLE_RULER},
135 		{SECTION,					IA2_ROLE_SECTION},
136         {TREE_ITEM ,              ROLE_SYSTEM_OUTLINEITEM},
137 		{TREE_TABLE,				ROLE_SYSTEM_OUTLINE}
138     };
139 
140 struct ltstr4
141 {
142     bool operator()(const long  s1, const long  s2) const
143     {
144         return long(s1)<long(s2);
145     }
146 };
147 
148 #endif
149