27#include <com/sun/star/accessibility/AccessibleStateType.hpp>
32using ::com::sun::star::accessibility::XAccessible;
49 BrowseBoxImpl::THeaderCellMap::iterator aFind = _raHeaderCells.find(
_nPos );
50 if ( aFind == _raHeaderCells.end() )
59 aFind = _raHeaderCells.emplace(
_nPos, xAccessible ).first;
61 if ( aFind != _raHeaderCells.end() )
87 DBG_ASSERT( pParent,
"BrowseBox::CreateAccessible - parent not found" );
89 if( pParent && !
m_pImpl->m_pAccessible)
91 Reference< XAccessible > xAccParent = pParent->
GetAccessible();
100 Reference< XAccessible > xAccessible;
102 xAccessible =
m_pImpl->m_pAccessible->getMyself();
113 OSL_ENSURE(
m_pImpl->m_pAccessible,
"Invalid call: Accessible is null");
115 return m_pImpl->m_aFactoryAccess.getFactory().createAccessibleBrowseBoxTableCell(
131 AccessibleBrowseBoxObjType::RowHeaderCell,
132 m_pImpl->getAccessibleHeaderBar(AccessibleBrowseBoxObjType::RowHeaderBar),
134 m_pImpl->m_aFactoryAccess.getFactory()
144 AccessibleBrowseBoxObjType::ColumnHeaderCell,
145 m_pImpl->getAccessibleHeaderBar(AccessibleBrowseBoxObjType::ColumnHeaderBar),
147 m_pImpl->m_aFactoryAccess.getFactory()
160 SAL_WARN(
"svtools",
"BrowseBox::CreateAccessibleControl: to be overwritten!" );
168 sal_Int32& rnRow, sal_uInt16& rnColumnPos,
const Point& rPoint )
196 sal_uInt16 nColumn = 0;
199 _rnIndex = nRow *
ColCount() + nColumn;
212 case AccessibleBrowseBoxObjType::BrowseBox:
213 aRetText =
"BrowseBox";
215 case AccessibleBrowseBoxObjType::Table:
218 case AccessibleBrowseBoxObjType::RowHeaderBar:
219 aRetText =
"RowHeaderBar";
221 case AccessibleBrowseBoxObjType::ColumnHeaderBar:
222 aRetText =
"ColumnHeaderBar";
224 case AccessibleBrowseBoxObjType::TableCell:
228 sal_Int32 columnId = _nPosition %
ColCount() +1;
231 aRetText += OUString::number(rowId);
234 aRetText =
"TableCell";
235#if OSL_DEBUG_LEVEL > 0
243 case AccessibleBrowseBoxObjType::RowHeaderCell:
245 sal_Int32 rowId = _nPosition + 1;
246 aRetText = OUString::number( rowId );
248#if OSL_DEBUG_LEVEL > 0
256 case AccessibleBrowseBoxObjType::ColumnHeaderCell:
258#if OSL_DEBUG_LEVEL > 0
267 OSL_FAIL(
"BrowseBox::GetAccessibleName: invalid enum!");
278 case AccessibleBrowseBoxObjType::BrowseBox:
279 aRetText =
"BrowseBox description";
281 case AccessibleBrowseBoxObjType::Table:
284 case AccessibleBrowseBoxObjType::RowHeaderBar:
287 case AccessibleBrowseBoxObjType::ColumnHeaderBar:
290 case AccessibleBrowseBoxObjType::TableCell:
293 case AccessibleBrowseBoxObjType::RowHeaderCell:
296 case AccessibleBrowseBoxObjType::ColumnHeaderCell:
299 case AccessibleBrowseBoxObjType::CheckBoxCell:
319 sal_Int64& rStateSet,
324 case AccessibleBrowseBoxObjType::BrowseBox:
325 case AccessibleBrowseBoxObjType::Table:
327 rStateSet |= AccessibleStateType::FOCUSABLE;
329 rStateSet |= AccessibleStateType::FOCUSED;
331 rStateSet |= AccessibleStateType::ACTIVE;
333 rStateSet |= AccessibleStateType::EDITABLE;
336 rStateSet |= AccessibleStateType::ENABLED;
337 rStateSet |= AccessibleStateType::SENSITIVE;
340 rStateSet |= AccessibleStateType::VISIBLE;
341 if ( eObjType == AccessibleBrowseBoxObjType::Table )
342 rStateSet |= AccessibleStateType::MANAGES_DESCENDANTS;
345 case AccessibleBrowseBoxObjType::RowHeaderBar:
346 rStateSet |= AccessibleStateType::FOCUSABLE;
347 rStateSet |= AccessibleStateType::VISIBLE;
349 rStateSet |= AccessibleStateType::FOCUSED;
350 rStateSet |= AccessibleStateType::MANAGES_DESCENDANTS;
352 case AccessibleBrowseBoxObjType::ColumnHeaderBar:
353 rStateSet |= AccessibleStateType::FOCUSABLE;
354 rStateSet |= AccessibleStateType::VISIBLE;
356 rStateSet |= AccessibleStateType::FOCUSED;
357 rStateSet |= AccessibleStateType::MANAGES_DESCENDANTS;
359 case AccessibleBrowseBoxObjType::TableCell:
364 rStateSet |= AccessibleStateType::VISIBLE;
366 rStateSet |= AccessibleStateType::FOCUSABLE;
367 rStateSet |= AccessibleStateType::TRANSIENT;
370 case AccessibleBrowseBoxObjType::RowHeaderCell:
371 case AccessibleBrowseBoxObjType::ColumnHeaderCell:
372 case AccessibleBrowseBoxObjType::CheckBoxCell:
373 OSL_FAIL(
"Illegal call here!");
379 sal_Int32 _nRow, sal_uInt16 _nColumnPos )
const
383 _rStateSet |= AccessibleStateType::VISIBLE;
385 _rStateSet |= AccessibleStateType::FOCUSED;
387 _rStateSet |= AccessibleStateType::TRANSIENT;
398 SAL_WARN(
"svtools",
"This method has to be implemented by the derived classes! BUG!!");
404 const Any& rNewValue,
const Any& rOldValue,
bool _bColumnHeaderBar )
407 m_pImpl->m_pAccessible->commitHeaderBarEvent( nEventId,
408 rNewValue, rOldValue, _bColumnHeaderBar );
414 m_pImpl->m_pAccessible->commitTableEvent( _nEventId, _rNewValue, _rOldValue );
420 m_pImpl->m_pAccessible->commitEvent( _nEventId, _rNewValue, _rOldValue);
425 return m_pImpl->m_aFactoryAccess.getFactory();
430 return (
nullptr !=
m_pImpl->m_pAccessible ) &&
m_pImpl->m_pAccessible->isAlive();
462 return (
pColSel && (0 <= _nColumn) && (_nColumn <= 0xFFF) ) &&
463 pColSel->IsSelected(
static_cast< sal_uInt16
>( _nColumn ) );
483 auto pRows = _rRows.getArray();
488 "BrowseBox::GetAllSelectedRows - too many selected rows found" );
496 if( !(pColumnSel &&
nCount) )
499 _rColumns.realloc(
nCount );
500 auto pColumns = _rColumns.getArray();
504 for(
size_t nRange = 0; nRange < nRangeCount; ++nRange )
508 for( sal_Int32 nCol = rRange.
Min(); nCol <=
static_cast<sal_Int32
>(rRange.
Max()); ++nCol )
511 "GetAllSelectedColumns - range overflow" );
512 pColumns[
nIndex ] = nCol;
AccessibleBrowseBoxObjType
constexpr sal_Int32 BROWSER_ENDOFSELECTION
#define BROWSER_INVALIDID
virtual bool GetGlyphBoundRects(const Point &rOrigin, const OUString &rStr, int nIndex, int nLen, std::vector< tools::Rectangle > &rVector) override
virtual sal_Int32 GetSelectedRowCount() const override
sal_uInt16 GetColumnId(sal_uInt16 nPos) const
::vcl::IAccessibleFactory & getAccessibleFactory()
retrieves the XAccessible implementation associated with the BrowseBox instance
virtual void GetAllSelectedRows(css::uno::Sequence< sal_Int32 > &_rRows) const override
virtual css::uno::Reference< css::accessibility::XAccessible > GetAccessible() override
const MultiSelection * GetColumnSelection() const
virtual OUString GetAccessibleCellText(sal_Int32 _nRow, sal_uInt16 _nColPos) const override
virtual css::uno::Reference< css::accessibility::XAccessible > CreateAccessible() override
Creates and returns the accessible object of the whole BrowseBox.
virtual css::uno::Reference< css::accessibility::XAccessible > CreateAccessibleColumnHeader(sal_uInt16 nColumnPos) override
Creates the accessible object of a column header.
virtual css::uno::Reference< css::accessibility::XAccessible > CreateAccessibleCell(sal_Int32 nRow, sal_uInt16 nColumnPos) override
Creates the accessible object of a data table cell.
sal_Int32 GetCurRow() const
sal_uInt16 GetSelectColumnCount() const
virtual bool ConvertPointToRowHeader(sal_Int32 &rnRow, const Point &rPoint) override
Converts a point relative to the row header bar origin to a row header index.
virtual void SelectColumn(sal_uInt16 _nColumn, bool _bSelect=true) override
virtual bool ConvertPointToCellAddress(sal_Int32 &rnRow, sal_uInt16 &rnColumnId, const Point &rPoint) override
Converts a point relative to the data window origin to a cell address.
virtual void GetAllSelectedColumns(css::uno::Sequence< sal_Int32 > &_rColumns) const override
virtual void GrabTableFocus() override
Sets focus to current cell of the data table.
virtual OUString GetAccessibleObjectName(AccessibleBrowseBoxObjType eObjType, sal_Int32 _nPosition=-1) const override
return the name of the specified object.
virtual void GrabFocus() override
virtual bool GoToCell(sal_Int32 _nRow, sal_uInt16 _nColumn) override
sal_Int32 GetRowAtYPosPixel(tools::Long nY, bool bRelToBrowser=true) const
virtual sal_uInt16 GetCurrColumn() const override
sal_uInt16 ColCount() const
void SelectColumnPos(sal_uInt16 nCol, bool _bSelect, bool bMakeVisible)
virtual OUString GetColumnDescription(sal_uInt16 _nColumn) const override
virtual sal_Int32 GetAccessibleControlCount() const override
void commitTableEvent(sal_Int16 nEventId, const css::uno::Any &rNewValue, const css::uno::Any &rOldValue)
commitTableEvent commit the event at all listeners of the table
bool GoToRowColumnId(sal_Int32 nRow, sal_uInt16 nColId)
virtual bool HasRowHeader() const override
sal_uInt16 GetColumnPos(sal_uInt16 nColumnId) const
sal_Int32 GetSelectRowCount() const
OUString GetColumnTitle(sal_uInt16 nColumnId) const
virtual void FillAccessibleStateSetForCell(sal_Int64 &_rStateSet, sal_Int32 _nRow, sal_uInt16 _nColumn) const override
Fills the StateSet with all states for one cell (except DEFUNC and SHOWING, done by the accessible ob...
virtual OUString GetAccessibleObjectDescription(AccessibleBrowseBoxObjType eObjType, sal_Int32 _nPosition=-1) const override
return the description of the specified object.
static const sal_uInt16 HandleColumnId
virtual OUString GetCellText(sal_Int32 _nRow, sal_uInt16 _nColId) const
GetCellText returns the text at the given position.
sal_uInt16 GetCurColumnId() const
bool GetUpdateMode() const
virtual bool ConvertPointToColumnHeader(sal_uInt16 &rnColumnPos, const Point &rPoint) override
Converts a point relative to the column header bar origin to a column header index.
virtual vcl::Window * GetWindowInstance() override
virtual tools::Rectangle GetWindowExtentsAbsolute() const override
virtual void FillAccessibleStateSet(sal_Int64 &rStateSet, AccessibleBrowseBoxObjType eObjType) const override
Fills the StateSet with all states (except DEFUNC and SHOWING, done by the accessible object),...
virtual tools::Rectangle GetWindowExtentsRelative(const vcl::Window &rRelativeWindow) const override
virtual vcl::Window * GetAccessibleParentWindow() const override
virtual css::uno::Reference< css::accessibility::XAccessible > CreateAccessibleRowHeader(sal_Int32 nRow) override
Creates the accessible object of a row header.
virtual bool ConvertPointToControlIndex(sal_Int32 &rnIndex, const Point &rPoint) override
Converts a point relative to the BrowseBox origin to the index of an existing control.
bool IsFieldVisible(sal_Int32 nRow, sal_uInt16 nColId, bool bComplete=false) const
sal_uInt16 GetColumnAtXPosPixel(tools::Long nX) const
sal_Int32 FirstSelectedRow()
virtual sal_Int32 GetCurrRow() const override
virtual sal_Int32 GetRowCount() const override
virtual sal_Int32 GetSelectedColumnCount() const override
bool isAccessibleAlive() const
return <TRUE> if and only if the accessible object for this instance has been created and is alive
void commitHeaderBarEvent(sal_Int16 nEventId, const css::uno::Any &rNewValue, const css::uno::Any &rOldValue, bool _bColumnHeaderBar)
fires an AccessibleEvent relative to a header bar AccessibleContext
virtual bool IsCellVisible(sal_Int32 _nRow, sal_uInt16 _nColumn) const override
virtual css::uno::Reference< css::accessibility::XAccessible > CreateAccessibleControl(sal_Int32 nIndex) override
Creates the accessible object of an additional control.
virtual OUString GetRowDescription(sal_Int32 nRow) const override
bool IsColumnSelected(sal_uInt16 nColumnId) const
bool IsFrozen(sal_uInt16 nColumnId) const
::std::unique_ptr< ::svt::BrowseBoxImpl > m_pImpl
std::unique_ptr< MultiSelection > pColSel
sal_Int32 NextSelectedRow()
void commitBrowseBoxEvent(sal_Int16 nEventId, const css::uno::Any &rNewValue, const css::uno::Any &rOldValue)
commitBrowseBoxEvent commit the event at all listeners of the browsebox
sal_Int32 GetSelectCount() const
const Range & GetRange(sal_Int32 nRange) const
sal_Int32 GetRangeCount() const
bool GetGlyphBoundRects(const Point &rOrigin, const OUString &rStr, int nIndex, int nLen, std::vector< tools::Rectangle > &rVector) const
constexpr tools::Long Y() const
constexpr tools::Long X() const
::std::map< sal_Int32, css::uno::Reference< css::accessibility::XAccessible > > THeaderCellMap
vcl::IAccessibleBrowseBox * m_pAccessible
css::uno::Reference< css::accessibility::XAccessible > getAccessibleTable()
css::uno::Reference< css::accessibility::XAccessible > getAccessibleHeaderBar(AccessibleBrowseBoxObjType _eObjType)
virtual css::uno::Reference< css::accessibility::XAccessible > getHeaderBar(AccessibleBrowseBoxObjType _eObjType)=0
virtual css::uno::Reference< css::accessibility::XAccessible > getTable()=0
virtual bool isAlive() const=0
virtual css::uno::Reference< css::accessibility::XAccessible > createAccessibleBrowseBoxHeaderCell(sal_Int32 _nColumnRowId, const css::uno::Reference< css::accessibility::XAccessible > &rxParent, vcl::IAccessibleTableProvider &_rBrowseBox, const css::uno::Reference< css::awt::XWindow > &_xFocusWindow, AccessibleBrowseBoxObjType _eObjType) const=0
virtual vcl::IAccessibleBrowseBox * createAccessibleBrowseBox(const css::uno::Reference< css::accessibility::XAccessible > &_rxParent, vcl::IAccessibleTableProvider &_rBrowseBox) const=0
tools::Rectangle GetWindowExtentsAbsolute() const
bool IsReallyVisible() const
vcl::Window * GetAccessibleParentWindow() const
::OutputDevice const * GetOutDev() const
css::uno::Reference< css::accessibility::XAccessible > GetAccessible(bool bCreate=true)
tools::Rectangle GetWindowExtentsRelative(const vcl::Window &rRelativeWindow) const
#define DBG_ASSERT(sCon, aError)
#define SAL_WARN(area, stream)
static Reference< XAccessible > getHeaderCell(BrowseBoxImpl::THeaderCellMap &_raHeaderCells, sal_Int32 _nPos, AccessibleBrowseBoxObjType _eType, const Reference< XAccessible > &_rParent, BrowseBox &_rBrowseBox, vcl::IAccessibleFactory const &rFactory)