1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright IBM Corporation 2010.
6  * Copyright 2000, 2010 Oracle and/or its affiliates.
7  *
8  * OpenOffice.org - a multi-platform office productivity suite
9  *
10  * This file is part of OpenOffice.org.
11  *
12  * OpenOffice.org is free software: you can redistribute it and/or modify
13  * it under the terms of the GNU Lesser General Public License version 3
14  * only, as published by the Free Software Foundation.
15  *
16  * OpenOffice.org is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU Lesser General Public License version 3 for more details
20  * (a copy is included in the LICENSE file that accompanied this code).
21  *
22  * You should have received a copy of the GNU Lesser General Public License
23  * version 3 along with OpenOffice.org.  If not, see
24  * <http://www.openoffice.org/license.html>
25  * for a copy of the LGPLv3 License.
26  *
27  ************************************************************************/
28 
29 #ifndef __ACCOBJECTMANAGERAGENT_HXX
30 #define __ACCOBJECTMANAGERAGENT_HXX
31 
32 #ifndef _COM_SUN_STAR_ACCESSIBILITY_XACCESSIBLE_HPP_
33 #include <com/sun/star/accessibility/XAccessible.hpp>
34 #endif
35 
36 struct IMAccessible;
37 struct IAccessible;
38 class AccObjectWinManager;
39 
40 /****************************************************************
41 AccObjectMangerAgent is used for manaing AccObjects,which encapsulates
42 platform differences,and call AccObjectWinManager for Windows platform. To do for
43 Linux platform
44 *****************************************************************/
45 class AccObjectManagerAgent
46 {
47 private:
48 
49     AccObjectWinManager* pWinManager;
50 
51 public:
52 
53     AccObjectManagerAgent();
54     virtual ~AccObjectManagerAgent();
55 
56     virtual unsigned char InsertAccObj( com::sun::star::accessibility::XAccessible* pXAcc,
57                                         com::sun::star::accessibility::XAccessible* pParentXAcc,
58                                         long pWnd=0);
59     virtual void GetIAccessibleFromResID(long childID,IMAccessible**);
60     virtual unsigned char GetIAccessibleFromXAccessible(com::sun::star::accessibility::XAccessible* pXAcc, IAccessible** ppIA);
61 
62     virtual void DeleteAccObj( com::sun::star::accessibility::XAccessible* pXAcc );
63     virtual IMAccessible*  GetIMAccByXAcc(com::sun::star::accessibility::XAccessible* pXAcc);
64 
65     unsigned char NotifyAccEvent( short pEvent = 0, com::sun::star::accessibility::XAccessible* pXAcc = 0 );
66 
67     unsigned char InsertChildrenAccObj( com::sun::star::accessibility::XAccessible* pXAcc,
68                                         long pWnd=0);
69     void DeleteChildrenAccObj( com::sun::star::accessibility::XAccessible* pXAcc );
70 
71     void  DecreaseState( com::sun::star::accessibility::XAccessible* pXAcc,unsigned short pState );
72     void  IncreaseState( com::sun::star::accessibility::XAccessible* pXAcc,unsigned short pState );
73     void  UpdateState( com::sun::star::accessibility::XAccessible* pXAcc );
74 
75     void  UpdateLocation( com::sun::star::accessibility::XAccessible* pXAcc,
76                           long Top = 0,long left = 0,long width = 0,long height = 0 );
77     void  UpdateAction( com::sun::star::accessibility::XAccessible* pXAcc );
78 
79     void  UpdateValue( com::sun::star::accessibility::XAccessible* pXAcc );
80     void  UpdateValue( com::sun::star::accessibility::XAccessible* pXAcc, com::sun::star::uno::Any );
81 
82     void  UpdateAccName( com::sun::star::accessibility::XAccessible* pXAcc,	com::sun::star::uno::Any newName);
83     void  UpdateAccName( com::sun::star::accessibility::XAccessible* pXAcc);
84 
85     void  UpdateDescription( com::sun::star::accessibility::XAccessible* pXAcc,	com::sun::star::uno::Any newDesc );
86     void  UpdateDescription( com::sun::star::accessibility::XAccessible* pXAcc );
87 
88     void NotifyDestroy(com::sun::star::accessibility::XAccessible* pXAcc);
89 
90     com::sun::star::accessibility::XAccessible* GetParentXAccessible(
91         com::sun::star::accessibility::XAccessible* pXAcc );
92     short GetParentRole(com::sun::star::accessibility::XAccessible* pXAcc );
93     unsigned short IsContainer(com::sun::star::accessibility::XAccessible* pXAcc);
94 
95     void SaveTopWindowHandle(long hWnd, com::sun::star::accessibility::XAccessible* pXAcc);
96 
97     void UpdateChildState(com::sun::star::accessibility::XAccessible* pXAcc);
98 
99     bool IsSpecialToolboItem(com::sun::star::accessibility::XAccessible* pXAcc);
100 
101     short GetRole(com::sun::star::accessibility::XAccessible* pXAcc);
102 
103     com::sun::star::accessibility::XAccessible* GetAccDocByAccTopWin( com::sun::star::accessibility::XAccessible* pXAcc );
104     bool IsTopWinAcc( com::sun::star::accessibility::XAccessible* pXAcc );
105 
106     bool IsStateManageDescendant(com::sun::star::accessibility::XAccessible* pXAcc);
107 };
108 
109 #endif
110