26#include <com/sun/star/accessibility/AccessibleEventId.hpp>
27#include <com/sun/star/accessibility/AccessibleRole.hpp>
28#include <com/sun/star/accessibility/AccessibleStateType.hpp>
29#include <com/sun/star/accessibility/IllegalAccessibleComponentStateException.hpp>
36using ::com::sun::star::uno::Reference;
37using ::com::sun::star::uno::Sequence;
38using ::com::sun::star::uno::Any;
47using namespace com::sun::star::accessibility::AccessibleStateType;
53 css::uno::Reference< css::accessibility::XAccessible > xParent,
55 css::uno::Reference< css::awt::XWindow > _xFocusWindow,
59 mpBrowseBox( &rBrowseBox ),
60 m_xFocusWindow(
std::move(_xFocusWindow)),
61 maName( rBrowseBox.GetAccessibleObjectName( eObjType ) ),
62 maDescription( rBrowseBox.GetAccessibleObjectDescription( eObjType ) ),
71 css::uno::Reference< css::accessibility::XAccessible > rxParent,
73 css::uno::Reference< css::awt::XWindow > _xFocusWindow,
76 OUString rDescription ) :
79 mpBrowseBox( &rBrowseBox ),
80 m_xFocusWindow(
std::move(_xFocusWindow)),
82 maDescription(
std::move( rDescription )),
124 ::osl::MutexGuard aGuard(
getMutex() );
131 ::osl::MutexGuard aGuard(
getMutex() );
137 css::uno::Reference< uno::XInterface > xMeMyselfAndI(
static_cast< css::accessibility::XAccessibleContext*
>(
this ), uno::UNO_QUERY );
142 css::uno::Reference< css::accessibility::XAccessibleContext >
143 xParentContext(
mxParent->getAccessibleContext() );
144 if( xParentContext.is() )
146 css::uno::Reference< uno::XInterface > xChild;
148 sal_Int64 nChildCount = xParentContext->getAccessibleChildCount();
149 for( sal_Int64 nChild = 0; nChild < nChildCount; ++nChild )
151 xChild.set(xParentContext->getAccessibleChild( nChild ), css::uno::UNO_QUERY);
153 if ( xMeMyselfAndI.get() == xChild.get() )
166 ::osl::MutexGuard aGuard(
getMutex() );
173 ::osl::MutexGuard aGuard(
getMutex() );
181 ::osl::MutexGuard aGuard(
getMutex() );
197 ::osl::MutexGuard aGuard(
getMutex() );
201 css::uno::Reference< css::accessibility::XAccessibleContext >
202 xParentContext(
mxParent->getAccessibleContext() );
203 if( xParentContext.is() )
204 return xParentContext->getLocale();
206 throw IllegalAccessibleComponentStateException();
238 com::sun::star::uno::Any aFocused;
239 com::sun::star::uno::Any aEmpty;
242 commitEvent(AccessibleEventId::STATE_CHANGED,aFocused,aEmpty);
248 com::sun::star::uno::Any aFocused;
249 com::sun::star::uno::Any aEmpty;
252 commitEvent(AccessibleEventId::STATE_CHANGED,aEmpty,aFocused);
257 const css::uno::Reference< css::accessibility::XAccessibleEventListener>& _rxListener )
259 if ( _rxListener.is() )
261 ::osl::MutexGuard aGuard(
getMutex() );
270 const css::uno::Reference< css::accessibility::XAccessibleEventListener>& _rxListener )
275 ::osl::MutexGuard aGuard(
getMutex() );
277 if ( !nListenerCount )
294 return css::uno::Sequence<sal_Int8>();
300 const OUString& rServiceName )
307 return {
"com.sun.star.accessibility.AccessibleContext" };
314 ::osl::ClearableMutexGuard aGuard(
getMutex() );
322 AccessibleEventId::NAME_CHANGED,
329 ::osl::ClearableMutexGuard aGuard(
getMutex() );
337 AccessibleEventId::DESCRIPTION_CHANGED,
346 bool bShowing =
false;
349 css::uno::Reference< css::accessibility::XAccessibleComponent >
350 xParentComp(
mxParent->getAccessibleContext(), uno::UNO_QUERY );
351 if( xParentComp.is() )
360 sal_Int64 nStateSet = 0;
366 nStateSet |= AccessibleStateType::SHOWING;
371 nStateSet |= AccessibleStateType::DEFUNC;
380 return !rBHelper.bDisposed && !rBHelper.bInDispose &&
mpBrowseBox;
386 throw lang::DisposedException();
395 if ( aRect.
Left() == 0 && aRect.
Top() == 0 && aRect.
Right() == 0 && aRect.
Bottom() == 0 )
397 SAL_WARN(
"accessibility",
"rectangle doesn't exist" );
408 if ( aRect.
Left() == 0 && aRect.
Top() == 0 && aRect.
Right() == 0 && aRect.
Bottom() == 0 )
410 SAL_WARN(
"accessibility",
"rectangle doesn't exist" );
416 sal_Int16 _nEventId,
const Any& _rNewValue,
const Any& _rOldValue )
418 osl::MutexGuard aGuard(
getMutex() );
425 AccessibleEventObject
aEvent(*
this, _nEventId, _rNewValue, _rOldValue, -1);
434 osl::MutexGuard aGuard(
getMutex() );
436 sal_Int16 nRole = AccessibleRole::UNKNOWN;
439 case AccessibleBrowseBoxObjType::RowHeaderCell:
440 nRole = AccessibleRole::ROW_HEADER;
442 case AccessibleBrowseBoxObjType::ColumnHeaderCell:
443 nRole = AccessibleRole::COLUMN_HEADER;
445 case AccessibleBrowseBoxObjType::ColumnHeaderBar:
446 case AccessibleBrowseBoxObjType::RowHeaderBar:
447 case AccessibleBrowseBoxObjType::Table:
448 nRole = AccessibleRole::TABLE;
450 case AccessibleBrowseBoxObjType::TableCell:
451 nRole = AccessibleRole::TABLE_CELL;
453 case AccessibleBrowseBoxObjType::BrowseBox:
454 nRole = AccessibleRole::PANEL;
456 case AccessibleBrowseBoxObjType::CheckBoxCell:
457 nRole = AccessibleRole::CHECK_BOX;
495 return sal_Int32(nColor);
513 return sal_Int32(nColor);
527 osl::MutexGuard aGuard(
getMutex() );
542 const OUString& rName,
const OUString& rDescription )
AccessibleBrowseBoxObjType
unotools::WeakReference< AnimationNode > mxParent
const Color & GetColor() const
The BrowseBox accessible objects inherit from this base class.
virtual tools::Rectangle implGetBoundingBox()=0
Derived classes return the bounding box relative to the parent window.
::vcl::IAccessibleTableProvider * mpBrowseBox
The VCL BrowseBox control.
void ensureIsAlive() const
virtual sal_Int64 SAL_CALL getAccessibleIndexInParent() override
virtual sal_Int64 SAL_CALL getAccessibleStateSet() override
void setAccessibleDescription(const OUString &rDescription)
Changes the description of the object and notifies listeners.
void setAccessibleName(const OUString &rName)
Changes the name of the object and notifies listeners.
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint(const css::awt::Point &rPoint) override
css::uno::Reference< css::awt::XWindow > m_xFocusWindow
This is the window which get all the nice focus events.
virtual OUString SAL_CALL getAccessibleDescription() override
virtual css::awt::Point SAL_CALL getLocation() override
void setClientId(::comphelper::AccessibleEventNotifier::TClientId _aNewClientId)
::comphelper::AccessibleEventNotifier::TClientId getClientId() const
virtual css::awt::Rectangle SAL_CALL getBounds() override
OUString maName
Localized name.
virtual sal_Bool SAL_CALL containsPoint(const css::awt::Point &rPoint) override
AccessibleBrowseBoxObjType meObjType
The type of this object (for names, descriptions, state sets, ...).
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleParent() override
virtual sal_Int16 SAL_CALL getAccessibleRole() override
virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override
virtual css::awt::Size SAL_CALL getSize() override
virtual tools::Rectangle implGetBoundingBoxOnScreen()=0
Derived classes return the bounding box in screen coordinates.
tools::Rectangle getBoundingBoxOnScreen()
Locks all mutex's and calculates the bounding box in screen coordinates.
AccessibleBrowseBoxBase(css::uno::Reference< css::accessibility::XAccessible > xParent, ::vcl::IAccessibleTableProvider &rBrowseBox, css::uno::Reference< css::awt::XWindow > _xFocusWindow, AccessibleBrowseBoxObjType eObjType)
Constructor sets specified name and description.
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
::osl::Mutex & getMutex()
virtual ~AccessibleBrowseBoxBase() override
virtual sal_Int64 implCreateStateSet()
Creates a bitset of states of the current object.
AccessibleBrowseBoxObjType getType() const
OUString maDescription
Localized description text.
virtual sal_Int32 SAL_CALL getBackground() override
virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet() override
virtual OUString SAL_CALL getAccessibleName() override
virtual sal_Int32 SAL_CALL getForeground() override
virtual void SAL_CALL disposing() override
Commits DeFunc event to listeners and cleans up members.
bool implIsShowing()
Determines whether the BrowseBox control is really showing inside of its parent accessible window.
virtual void SAL_CALL removeAccessibleEventListener(const css::uno::Reference< css::accessibility::XAccessibleEventListener > &rxListener) override
Removes an event listener.
virtual sal_Bool SAL_CALL supportsService(const OUString &rServiceName) override
virtual void SAL_CALL addAccessibleEventListener(const css::uno::Reference< css::accessibility::XAccessibleEventListener > &rxListener) override
Adds a new event listener.
virtual void SAL_CALL focusGained(const css::awt::FocusEvent &e) override
css::uno::Reference< css::accessibility::XAccessible > mxParent
The parent accessible object.
virtual css::lang::Locale SAL_CALL getLocale() override
virtual css::awt::Point SAL_CALL getLocationOnScreen() override
void commitEvent(sal_Int16 nEventId, const css::uno::Any &rNewValue, const css::uno::Any &rOldValue)
Commits an event to all listeners.
tools::Rectangle getBoundingBox()
Locks all mutex's and calculates the bounding box relative to the parent window.
virtual void SAL_CALL focusLost(const css::awt::FocusEvent &e) override
virtual ~BrowseBoxAccessibleElement() override
BrowseBoxAccessibleElement(const css::uno::Reference< css::accessibility::XAccessible > &rxParent, ::vcl::IAccessibleTableProvider &rBrowseBox, const css::uno::Reference< css::awt::XWindow > &_xFocusWindow, AccessibleBrowseBoxObjType eObjType)
Constructor sets specified name and description.
static sal_Int32 addEventListener(const TClientId _nClient, const css::uno::Reference< css::accessibility::XAccessibleEventListener > &_rxListener)
static void addEvent(const TClientId _nClient, const css::accessibility::AccessibleEventObject &_rEvent)
static sal_Int32 removeEventListener(const TClientId _nClient, const css::uno::Reference< css::accessibility::XAccessibleEventListener > &_rxListener)
static TClientId registerClient()
static void revokeClient(const TClientId _nClient)
static void revokeClientNotifyDisposing(const TClientId _nClient, const css::uno::Reference< css::uno::XInterface > &_rxEventSource)
const Color & GetColor() const
virtual vcl::Window * GetWindowInstance()=0
virtual void FillAccessibleStateSet(sal_Int64 &_rStateSet, AccessibleBrowseBoxObjType _eType) const=0
const Wallpaper & GetBackground() const
bool IsControlFont() const
const Color & GetControlForeground() const
bool IsControlForeground() const
vcl::Font GetControlFont() const
const vcl::Font & GetFont() const
bool IsControlBackground() const
const Color & GetControlBackground() const
css::awt::Size AWTSize(const Size &rVCLSize)
css::awt::Point AWTPoint(const ::Point &rVCLPoint)
css::awt::Rectangle AWTRectangle(const ::tools::Rectangle &rVCLRect)
inline ::tools::Rectangle VCLRectangle(const css::awt::Rectangle &rAWTRect)
inline ::Point VCLPoint(const css::awt::Point &rAWTPoint)
#define SAL_WARN(area, stream)
::cppu::WeakComponentImplHelper< css::accessibility::XAccessibleContext, css::accessibility::XAccessibleComponent, css::accessibility::XAccessibleEventBroadcaster, css::awt::XFocusListener, css::lang::XServiceInfo > AccessibleBrowseBoxImplHelper
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
::osl::Mutex & getMutex()
IMPLEMENT_FORWARD_XTYPEPROVIDER2(ChildWindowPane, ChildWindowPaneInterfaceBase, Pane)
IMPLEMENT_FORWARD_XINTERFACE2(ChildWindowPane, ChildWindowPaneInterfaceBase, Pane)