/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_chart2.hxx" #include "AccessibleChartShape.hxx" #include "ObjectHierarchy.hxx" #include "ObjectIdentifier.hxx" #include #include #include #include using namespace ::com::sun::star; using namespace ::com::sun::star::accessibility; using ::com::sun::star::uno::Reference; using ::com::sun::star::uno::RuntimeException; namespace chart { AccessibleChartShape::AccessibleChartShape( const AccessibleElementInfo& rAccInfo, bool bMayHaveChildren, bool bAlwaysTransparent ) :impl::AccessibleChartShape_Base( rAccInfo, bMayHaveChildren, bAlwaysTransparent ) ,m_pAccShape( NULL ) { if ( rAccInfo.m_aOID.isAdditionalShape() ) { Reference< drawing::XShape > xShape( rAccInfo.m_aOID.getAdditionalShape() ); Reference< XAccessible > xParent; if ( rAccInfo.m_pParent ) { xParent.set( rAccInfo.m_pParent ); } sal_Int32 nIndex = -1; if ( rAccInfo.m_spObjectHierarchy ) { nIndex = rAccInfo.m_spObjectHierarchy->getIndexInParent( rAccInfo.m_aOID ); } ::accessibility::AccessibleShapeInfo aShapeInfo( xShape, xParent, nIndex ); m_aShapeTreeInfo.SetSdrView( rAccInfo.m_pSdrView ); m_aShapeTreeInfo.SetController( NULL ); m_aShapeTreeInfo.SetWindow( VCLUnoHelper::GetWindow( rAccInfo.m_xWindow ) ); m_aShapeTreeInfo.SetViewForwarder( rAccInfo.m_pViewForwarder ); ::accessibility::ShapeTypeHandler& rShapeHandler = ::accessibility::ShapeTypeHandler::Instance(); m_pAccShape = rShapeHandler.CreateAccessibleObject( aShapeInfo, m_aShapeTreeInfo ); if ( m_pAccShape ) { m_pAccShape->acquire(); m_pAccShape->Init(); } } } AccessibleChartShape::~AccessibleChartShape() { OSL_ASSERT( CheckDisposeState( false /* don't throw exceptions */ ) ); if ( m_pAccShape ) { m_pAccShape->dispose(); m_pAccShape->release(); } } // ________ XServiceInfo ________ ::rtl::OUString AccessibleChartShape::getImplementationName() throw (RuntimeException) { return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "AccessibleChartShape" ) ); } // ________ XAccessibleContext ________ sal_Int32 AccessibleChartShape::getAccessibleChildCount() throw (RuntimeException) { sal_Int32 nCount(0); if ( m_pAccShape ) { nCount = m_pAccShape->getAccessibleChildCount(); } return nCount; } Reference< XAccessible > AccessibleChartShape::getAccessibleChild( sal_Int32 i ) throw (lang::IndexOutOfBoundsException, RuntimeException) { Reference< XAccessible > xChild; if ( m_pAccShape ) { xChild = m_pAccShape->getAccessibleChild( i ); } return xChild; } sal_Int16 AccessibleChartShape::getAccessibleRole() throw (RuntimeException) { sal_Int16 nRole(0); if ( m_pAccShape ) { nRole = m_pAccShape->getAccessibleRole(); } return nRole; } ::rtl::OUString AccessibleChartShape::getAccessibleDescription() throw (::com::sun::star::uno::RuntimeException) { ::rtl::OUString aDescription; if ( m_pAccShape ) { aDescription = m_pAccShape->getAccessibleDescription(); } return aDescription; } ::rtl::OUString AccessibleChartShape::getAccessibleName() throw (::com::sun::star::uno::RuntimeException) { ::rtl::OUString aName; if ( m_pAccShape ) { aName = m_pAccShape->getAccessibleName(); } return aName; } // ________ XAccessibleComponent ________ sal_Bool AccessibleChartShape::containsPoint( const awt::Point& aPoint ) throw (uno::RuntimeException) { sal_Bool bReturn = sal_False; if ( m_pAccShape ) { bReturn = m_pAccShape->containsPoint( aPoint ); } return bReturn; } Reference< XAccessible > AccessibleChartShape::getAccessibleAtPoint( const awt::Point& aPoint ) throw (uno::RuntimeException) { Reference< XAccessible > xResult; if ( m_pAccShape ) { xResult.set( m_pAccShape->getAccessibleAtPoint( aPoint ) ); } return xResult; } awt::Rectangle AccessibleChartShape::getBounds() throw (uno::RuntimeException) { awt::Rectangle aBounds; if ( m_pAccShape ) { aBounds = m_pAccShape->getBounds(); } return aBounds; } awt::Point AccessibleChartShape::getLocation() throw (uno::RuntimeException) { awt::Point aLocation; if ( m_pAccShape ) { aLocation = m_pAccShape->getLocation(); } return aLocation; } awt::Point AccessibleChartShape::getLocationOnScreen() throw (uno::RuntimeException) { awt::Point aLocation; if ( m_pAccShape ) { aLocation = m_pAccShape->getLocationOnScreen(); } return aLocation; } awt::Size AccessibleChartShape::getSize() throw (uno::RuntimeException) { awt::Size aSize; if ( m_pAccShape ) { aSize = m_pAccShape->getSize(); } return aSize; } void AccessibleChartShape::grabFocus() throw (uno::RuntimeException) { return AccessibleBase::grabFocus(); } sal_Int32 AccessibleChartShape::getForeground() throw (uno::RuntimeException) { sal_Int32 nColor(0); if ( m_pAccShape ) { nColor = m_pAccShape->getForeground(); } return nColor; } sal_Int32 AccessibleChartShape::getBackground() throw (uno::RuntimeException) { sal_Int32 nColor(0); if ( m_pAccShape ) { nColor = m_pAccShape->getBackground(); } return nColor; } // ________ XAccessibleExtendedComponent ________ Reference< awt::XFont > AccessibleChartShape::getFont() throw (uno::RuntimeException) { Reference< awt::XFont > xFont; if ( m_pAccShape ) { xFont.set( m_pAccShape->getFont() ); } return xFont; } ::rtl::OUString AccessibleChartShape::getTitledBorderText() throw (uno::RuntimeException) { ::rtl::OUString aText; if ( m_pAccShape ) { aText = m_pAccShape->getTitledBorderText(); } return aText; } ::rtl::OUString AccessibleChartShape::getToolTipText() throw (::com::sun::star::uno::RuntimeException) { ::rtl::OUString aText; if ( m_pAccShape ) { aText = m_pAccShape->getToolTipText(); } return aText; } } // namespace chart