21 #include <osl/diagnose.h>
23 #include <com/sun/star/accessibility/IllegalAccessibleComponentStateException.hpp>
45 inline void setCreator(
const Reference< XAccessible >& _rAcc );
50 { m_nClientId = _nId; }
103 if ( _rxListener.is() )
104 _rxListener->disposing( EventObject( *
this ) );
108 if ( _rxListener.is() )
110 if ( !
m_pImpl->getClientId( ) )
127 if ( !(_rxListener.is() &&
m_pImpl->getClientId()) )
131 if ( !nListenerCount )
144 const Any& _rOldValue,
const Any& _rNewValue )
146 if ( !
m_pImpl->getClientId( ) )
152 AccessibleEventObject
aEvent;
153 aEvent.Source = *
this;
154 aEvent.EventId = _nEventId;
155 aEvent.OldValue = _rOldValue;
156 aEvent.NewValue = _rNewValue;
165 return !rBHelper.bDisposed && !rBHelper.bInDispose;
172 throw DisposedException();
178 if ( !rBHelper.bDisposed )
180 OSL_ENSURE( 0 ==
m_refCount,
"OAccessibleContextHelper::ensureDisposed: this method _has_ to be called from without your dtor only!" );
189 m_pImpl->setCreator( _rxAccessible );
218 if ( xParentContext.is() )
221 Reference< XAccessible > xCreator(
m_pImpl->getCreator() );
223 OSL_ENSURE( xCreator.is(),
"OAccessibleContextHelper::getAccessibleIndexInParent: invalid creator!" );
232 sal_Int32 nChildCount = xParentContext->getAccessibleChildCount();
233 for ( sal_Int32 nChild = 0; ( nChild < nChildCount ) && ( -1 == nRet ); ++nChild )
235 Reference< XAccessible > xChild( xParentContext->getAccessibleChild( nChild ) );
236 if ( xChild.get() == xCreator.get() )
244 OSL_FAIL(
"OAccessibleContextHelper::getAccessibleIndexInParent: caught an exception!" );
255 Reference< XAccessibleContext > xParentContext;
257 xParentContext = xParent->getAccessibleContext();
259 if ( !xParentContext.is() )
260 throw IllegalAccessibleComponentStateException( OUString(), *this );
262 return xParentContext->getLocale();
269 Reference< XAccessibleContext > xParentContext;
271 xParentContext = xParent->getAccessibleContext();
272 return xParentContext;
virtual ~OAccessibleContextHelper() override
WeakReference< XAccessible > m_aCreator
std::unique_ptr< OContextHelper_Impl > m_pImpl
css::uno::Reference< css::accessibility::XAccessibleContext > implGetParentContext()
shortcut for retrieving the context of the parent (returned by getAccessibleParent) ...
void ensureDisposed()
ensures that the object is disposed.
virtual sal_Int32 SAL_CALL getAccessibleIndexInParent() override
default implementation for retrieving the index of this object within the parent
virtual void SAL_CALL disposing() override
virtual void SAL_CALL acquire() SAL_OVERRIDE
Reference< XAccessible > getCreator() const
AccessibleEventNotifier::TClientId getClientId() const
css::uno::Reference< css::accessibility::XAccessible > getAccessibleCreator() const
retrieves the creator previously set with lateInit
bool isAlive() const
checks whether the object is alive (returns then) or disposed
virtual css::lang::Locale SAL_CALL getLocale() override
default implementation for retrieving the locale
virtual void SAL_CALL addAccessibleEventListener(const css::uno::Reference< css::accessibility::XAccessibleEventListener > &xListener) override
void lateInit(const css::uno::Reference< css::accessibility::XAccessible > &_rxAccessible)
late construction
static sal_Int32 removeEventListener(const TClientId _nClient, const css::uno::Reference< css::accessibility::XAccessibleEventListener > &_rxListener)
revokes a listener for the given client
virtual void SAL_CALL removeAccessibleEventListener(const css::uno::Reference< css::accessibility::XAccessibleEventListener > &xListener) override
static void revokeClientNotifyDisposing(const TClientId _nClient, const css::uno::Reference< css::uno::XInterface > &_rxEventSource)
revokes a client, with additionally notifying a disposing event to all listeners registered for this ...
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleParent() override=0
static void revokeClient(const TClientId _nClient)
revokes a broadcaster of AccessibleEvents
OAccessibleContextHelper()
static SolarMutex * get()
Help components to get the SolarMutex easily.
void setClientId(const AccessibleEventNotifier::TClientId _nId)
void ensureAlive() const
checks for being alive. If the object is already disposed (i.e. not alive), an exception is thrown...
static void addEvent(const TClientId _nClient, const css::accessibility::AccessibleEventObject &_rEvent)
adds an event, which is to be broadcasted, to the queue
virtual OUString SAL_CALL getAccessibleId() override
static TClientId registerClient()
registers a client of this class, means a broadcaster of AccessibleEvents
AccessibleEventNotifier::TClientId m_nClientId
void setCreator(const Reference< XAccessible > &_rAcc)
implementation class for OAccessibleContextHelper.
static sal_Int32 addEventListener(const TClientId _nClient, const css::uno::Reference< css::accessibility::XAccessibleEventListener > &_rxListener)
registers a listener for the given client
void NotifyAccessibleEvent(const sal_Int16 _nEventId, const css::uno::Any &_rOldValue, const css::uno::Any &_rNewValue)
notifies all AccessibleEventListeners of a certain event