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
23
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_chart2.hxx"
26
27 #include "AccessibleChartShape.hxx"
28 #include "ObjectHierarchy.hxx"
29 #include "ObjectIdentifier.hxx"
30
31 #include <toolkit/helper/vclunohelper.hxx>
32 #include <svx/ShapeTypeHandler.hxx>
33 #include <svx/AccessibleShape.hxx>
34 #include <svx/AccessibleShapeInfo.hxx>
35
36 using namespace ::com::sun::star;
37 using namespace ::com::sun::star::accessibility;
38
39 using ::com::sun::star::uno::Reference;
40 using ::com::sun::star::uno::RuntimeException;
41
42
43 namespace chart
44 {
45
AccessibleChartShape(const AccessibleElementInfo & rAccInfo,bool bMayHaveChildren,bool bAlwaysTransparent)46 AccessibleChartShape::AccessibleChartShape(
47 const AccessibleElementInfo& rAccInfo,
48 bool bMayHaveChildren, bool bAlwaysTransparent )
49 :impl::AccessibleChartShape_Base( rAccInfo, bMayHaveChildren, bAlwaysTransparent )
50 ,m_pAccShape( NULL )
51 {
52 if ( rAccInfo.m_aOID.isAdditionalShape() )
53 {
54 Reference< drawing::XShape > xShape( rAccInfo.m_aOID.getAdditionalShape() );
55 Reference< XAccessible > xParent;
56 if ( rAccInfo.m_pParent )
57 {
58 xParent.set( rAccInfo.m_pParent );
59 }
60 sal_Int32 nIndex = -1;
61 if ( rAccInfo.m_spObjectHierarchy )
62 {
63 nIndex = rAccInfo.m_spObjectHierarchy->getIndexInParent( rAccInfo.m_aOID );
64 }
65 ::accessibility::AccessibleShapeInfo aShapeInfo( xShape, xParent, nIndex );
66
67 m_aShapeTreeInfo.SetSdrView( rAccInfo.m_pSdrView );
68 m_aShapeTreeInfo.SetController( NULL );
69 m_aShapeTreeInfo.SetWindow( VCLUnoHelper::GetWindow( rAccInfo.m_xWindow ) );
70 m_aShapeTreeInfo.SetViewForwarder( rAccInfo.m_pViewForwarder );
71
72 ::accessibility::ShapeTypeHandler& rShapeHandler = ::accessibility::ShapeTypeHandler::Instance();
73 m_pAccShape = rShapeHandler.CreateAccessibleObject( aShapeInfo, m_aShapeTreeInfo );
74 if ( m_pAccShape )
75 {
76 m_pAccShape->acquire();
77 m_pAccShape->Init();
78 }
79 }
80 }
81
~AccessibleChartShape()82 AccessibleChartShape::~AccessibleChartShape()
83 {
84 OSL_ASSERT( CheckDisposeState( false /* don't throw exceptions */ ) );
85
86 if ( m_pAccShape )
87 {
88 m_pAccShape->dispose();
89 m_pAccShape->release();
90 }
91 }
92
93 // ________ XServiceInfo ________
getImplementationName()94 ::rtl::OUString AccessibleChartShape::getImplementationName()
95 throw (RuntimeException)
96 {
97 return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "AccessibleChartShape" ) );
98 }
99
100 // ________ XAccessibleContext ________
getAccessibleChildCount()101 sal_Int32 AccessibleChartShape::getAccessibleChildCount()
102 throw (RuntimeException)
103 {
104 sal_Int32 nCount(0);
105 if ( m_pAccShape )
106 {
107 nCount = m_pAccShape->getAccessibleChildCount();
108 }
109 return nCount;
110 }
111
getAccessibleChild(sal_Int32 i)112 Reference< XAccessible > AccessibleChartShape::getAccessibleChild( sal_Int32 i )
113 throw (lang::IndexOutOfBoundsException, RuntimeException)
114 {
115 Reference< XAccessible > xChild;
116 if ( m_pAccShape )
117 {
118 xChild = m_pAccShape->getAccessibleChild( i );
119 }
120 return xChild;
121 }
122
getAccessibleRole()123 sal_Int16 AccessibleChartShape::getAccessibleRole()
124 throw (RuntimeException)
125 {
126 sal_Int16 nRole(0);
127 if ( m_pAccShape )
128 {
129 nRole = m_pAccShape->getAccessibleRole();
130 }
131 return nRole;
132 }
133
getAccessibleDescription()134 ::rtl::OUString AccessibleChartShape::getAccessibleDescription()
135 throw (::com::sun::star::uno::RuntimeException)
136 {
137 ::rtl::OUString aDescription;
138 if ( m_pAccShape )
139 {
140 aDescription = m_pAccShape->getAccessibleDescription();
141 }
142 return aDescription;
143 }
144
getAccessibleName()145 ::rtl::OUString AccessibleChartShape::getAccessibleName()
146 throw (::com::sun::star::uno::RuntimeException)
147 {
148 ::rtl::OUString aName;
149 if ( m_pAccShape )
150 {
151 aName = m_pAccShape->getAccessibleName();
152 }
153 return aName;
154 }
155
156 // ________ XAccessibleComponent ________
containsPoint(const awt::Point & aPoint)157 sal_Bool AccessibleChartShape::containsPoint( const awt::Point& aPoint )
158 throw (uno::RuntimeException)
159 {
160 sal_Bool bReturn = sal_False;
161 if ( m_pAccShape )
162 {
163 bReturn = m_pAccShape->containsPoint( aPoint );
164 }
165 return bReturn;
166 }
167
getAccessibleAtPoint(const awt::Point & aPoint)168 Reference< XAccessible > AccessibleChartShape::getAccessibleAtPoint( const awt::Point& aPoint )
169 throw (uno::RuntimeException)
170 {
171 Reference< XAccessible > xResult;
172 if ( m_pAccShape )
173 {
174 xResult.set( m_pAccShape->getAccessibleAtPoint( aPoint ) );
175 }
176 return xResult;
177 }
178
getBounds()179 awt::Rectangle AccessibleChartShape::getBounds()
180 throw (uno::RuntimeException)
181 {
182 awt::Rectangle aBounds;
183 if ( m_pAccShape )
184 {
185 aBounds = m_pAccShape->getBounds();
186 }
187 return aBounds;
188 }
189
getLocation()190 awt::Point AccessibleChartShape::getLocation()
191 throw (uno::RuntimeException)
192 {
193 awt::Point aLocation;
194 if ( m_pAccShape )
195 {
196 aLocation = m_pAccShape->getLocation();
197 }
198 return aLocation;
199 }
200
getLocationOnScreen()201 awt::Point AccessibleChartShape::getLocationOnScreen()
202 throw (uno::RuntimeException)
203 {
204 awt::Point aLocation;
205 if ( m_pAccShape )
206 {
207 aLocation = m_pAccShape->getLocationOnScreen();
208 }
209 return aLocation;
210 }
211
getSize()212 awt::Size AccessibleChartShape::getSize()
213 throw (uno::RuntimeException)
214 {
215 awt::Size aSize;
216 if ( m_pAccShape )
217 {
218 aSize = m_pAccShape->getSize();
219 }
220 return aSize;
221 }
222
grabFocus()223 void AccessibleChartShape::grabFocus()
224 throw (uno::RuntimeException)
225 {
226 return AccessibleBase::grabFocus();
227 }
228
getForeground()229 sal_Int32 AccessibleChartShape::getForeground()
230 throw (uno::RuntimeException)
231 {
232 sal_Int32 nColor(0);
233 if ( m_pAccShape )
234 {
235 nColor = m_pAccShape->getForeground();
236 }
237 return nColor;
238 }
239
getBackground()240 sal_Int32 AccessibleChartShape::getBackground()
241 throw (uno::RuntimeException)
242 {
243 sal_Int32 nColor(0);
244 if ( m_pAccShape )
245 {
246 nColor = m_pAccShape->getBackground();
247 }
248 return nColor;
249 }
250
251 // ________ XAccessibleExtendedComponent ________
getFont()252 Reference< awt::XFont > AccessibleChartShape::getFont()
253 throw (uno::RuntimeException)
254 {
255 Reference< awt::XFont > xFont;
256 if ( m_pAccShape )
257 {
258 xFont.set( m_pAccShape->getFont() );
259 }
260 return xFont;
261 }
262
getTitledBorderText()263 ::rtl::OUString AccessibleChartShape::getTitledBorderText()
264 throw (uno::RuntimeException)
265 {
266 ::rtl::OUString aText;
267 if ( m_pAccShape )
268 {
269 aText = m_pAccShape->getTitledBorderText();
270 }
271 return aText;
272 }
273
getToolTipText()274 ::rtl::OUString AccessibleChartShape::getToolTipText()
275 throw (::com::sun::star::uno::RuntimeException)
276 {
277 ::rtl::OUString aText;
278 if ( m_pAccShape )
279 {
280 aText = m_pAccShape->getToolTipText();
281 }
282 return aText;
283 }
284
285 } // namespace chart
286