diff options
Diffstat (limited to 'accessibility/source/extended/accessibletablistboxtable.cxx')
-rw-r--r-- | accessibility/source/extended/accessibletablistboxtable.cxx | 374 |
1 files changed, 0 insertions, 374 deletions
diff --git a/accessibility/source/extended/accessibletablistboxtable.cxx b/accessibility/source/extended/accessibletablistboxtable.cxx deleted file mode 100644 index ae793039a..000000000 --- a/accessibility/source/extended/accessibletablistboxtable.cxx +++ /dev/null @@ -1,374 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_accessibility.hxx" - -#include "accessibility/extended/accessibletablistboxtable.hxx" -#include "accessibility/extended/AccessibleBrowseBoxTableCell.hxx" -#include "accessibility/extended/AccessibleBrowseBoxCheckBoxCell.hxx" -#include <svtools/svtabbx.hxx> -#include <com/sun/star/accessibility/AccessibleEventId.hpp> - -//........................................................................ -namespace accessibility -{ -//........................................................................ - - // class AccessibleTabListBoxTable --------------------------------------------- - - using namespace ::com::sun::star::accessibility; - using namespace ::com::sun::star::uno; - using namespace ::com::sun::star::lang; - using namespace ::com::sun::star; - - DBG_NAME(AccessibleTabListBoxTable) - - // ----------------------------------------------------------------------------- - // Ctor() and Dtor() - // ----------------------------------------------------------------------------- - AccessibleTabListBoxTable::AccessibleTabListBoxTable( const Reference< XAccessible >& rxParent, SvHeaderTabListBox& rBox ) : - - AccessibleBrowseBoxTable( rxParent, rBox ), - - m_pTabListBox ( &rBox ) - - { - DBG_CTOR( AccessibleTabListBoxTable, NULL ); - - m_pTabListBox->AddEventListener( LINK( this, AccessibleTabListBoxTable, WindowEventListener ) ); - } - // ----------------------------------------------------------------------------- - AccessibleTabListBoxTable::~AccessibleTabListBoxTable() - { - DBG_DTOR( AccessibleTabListBoxTable, NULL ); - - if ( isAlive() ) - { - m_pTabListBox = NULL; - - // increment ref count to prevent double call of Dtor - osl_incrementInterlockedCount( &m_refCount ); - dispose(); - } - } - // ----------------------------------------------------------------------------- - void AccessibleTabListBoxTable::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent ) - { - if ( isAlive() ) - { - sal_uLong nEventId = rVclWindowEvent.GetId(); - switch ( nEventId ) - { - case VCLEVENT_OBJECT_DYING : - { - m_pTabListBox->RemoveEventListener( LINK( this, AccessibleTabListBoxTable, WindowEventListener ) ); - m_pTabListBox = NULL; - break; - } - - case VCLEVENT_CONTROL_GETFOCUS : - case VCLEVENT_CONTROL_LOSEFOCUS : - { - uno::Any aOldValue, aNewValue; - if ( VCLEVENT_CONTROL_GETFOCUS == nEventId ) - aNewValue <<= AccessibleStateType::FOCUSED; - else - aOldValue <<= AccessibleStateType::FOCUSED; - commitEvent( AccessibleEventId::STATE_CHANGED, aNewValue, aOldValue ); - break; - } - - case VCLEVENT_LISTBOX_SELECT : - { - // First send an event that tells the listeners of a - // modified selection. The active descendant event is - // send after that so that the receiving AT has time to - // read the text or name of the active child. - commitEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() ); - if ( m_pTabListBox && m_pTabListBox->HasFocus() ) - { - SvLBoxEntry* pEntry = static_cast< SvLBoxEntry* >( rVclWindowEvent.GetData() ); - if ( pEntry ) - { - sal_Int32 nRow = m_pTabListBox->GetEntryPos( pEntry ); - sal_uInt16 nCol = m_pTabListBox->GetCurrColumn(); - Reference< XAccessible > xChild = - m_pTabListBox->CreateAccessibleCell( nRow, nCol ); - uno::Any aOldValue, aNewValue; - - if ( m_pTabListBox->IsTransientChildrenDisabled() ) - { - aNewValue <<= AccessibleStateType::FOCUSED; - TriState eState = STATE_DONTKNOW; - if ( m_pTabListBox->IsCellCheckBox( nRow, nCol, eState ) ) - { - AccessibleCheckBoxCell* pCell = - static_cast< AccessibleCheckBoxCell* >( xChild.get() ); - pCell->commitEvent( AccessibleEventId::STATE_CHANGED, aNewValue, aOldValue ); - } - else - { - AccessibleBrowseBoxTableCell* pCell = - static_cast< AccessibleBrowseBoxTableCell* >( xChild.get() ); - pCell->commitEvent( AccessibleEventId::STATE_CHANGED, aNewValue, aOldValue ); - } - } - else - { - aNewValue <<= xChild; - commitEvent( AccessibleEventId::ACTIVE_DESCENDANT_CHANGED, aNewValue, aOldValue ); - } - } - } - break; - } - - case VCLEVENT_CHECKBOX_TOGGLE : - { - if ( m_pTabListBox && m_pTabListBox->HasFocus() ) - { - SvLBoxEntry* pEntry = static_cast< SvLBoxEntry* >( rVclWindowEvent.GetData() ); - if ( pEntry ) - { - sal_Int32 nRow = m_pTabListBox->GetEntryPos( pEntry ); - sal_uInt16 nCol = m_pTabListBox->GetCurrColumn(); - TriState eState = STATE_DONTKNOW; - if ( m_pTabListBox->IsCellCheckBox( nRow, nCol, eState ) ) - { - Reference< XAccessible > xChild = - m_pTabListBox->CreateAccessibleCell( nRow, nCol ); - AccessibleCheckBoxCell* pCell = - static_cast< AccessibleCheckBoxCell* >( xChild.get() ); - pCell->SetChecked( m_pTabListBox->IsItemChecked( pEntry, nCol ) ); - } - } - } - break; - } - - case VCLEVENT_TABLECELL_NAMECHANGED : - { - if ( m_pTabListBox->IsTransientChildrenDisabled() ) - { - commitEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() ); - TabListBoxEventData* pData = static_cast< TabListBoxEventData* >( rVclWindowEvent.GetData() ); - SvLBoxEntry* pEntry = pData != NULL ? pData->m_pEntry : NULL; - if ( pEntry ) - { - sal_Int32 nRow = m_pTabListBox->GetEntryPos( pEntry ); - sal_uInt16 nCol = pData->m_nColumn; - Reference< XAccessible > xChild = - m_pTabListBox->CreateAccessibleCell( nRow, nCol ); - uno::Any aOldValue, aNewValue; - aOldValue <<= ::rtl::OUString( pData->m_sOldText ); - ::rtl::OUString sNewText( m_pTabListBox->GetCellText( nRow, nCol ) ); - aNewValue <<= sNewText; - TriState eState = STATE_DONTKNOW; - - if ( m_pTabListBox->IsCellCheckBox( nRow, nCol, eState ) ) - { - AccessibleCheckBoxCell* pCell = - static_cast< AccessibleCheckBoxCell* >( xChild.get() ); - pCell->commitEvent( AccessibleEventId::NAME_CHANGED, aOldValue, aNewValue ); - } - else - { - AccessibleBrowseBoxTableCell* pCell = - static_cast< AccessibleBrowseBoxTableCell* >( xChild.get() ); - pCell->nameChanged( sNewText, pData->m_sOldText ); - } - } - } - break; - } - } - } - } - // ----------------------------------------------------------------------------- - IMPL_LINK( AccessibleTabListBoxTable, WindowEventListener, VclSimpleEvent*, pEvent ) - { - DBG_ASSERT( pEvent && pEvent->ISA( VclWindowEvent ), "Unknown WindowEvent!" ); - if ( pEvent && pEvent->ISA( VclWindowEvent ) ) - { - DBG_ASSERT( ( (VclWindowEvent*)pEvent )->GetWindow() && m_pTabListBox, "no event window" ); - ProcessWindowEvent( *(VclWindowEvent*)pEvent ); - } - return 0; - } - // helpers -------------------------------------------------------------------- - - void AccessibleTabListBoxTable::ensureValidIndex( sal_Int32 _nIndex ) const - SAL_THROW( ( IndexOutOfBoundsException ) ) - { - if ( ( _nIndex < 0 ) || ( _nIndex >= implGetCellCount() ) ) - throw IndexOutOfBoundsException(); - } - - sal_Bool AccessibleTabListBoxTable::implIsRowSelected( sal_Int32 _nRow ) const - { - return m_pTabListBox ? m_pTabListBox->IsSelected( m_pTabListBox->GetEntry( _nRow ) ) : sal_False; - } - - void AccessibleTabListBoxTable::implSelectRow( sal_Int32 _nRow, sal_Bool _bSelect ) - { - if ( m_pTabListBox ) - m_pTabListBox->Select( m_pTabListBox->GetEntry( _nRow ), _bSelect ); - } - - sal_Int32 AccessibleTabListBoxTable::implGetRowCount() const - { - return m_pTabListBox ? m_pTabListBox->GetEntryCount() : 0; - } - - sal_Int32 AccessibleTabListBoxTable::implGetColumnCount() const - { - return m_pTabListBox ? m_pTabListBox->GetColumnCount() : 0; - } - - sal_Int32 AccessibleTabListBoxTable::implGetSelRowCount() const - { - return m_pTabListBox ? m_pTabListBox->GetSelectionCount() : 0; - } - - sal_Int32 AccessibleTabListBoxTable::implGetSelRow( sal_Int32 nSelRow ) const - { - if ( m_pTabListBox ) - { - sal_Int32 nRow = 0; - SvLBoxEntry* pEntry = m_pTabListBox->FirstSelected(); - while ( pEntry ) - { - ++nRow; - if ( nRow == nSelRow ) - return m_pTabListBox->GetEntryPos( pEntry ); - pEntry = m_pTabListBox->NextSelected( pEntry ); - } - } - - return 0; - } - // ----------------------------------------------------------------------------- - // XInterface & XTypeProvider - // ----------------------------------------------------------------------------- - IMPLEMENT_FORWARD_XINTERFACE2(AccessibleTabListBoxTable, AccessibleBrowseBoxTable, AccessibleTabListBoxTableImplHelper) - IMPLEMENT_FORWARD_XTYPEPROVIDER2(AccessibleTabListBoxTable, AccessibleBrowseBoxTable, AccessibleTabListBoxTableImplHelper) - // ----------------------------------------------------------------------------- - // XServiceInfo - // ----------------------------------------------------------------------------- - ::rtl::OUString AccessibleTabListBoxTable::getImplementationName (void) throw (RuntimeException) - { - return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.svtools.AccessibleTabListBoxTable" )); - } - // ----------------------------------------------------------------------------- - // XAccessibleSelection - // ----------------------------------------------------------------------------- - void SAL_CALL AccessibleTabListBoxTable::selectAccessibleChild( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException) - { - SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); - - ensureIsAlive(); - ensureValidIndex( nChildIndex ); - - implSelectRow( implGetRow( nChildIndex ), sal_True ); - } - // ----------------------------------------------------------------------------- - sal_Bool SAL_CALL AccessibleTabListBoxTable::isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException) - { - SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); - - ensureIsAlive(); - ensureValidIndex( nChildIndex ); - - return implIsRowSelected( implGetRow( nChildIndex ) ); - } - // ----------------------------------------------------------------------------- - void SAL_CALL AccessibleTabListBoxTable::clearAccessibleSelection( ) throw (RuntimeException) - { - SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); - - ensureIsAlive(); - - m_pTabListBox->SetNoSelection(); - } - // ----------------------------------------------------------------------------- - void SAL_CALL AccessibleTabListBoxTable::selectAllAccessibleChildren( ) throw (RuntimeException) - { - SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); - - ensureIsAlive(); - - m_pTabListBox->SelectAll(); - } - // ----------------------------------------------------------------------------- - sal_Int32 SAL_CALL AccessibleTabListBoxTable::getSelectedAccessibleChildCount( ) throw (RuntimeException) - { - SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); - - ensureIsAlive(); - - return implGetColumnCount() * implGetSelRowCount(); - } - // ----------------------------------------------------------------------------- - Reference< XAccessible > SAL_CALL AccessibleTabListBoxTable::getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (IndexOutOfBoundsException, RuntimeException) - { - SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); - - ensureIsAlive(); - - sal_Int32 nRows = implGetSelRowCount(); - if ( nRows == 0 ) - throw IndexOutOfBoundsException(); - - sal_Int32 nRow = implGetSelRow( nSelectedChildIndex % nRows ); - sal_Int32 nColumn = nSelectedChildIndex / nRows; - return getAccessibleCellAt( nRow, nColumn ); - } - // ----------------------------------------------------------------------------- - void SAL_CALL AccessibleTabListBoxTable::deselectAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (IndexOutOfBoundsException, RuntimeException) - { - SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); - - ensureIsAlive(); - ensureValidIndex( nSelectedChildIndex ); - - implSelectRow( implGetRow( nSelectedChildIndex ), sal_False ); - } - -//........................................................................ -}// namespace accessibility -//........................................................................ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |