blob: 53fa953038230b04828ca0d27aca880c55582a88 [file] [log] [blame]
/**************************************************************
*
* 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
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef ACCESSIBILITY_EXT_ACCESSIBLEBROWSEBOXTABLEBASE_HXX
#define ACCESSIBILITY_EXT_ACCESSIBLEBROWSEBOXTABLEBASE_HXX
#include "accessibility/extended/AccessibleBrowseBoxBase.hxx"
#include <cppuhelper/implbase1.hxx>
#include <com/sun/star/accessibility/XAccessibleTable.hpp>
// ============================================================================
namespace accessibility {
typedef ::cppu::ImplHelper1<
::com::sun::star::accessibility::XAccessibleTable >
AccessibleBrowseBoxTableImplHelper;
/** The BrowseBox accessible table objects inherit from this base class. It
implements basic functionality for the XAccessibleTable interface.
BrowseBox table objects are: the data table, the column header bar and the
row header bar. */
class AccessibleBrowseBoxTableBase :
public BrowseBoxAccessibleElement,
public AccessibleBrowseBoxTableImplHelper
{
public:
/** Constructor sets specified name and description. If the constant of a
text is BBTEXT_NONE, the derived class has to set the text via
implSetName() and implSetDescription() (in Ctor) or later via
setAccessibleName() and setAccessibleDescription() (these methods
notify the listeners about the change).
@param rxParent XAccessible interface of the parent object.
@param rBrowseBox The BrowseBox control.
@param eNameText The constant for the name text.
@param eDescrText The constant for the description text. */
AccessibleBrowseBoxTableBase(
const ::com::sun::star::uno::Reference<
::com::sun::star::accessibility::XAccessible >& rxParent,
::svt::IAccessibleTableProvider& rBrowseBox,
::svt::AccessibleBrowseBoxObjType eObjType );
protected:
virtual ~AccessibleBrowseBoxTableBase();
public:
// XAccessibleContext -----------------------------------------------------
/** @return The count of visible children. */
virtual sal_Int32 SAL_CALL getAccessibleChildCount()
throw ( ::com::sun::star::uno::RuntimeException );
/** @return The role of this object (a table). */
virtual sal_Int16 SAL_CALL getAccessibleRole()
throw ( ::com::sun::star::uno::RuntimeException );
/* Derived classes have to implement:
- getAccessibleChild,
- getAccessibleIndexInParent. */
// XAccessibleComponent ---------------------------------------------------
/* Derived classes have to implement:
- getAccessibleAt,
- grabFocus,
- getAccessibleKeyBinding. */
// XAccessibleTable -------------------------------------------------------
/** @return The number of used rows in the table (0 = empty table). */
virtual sal_Int32 SAL_CALL getAccessibleRowCount()
throw ( ::com::sun::star::uno::RuntimeException );
/** @return The number of used columns in the table (0 = empty table). */
virtual sal_Int32 SAL_CALL getAccessibleColumnCount()
throw ( ::com::sun::star::uno::RuntimeException );
/** @return The row extent of the specified cell (always 1). */
virtual sal_Int32 SAL_CALL
getAccessibleRowExtentAt( sal_Int32 nRow, sal_Int32 nColumn )
throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::uno::RuntimeException );
/** @return The column extent of the specified cell (always 1). */
virtual sal_Int32 SAL_CALL
getAccessibleColumnExtentAt( sal_Int32 nRow, sal_Int32 nColumn )
throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::uno::RuntimeException );
/** @return The caption cell of the table (not supported). */
virtual ::com::sun::star::uno::Reference<
::com::sun::star::accessibility::XAccessible > SAL_CALL
getAccessibleCaption()
throw ( ::com::sun::star::uno::RuntimeException );
/** @return The summary object of the table (not supported). */
virtual ::com::sun::star::uno::Reference<
::com::sun::star::accessibility::XAccessible > SAL_CALL
getAccessibleSummary()
throw ( ::com::sun::star::uno::RuntimeException );
/** @return The child index of the specified cell. */
virtual sal_Int32 SAL_CALL getAccessibleIndex( sal_Int32 nRow, sal_Int32 nColumn )
throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::uno::RuntimeException );
/** @return The row index of the specified child cell. */
virtual sal_Int32 SAL_CALL getAccessibleRow( sal_Int32 nChildIndex )
throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::uno::RuntimeException );
/** @return The column index of the specified child cell. */
virtual sal_Int32 SAL_CALL getAccessibleColumn( sal_Int32 nChildIndex )
throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::uno::RuntimeException );
/* Derived classes have to implement:
- getAccessibleRowDescription,
- getAccessibleColumnDescription,
- getAccessibleRowHeaders,
- getAccessibleColumnHeaders,
- getSelectedAccessibleRows,
- getSelectedAccessibleColumns,
- isAccessibleRowSelected,
- isAccessibleColumnSelected,
- getAccessibleCellAt,
- isAccessibleSelected. */
// XInterface -------------------------------------------------------------
/** Queries for a new interface. */
::com::sun::star::uno::Any SAL_CALL queryInterface(
const ::com::sun::star::uno::Type& rType )
throw ( ::com::sun::star::uno::RuntimeException );
/** Aquires the object (calls acquire() on base class). */
virtual void SAL_CALL acquire() throw ();
/** Releases the object (calls release() on base class). */
virtual void SAL_CALL release() throw ();
// XTypeProvider ----------------------------------------------------------
/** @return A sequence of possible types (received from base classes). */
virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
throw ( ::com::sun::star::uno::RuntimeException );
/** @return An unique implementation ID. */
virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
throw ( ::com::sun::star::uno::RuntimeException );
// XServiceInfo -----------------------------------------------------------
/* Derived classes have to implement:
- getImplementationName */
protected:
// internal virtual methods -----------------------------------------------
/** @attention This method requires locked mutex's and a living object.
@return The count of data rows without header bar. */
virtual sal_Int32 implGetRowCount() const;
/** @attention This method requires locked mutex's and a living object.
@return The count of data columns without "handle column". */
virtual sal_Int32 implGetColumnCount() const;
// internal helper methods ------------------------------------------------
/** @return <TRUE/>, if first BrowseBox column is the "handle column". */
sal_Bool implHasHandleColumn() const;
/** @attention This method requires locked mutex's and a living object.
@param nColumn
the position of the column in the Accessible world
@return
the position of the column in VCL the Accessible world
*/
sal_uInt16 implToVCLColumnPos( sal_Int32 nColumn ) const;
/** @attention This method requires locked mutex's and a living object.
@return The number of cells of the table. */
sal_Int32 implGetChildCount() const;
/** @attention This method requires locked mutex's and a living object.
@return The row index of the specified cell index. */
sal_Int32 implGetRow( sal_Int32 nChildIndex ) const;
/** @attention This method requires locked mutex's and a living object.
@return The column index of the specified cell index. */
sal_Int32 implGetColumn( sal_Int32 nChildIndex ) const;
/** @attention This method requires locked mutex's and a living object.
@return The child index of the specified cell address. */
sal_Int32 implGetChildIndex( sal_Int32 nRow, sal_Int32 nColumn ) const;
/** @attention This method requires locked mutex's and a living object.
@return <TRUE/>, if the specified row is selected. */
sal_Bool implIsRowSelected( sal_Int32 nRow ) const;
/** @attention This method requires locked mutex's and a living object.
@return <TRUE/>, if the specified column is selected. */
sal_Bool implIsColumnSelected( sal_Int32 nColumn ) const;
/** Selects/deselects a row (tries to expand selection).
@attention This method requires locked mutex's and a living object.
@param bSelect <TRUE/> = select, <FALSE/> = deselect */
void implSelectRow( sal_Int32 nRow, sal_Bool bSelect );
/** Selects/deselects a column (tries to expand selection).
@attention This method requires locked mutex's and a living object.
@param bSelect <TRUE/> = select, <FALSE/> = deselect */
void implSelectColumn( sal_Int32 nColumnPos, sal_Bool bSelect );
/** @attention This method requires locked mutex's and a living object.
@return The count of selected rows. */
sal_Int32 implGetSelectedRowCount() const;
/** @attention This method requires locked mutex's and a living object.
@return The count of selected columns. */
sal_Int32 implGetSelectedColumnCount() const;
/** Fills a sequence with sorted indexes of completely selected rows.
@attention This method requires locked mutex's and a living object.
@param rSeq Out-parameter that takes the sorted row index list. */
void implGetSelectedRows( ::com::sun::star::uno::Sequence< sal_Int32 >& rSeq );
/** Fills a sequence with sorted indexes of completely selected columns.
@attention This method requires locked mutex's and a living object.
@param rSeq Out-parameter that takes the sorted column index list. */
void implGetSelectedColumns( ::com::sun::star::uno::Sequence< sal_Int32 >& rSeq );
/** @attention This method requires locked mutex's and a living object.
@throws <type>IndexOutOfBoundsException</type>
If the specified row index is invalid. */
void ensureIsValidRow( sal_Int32 nRow )
throw ( ::com::sun::star::lang::IndexOutOfBoundsException );
/** @attention This method requires locked mutex's and a living object.
@throws <type>IndexOutOfBoundsException</type>
If the specified column index is invalid. */
void ensureIsValidColumn( sal_Int32 nColumn )
throw ( ::com::sun::star::lang::IndexOutOfBoundsException );
/** @attention This method requires locked mutex's and a living object.
@throws <type>IndexOutOfBoundsException</type>
If the specified cell address is invalid. */
void ensureIsValidAddress( sal_Int32 nRow, sal_Int32 nColumn )
throw ( ::com::sun::star::lang::IndexOutOfBoundsException );
/** @attention This method requires locked mutex's and a living object.
@throws <type>IndexOutOfBoundsException</type>
If the specified child index is invalid. */
void ensureIsValidIndex( sal_Int32 nChildIndex )
throw ( ::com::sun::star::lang::IndexOutOfBoundsException );
};
// ============================================================================
} // namespace accessibility
// ============================================================================
#endif