xref: /trunk/main/sc/source/ui/inc/AccessibleEditObject.hxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 
29 #ifndef _SC_ACCESSIBLEEDITOBJECT_HXX
30 #define _SC_ACCESSIBLEEDITOBJECT_HXX
31 
32 #include "AccessibleContextBase.hxx"
33 
34 namespace accessibility
35 {
36     class AccessibleTextHelper;
37 }
38 class EditView;
39 class Window;
40 
41 enum EditObjectType
42 {
43     CellInEditMode,
44     EditLine,
45     EditControl
46 };
47 
48 /** @descr
49         This base class provides an implementation of the
50         <code>AccessibleCell</code> service.
51 */
52 class ScAccessibleEditObject
53     :   public  ScAccessibleContextBase
54 {
55 public:
56     //=====  internal  ========================================================
57     ScAccessibleEditObject(
58         const ::com::sun::star::uno::Reference<
59         ::com::sun::star::accessibility::XAccessible>& rxParent,
60         EditView* pEditView, Window* pWin, const rtl::OUString& rName,
61         const rtl::OUString& rDescription, EditObjectType eObjectType);
62 
63 protected:
64     virtual ~ScAccessibleEditObject();
65 
66     using ScAccessibleContextBase::IsDefunc;
67 
68 public:
69     using ScAccessibleContextBase::addEventListener;
70     using ScAccessibleContextBase::removeEventListener;
71     using ScAccessibleContextBase::disposing;
72 
73     virtual void SAL_CALL disposing();
74 
75     virtual void LostFocus();
76 
77     virtual void GotFocus();
78 
79     ///=====  XAccessibleComponent  ============================================
80 
81     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
82         SAL_CALL getAccessibleAtPoint(
83         const ::com::sun::star::awt::Point& rPoint )
84         throw (::com::sun::star::uno::RuntimeException);
85 
86 protected:
87     /// Return the object's current bounding box relative to the desktop.
88     virtual Rectangle GetBoundingBoxOnScreen(void) const
89         throw (::com::sun::star::uno::RuntimeException);
90 
91     /// Return the object's current bounding box relative to the parent object.
92     virtual Rectangle GetBoundingBox(void) const
93         throw (::com::sun::star::uno::RuntimeException);
94 
95 public:
96     ///=====  XAccessibleContext  ==============================================
97 
98     /// Return the number of currently visible children.
99     // is overloaded to calculate this on demand
100     virtual sal_Int32 SAL_CALL
101         getAccessibleChildCount(void)
102                     throw (::com::sun::star::uno::RuntimeException);
103 
104     /// Return the specified child or NULL if index is invalid.
105     // is overloaded to calculate this on demand
106     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> SAL_CALL
107         getAccessibleChild(sal_Int32 nIndex)
108         throw (::com::sun::star::uno::RuntimeException,
109                 ::com::sun::star::lang::IndexOutOfBoundsException);
110 
111     /// Return the set of current states.
112     virtual ::com::sun::star::uno::Reference<
113             ::com::sun::star::accessibility::XAccessibleStateSet> SAL_CALL
114         getAccessibleStateSet(void)
115         throw (::com::sun::star::uno::RuntimeException);
116 
117 protected:
118     /// Return this object's description.
119     virtual ::rtl::OUString SAL_CALL
120         createAccessibleDescription(void)
121         throw (::com::sun::star::uno::RuntimeException);
122 
123     /// Return the object's current name.
124     virtual ::rtl::OUString SAL_CALL
125         createAccessibleName(void)
126         throw (::com::sun::star::uno::RuntimeException);
127 
128 public:
129     ///=====  XAccessibleEventBroadcaster  =====================================
130 
131     /** Add listener that is informed of future changes of name,
132         description and so on events.
133     */
134     virtual void SAL_CALL
135         addEventListener(
136             const ::com::sun::star::uno::Reference<
137                 ::com::sun::star::accessibility::XAccessibleEventListener>& xListener)
138         throw (com::sun::star::uno::RuntimeException);
139 
140     //  Remove an existing event listener.
141     virtual void SAL_CALL
142         removeEventListener(
143             const ::com::sun::star::uno::Reference<
144                 ::com::sun::star::accessibility::XAccessibleEventListener>& xListener)
145         throw (com::sun::star::uno::RuntimeException);
146 
147     ///=====  XServiceInfo  ====================================================
148 
149     /** Returns an identifier for the implementation of this object.
150     */
151     virtual ::rtl::OUString SAL_CALL
152         getImplementationName(void)
153         throw (::com::sun::star::uno::RuntimeException);
154 
155     ///=====  XTypeProvider  ===================================================
156 
157     /** Returns a implementation id.
158     */
159     virtual ::com::sun::star::uno::Sequence<sal_Int8> SAL_CALL
160         getImplementationId(void)
161         throw (::com::sun::star::uno::RuntimeException);
162 
163 private:
164     accessibility::AccessibleTextHelper* mpTextHelper;
165     EditView* mpEditView;
166     Window* mpWindow;
167     EditObjectType meObjectType;
168     sal_Bool mbHasFocus;
169 
170     sal_Bool IsDefunc(
171         const com::sun::star::uno::Reference<
172         ::com::sun::star::accessibility::XAccessibleStateSet>& rxParentStates);
173 
174     void CreateTextHelper();
175 };
176 
177 
178 #endif
179