24#include <com/sun/star/accessibility/AccessibleEventId.hpp>
25#include <com/sun/star/accessibility/AccessibleRole.hpp>
26#include <com/sun/star/accessibility/AccessibleStateType.hpp>
27#include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
48 ImplInheritanceHelper( _rListBox.GetWindowPeer() ),
68 switch ( rVclWindowEvent.
GetId() )
70 case VclEventId::CheckboxToggle :
82 aValue <<= AccessibleStateType::CHECKED;
95 case VclEventId::ListboxSelect :
97 OSL_FAIL(
"Debug: Treelist shouldn't use VclEventId::ListboxSelect");
101 case VclEventId::ListboxTreeSelect:
113 case VclEventId::ListboxTreeFocus:
116 if( pBox && pBox->HasFocus() )
126 NotifyAccessibleEvent( AccessibleEventId::ACTIVE_DESCENDANT_CHANGED,
uno::Any(), aNewValue );
136 NotifyAccessibleEvent( AccessibleEventId::ACTIVE_DESCENDANT_CHANGED, aOldValue, aNewValue );
140 aNewValue <<= AccessibleStateType::FOCUSED;
141 NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED,
uno::Any(), aNewValue );
146 case VclEventId::ListboxItemRemoved:
160 aOldValue <<= uno::Reference<XAccessible>(entry.second);
161 NotifyAccessibleEvent( AccessibleEventId::CHILD, aOldValue, aNewValue );
165 entry.second->dispose();
173 case VclEventId::ItemExpanded :
174 case VclEventId::ItemCollapsed :
180 const short nAccEvent =
181 ( rVclWindowEvent.
GetId() == VclEventId::ItemExpanded )
182 ? AccessibleEventId::LISTBOX_ENTRY_EXPANDED
183 : AccessibleEventId::LISTBOX_ENTRY_COLLAPSED;
185 aListBoxEntry <<= xChild;
186 NotifyAccessibleEvent( nAccEvent,
Any(), aListBoxEntry );
189 NotifyAccessibleEvent( AccessibleEventId::ACTIVE_DESCENDANT_CHANGED,
Any(), aListBoxEntry );
195 VCLXAccessibleComponent::ProcessWindowEvent (rVclWindowEvent);
206 if (pEntryFocus && pEntry && pEntry != pEntryFocus->
GetSvLBoxEntry())
210 aNewValue <<= uno::Reference<XAccessible>(pAccCurOptionEntry);
211 NotifyAccessibleEvent( AccessibleEventId::CHILD,
uno::Any(), aNewValue );
213 return pAccCurOptionEntry;
228 aOldValue <<= uno::Reference<XAccessible>(
mi->second);
229 NotifyAccessibleEvent( AccessibleEventId::CHILD, aOldValue, aNewValue );
246 switch ( rVclWindowEvent.
GetId() )
248 case VclEventId::WindowShow:
249 case VclEventId::WindowHide:
255 VCLXAccessibleComponent::ProcessWindowChildEvent( rVclWindowEvent );
266 ::osl::MutexGuard aGuard(
m_aMutex );
269 VCLXAccessibleComponent::disposing();
277 return "com.sun.star.comp.svtools.AccessibleTreeListBox";
282 return {
"com.sun.star.accessibility.AccessibleContext",
283 "com.sun.star.accessibility.AccessibleComponent",
284 "com.sun.star.awt.AccessibleTreeListBox"};
308 if ( pSvTreeListBox )
309 nCount = pSvTreeListBox->GetLevelChildCount(
nullptr );
320 throw IndexOutOfBoundsException();
330 ::osl::MutexGuard aGuard(
m_aMutex );
350 if( !(
getListBox()->GetTreeFlags() & SvTreeFlags::CHKBTN) )
371 if(!bHasButtons && (
getListBox()->GetTreeFlags() & SvTreeFlags::CHKBTN))
372 return AccessibleRole::LIST;
375 return AccessibleRole::LIST;
377 return AccessibleRole::TREE;
384 return getListBox()->GetAccessibleDescription();
402 throw IndexOutOfBoundsException();
412 throw IndexOutOfBoundsException();
416 throw IndexOutOfBoundsException();
459 throw IndexOutOfBoundsException();
462 sal_Int64 nSelCount= 0;
470 if ( nSelCount == ( nSelectedChildIndex + 1 ) )
489 throw IndexOutOfBoundsException();
496 VCLXAccessibleComponent::FillAccessibleStateSet( rStateSet );
499 rStateSet |= AccessibleStateType::FOCUSABLE;
500 rStateSet |= AccessibleStateType::MANAGES_DESCENDANTS;
501 if (
getListBox()->GetSelectionMode() == SelectionMode::Multiple )
502 rStateSet |= AccessibleStateType::MULTI_SELECTABLE;
512 pAccessible = it->second;
519 assert(pAccessible.is());
525 return GetAs< SvTreeListBox >();
SvTreeListEntry * NextSibling() const
bool HasChildrenOnDemand() const
the class AccessibleListBoxEntry represents the class for an accessible object of a listbox entry
void NotifyAccessibleEvent(sal_Int16 _nEventId, const css::uno::Any &_aOldValue, const css::uno::Any &_aNewValue)
SvTreeListEntry * GetSvLBoxEntry() const
rtl::Reference< AccessibleListBoxEntry > implGetAccessible(SvTreeListEntry &rEntry)
virtual void FillAccessibleStateSet(sal_Int64 &rStateSet) override
virtual void SAL_CALL disposing() override
this function is called upon disposing the component
void SAL_CALL selectAllAccessibleChildren() override
void SAL_CALL deselectAccessibleChild(sal_Int64 nSelectedChildIndex) override
void SAL_CALL selectAccessibleChild(sal_Int64 nChildIndex) override
virtual OUString SAL_CALL getAccessibleDescription() override
virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext() override
AccessibleListBox(SvTreeListBox const &_rListBox, const css::uno::Reference< css::accessibility::XAccessible > &_xParent)
OAccessibleBase needs a valid view.
virtual void ProcessWindowChildEvent(const VclWindowEvent &rVclWindowEvent) override
virtual sal_Int16 SAL_CALL getAccessibleRole() override
VclPtr< SvTreeListBox > getListBox() const
virtual void ProcessWindowEvent(const VclWindowEvent &rVclWindowEvent) override
void RemoveChildEntries(SvTreeListEntry *)
virtual OUString SAL_CALL getImplementationName() override
void SAL_CALL clearAccessibleSelection() override
virtual ~AccessibleListBox() override
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
virtual sal_Bool SAL_CALL supportsService(const OUString &ServiceName) override
virtual OUString SAL_CALL getAccessibleName() override
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild(sal_Int64 i) override
virtual sal_Int64 SAL_CALL getAccessibleChildCount() override
accessibility::AccessibleListBoxEntry * GetCurEventEntry(const VclWindowEvent &rVclWindowEvent)
css::uno::Reference< css::accessibility::XAccessible > m_xFocusedChild
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleParent() override
sal_Bool SAL_CALL isAccessibleChildSelected(sal_Int64 nChildIndex) override
css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild(sal_Int64 nSelectedChildIndex) override
sal_Int32 GetRoleType() const
sal_Int64 SAL_CALL getSelectedAccessibleChildCount() override
css::uno::Reference< css::accessibility::XAccessible > m_xParent
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
WinBits const WB_HASBUTTONS