xref: /trunk/main/svtools/inc/svtools/accessibleruler.hxx (revision 914d351e5f5b84e4342a86d6ab8d4aca7308b9bd)
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 _SVTRULERACCESSIBLE_HXX
23 #define _SVTRULERACCESSIBLE_HXX
24 
25 #ifndef _COM_SUN_STAR_ACCESSIBILITY_XACCESSIBLE_HPP_
26 #include <com/sun/star/accessibility/XAccessible.hpp>
27 #endif
28 #ifndef _COM_SUN_STAR_ACCESSIBILITY_XACCESSIBLECOMPONENT_HPP_
29 #include <com/sun/star/accessibility/XAccessibleComponent.hpp>
30 #endif
31 #ifndef _COM_SUN_STAR_ACCESSIBILITY_XACCESSIBLECONTEXT_HPP_
32 #include <com/sun/star/accessibility/XAccessibleContext.hpp>
33 #endif
34 #ifndef _COM_SUN_STAR_ACCESSIBILITY_XACCESSIBLEEVENTBROADCASTER_HPP_
35 #include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
36 #endif
37 #ifndef _COM_SUN_STAR_ACCESSIBILITY_ILLEGALACCESSIBLECOMPONENTSTATEEXCEPTION_HPP_
38 #include <com/sun/star/accessibility/IllegalAccessibleComponentStateException.hpp>
39 #endif
40 
41 #ifndef _COM_SUN_STAR_BEANS_XPROPERTYCHANGELISTENER_HPP_
42 #include <com/sun/star/beans/XPropertyChangeListener.hpp>
43 #endif
44 #ifndef _COM_SUN_STAR_UNO_REFERENCE_HXX_
45 #include <com/sun/star/uno/Reference.hxx>
46 #endif
47 #ifndef _CPPUHELPER_WEAK_HXX_
48 #include <cppuhelper/weak.hxx>
49 #endif
50 #ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
51 #include <com/sun/star/lang/XServiceInfo.hpp>
52 #endif
53 #ifndef _COM_SUN_STAR_LANG_XTYPEPROVIDER_HPP_
54 #include <com/sun/star/lang/XTypeProvider.hpp>
55 #endif
56 #ifndef _COM_SUN_STAR_LANG_XSERVICENAME_HPP_
57 #include <com/sun/star/lang/XServiceName.hpp>
58 #endif
59 #ifndef _COM_SUN_STAR_LANG_INDEXOUTOFBOUNDSEXCEPTION_HPP_
60 #include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
61 #endif
62 #ifndef _COM_SUN_STAR_LANG_DISPOSEDEXCEPTION_HPP_
63 #include <com/sun/star/lang/DisposedException.hpp>
64 #endif
65 #ifndef _VOS_MUTEX_HXX_
66 #include <vos/mutex.hxx>
67 #endif
68 #ifndef _CPPUHELPER_INTERFACECONTAINER_H_
69 #include <cppuhelper/interfacecontainer.h>
70 #endif
71 #ifndef _CPPUHELPER_COMPBASE5_HXX_
72 #include <cppuhelper/compbase5.hxx>
73 #endif
74 #ifndef _COMPHELPER_BROADCASTHELPER_HXX_
75 #include <comphelper/broadcasthelper.hxx>
76 #endif
77 #ifndef _CPPUHELPER_IMPLBASE5_HXX_
78 #include <cppuhelper/implbase5.hxx>
79 #endif
80 #ifndef _UTL_SERVICEHELPER_HXX_
81 #include <comphelper/servicehelper.hxx>
82 #endif
83 
84 namespace com { namespace sun { namespace star { namespace awt {
85     struct Point;
86     struct Rectangle;
87     struct Size;
88     class XFocusListener;
89 } } } }
90 
91 class Rectangle;
92 class Ruler;
93 class Window;
94 
95 
96 typedef ::cppu::WeakAggComponentImplHelper5<
97             ::com::sun::star::accessibility::XAccessible,
98             ::com::sun::star::accessibility::XAccessibleComponent,
99             ::com::sun::star::accessibility::XAccessibleContext,
100             ::com::sun::star::accessibility::XAccessibleEventBroadcaster,
101             ::com::sun::star::lang::XServiceInfo >
102             SvtRulerAccessible_Base;
103 
104 class SvtRulerAccessible : public ::comphelper::OBaseMutex, public SvtRulerAccessible_Base
105 {
106 public:
107     //=====  internal  ========================================================
108     SvtRulerAccessible(
109         const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible>& rxParent, Ruler& rRepresentation, const ::rtl::OUString& rName );
110 protected:
111     virtual ~SvtRulerAccessible();
112 public:
113     //=====  XAccessible  =====================================================
114 
115     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext> SAL_CALL
116         getAccessibleContext( void ) throw( ::com::sun::star::uno::RuntimeException );
117 
118     //=====  XAccessibleComponent  ============================================
119 
120     virtual sal_Bool SAL_CALL
121         containsPoint( const ::com::sun::star::awt::Point& rPoint ) throw( ::com::sun::star::uno::RuntimeException );
122 
123     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL
124         getAccessibleAtPoint( const ::com::sun::star::awt::Point& rPoint ) throw( ::com::sun::star::uno::RuntimeException );
125 
126     virtual ::com::sun::star::awt::Rectangle SAL_CALL
127         getBounds() throw( ::com::sun::star::uno::RuntimeException );
128 
129     virtual ::com::sun::star::awt::Point SAL_CALL
130         getLocation() throw( ::com::sun::star::uno::RuntimeException );
131 
132     virtual ::com::sun::star::awt::Point SAL_CALL
133         getLocationOnScreen() throw( ::com::sun::star::uno::RuntimeException );
134 
135     virtual ::com::sun::star::awt::Size SAL_CALL
136         getSize() throw( ::com::sun::star::uno::RuntimeException );
137 
138     virtual sal_Bool SAL_CALL
139         isShowing() throw( ::com::sun::star::uno::RuntimeException );
140 
141     virtual sal_Bool SAL_CALL
142         isVisible() throw( ::com::sun::star::uno::RuntimeException );
143 
144     virtual sal_Bool SAL_CALL
145         isFocusTraversable() throw( ::com::sun::star::uno::RuntimeException );
146 
147     virtual void SAL_CALL
148         addFocusListener(
149             const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XFocusListener >& xListener )
150             throw( ::com::sun::star::uno::RuntimeException );
151 
152     virtual void SAL_CALL
153         removeFocusListener(
154             const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XFocusListener >& xListener )
155             throw( ::com::sun::star::uno::RuntimeException );
156 
157     virtual void SAL_CALL
158         grabFocus() throw( ::com::sun::star::uno::RuntimeException );
159 
160     virtual ::com::sun::star::uno::Any SAL_CALL
161         getAccessibleKeyBinding() throw( ::com::sun::star::uno::RuntimeException );
162     virtual sal_Int32 SAL_CALL
163         getForeground(  ) throw (::com::sun::star::uno::RuntimeException);
164     virtual sal_Int32 SAL_CALL
165         getBackground(  ) throw (::com::sun::star::uno::RuntimeException);
166 
167     //=====  XAccessibleContext  ==============================================
168 
169     virtual sal_Int32 SAL_CALL
170         getAccessibleChildCount( void ) throw( ::com::sun::star::uno::RuntimeException );
171 
172     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> SAL_CALL
173         getAccessibleChild( sal_Int32 nIndex )
174             throw( ::com::sun::star::uno::RuntimeException, ::com::sun::star::lang::IndexOutOfBoundsException );
175 
176     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> SAL_CALL
177         getAccessibleParent( void ) throw( ::com::sun::star::uno::RuntimeException );
178 
179     virtual sal_Int32 SAL_CALL
180         getAccessibleIndexInParent( void ) throw( ::com::sun::star::uno::RuntimeException );
181 
182     virtual sal_Int16 SAL_CALL
183         getAccessibleRole( void ) throw( ::com::sun::star::uno::RuntimeException );
184 
185     virtual ::rtl::OUString SAL_CALL
186         getAccessibleDescription( void ) throw (::com::sun::star::uno::RuntimeException);
187 
188     virtual ::rtl::OUString SAL_CALL
189         getAccessibleName( void ) throw (::com::sun::star::uno::RuntimeException);
190 
191     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL
192         getAccessibleRelationSet( void ) throw( ::com::sun::star::uno::RuntimeException );
193 
194     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL
195         getAccessibleStateSet( void ) throw( ::com::sun::star::uno::RuntimeException );
196 
197     virtual ::com::sun::star::lang::Locale SAL_CALL
198         getLocale( void )
199             throw(  ::com::sun::star::uno::RuntimeException,
200                     ::com::sun::star::accessibility::IllegalAccessibleComponentStateException );
201     //=====  XAccessibleEventBroadcaster  =====================================
202 
203     virtual void SAL_CALL
204         addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener )throw( com::sun::star::uno::RuntimeException );
205 
206     virtual void SAL_CALL
207         removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) throw( com::sun::star::uno::RuntimeException );
208 
209     // Needed, because some compilers would complain about virtual functions above would hide cppu::WeakAggComponentImplHelperBase::add/removeEventListener(const Reference<lang::XEventListener>&)...
210     virtual void SAL_CALL
211         addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& xListener )throw( com::sun::star::uno::RuntimeException );
212 
213     virtual void SAL_CALL
214         removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& xListener ) throw( com::sun::star::uno::RuntimeException );
215 
216 
217     //=====  XServiceInfo  ====================================================
218 
219     virtual ::rtl::OUString SAL_CALL
220         getImplementationName( void ) throw( ::com::sun::star::uno::RuntimeException );
221 
222     virtual sal_Bool SAL_CALL
223         supportsService( const ::rtl::OUString& sServiceName ) throw( ::com::sun::star::uno::RuntimeException );
224 
225     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL
226         getSupportedServiceNames( void ) throw( ::com::sun::star::uno::RuntimeException );
227 
228     //=====  XTypeProvider  ===================================================
229 
230     virtual ::com::sun::star::uno::Sequence<sal_Int8> SAL_CALL
231         getImplementationId( void ) throw( ::com::sun::star::uno::RuntimeException );
232 
233 
234 
235 
236 public:
237 
238     /// Sets the name
239     void setName( const ::rtl::OUString& rName );
240 
241     /// Sets the description
242     void setDescription( const ::rtl::OUString& rDescr );
243 private:
244     static ::com::sun::star::uno::Sequence< sal_Int8 > getUniqueId( void );
245 protected:
246 
247     /// @Return the object's current bounding box relative to the desktop.
248     virtual Rectangle GetBoundingBoxOnScreen( void ) throw( ::com::sun::star::uno::RuntimeException );
249 
250     /// @Return the object's current bounding box relative to the parent object.
251     virtual Rectangle GetBoundingBox( void ) throw( ::com::sun::star::uno::RuntimeException );
252 
253 
254     virtual void SAL_CALL disposing();
255 
256     /// @returns true if it's disposed or in disposing
257     inline sal_Bool IsAlive( void ) const;
258 
259     /// @returns true if it's not disposed and no in disposing
260     inline sal_Bool IsNotAlive( void ) const;
261 
262     /// throws the exception DisposedException if it's not alive
263     void ThrowExceptionIfNotAlive( void ) throw( ::com::sun::star::lang::DisposedException );
264 
265 private:
266     /** Description of this object.  This is not a constant because it can
267         be set from the outside.
268     */
269     ::rtl::OUString                     msDescription;
270 
271     /** Name of this object.
272     */
273     ::rtl::OUString                     msName;
274 
275     /// Reference to the parent object.
276     ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
277                                         mxParent;
278 
279     /// pointer to internal representation
280     Ruler*                          mpRepr;
281 
282         /// client id in the AccessibleEventNotifier queue
283     sal_uInt32 mnClientId;
284 
285 
286 };
287 
IsAlive(void) const288 inline sal_Bool SvtRulerAccessible::IsAlive( void ) const
289 {
290     return !rBHelper.bDisposed && !rBHelper.bInDispose;
291 }
292 
IsNotAlive(void) const293 inline sal_Bool SvtRulerAccessible::IsNotAlive( void ) const
294 {
295     return rBHelper.bDisposed || rBHelper.bInDispose;
296 }
297 
298 
299 
300 #endif
301