| /************************************************************** |
| * |
| * 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 <toolkit/helper/vclunohelper.hxx> |
| #include <svx/ShapeTypeHandler.hxx> |
| #include <svx/AccessibleShape.hxx> |
| #include <svx/AccessibleShapeInfo.hxx> |
| |
| 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 |