20#include <com/sun/star/accessibility/AccessibleEventId.hpp>
21#include <com/sun/star/accessibility/AccessibleTableModelChange.hpp>
22#include <com/sun/star/accessibility/AccessibleTableModelChangeType.hpp>
23#include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
31using ::com::sun::star::uno::Reference;
32using ::com::sun::star::uno::Sequence;
33using ::com::sun::star::uno::Any;
98 sal_Int32 nColumnPos = 0;
120 return "row description";
129 return "col description";
184 sal_Int32 nRow, sal_Int32 nColumn )
190 sal_Int64 nChildIndex =
static_cast<sal_Int64
>(nRow) *
static_cast<sal_Int64
>(
m_aTable.
GetColumnCount()) + nColumn;
195 sal_Int32 nRow, sal_Int32 nColumn )
211 sal_Int32 nRow = nChildIndex / nColumns;
221 sal_Int32 nRow = nChildIndex / nColumns;
237 auto selectedRowsRange = asNonConstRange(selectedRows);
239 selectedRowsRange[
i]=
i;
248 return static_cast<sal_Int64
>(selectedRows.getLength()) *
static_cast<sal_Int64
>(nColumns);
274 return aAny.hasValue() ?
291 return "com.sun.star.accessibility.AccessibleGridControlTable";
305 AccessibleGridControlTableBase::dispose();
309 const css::uno::Any& rOldValue)
311 if (nEventId == AccessibleEventId::TABLE_MODEL_CHANGED)
313 AccessibleTableModelChange aChange;
314 if (rNewValue >>= aChange)
316 assert(aChange.Type != AccessibleTableModelChangeType::COLUMNS_REMOVED);
318 if (aChange.Type == AccessibleTableModelChangeType::ROWS_REMOVED)
322 size_t const nStart = nColCount * aChange.FirstRow;
323 size_t const nEnd = nColCount * aChange.LastRow;
342 DBG_ASSERT( pParent,
"implGetBoundingBox - missing parent window" );
366 sal_Int32 nChildIndex )
374 xRet = xContext->getAccessibleChild( nChildIndex );
376 catch (
const lang::IndexOutOfBoundsException&)
378 OSL_FAIL(
"implGetHeaderBar - wrong child index" );
constexpr tools::Long Height() const
constexpr tools::Long Width() const
css::uno::Reference< css::accessibility::XAccessible > m_xParent
The parent accessible object.
::vcl::table::IAccessibleTable & m_aTable
The SVT Table control.
virtual void commitEvent(sal_Int16 nEventId, const css::uno::Any &rNewValue, const css::uno::Any &rOldValue)
Commits an event to all listeners.
void ensureIsAlive() const
The Grid Control accessible table objects inherit from this base class.
void implGetSelectedRows(css::uno::Sequence< sal_Int32 > &rSeq)
Fills a sequence with sorted indexes of completely selected rows.
void ensureIsValidColumn(sal_Int32 nColumn)
void ensureIsValidRow(sal_Int32 nRow)
virtual sal_Int64 SAL_CALL getAccessibleChildCount() override
virtual void SAL_CALL release() noexcept override
Releases the object (calls release() on base class).
css::uno::Any SAL_CALL queryInterface(const css::uno::Type &rType) override
Queries for a new interface.
virtual void SAL_CALL acquire() noexcept override
Acquires the object (calls acquire() on base class).
void ensureIsValidIndex(sal_Int64 nChildIndex)
void ensureIsValidAddress(sal_Int32 nRow, sal_Int32 nColumn)
virtual css::uno::Reference< css::accessibility::XAccessibleTable > SAL_CALL getAccessibleRowHeaders() override
virtual OUString SAL_CALL getImplementationName() override
virtual sal_Int64 SAL_CALL getSelectedAccessibleChildCount() override
virtual sal_Bool SAL_CALL isAccessibleChildSelected(sal_Int64 nChildIndex) override
virtual css::uno::Sequence< sal_Int32 > SAL_CALL getSelectedAccessibleColumns() override
virtual void SAL_CALL selectAccessibleChild(sal_Int64 nChildIndex) override
Selects the specified child (row or column of the table).
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint(const css::awt::Point &rPoint) override
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild(sal_Int64 nChildIndex) override
AccessibleGridControlTable(const css::uno::Reference< css::accessibility::XAccessible > &rxParent, ::vcl::table::IAccessibleTable &rTable)
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild(sal_Int64 nSelectedChildIndex) override
virtual void SAL_CALL selectAllAccessibleChildren() override
Selects all children or first, if multiselection is not supported.
virtual sal_Bool SAL_CALL isAccessibleColumnSelected(sal_Int32 nColumn) override
virtual OUString SAL_CALL getAccessibleRowDescription(sal_Int32 nRow) override
virtual void commitEvent(sal_Int16 nEventId, const css::uno::Any &rNewValue, const css::uno::Any &rOldValue) override
Commits an event to all listeners.
virtual void SAL_CALL deselectAccessibleChild(sal_Int64 nSelectedChildIndex) override
Removes the specified row/column from the selection.
virtual sal_Bool SAL_CALL isAccessibleSelected(sal_Int32 nRow, sal_Int32 nColumn) override
virtual void SAL_CALL clearAccessibleSelection() override
Clears the complete selection.
virtual css::uno::Reference< css::accessibility::XAccessibleTable > SAL_CALL getAccessibleColumnHeaders() override
virtual void SAL_CALL dispose() override
virtual css::uno::Sequence< sal_Int32 > SAL_CALL getSelectedAccessibleRows() override
css::uno::Any SAL_CALL queryInterface(const css::uno::Type &rType) override
Queries for a new interface.
virtual OUString SAL_CALL getAccessibleColumnDescription(sal_Int32 nColumn) override
virtual tools::Rectangle implGetBoundingBox() override
virtual tools::Rectangle implGetBoundingBoxOnScreen() override
**
virtual void SAL_CALL grabFocus() override
Grabs the focus to (the current cell of) the data table.
virtual sal_Bool SAL_CALL isAccessibleRowSelected(sal_Int32 nRow) override
virtual void SAL_CALL acquire() noexcept override
Acquires the object (calls acquire() on base class).
virtual sal_Int64 SAL_CALL getAccessibleIndexInParent() override
virtual void SAL_CALL release() noexcept override
Releases the object (calls release() on base class).
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleCellAt(sal_Int32 nRow, sal_Int32 nColumn) override
std::vector< rtl::Reference< AccessibleGridControlTableCell > > m_aCellVector
css::uno::Reference< css::accessibility::XAccessibleTable > implGetHeaderBar(sal_Int32 nChildIndex)
internal helper methods **
virtual css::uno::Any SAL_CALL queryInterface(css::uno::Type const &rType) SAL_OVERRIDE
virtual sal_Int32 GetRowCount() const=0
virtual bool ConvertPointToCellAddress(sal_Int32 &_rnRow, sal_Int32 &_rnColPos, const Point &_rPoint)=0
virtual vcl::Window * GetAccessibleParentWindow() const=0
virtual bool HasColHeader()=0
virtual void SelectRow(sal_Int32 const i_rowIndex, bool const i_select)=0
virtual void GrabFocus()=0
virtual tools::Rectangle GetWindowExtentsRelative(const vcl::Window &rRelativeWindow) const=0
virtual tools::Rectangle calcTableRect()=0
virtual void SelectAllRows(bool const i_select)=0
virtual tools::Rectangle GetWindowExtentsAbsolute() const=0
virtual sal_Int32 GetColumnCount() const=0
virtual bool HasRowHeader()=0
inline ::Point VCLPoint(const css::awt::Point &rAWTPoint)
#define DBG_ASSERT(sCon, aError)
sal_Int32 findValue(const css::uno::Sequence< T1 > &_rList, const T2 &_rValue)
constexpr std::enable_if_t< std::is_signed_v< T >, std::make_unsigned_t< T > > make_unsigned(T value)