1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove 25*b1cdbd2cSJim Jagielski #include "precompiled_editeng.hxx" 26*b1cdbd2cSJim Jagielski #include <tools/gen.hxx> 27*b1cdbd2cSJim Jagielski #include <vos/mutex.hxx> 28*b1cdbd2cSJim Jagielski #include <vcl/svapp.hxx> 29*b1cdbd2cSJim Jagielski #include <rtl/ustring.hxx> 30*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/Point.hpp> 31*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/Rectangle.hpp> 32*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/DisposedException.hpp> 33*b1cdbd2cSJim Jagielski #include <com/sun/star/accessibility/AccessibleRole.hpp> 34*b1cdbd2cSJim Jagielski #include <com/sun/star/accessibility/AccessibleTextType.hpp> 35*b1cdbd2cSJim Jagielski #include <com/sun/star/accessibility/AccessibleStateType.hpp> 36*b1cdbd2cSJim Jagielski #include <com/sun/star/accessibility/AccessibleEventId.hpp> 37*b1cdbd2cSJim Jagielski #include <comphelper/accessibleeventnotifier.hxx> 38*b1cdbd2cSJim Jagielski #include <unotools/accessiblestatesethelper.hxx> 39*b1cdbd2cSJim Jagielski #include <editeng/unolingu.hxx> 40*b1cdbd2cSJim Jagielski #include "editeng/AccessibleEditableTextPara.hxx" 41*b1cdbd2cSJim Jagielski #include "editeng/AccessibleImageBullet.hxx" 42*b1cdbd2cSJim Jagielski #include <editeng/eerdll.hxx> 43*b1cdbd2cSJim Jagielski 44*b1cdbd2cSJim Jagielski #include <editeng/editdata.hxx> 45*b1cdbd2cSJim Jagielski #include <editeng/editeng.hxx> 46*b1cdbd2cSJim Jagielski #include <editeng/outliner.hxx> 47*b1cdbd2cSJim Jagielski #include "editeng.hrc" 48*b1cdbd2cSJim Jagielski #include <svtools/colorcfg.hxx> 49*b1cdbd2cSJim Jagielski 50*b1cdbd2cSJim Jagielski 51*b1cdbd2cSJim Jagielski using namespace ::com::sun::star; 52*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::accessibility; 53*b1cdbd2cSJim Jagielski 54*b1cdbd2cSJim Jagielski namespace accessibility 55*b1cdbd2cSJim Jagielski { DBG_NAME(AccessibleImageBullet)56*b1cdbd2cSJim Jagielski DBG_NAME( AccessibleImageBullet ) 57*b1cdbd2cSJim Jagielski 58*b1cdbd2cSJim Jagielski AccessibleImageBullet::AccessibleImageBullet ( const uno::Reference< XAccessible >& rParent ) : 59*b1cdbd2cSJim Jagielski mnParagraphIndex( 0 ), 60*b1cdbd2cSJim Jagielski mnIndexInParent( 0 ), 61*b1cdbd2cSJim Jagielski mpEditSource( NULL ), 62*b1cdbd2cSJim Jagielski maEEOffset( 0, 0 ), 63*b1cdbd2cSJim Jagielski mxParent( rParent ), 64*b1cdbd2cSJim Jagielski // well, that's strictly (UNO) exception safe, though not 65*b1cdbd2cSJim Jagielski // really robust. We rely on the fact that this member is 66*b1cdbd2cSJim Jagielski // constructed last, and that the constructor body catches 67*b1cdbd2cSJim Jagielski // exceptions, thus no chance for exceptions once the Id is 68*b1cdbd2cSJim Jagielski // fetched. Nevertheless, normally should employ RAII here... 69*b1cdbd2cSJim Jagielski mnNotifierClientId(::comphelper::AccessibleEventNotifier::registerClient()) 70*b1cdbd2cSJim Jagielski { 71*b1cdbd2cSJim Jagielski #ifdef DBG_UTIL 72*b1cdbd2cSJim Jagielski DBG_CTOR( AccessibleImageBullet, NULL ); 73*b1cdbd2cSJim Jagielski OSL_TRACE( "Received ID: %d", mnNotifierClientId ); 74*b1cdbd2cSJim Jagielski #endif 75*b1cdbd2cSJim Jagielski 76*b1cdbd2cSJim Jagielski try 77*b1cdbd2cSJim Jagielski { 78*b1cdbd2cSJim Jagielski // Create the state set. 79*b1cdbd2cSJim Jagielski ::utl::AccessibleStateSetHelper* pStateSet = new ::utl::AccessibleStateSetHelper (); 80*b1cdbd2cSJim Jagielski mxStateSet = pStateSet; 81*b1cdbd2cSJim Jagielski 82*b1cdbd2cSJim Jagielski // these are always on 83*b1cdbd2cSJim Jagielski pStateSet->AddState( AccessibleStateType::VISIBLE ); 84*b1cdbd2cSJim Jagielski pStateSet->AddState( AccessibleStateType::SHOWING ); 85*b1cdbd2cSJim Jagielski pStateSet->AddState( AccessibleStateType::ENABLED ); 86*b1cdbd2cSJim Jagielski pStateSet->AddState( AccessibleStateType::SENSITIVE ); 87*b1cdbd2cSJim Jagielski } 88*b1cdbd2cSJim Jagielski catch( const uno::Exception& ) {} 89*b1cdbd2cSJim Jagielski } 90*b1cdbd2cSJim Jagielski ~AccessibleImageBullet()91*b1cdbd2cSJim Jagielski AccessibleImageBullet::~AccessibleImageBullet() 92*b1cdbd2cSJim Jagielski { 93*b1cdbd2cSJim Jagielski DBG_DTOR( AccessibleImageBullet, NULL ); 94*b1cdbd2cSJim Jagielski 95*b1cdbd2cSJim Jagielski // sign off from event notifier 96*b1cdbd2cSJim Jagielski if( getNotifierClientId() != -1 ) 97*b1cdbd2cSJim Jagielski { 98*b1cdbd2cSJim Jagielski try 99*b1cdbd2cSJim Jagielski { 100*b1cdbd2cSJim Jagielski ::comphelper::AccessibleEventNotifier::revokeClient( getNotifierClientId() ); 101*b1cdbd2cSJim Jagielski #ifdef DBG_UTIL 102*b1cdbd2cSJim Jagielski OSL_TRACE( "AccessibleImageBullet revoked ID: %d\n", mnNotifierClientId ); 103*b1cdbd2cSJim Jagielski #endif 104*b1cdbd2cSJim Jagielski } 105*b1cdbd2cSJim Jagielski catch( const uno::Exception& ) {} 106*b1cdbd2cSJim Jagielski } 107*b1cdbd2cSJim Jagielski } 108*b1cdbd2cSJim Jagielski queryInterface(const uno::Type & rType)109*b1cdbd2cSJim Jagielski uno::Any SAL_CALL AccessibleImageBullet::queryInterface (const uno::Type & rType) throw (uno::RuntimeException) 110*b1cdbd2cSJim Jagielski { 111*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 112*b1cdbd2cSJim Jagielski 113*b1cdbd2cSJim Jagielski return AccessibleImageBulletInterfaceBase::queryInterface(rType); 114*b1cdbd2cSJim Jagielski } 115*b1cdbd2cSJim Jagielski getAccessibleContext()116*b1cdbd2cSJim Jagielski uno::Reference< XAccessibleContext > SAL_CALL AccessibleImageBullet::getAccessibleContext( ) throw (uno::RuntimeException) 117*b1cdbd2cSJim Jagielski { 118*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 119*b1cdbd2cSJim Jagielski 120*b1cdbd2cSJim Jagielski // We implement the XAccessibleContext interface in the same object 121*b1cdbd2cSJim Jagielski return uno::Reference< XAccessibleContext > ( this ); 122*b1cdbd2cSJim Jagielski } 123*b1cdbd2cSJim Jagielski getAccessibleChildCount()124*b1cdbd2cSJim Jagielski sal_Int32 SAL_CALL AccessibleImageBullet::getAccessibleChildCount() throw (uno::RuntimeException) 125*b1cdbd2cSJim Jagielski { 126*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 127*b1cdbd2cSJim Jagielski 128*b1cdbd2cSJim Jagielski return 0; 129*b1cdbd2cSJim Jagielski } 130*b1cdbd2cSJim Jagielski getAccessibleChild(sal_Int32 i)131*b1cdbd2cSJim Jagielski uno::Reference< XAccessible > SAL_CALL AccessibleImageBullet::getAccessibleChild( sal_Int32 i ) throw (lang::IndexOutOfBoundsException, uno::RuntimeException) 132*b1cdbd2cSJim Jagielski { 133*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 134*b1cdbd2cSJim Jagielski (void)i; 135*b1cdbd2cSJim Jagielski 136*b1cdbd2cSJim Jagielski throw lang::IndexOutOfBoundsException(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("No childs available")), 137*b1cdbd2cSJim Jagielski uno::Reference< uno::XInterface > 138*b1cdbd2cSJim Jagielski ( static_cast< ::cppu::OWeakObject* > (this) ) ); // static_cast: disambiguate hierarchy 139*b1cdbd2cSJim Jagielski } 140*b1cdbd2cSJim Jagielski getAccessibleParent()141*b1cdbd2cSJim Jagielski uno::Reference< XAccessible > SAL_CALL AccessibleImageBullet::getAccessibleParent() throw (uno::RuntimeException) 142*b1cdbd2cSJim Jagielski { 143*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 144*b1cdbd2cSJim Jagielski 145*b1cdbd2cSJim Jagielski return mxParent; 146*b1cdbd2cSJim Jagielski } 147*b1cdbd2cSJim Jagielski getAccessibleIndexInParent()148*b1cdbd2cSJim Jagielski sal_Int32 SAL_CALL AccessibleImageBullet::getAccessibleIndexInParent() throw (uno::RuntimeException) 149*b1cdbd2cSJim Jagielski { 150*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 151*b1cdbd2cSJim Jagielski 152*b1cdbd2cSJim Jagielski return mnIndexInParent; 153*b1cdbd2cSJim Jagielski } 154*b1cdbd2cSJim Jagielski getAccessibleRole()155*b1cdbd2cSJim Jagielski sal_Int16 SAL_CALL AccessibleImageBullet::getAccessibleRole() throw (uno::RuntimeException) 156*b1cdbd2cSJim Jagielski { 157*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 158*b1cdbd2cSJim Jagielski 159*b1cdbd2cSJim Jagielski return AccessibleRole::GRAPHIC; 160*b1cdbd2cSJim Jagielski } 161*b1cdbd2cSJim Jagielski getAccessibleDescription()162*b1cdbd2cSJim Jagielski ::rtl::OUString SAL_CALL AccessibleImageBullet::getAccessibleDescription() throw (uno::RuntimeException) 163*b1cdbd2cSJim Jagielski { 164*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 165*b1cdbd2cSJim Jagielski 166*b1cdbd2cSJim Jagielski ::vos::OGuard aGuard( Application::GetSolarMutex() ); 167*b1cdbd2cSJim Jagielski 168*b1cdbd2cSJim Jagielski // Get the string from the resource for the specified id. 169*b1cdbd2cSJim Jagielski return ::rtl::OUString( String( EditResId (RID_SVXSTR_A11Y_IMAGEBULLET_DESCRIPTION) ) ); 170*b1cdbd2cSJim Jagielski } 171*b1cdbd2cSJim Jagielski getAccessibleName()172*b1cdbd2cSJim Jagielski ::rtl::OUString SAL_CALL AccessibleImageBullet::getAccessibleName() throw (uno::RuntimeException) 173*b1cdbd2cSJim Jagielski { 174*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 175*b1cdbd2cSJim Jagielski 176*b1cdbd2cSJim Jagielski ::vos::OGuard aGuard( Application::GetSolarMutex() ); 177*b1cdbd2cSJim Jagielski 178*b1cdbd2cSJim Jagielski // Get the string from the resource for the specified id. 179*b1cdbd2cSJim Jagielski return ::rtl::OUString( String ( EditResId (RID_SVXSTR_A11Y_IMAGEBULLET_NAME) ) ); 180*b1cdbd2cSJim Jagielski } 181*b1cdbd2cSJim Jagielski getAccessibleRelationSet()182*b1cdbd2cSJim Jagielski uno::Reference< XAccessibleRelationSet > SAL_CALL AccessibleImageBullet::getAccessibleRelationSet() throw (uno::RuntimeException) 183*b1cdbd2cSJim Jagielski { 184*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 185*b1cdbd2cSJim Jagielski 186*b1cdbd2cSJim Jagielski // no relations, therefore empty 187*b1cdbd2cSJim Jagielski return uno::Reference< XAccessibleRelationSet >(); 188*b1cdbd2cSJim Jagielski } 189*b1cdbd2cSJim Jagielski getAccessibleStateSet()190*b1cdbd2cSJim Jagielski uno::Reference< XAccessibleStateSet > SAL_CALL AccessibleImageBullet::getAccessibleStateSet() throw (uno::RuntimeException) 191*b1cdbd2cSJim Jagielski { 192*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 193*b1cdbd2cSJim Jagielski 194*b1cdbd2cSJim Jagielski ::vos::OGuard aGuard( Application::GetSolarMutex() ); 195*b1cdbd2cSJim Jagielski 196*b1cdbd2cSJim Jagielski // Create a copy of the state set and return it. 197*b1cdbd2cSJim Jagielski ::utl::AccessibleStateSetHelper* pStateSet = static_cast< ::utl::AccessibleStateSetHelper*>(mxStateSet.get()); 198*b1cdbd2cSJim Jagielski 199*b1cdbd2cSJim Jagielski if( !pStateSet ) 200*b1cdbd2cSJim Jagielski return uno::Reference<XAccessibleStateSet>(); 201*b1cdbd2cSJim Jagielski 202*b1cdbd2cSJim Jagielski return uno::Reference<XAccessibleStateSet>( new ::utl::AccessibleStateSetHelper (*pStateSet) ); 203*b1cdbd2cSJim Jagielski } 204*b1cdbd2cSJim Jagielski getLocale()205*b1cdbd2cSJim Jagielski lang::Locale SAL_CALL AccessibleImageBullet::getLocale() throw (IllegalAccessibleComponentStateException, uno::RuntimeException) 206*b1cdbd2cSJim Jagielski { 207*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 208*b1cdbd2cSJim Jagielski 209*b1cdbd2cSJim Jagielski ::vos::OGuard aGuard( Application::GetSolarMutex() ); 210*b1cdbd2cSJim Jagielski 211*b1cdbd2cSJim Jagielski lang::Locale aLocale; 212*b1cdbd2cSJim Jagielski 213*b1cdbd2cSJim Jagielski DBG_ASSERT(GetParagraphIndex() >= 0 && GetParagraphIndex() <= USHRT_MAX, 214*b1cdbd2cSJim Jagielski "AccessibleImageBullet::getLocale: paragraph index value overflow"); 215*b1cdbd2cSJim Jagielski 216*b1cdbd2cSJim Jagielski // return locale of first character in the paragraph 217*b1cdbd2cSJim Jagielski return SvxLanguageToLocale(aLocale, GetTextForwarder().GetLanguage( static_cast< sal_uInt16 >( GetParagraphIndex() ), 0 )); 218*b1cdbd2cSJim Jagielski } 219*b1cdbd2cSJim Jagielski addEventListener(const uno::Reference<XAccessibleEventListener> & xListener)220*b1cdbd2cSJim Jagielski void SAL_CALL AccessibleImageBullet::addEventListener( const uno::Reference< XAccessibleEventListener >& xListener ) throw (uno::RuntimeException) 221*b1cdbd2cSJim Jagielski { 222*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 223*b1cdbd2cSJim Jagielski 224*b1cdbd2cSJim Jagielski if( getNotifierClientId() != -1 ) 225*b1cdbd2cSJim Jagielski ::comphelper::AccessibleEventNotifier::addEventListener( getNotifierClientId(), xListener ); 226*b1cdbd2cSJim Jagielski } 227*b1cdbd2cSJim Jagielski removeEventListener(const uno::Reference<XAccessibleEventListener> & xListener)228*b1cdbd2cSJim Jagielski void SAL_CALL AccessibleImageBullet::removeEventListener( const uno::Reference< XAccessibleEventListener >& xListener ) throw (uno::RuntimeException) 229*b1cdbd2cSJim Jagielski { 230*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 231*b1cdbd2cSJim Jagielski 232*b1cdbd2cSJim Jagielski if( getNotifierClientId() != -1 ) 233*b1cdbd2cSJim Jagielski ::comphelper::AccessibleEventNotifier::removeEventListener( getNotifierClientId(), xListener ); 234*b1cdbd2cSJim Jagielski } 235*b1cdbd2cSJim Jagielski containsPoint(const awt::Point & rPoint)236*b1cdbd2cSJim Jagielski sal_Bool SAL_CALL AccessibleImageBullet::containsPoint( const awt::Point& rPoint ) throw (uno::RuntimeException) 237*b1cdbd2cSJim Jagielski { 238*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 239*b1cdbd2cSJim Jagielski 240*b1cdbd2cSJim Jagielski ::vos::OGuard aGuard( Application::GetSolarMutex() ); 241*b1cdbd2cSJim Jagielski 242*b1cdbd2cSJim Jagielski DBG_ASSERT(GetParagraphIndex() >= 0 && GetParagraphIndex() <= USHRT_MAX, 243*b1cdbd2cSJim Jagielski "AccessibleEditableTextPara::contains: index value overflow"); 244*b1cdbd2cSJim Jagielski 245*b1cdbd2cSJim Jagielski awt::Rectangle aTmpRect = getBounds(); 246*b1cdbd2cSJim Jagielski Rectangle aRect( Point(aTmpRect.X, aTmpRect.Y), Size(aTmpRect.Width, aTmpRect.Height) ); 247*b1cdbd2cSJim Jagielski Point aPoint( rPoint.X, rPoint.Y ); 248*b1cdbd2cSJim Jagielski 249*b1cdbd2cSJim Jagielski return aRect.IsInside( aPoint ); 250*b1cdbd2cSJim Jagielski } 251*b1cdbd2cSJim Jagielski getAccessibleAtPoint(const awt::Point &)252*b1cdbd2cSJim Jagielski uno::Reference< XAccessible > SAL_CALL AccessibleImageBullet::getAccessibleAtPoint( const awt::Point& /*aPoint*/ ) throw (uno::RuntimeException) 253*b1cdbd2cSJim Jagielski { 254*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 255*b1cdbd2cSJim Jagielski 256*b1cdbd2cSJim Jagielski // as we have no children, empty reference 257*b1cdbd2cSJim Jagielski return uno::Reference< XAccessible >(); 258*b1cdbd2cSJim Jagielski } 259*b1cdbd2cSJim Jagielski getBounds()260*b1cdbd2cSJim Jagielski awt::Rectangle SAL_CALL AccessibleImageBullet::getBounds( ) throw (uno::RuntimeException) 261*b1cdbd2cSJim Jagielski { 262*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 263*b1cdbd2cSJim Jagielski 264*b1cdbd2cSJim Jagielski ::vos::OGuard aGuard( Application::GetSolarMutex() ); 265*b1cdbd2cSJim Jagielski 266*b1cdbd2cSJim Jagielski DBG_ASSERT(GetParagraphIndex() >= 0 && GetParagraphIndex() <= USHRT_MAX, 267*b1cdbd2cSJim Jagielski "AccessibleEditableTextPara::getBounds: index value overflow"); 268*b1cdbd2cSJim Jagielski 269*b1cdbd2cSJim Jagielski SvxTextForwarder& rCacheTF = GetTextForwarder(); 270*b1cdbd2cSJim Jagielski EBulletInfo aBulletInfo = rCacheTF.GetBulletInfo( static_cast< sal_uInt16 > (GetParagraphIndex()) ); 271*b1cdbd2cSJim Jagielski Rectangle aParentRect = rCacheTF.GetParaBounds( static_cast< sal_uInt16 >( GetParagraphIndex() ) ); 272*b1cdbd2cSJim Jagielski 273*b1cdbd2cSJim Jagielski if( aBulletInfo.nParagraph != EE_PARA_NOT_FOUND && 274*b1cdbd2cSJim Jagielski aBulletInfo.bVisible && 275*b1cdbd2cSJim Jagielski aBulletInfo.nType == SVX_NUM_BITMAP ) 276*b1cdbd2cSJim Jagielski { 277*b1cdbd2cSJim Jagielski Rectangle aRect = aBulletInfo.aBounds; 278*b1cdbd2cSJim Jagielski 279*b1cdbd2cSJim Jagielski // subtract paragraph position (bullet pos is absolute in EditEngine/Outliner) 280*b1cdbd2cSJim Jagielski aRect.Move( -aParentRect.Left(), -aParentRect.Top() ); 281*b1cdbd2cSJim Jagielski 282*b1cdbd2cSJim Jagielski // convert to screen coordinates 283*b1cdbd2cSJim Jagielski Rectangle aScreenRect = AccessibleEditableTextPara::LogicToPixel( aRect, 284*b1cdbd2cSJim Jagielski rCacheTF.GetMapMode(), 285*b1cdbd2cSJim Jagielski GetViewForwarder() ); 286*b1cdbd2cSJim Jagielski 287*b1cdbd2cSJim Jagielski // offset from shape/cell 288*b1cdbd2cSJim Jagielski Point aOffset = GetEEOffset(); 289*b1cdbd2cSJim Jagielski 290*b1cdbd2cSJim Jagielski return awt::Rectangle( aScreenRect.Left() + aOffset.X(), 291*b1cdbd2cSJim Jagielski aScreenRect.Top() + aOffset.Y(), 292*b1cdbd2cSJim Jagielski aScreenRect.GetSize().Width(), 293*b1cdbd2cSJim Jagielski aScreenRect.GetSize().Height() ); 294*b1cdbd2cSJim Jagielski } 295*b1cdbd2cSJim Jagielski 296*b1cdbd2cSJim Jagielski return awt::Rectangle(); 297*b1cdbd2cSJim Jagielski } 298*b1cdbd2cSJim Jagielski getLocation()299*b1cdbd2cSJim Jagielski awt::Point SAL_CALL AccessibleImageBullet::getLocation( ) throw (uno::RuntimeException) 300*b1cdbd2cSJim Jagielski { 301*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 302*b1cdbd2cSJim Jagielski 303*b1cdbd2cSJim Jagielski ::vos::OGuard aGuard( Application::GetSolarMutex() ); 304*b1cdbd2cSJim Jagielski 305*b1cdbd2cSJim Jagielski awt::Rectangle aRect = getBounds(); 306*b1cdbd2cSJim Jagielski 307*b1cdbd2cSJim Jagielski return awt::Point( aRect.X, aRect.Y ); 308*b1cdbd2cSJim Jagielski } 309*b1cdbd2cSJim Jagielski getLocationOnScreen()310*b1cdbd2cSJim Jagielski awt::Point SAL_CALL AccessibleImageBullet::getLocationOnScreen( ) throw (uno::RuntimeException) 311*b1cdbd2cSJim Jagielski { 312*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 313*b1cdbd2cSJim Jagielski 314*b1cdbd2cSJim Jagielski ::vos::OGuard aGuard( Application::GetSolarMutex() ); 315*b1cdbd2cSJim Jagielski 316*b1cdbd2cSJim Jagielski // relate us to parent 317*b1cdbd2cSJim Jagielski uno::Reference< XAccessible > xParent = getAccessibleParent(); 318*b1cdbd2cSJim Jagielski if( xParent.is() ) 319*b1cdbd2cSJim Jagielski { 320*b1cdbd2cSJim Jagielski uno::Reference< XAccessibleComponent > xParentComponent( xParent, uno::UNO_QUERY ); 321*b1cdbd2cSJim Jagielski if( xParentComponent.is() ) 322*b1cdbd2cSJim Jagielski { 323*b1cdbd2cSJim Jagielski awt::Point aRefPoint = xParentComponent->getLocationOnScreen(); 324*b1cdbd2cSJim Jagielski awt::Point aPoint = getLocation(); 325*b1cdbd2cSJim Jagielski aPoint.X += aRefPoint.X; 326*b1cdbd2cSJim Jagielski aPoint.Y += aRefPoint.Y; 327*b1cdbd2cSJim Jagielski 328*b1cdbd2cSJim Jagielski return aPoint; 329*b1cdbd2cSJim Jagielski } 330*b1cdbd2cSJim Jagielski } 331*b1cdbd2cSJim Jagielski 332*b1cdbd2cSJim Jagielski throw uno::RuntimeException(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Cannot access parent")), 333*b1cdbd2cSJim Jagielski uno::Reference< uno::XInterface > 334*b1cdbd2cSJim Jagielski ( static_cast< XAccessible* > (this) ) ); // disambiguate hierarchy 335*b1cdbd2cSJim Jagielski } 336*b1cdbd2cSJim Jagielski getSize()337*b1cdbd2cSJim Jagielski awt::Size SAL_CALL AccessibleImageBullet::getSize( ) throw (uno::RuntimeException) 338*b1cdbd2cSJim Jagielski { 339*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 340*b1cdbd2cSJim Jagielski 341*b1cdbd2cSJim Jagielski ::vos::OGuard aGuard( Application::GetSolarMutex() ); 342*b1cdbd2cSJim Jagielski 343*b1cdbd2cSJim Jagielski awt::Rectangle aRect = getBounds(); 344*b1cdbd2cSJim Jagielski 345*b1cdbd2cSJim Jagielski return awt::Size( aRect.Width, aRect.Height ); 346*b1cdbd2cSJim Jagielski } 347*b1cdbd2cSJim Jagielski grabFocus()348*b1cdbd2cSJim Jagielski void SAL_CALL AccessibleImageBullet::grabFocus( ) throw (uno::RuntimeException) 349*b1cdbd2cSJim Jagielski { 350*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 351*b1cdbd2cSJim Jagielski 352*b1cdbd2cSJim Jagielski throw uno::RuntimeException(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Not focusable")), 353*b1cdbd2cSJim Jagielski uno::Reference< uno::XInterface > 354*b1cdbd2cSJim Jagielski ( static_cast< XAccessible* > (this) ) ); // disambiguate hierarchy 355*b1cdbd2cSJim Jagielski } 356*b1cdbd2cSJim Jagielski getForeground()357*b1cdbd2cSJim Jagielski sal_Int32 SAL_CALL AccessibleImageBullet::getForeground( ) throw (::com::sun::star::uno::RuntimeException) 358*b1cdbd2cSJim Jagielski { 359*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 360*b1cdbd2cSJim Jagielski 361*b1cdbd2cSJim Jagielski // #104444# Added to XAccessibleComponent interface 362*b1cdbd2cSJim Jagielski svtools::ColorConfig aColorConfig; 363*b1cdbd2cSJim Jagielski sal_uInt32 nColor = aColorConfig.GetColorValue( svtools::FONTCOLOR ).nColor; 364*b1cdbd2cSJim Jagielski return static_cast<sal_Int32>(nColor); 365*b1cdbd2cSJim Jagielski } 366*b1cdbd2cSJim Jagielski getBackground()367*b1cdbd2cSJim Jagielski sal_Int32 SAL_CALL AccessibleImageBullet::getBackground( ) throw (::com::sun::star::uno::RuntimeException) 368*b1cdbd2cSJim Jagielski { 369*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 370*b1cdbd2cSJim Jagielski 371*b1cdbd2cSJim Jagielski // #104444# Added to XAccessibleComponent interface 372*b1cdbd2cSJim Jagielski Color aColor( Application::GetSettings().GetStyleSettings().GetWindowColor().GetColor() ); 373*b1cdbd2cSJim Jagielski 374*b1cdbd2cSJim Jagielski // the background is transparent 375*b1cdbd2cSJim Jagielski aColor.SetTransparency( 0xFF); 376*b1cdbd2cSJim Jagielski 377*b1cdbd2cSJim Jagielski return static_cast<sal_Int32>( aColor.GetColor() ); 378*b1cdbd2cSJim Jagielski } 379*b1cdbd2cSJim Jagielski getImplementationName(void)380*b1cdbd2cSJim Jagielski ::rtl::OUString SAL_CALL AccessibleImageBullet::getImplementationName (void) throw (uno::RuntimeException) 381*b1cdbd2cSJim Jagielski { 382*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 383*b1cdbd2cSJim Jagielski 384*b1cdbd2cSJim Jagielski return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM ("AccessibleImageBullet")); 385*b1cdbd2cSJim Jagielski } 386*b1cdbd2cSJim Jagielski supportsService(const::rtl::OUString & sServiceName)387*b1cdbd2cSJim Jagielski sal_Bool SAL_CALL AccessibleImageBullet::supportsService (const ::rtl::OUString& sServiceName) throw (uno::RuntimeException) 388*b1cdbd2cSJim Jagielski { 389*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 390*b1cdbd2cSJim Jagielski 391*b1cdbd2cSJim Jagielski // Iterate over all supported service names and return true if on of them 392*b1cdbd2cSJim Jagielski // matches the given name. 393*b1cdbd2cSJim Jagielski uno::Sequence< ::rtl::OUString> aSupportedServices ( 394*b1cdbd2cSJim Jagielski getSupportedServiceNames ()); 395*b1cdbd2cSJim Jagielski for (int i=0; i<aSupportedServices.getLength(); i++) 396*b1cdbd2cSJim Jagielski if (sServiceName == aSupportedServices[i]) 397*b1cdbd2cSJim Jagielski return sal_True; 398*b1cdbd2cSJim Jagielski return sal_False; 399*b1cdbd2cSJim Jagielski } 400*b1cdbd2cSJim Jagielski getSupportedServiceNames(void)401*b1cdbd2cSJim Jagielski uno::Sequence< ::rtl::OUString> SAL_CALL AccessibleImageBullet::getSupportedServiceNames (void) throw (uno::RuntimeException) 402*b1cdbd2cSJim Jagielski { 403*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 404*b1cdbd2cSJim Jagielski 405*b1cdbd2cSJim Jagielski const ::rtl::OUString sServiceName (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.accessibility.AccessibleContext")); 406*b1cdbd2cSJim Jagielski return uno::Sequence< ::rtl::OUString > (&sServiceName, 1); 407*b1cdbd2cSJim Jagielski } 408*b1cdbd2cSJim Jagielski getServiceName(void)409*b1cdbd2cSJim Jagielski ::rtl::OUString SAL_CALL AccessibleImageBullet::getServiceName (void) throw (uno::RuntimeException) 410*b1cdbd2cSJim Jagielski { 411*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 412*b1cdbd2cSJim Jagielski 413*b1cdbd2cSJim Jagielski return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.accessibility.AccessibleContext")); 414*b1cdbd2cSJim Jagielski } 415*b1cdbd2cSJim Jagielski SetIndexInParent(sal_Int32 nIndex)416*b1cdbd2cSJim Jagielski void AccessibleImageBullet::SetIndexInParent( sal_Int32 nIndex ) 417*b1cdbd2cSJim Jagielski { 418*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 419*b1cdbd2cSJim Jagielski 420*b1cdbd2cSJim Jagielski mnIndexInParent = nIndex; 421*b1cdbd2cSJim Jagielski } 422*b1cdbd2cSJim Jagielski GetIndexInParent() const423*b1cdbd2cSJim Jagielski sal_Int32 AccessibleImageBullet::GetIndexInParent() const 424*b1cdbd2cSJim Jagielski { 425*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 426*b1cdbd2cSJim Jagielski 427*b1cdbd2cSJim Jagielski return mnIndexInParent; 428*b1cdbd2cSJim Jagielski } 429*b1cdbd2cSJim Jagielski SetEEOffset(const Point & rOffset)430*b1cdbd2cSJim Jagielski void AccessibleImageBullet::SetEEOffset( const Point& rOffset ) 431*b1cdbd2cSJim Jagielski { 432*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 433*b1cdbd2cSJim Jagielski 434*b1cdbd2cSJim Jagielski maEEOffset = rOffset; 435*b1cdbd2cSJim Jagielski } 436*b1cdbd2cSJim Jagielski Dispose()437*b1cdbd2cSJim Jagielski void AccessibleImageBullet::Dispose() 438*b1cdbd2cSJim Jagielski { 439*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 440*b1cdbd2cSJim Jagielski 441*b1cdbd2cSJim Jagielski int nClientId( getNotifierClientId() ); 442*b1cdbd2cSJim Jagielski 443*b1cdbd2cSJim Jagielski // #108212# drop all references before notifying dispose 444*b1cdbd2cSJim Jagielski mxParent = NULL; 445*b1cdbd2cSJim Jagielski mnNotifierClientId = -1; 446*b1cdbd2cSJim Jagielski mpEditSource = NULL; 447*b1cdbd2cSJim Jagielski 448*b1cdbd2cSJim Jagielski // notify listeners 449*b1cdbd2cSJim Jagielski if( nClientId != -1 ) 450*b1cdbd2cSJim Jagielski { 451*b1cdbd2cSJim Jagielski try 452*b1cdbd2cSJim Jagielski { 453*b1cdbd2cSJim Jagielski uno::Reference < XAccessibleContext > xThis = getAccessibleContext(); 454*b1cdbd2cSJim Jagielski 455*b1cdbd2cSJim Jagielski // #106234# Delegate to EventNotifier 456*b1cdbd2cSJim Jagielski ::comphelper::AccessibleEventNotifier::revokeClientNotifyDisposing( nClientId, xThis ); 457*b1cdbd2cSJim Jagielski #ifdef DBG_UTIL 458*b1cdbd2cSJim Jagielski OSL_TRACE( "AccessibleImageBullet disposed ID: %d", nClientId ); 459*b1cdbd2cSJim Jagielski #endif 460*b1cdbd2cSJim Jagielski } 461*b1cdbd2cSJim Jagielski catch( const uno::Exception& ) {} 462*b1cdbd2cSJim Jagielski } 463*b1cdbd2cSJim Jagielski } 464*b1cdbd2cSJim Jagielski SetEditSource(SvxEditSource * pEditSource)465*b1cdbd2cSJim Jagielski void AccessibleImageBullet::SetEditSource( SvxEditSource* pEditSource ) 466*b1cdbd2cSJim Jagielski { 467*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 468*b1cdbd2cSJim Jagielski 469*b1cdbd2cSJim Jagielski mpEditSource = pEditSource; 470*b1cdbd2cSJim Jagielski 471*b1cdbd2cSJim Jagielski if( !mpEditSource ) 472*b1cdbd2cSJim Jagielski { 473*b1cdbd2cSJim Jagielski // going defunc 474*b1cdbd2cSJim Jagielski UnSetState( AccessibleStateType::SHOWING ); 475*b1cdbd2cSJim Jagielski UnSetState( AccessibleStateType::VISIBLE ); 476*b1cdbd2cSJim Jagielski SetState( AccessibleStateType::INVALID ); 477*b1cdbd2cSJim Jagielski SetState( AccessibleStateType::DEFUNC ); 478*b1cdbd2cSJim Jagielski 479*b1cdbd2cSJim Jagielski Dispose(); 480*b1cdbd2cSJim Jagielski } 481*b1cdbd2cSJim Jagielski } 482*b1cdbd2cSJim Jagielski FireEvent(const sal_Int16 nEventId,const uno::Any & rNewValue,const uno::Any & rOldValue) const483*b1cdbd2cSJim Jagielski void AccessibleImageBullet::FireEvent(const sal_Int16 nEventId, const uno::Any& rNewValue, const uno::Any& rOldValue ) const 484*b1cdbd2cSJim Jagielski { 485*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 486*b1cdbd2cSJim Jagielski 487*b1cdbd2cSJim Jagielski uno::Reference < XAccessibleContext > xThis( const_cast< AccessibleImageBullet* > (this)->getAccessibleContext() ); 488*b1cdbd2cSJim Jagielski 489*b1cdbd2cSJim Jagielski AccessibleEventObject aEvent(xThis, nEventId, rNewValue, rOldValue); 490*b1cdbd2cSJim Jagielski 491*b1cdbd2cSJim Jagielski // #106234# Delegate to EventNotifier 492*b1cdbd2cSJim Jagielski ::comphelper::AccessibleEventNotifier::addEvent( getNotifierClientId(), 493*b1cdbd2cSJim Jagielski aEvent ); 494*b1cdbd2cSJim Jagielski } 495*b1cdbd2cSJim Jagielski GotPropertyEvent(const uno::Any & rNewValue,const sal_Int16 nEventId) const496*b1cdbd2cSJim Jagielski void AccessibleImageBullet::GotPropertyEvent( const uno::Any& rNewValue, const sal_Int16 nEventId ) const 497*b1cdbd2cSJim Jagielski { 498*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 499*b1cdbd2cSJim Jagielski 500*b1cdbd2cSJim Jagielski FireEvent( nEventId, rNewValue ); 501*b1cdbd2cSJim Jagielski } 502*b1cdbd2cSJim Jagielski LostPropertyEvent(const uno::Any & rOldValue,const sal_Int16 nEventId) const503*b1cdbd2cSJim Jagielski void AccessibleImageBullet::LostPropertyEvent( const uno::Any& rOldValue, const sal_Int16 nEventId ) const 504*b1cdbd2cSJim Jagielski { 505*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 506*b1cdbd2cSJim Jagielski 507*b1cdbd2cSJim Jagielski FireEvent( nEventId, uno::Any(), rOldValue ); 508*b1cdbd2cSJim Jagielski } 509*b1cdbd2cSJim Jagielski SetState(const sal_Int16 nStateId)510*b1cdbd2cSJim Jagielski void AccessibleImageBullet::SetState( const sal_Int16 nStateId ) 511*b1cdbd2cSJim Jagielski { 512*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 513*b1cdbd2cSJim Jagielski 514*b1cdbd2cSJim Jagielski ::utl::AccessibleStateSetHelper* pStateSet = static_cast< ::utl::AccessibleStateSetHelper*>(mxStateSet.get()); 515*b1cdbd2cSJim Jagielski if( pStateSet != NULL && 516*b1cdbd2cSJim Jagielski !pStateSet->contains(nStateId) ) 517*b1cdbd2cSJim Jagielski { 518*b1cdbd2cSJim Jagielski pStateSet->AddState( nStateId ); 519*b1cdbd2cSJim Jagielski GotPropertyEvent( uno::makeAny( nStateId ), AccessibleEventId::STATE_CHANGED ); 520*b1cdbd2cSJim Jagielski } 521*b1cdbd2cSJim Jagielski } 522*b1cdbd2cSJim Jagielski UnSetState(const sal_Int16 nStateId)523*b1cdbd2cSJim Jagielski void AccessibleImageBullet::UnSetState( const sal_Int16 nStateId ) 524*b1cdbd2cSJim Jagielski { 525*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 526*b1cdbd2cSJim Jagielski 527*b1cdbd2cSJim Jagielski ::utl::AccessibleStateSetHelper* pStateSet = static_cast< ::utl::AccessibleStateSetHelper*>(mxStateSet.get()); 528*b1cdbd2cSJim Jagielski if( pStateSet != NULL && 529*b1cdbd2cSJim Jagielski pStateSet->contains(nStateId) ) 530*b1cdbd2cSJim Jagielski { 531*b1cdbd2cSJim Jagielski pStateSet->RemoveState( nStateId ); 532*b1cdbd2cSJim Jagielski LostPropertyEvent( uno::makeAny( nStateId ), AccessibleEventId::STATE_CHANGED ); 533*b1cdbd2cSJim Jagielski } 534*b1cdbd2cSJim Jagielski } 535*b1cdbd2cSJim Jagielski getNotifierClientId() const536*b1cdbd2cSJim Jagielski int AccessibleImageBullet::getNotifierClientId() const 537*b1cdbd2cSJim Jagielski { 538*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 539*b1cdbd2cSJim Jagielski 540*b1cdbd2cSJim Jagielski return mnNotifierClientId; 541*b1cdbd2cSJim Jagielski } 542*b1cdbd2cSJim Jagielski SetParagraphIndex(sal_Int32 nIndex)543*b1cdbd2cSJim Jagielski void AccessibleImageBullet::SetParagraphIndex( sal_Int32 nIndex ) 544*b1cdbd2cSJim Jagielski { 545*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 546*b1cdbd2cSJim Jagielski 547*b1cdbd2cSJim Jagielski uno::Any aOldDesc; 548*b1cdbd2cSJim Jagielski uno::Any aOldName; 549*b1cdbd2cSJim Jagielski 550*b1cdbd2cSJim Jagielski try 551*b1cdbd2cSJim Jagielski { 552*b1cdbd2cSJim Jagielski aOldDesc <<= getAccessibleDescription(); 553*b1cdbd2cSJim Jagielski aOldName <<= getAccessibleName(); 554*b1cdbd2cSJim Jagielski } 555*b1cdbd2cSJim Jagielski catch( const uno::Exception& ) {} // optional behaviour 556*b1cdbd2cSJim Jagielski 557*b1cdbd2cSJim Jagielski sal_Int32 nOldIndex = mnParagraphIndex; 558*b1cdbd2cSJim Jagielski 559*b1cdbd2cSJim Jagielski mnParagraphIndex = nIndex; 560*b1cdbd2cSJim Jagielski 561*b1cdbd2cSJim Jagielski try 562*b1cdbd2cSJim Jagielski { 563*b1cdbd2cSJim Jagielski if( nOldIndex != nIndex ) 564*b1cdbd2cSJim Jagielski { 565*b1cdbd2cSJim Jagielski // index and therefore description changed 566*b1cdbd2cSJim Jagielski FireEvent( AccessibleEventId::DESCRIPTION_CHANGED, uno::makeAny( getAccessibleDescription() ), aOldDesc ); 567*b1cdbd2cSJim Jagielski FireEvent( AccessibleEventId::NAME_CHANGED, uno::makeAny( getAccessibleName() ), aOldName ); 568*b1cdbd2cSJim Jagielski } 569*b1cdbd2cSJim Jagielski } 570*b1cdbd2cSJim Jagielski catch( const uno::Exception& ) {} // optional behaviour 571*b1cdbd2cSJim Jagielski } 572*b1cdbd2cSJim Jagielski GetParagraphIndex() const573*b1cdbd2cSJim Jagielski sal_Int32 AccessibleImageBullet::GetParagraphIndex() const SAL_THROW((uno::RuntimeException)) 574*b1cdbd2cSJim Jagielski { 575*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 576*b1cdbd2cSJim Jagielski 577*b1cdbd2cSJim Jagielski return mnParagraphIndex; 578*b1cdbd2cSJim Jagielski } 579*b1cdbd2cSJim Jagielski GetEditSource() const580*b1cdbd2cSJim Jagielski SvxEditSource& AccessibleImageBullet::GetEditSource() const SAL_THROW((uno::RuntimeException)) 581*b1cdbd2cSJim Jagielski { 582*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 583*b1cdbd2cSJim Jagielski 584*b1cdbd2cSJim Jagielski if( mpEditSource ) 585*b1cdbd2cSJim Jagielski return *mpEditSource; 586*b1cdbd2cSJim Jagielski else 587*b1cdbd2cSJim Jagielski throw uno::RuntimeException(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("No edit source, object is defunct")), 588*b1cdbd2cSJim Jagielski uno::Reference< uno::XInterface > 589*b1cdbd2cSJim Jagielski ( static_cast< ::cppu::OWeakObject* > 590*b1cdbd2cSJim Jagielski ( const_cast< AccessibleImageBullet* > (this) ) ) ); // disambiguate hierarchy 591*b1cdbd2cSJim Jagielski } 592*b1cdbd2cSJim Jagielski GetTextForwarder() const593*b1cdbd2cSJim Jagielski SvxTextForwarder& AccessibleImageBullet::GetTextForwarder() const SAL_THROW((uno::RuntimeException)) 594*b1cdbd2cSJim Jagielski { 595*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 596*b1cdbd2cSJim Jagielski 597*b1cdbd2cSJim Jagielski SvxEditSource& rEditSource = GetEditSource(); 598*b1cdbd2cSJim Jagielski SvxTextForwarder* pTextForwarder = rEditSource.GetTextForwarder(); 599*b1cdbd2cSJim Jagielski 600*b1cdbd2cSJim Jagielski if( !pTextForwarder ) 601*b1cdbd2cSJim Jagielski throw uno::RuntimeException(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Unable to fetch text forwarder, object is defunct")), 602*b1cdbd2cSJim Jagielski uno::Reference< uno::XInterface > 603*b1cdbd2cSJim Jagielski ( static_cast< ::cppu::OWeakObject* > 604*b1cdbd2cSJim Jagielski ( const_cast< AccessibleImageBullet* > (this) ) ) ); // disambiguate hierarchy 605*b1cdbd2cSJim Jagielski 606*b1cdbd2cSJim Jagielski if( pTextForwarder->IsValid() ) 607*b1cdbd2cSJim Jagielski return *pTextForwarder; 608*b1cdbd2cSJim Jagielski else 609*b1cdbd2cSJim Jagielski throw uno::RuntimeException(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Text forwarder is invalid, object is defunct")), 610*b1cdbd2cSJim Jagielski uno::Reference< uno::XInterface > 611*b1cdbd2cSJim Jagielski ( static_cast< ::cppu::OWeakObject* > 612*b1cdbd2cSJim Jagielski ( const_cast< AccessibleImageBullet* > (this) ) ) ); // disambiguate hierarchy 613*b1cdbd2cSJim Jagielski } 614*b1cdbd2cSJim Jagielski GetViewForwarder() const615*b1cdbd2cSJim Jagielski SvxViewForwarder& AccessibleImageBullet::GetViewForwarder() const SAL_THROW((uno::RuntimeException)) 616*b1cdbd2cSJim Jagielski { 617*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 618*b1cdbd2cSJim Jagielski 619*b1cdbd2cSJim Jagielski SvxEditSource& rEditSource = GetEditSource(); 620*b1cdbd2cSJim Jagielski SvxViewForwarder* pViewForwarder = rEditSource.GetViewForwarder(); 621*b1cdbd2cSJim Jagielski 622*b1cdbd2cSJim Jagielski if( !pViewForwarder ) 623*b1cdbd2cSJim Jagielski { 624*b1cdbd2cSJim Jagielski throw uno::RuntimeException(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Unable to fetch view forwarder, object is defunct")), 625*b1cdbd2cSJim Jagielski uno::Reference< uno::XInterface > 626*b1cdbd2cSJim Jagielski ( static_cast< ::cppu::OWeakObject* > 627*b1cdbd2cSJim Jagielski ( const_cast< AccessibleImageBullet* > (this) ) ) ); // disambiguate hierarchy 628*b1cdbd2cSJim Jagielski } 629*b1cdbd2cSJim Jagielski 630*b1cdbd2cSJim Jagielski if( pViewForwarder->IsValid() ) 631*b1cdbd2cSJim Jagielski return *pViewForwarder; 632*b1cdbd2cSJim Jagielski else 633*b1cdbd2cSJim Jagielski throw uno::RuntimeException(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("View forwarder is invalid, object is defunct")), 634*b1cdbd2cSJim Jagielski uno::Reference< uno::XInterface > 635*b1cdbd2cSJim Jagielski ( static_cast< ::cppu::OWeakObject* > 636*b1cdbd2cSJim Jagielski ( const_cast< AccessibleImageBullet* > (this) ) ) ); // disambiguate hierarchy 637*b1cdbd2cSJim Jagielski } 638*b1cdbd2cSJim Jagielski GetEEOffset() const639*b1cdbd2cSJim Jagielski const Point& AccessibleImageBullet::GetEEOffset() const 640*b1cdbd2cSJim Jagielski { 641*b1cdbd2cSJim Jagielski DBG_CHKTHIS( AccessibleImageBullet, NULL ); 642*b1cdbd2cSJim Jagielski 643*b1cdbd2cSJim Jagielski return maEEOffset; 644*b1cdbd2cSJim Jagielski } 645*b1cdbd2cSJim Jagielski 646*b1cdbd2cSJim Jagielski } // end of namespace accessibility 647*b1cdbd2cSJim Jagielski 648