/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * 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 .
*/
/** a helper class for implementing an AccessibleContext which at the same time supports an XAccessibleExtendedComponent interface.
*/ class COMPHELPER_DLLPUBLIC OAccessibleComponentHelper
: public cppu::BaseMutex, public cppu::WeakComponentImplHelper<css::accessibility::XAccessibleContext2,
css::accessibility::XAccessibleEventBroadcaster,
css::accessibility::XAccessibleExtendedComponent>
{ friendclass OContextEntryGuard; private:
AccessibleEventNotifier::TClientId m_nClientId;
// XAccessibleContext - default implementations /** default implementation for retrieving the index of this object within the parent <p>This basic implementation here returns the index <code>i</code> of the child for which <code><parent>.getAccessibleChild(i).getAccessibleContext()</code> returns a reference to this OAccessibleComponentHelper object.</p>
*/ virtual sal_Int64 SAL_CALL getAccessibleIndexInParent( ) override; /** default implementation for retrieving the locale <p>This basic implementation returns the locale of the parent context, as retrieved via getAccessibleParent()->getAccessibleContext.</p>
*/ virtual css::lang::Locale SAL_CALL getLocale( ) override;
protected: // helper /** notifies all AccessibleEventListeners of a certain event
@precond not to be called with our mutex locked @param _nEventId the id of the event. See AccessibleEventType @param _rOldValue the old value to be notified @param _rNewValue the new value to be notified
*/ void NotifyAccessibleEvent( const sal_Int16 _nEventId, const css::uno::Any& _rOldValue, const css::uno::Any& _rNewValue,
sal_Int32 nIndexHint = -1
);
/// returns whether any accessible listeners are registered bool hasAccessibleListeners() const;
// life time control /// checks whether the object is alive (returns <TRUE/> then) or disposed bool isAlive() const; /// checks for being alive. If the object is already disposed (i.e. not alive), an exception is thrown. void ensureAlive() const;
/** ensures that the object is disposed. @precond to be called from within the destructor of your derived class only!
*/ void ensureDisposed( );
/** shortcut for retrieving the context of the parent (returned by getAccessibleParent)
*/
css::uno::Reference< css::accessibility::XAccessibleContext >
implGetParentContext();
// access to the base class' broadcast helper/mutex
::osl::Mutex& GetMutex() { return m_aMutex; }
protected: /// implements the calculation of the bounding rectangle - still waiting to be overwritten /// /// @throws css::uno::RuntimeException virtual css::awt::Rectangle implGetBounds( ) = 0;
public: // XAccessibleComponent - default implementations which can be implemented using <method>implGetBounds</method> virtual sal_Bool SAL_CALL containsPoint( const css::awt::Point& aPoint ) override final; virtual css::awt::Point SAL_CALL getLocation( ) override final; /* note: getLocationOnScreen relies on a valid parent (XAccessibleContext::getParent()->getAccessibleContext()), which itself implements XAccessibleComponent
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.