1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski #ifndef _SD_ACCESSIBILITY_ACCESSIBLE_DRAW_DOCUMENT_VIEW_HXX
25*b1cdbd2cSJim Jagielski #define _SD_ACCESSIBILITY_ACCESSIBLE_DRAW_DOCUMENT_VIEW_HXX
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include "AccessibleDocumentViewBase.hxx"
28*b1cdbd2cSJim Jagielski 
29*b1cdbd2cSJim Jagielski #include <com/sun/star/accessibility/XAccessibleGroupPosition.hpp>
30*b1cdbd2cSJim Jagielski 
31*b1cdbd2cSJim Jagielski namespace accessibility {
32*b1cdbd2cSJim Jagielski 
33*b1cdbd2cSJim Jagielski 
34*b1cdbd2cSJim Jagielski /** This class makes draw documents in the general view modes
35*b1cdbd2cSJim Jagielski     accessible.  It passes all shapes on the current draw page to a
36*b1cdbd2cSJim Jagielski     children manager and additionally creates a new shape that
37*b1cdbd2cSJim Jagielski     represents the actual draw page.
38*b1cdbd2cSJim Jagielski 
39*b1cdbd2cSJim Jagielski     Please see the documentation of the base class for further
40*b1cdbd2cSJim Jagielski     explanations of the individual methods.
41*b1cdbd2cSJim Jagielski */
42*b1cdbd2cSJim Jagielski class AccessibleDrawDocumentView :
43*b1cdbd2cSJim Jagielski     public AccessibleDocumentViewBase
44*b1cdbd2cSJim Jagielski     ,public ::com::sun::star::accessibility::XAccessibleGroupPosition
45*b1cdbd2cSJim Jagielski {
46*b1cdbd2cSJim Jagielski public:
47*b1cdbd2cSJim Jagielski     //=====  internal  ========================================================
48*b1cdbd2cSJim Jagielski 
49*b1cdbd2cSJim Jagielski     AccessibleDrawDocumentView (::sd::Window* pSdWindow,
50*b1cdbd2cSJim Jagielski         ::sd::ViewShell* pViewShell,
51*b1cdbd2cSJim Jagielski 	    const ::com::sun::star::uno::Reference<
52*b1cdbd2cSJim Jagielski 	    ::com::sun::star::frame::XController>& rxController,
53*b1cdbd2cSJim Jagielski 	    const ::com::sun::star::uno::Reference<
54*b1cdbd2cSJim Jagielski 	    ::com::sun::star::accessibility::XAccessible>& rxParent);
55*b1cdbd2cSJim Jagielski 
56*b1cdbd2cSJim Jagielski     virtual ~AccessibleDrawDocumentView	(void);
57*b1cdbd2cSJim Jagielski 
58*b1cdbd2cSJim Jagielski     /** Complete the initialization begun in the constructor.
59*b1cdbd2cSJim Jagielski     */
60*b1cdbd2cSJim Jagielski     virtual void Init (void);
61*b1cdbd2cSJim Jagielski 
62*b1cdbd2cSJim Jagielski 
63*b1cdbd2cSJim Jagielski     //=====  IAccessibleViewForwarderListener  ================================
64*b1cdbd2cSJim Jagielski 
65*b1cdbd2cSJim Jagielski     virtual void ViewForwarderChanged (ChangeType aChangeType,
66*b1cdbd2cSJim Jagielski         const IAccessibleViewForwarder* pViewForwarder);
67*b1cdbd2cSJim Jagielski 
68*b1cdbd2cSJim Jagielski     //=====  XAccessibleContext  ==============================================
69*b1cdbd2cSJim Jagielski 
70*b1cdbd2cSJim Jagielski     virtual sal_Int32 SAL_CALL
71*b1cdbd2cSJim Jagielski         getAccessibleChildCount (void)
72*b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
73*b1cdbd2cSJim Jagielski 
74*b1cdbd2cSJim Jagielski     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> SAL_CALL
75*b1cdbd2cSJim Jagielski         getAccessibleChild (sal_Int32 nIndex)
76*b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException,
77*b1cdbd2cSJim Jagielski             ::com::sun::star::lang::IndexOutOfBoundsException);
78*b1cdbd2cSJim Jagielski 
79*b1cdbd2cSJim Jagielski 	virtual ::rtl::OUString SAL_CALL
80*b1cdbd2cSJim Jagielski 		getAccessibleName(void)
81*b1cdbd2cSJim Jagielski 		throw (::com::sun::star::uno::RuntimeException);
82*b1cdbd2cSJim Jagielski 
83*b1cdbd2cSJim Jagielski     //=====  lang::XEventListener  ============================================
84*b1cdbd2cSJim Jagielski 
85*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL
86*b1cdbd2cSJim Jagielski 		disposing (const ::com::sun::star::lang::EventObject& rEventObject)
87*b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
88*b1cdbd2cSJim Jagielski 
89*b1cdbd2cSJim Jagielski 
90*b1cdbd2cSJim Jagielski     //=====  XPropertyChangeListener  =========================================
91*b1cdbd2cSJim Jagielski 
92*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL
93*b1cdbd2cSJim Jagielski 		propertyChange (const ::com::sun::star::beans::PropertyChangeEvent& rEventObject)
94*b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
95*b1cdbd2cSJim Jagielski     //=====  XInterface  ======================================================
96*b1cdbd2cSJim Jagielski 
97*b1cdbd2cSJim Jagielski     virtual com::sun::star::uno::Any SAL_CALL
98*b1cdbd2cSJim Jagielski 		queryInterface (const com::sun::star::uno::Type & rType)
99*b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
100*b1cdbd2cSJim Jagielski 
101*b1cdbd2cSJim Jagielski     virtual void SAL_CALL
102*b1cdbd2cSJim Jagielski         acquire (void)
103*b1cdbd2cSJim Jagielski         throw ();
104*b1cdbd2cSJim Jagielski 
105*b1cdbd2cSJim Jagielski     virtual void SAL_CALL
106*b1cdbd2cSJim Jagielski         release (void)
107*b1cdbd2cSJim Jagielski         throw ();
108*b1cdbd2cSJim Jagielski 
109*b1cdbd2cSJim Jagielski     //=====  XAccessibleGroupPosition  =========================================
110*b1cdbd2cSJim Jagielski 	virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL
111*b1cdbd2cSJim Jagielski 		getGroupPosition( const ::com::sun::star::uno::Any& rAny )
112*b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
113*b1cdbd2cSJim Jagielski 	virtual ::rtl::OUString SAL_CALL getObjectLink( const ::com::sun::star::uno::Any& accoject )
114*b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
115*b1cdbd2cSJim Jagielski 
116*b1cdbd2cSJim Jagielski protected:
117*b1cdbd2cSJim Jagielski 
118*b1cdbd2cSJim Jagielski     //=====  XServiceInfo  ====================================================
119*b1cdbd2cSJim Jagielski 
120*b1cdbd2cSJim Jagielski     virtual ::rtl::OUString SAL_CALL
121*b1cdbd2cSJim Jagielski     	getImplementationName (void)
122*b1cdbd2cSJim Jagielski 	    throw (::com::sun::star::uno::RuntimeException);
123*b1cdbd2cSJim Jagielski 
124*b1cdbd2cSJim Jagielski     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL
125*b1cdbd2cSJim Jagielski         getSupportedServiceNames (void)
126*b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
127*b1cdbd2cSJim Jagielski 
128*b1cdbd2cSJim Jagielski 
129*b1cdbd2cSJim Jagielski 	virtual sal_Bool
130*b1cdbd2cSJim Jagielski         implIsSelected( sal_Int32 nAccessibleChildIndex )
131*b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
132*b1cdbd2cSJim Jagielski 
133*b1cdbd2cSJim Jagielski     /** Select or deselect the specified child or all children if the given
134*b1cdbd2cSJim Jagielski         index has the special value ACCESSIBLE_SELECTION_CHILD_ALL.
135*b1cdbd2cSJim Jagielski         Selecting or deselecting a child sets or resets the
136*b1cdbd2cSJim Jagielski         <const>SELECTED</const> state and selects or deslects the UNO shape
137*b1cdbd2cSJim Jagielski         beeing made accessible by the child.
138*b1cdbd2cSJim Jagielski         @param nAccessibleChildIndex
139*b1cdbd2cSJim Jagielski             Index of the child to select or deselect.  If the parameter has
140*b1cdbd2cSJim Jagielski             the value ACCESSIBLE_SELECTION_CHILD_ALL then all children are
141*b1cdbd2cSJim Jagielski             selected or deslected.
142*b1cdbd2cSJim Jagielski         @param bSelect
143*b1cdbd2cSJim Jagielski             Indicates whether to select or deselect the specified child
144*b1cdbd2cSJim Jagielski             reps. children.
145*b1cdbd2cSJim Jagielski     */
146*b1cdbd2cSJim Jagielski     virtual void
147*b1cdbd2cSJim Jagielski         implSelect( sal_Int32 nAccessibleChildIndex, sal_Bool bSelect )
148*b1cdbd2cSJim Jagielski         throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
149*b1cdbd2cSJim Jagielski private:
150*b1cdbd2cSJim Jagielski 	::sd::ViewShell* mpSdViewSh;
151*b1cdbd2cSJim Jagielski 
152*b1cdbd2cSJim Jagielski protected:
153*b1cdbd2cSJim Jagielski     /** This object manages the shapes of the represented draw page.  It is
154*b1cdbd2cSJim Jagielski         responsible to determine the visible shapes and create on demand the
155*b1cdbd2cSJim Jagielski         accessible objects representing them.
156*b1cdbd2cSJim Jagielski     */
157*b1cdbd2cSJim Jagielski     ChildrenManager* mpChildrenManager;
158*b1cdbd2cSJim Jagielski 
159*b1cdbd2cSJim Jagielski     // This method is called from the component helper base class while
160*b1cdbd2cSJim Jagielski     // disposing.
161*b1cdbd2cSJim Jagielski     virtual void SAL_CALL disposing (void);
162*b1cdbd2cSJim Jagielski 
163*b1cdbd2cSJim Jagielski     /** Create a shape the represents the page as seen on the screen.
164*b1cdbd2cSJim Jagielski     */
165*b1cdbd2cSJim Jagielski     AccessiblePageShape* CreateDrawPageShape (void);
166*b1cdbd2cSJim Jagielski 
167*b1cdbd2cSJim Jagielski     ///	Create an accessible name that contains the current view mode.
168*b1cdbd2cSJim Jagielski     virtual ::rtl::OUString
169*b1cdbd2cSJim Jagielski     	CreateAccessibleName ()
170*b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
171*b1cdbd2cSJim Jagielski 
172*b1cdbd2cSJim Jagielski     /**	Create an accessible description that contains the current
173*b1cdbd2cSJim Jagielski     	view mode.
174*b1cdbd2cSJim Jagielski     */
175*b1cdbd2cSJim Jagielski     virtual ::rtl::OUString
176*b1cdbd2cSJim Jagielski     	CreateAccessibleDescription ()
177*b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
178*b1cdbd2cSJim Jagielski 
179*b1cdbd2cSJim Jagielski     /** Make sure that the currently focused shape sends a FOCUSED state
180*b1cdbd2cSJim Jagielski         change event indicating that it has (regained) the focus.
181*b1cdbd2cSJim Jagielski     */
182*b1cdbd2cSJim Jagielski     virtual void Activated (void);
183*b1cdbd2cSJim Jagielski 
184*b1cdbd2cSJim Jagielski     /** Make sure that the currently focused shape sends a FOCUSED state
185*b1cdbd2cSJim Jagielski         change event indicating that it has lost the focus.
186*b1cdbd2cSJim Jagielski     */
187*b1cdbd2cSJim Jagielski     virtual void Deactivated (void);
188*b1cdbd2cSJim Jagielski 
189*b1cdbd2cSJim Jagielski     virtual void impl_dispose (void);
190*b1cdbd2cSJim Jagielski 
191*b1cdbd2cSJim Jagielski     //=====  XAccessibleGetAccFromXShape  ============================================
192*b1cdbd2cSJim Jagielski 	::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >
193*b1cdbd2cSJim Jagielski 		SAL_CALL get_AccFlowTo(const ::com::sun::star::uno::Any& rAny, sal_Int32 nType)
194*b1cdbd2cSJim Jagielski 		throw ( ::com::sun::star::uno::RuntimeException );
195*b1cdbd2cSJim Jagielski 	::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
196*b1cdbd2cSJim Jagielski 		GetSelAccContextInTable();
197*b1cdbd2cSJim Jagielski 
198*b1cdbd2cSJim Jagielski private:
199*b1cdbd2cSJim Jagielski     void UpdateAccessibleName (void);
200*b1cdbd2cSJim Jagielski };
201*b1cdbd2cSJim Jagielski 
202*b1cdbd2cSJim Jagielski } // end of namespace accessibility
203*b1cdbd2cSJim Jagielski 
204*b1cdbd2cSJim Jagielski #endif
205