[Libreoffice-commits] .: Branch 'feature/template-dialog' - svtools/inc svtools/Library_svt.mk svtools/Package_inc.mk svtools/source
Cédric Bosdonnat
cbosdo at kemper.freedesktop.org
Wed Jun 6 05:12:11 PDT 2012
svtools/Library_svt.mk | 4
svtools/Package_inc.mk | 1
svtools/inc/svtools/thumbnailviewitem.hxx | 60 +
svtools/source/control/thumbnailview.cxx | 4
svtools/source/control/thumbnailviewacc.cxx | 1040 +++++++++++++++++++++++++++
svtools/source/control/thumbnailviewacc.hxx | 253 ++++++
svtools/source/control/thumbnailviewitem.cxx | 64 +
svtools/source/control/thumbv_acc.cxx | 1040 ---------------------------
svtools/source/control/thumbv_acc.hxx | 253 ------
svtools/source/control/thumbv_itm.cxx | 64 -
svtools/source/control/thumbv_itm.hxx | 60 -
11 files changed, 1422 insertions(+), 1421 deletions(-)
New commits:
commit 8679228d10e1094cdea662e9c9f7a0a31ac83ceb
Author: Cédric Bosdonnat <cedric.bosdonnat.ooo at free.fr>
Date: Wed Jun 6 10:54:00 2012 +0200
ThumbnailView: renamed a few files for more readable name
Change-Id: I5470734005f4a24218ce463415e77cce8fdc92f2
diff --git a/svtools/Library_svt.mk b/svtools/Library_svt.mk
index 150c5a0..6906987 100644
--- a/svtools/Library_svt.mk
+++ b/svtools/Library_svt.mk
@@ -129,8 +129,8 @@ $(eval $(call gb_Library_add_exception_objects,svt,\
svtools/source/control/stdctrl \
svtools/source/control/stdmenu \
svtools/source/control/tabbar \
- svtools/source/control/thumbv_itm \
- svtools/source/control/thumbv_acc \
+ svtools/source/control/thumbnailviewitem \
+ svtools/source/control/thumbnailviewacc \
svtools/source/control/thumbnailview \
svtools/source/control/toolbarmenu \
svtools/source/control/toolbarmenuacc \
diff --git a/svtools/Package_inc.mk b/svtools/Package_inc.mk
index 5cada8d..726a8ae 100644
--- a/svtools/Package_inc.mk
+++ b/svtools/Package_inc.mk
@@ -162,6 +162,7 @@ $(eval $(call gb_Package_add_file,svtools_inc,inc/svtools/texteng.hxx,svtools/te
$(eval $(call gb_Package_add_file,svtools_inc,inc/svtools/textview.hxx,svtools/textview.hxx))
$(eval $(call gb_Package_add_file,svtools_inc,inc/svtools/textwindowpeer.hxx,svtools/textwindowpeer.hxx))
$(eval $(call gb_Package_add_file,svtools_inc,inc/svtools/thumbnailview.hxx,svtools/thumbnailview.hxx))
+$(eval $(call gb_Package_add_file,svtools_inc,inc/svtools/thumbnailviewitem.hxx,svtools/thumbnailviewitem.hxx))
$(eval $(call gb_Package_add_file,svtools_inc,inc/svtools/toolbarmenu.hxx,svtools/toolbarmenu.hxx))
$(eval $(call gb_Package_add_file,svtools_inc,inc/svtools/toolboxcontroller.hxx,svtools/toolboxcontroller.hxx))
$(eval $(call gb_Package_add_file,svtools_inc,inc/svtools/toolpanel/decklayouter.hxx,svtools/toolpanel/decklayouter.hxx))
diff --git a/svtools/inc/svtools/thumbnailviewitem.hxx b/svtools/inc/svtools/thumbnailviewitem.hxx
new file mode 100644
index 0000000..6ba8351
--- /dev/null
+++ b/svtools/inc/svtools/thumbnailviewitem.hxx
@@ -0,0 +1,60 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#ifndef THUMBNAILVIEWITEM_HXX
+#define THUMBNAILVIEWITEM_HXX
+
+#include <osl/mutex.hxx>
+#include <vcl/image.hxx>
+
+#include <com/sun/star/accessibility/XAccessible.hpp>
+
+#define THUMBNAILVIEW_ITEM_NONEITEM 0xFFFE
+
+class ThumbnailView;
+
+struct ThumbnailViewItem
+{
+ ThumbnailView &mrParent;
+ sal_uInt16 mnId;
+ bool mbVisible;
+ Image maImage;
+ rtl::OUString maText;
+ void* mpData;
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >* mpxAcc;
+
+ ThumbnailViewItem ( ThumbnailView& rParent );
+ ~ThumbnailViewItem ();
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ GetAccessible( bool bIsTransientChildrenDisabled );
+};
+
+#endif // THUMBNAILVIEWITEM_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svtools/source/control/thumbnailview.cxx b/svtools/source/control/thumbnailview.cxx
index 0a190bb..627e4f2 100644
--- a/svtools/source/control/thumbnailview.cxx
+++ b/svtools/source/control/thumbnailview.cxx
@@ -8,9 +8,9 @@
*/
#include <svtools/thumbnailview.hxx>
+#include <svtools/thumbnailviewitem.hxx>
-#include "thumbv_itm.hxx"
-#include "thumbv_acc.hxx"
+#include "thumbnailviewacc.hxx"
#include <rtl/ustring.hxx>
#include <vcl/decoview.hxx>
diff --git a/svtools/source/control/thumbnailviewacc.cxx b/svtools/source/control/thumbnailviewacc.cxx
new file mode 100644
index 0000000..94c2b23
--- /dev/null
+++ b/svtools/source/control/thumbnailviewacc.cxx
@@ -0,0 +1,1040 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include "thumbnailviewacc.hxx"
+
+#include <comphelper/servicehelper.hxx>
+#include <svtools/thumbnailview.hxx>
+#include <svtools/thumbnailviewitem.hxx>
+#include <unotools/accessiblestatesethelper.hxx>
+#include <vcl/svapp.hxx>
+
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+
+using namespace ::com::sun::star;
+
+ThumbnailViewAcc::ThumbnailViewAcc( ThumbnailView* pParent, bool bIsTransientChildrenDisabled ) :
+ ValueSetAccComponentBase (m_aMutex),
+ mpParent( pParent ),
+ mbIsTransientChildrenDisabled( bIsTransientChildrenDisabled ),
+ mbIsFocused(false)
+{
+}
+
+ThumbnailViewAcc::~ThumbnailViewAcc()
+{
+}
+
+void ThumbnailViewAcc::FireAccessibleEvent( short nEventId, const uno::Any& rOldValue, const uno::Any& rNewValue )
+{
+ if( nEventId )
+ {
+ ::std::vector< uno::Reference< accessibility::XAccessibleEventListener > > aTmpListeners( mxEventListeners );
+ ::std::vector< uno::Reference< accessibility::XAccessibleEventListener > >::const_iterator aIter( aTmpListeners.begin() );
+ accessibility::AccessibleEventObject aEvtObject;
+
+ aEvtObject.EventId = nEventId;
+ aEvtObject.Source = static_cast<uno::XWeak*>(this);
+ aEvtObject.NewValue = rNewValue;
+ aEvtObject.OldValue = rOldValue;
+
+ while( aIter != aTmpListeners.end() )
+ {
+ try
+ {
+ (*aIter)->notifyEvent( aEvtObject );
+ }
+ catch(const uno::Exception&)
+ {
+ }
+
+ aIter++;
+ }
+ }
+}
+
+namespace
+{
+ class theValueSetAccUnoTunnelId : public rtl::Static< UnoTunnelIdInit, theValueSetAccUnoTunnelId > {};
+}
+
+const uno::Sequence< sal_Int8 >& ThumbnailViewAcc::getUnoTunnelId()
+{
+ return theValueSetAccUnoTunnelId::get().getSeq();
+}
+
+ThumbnailViewAcc* ThumbnailViewAcc::getImplementation( const uno::Reference< uno::XInterface >& rxData )
+ throw()
+{
+ try
+ {
+ uno::Reference< lang::XUnoTunnel > xUnoTunnel( rxData, uno::UNO_QUERY );
+ return( xUnoTunnel.is() ? reinterpret_cast<ThumbnailViewAcc*>(sal::static_int_cast<sal_IntPtr>(xUnoTunnel->getSomething( ThumbnailViewAcc::getUnoTunnelId() ))) : NULL );
+ }
+ catch(const ::com::sun::star::uno::Exception&)
+ {
+ return NULL;
+ }
+}
+
+void ThumbnailViewAcc::GetFocus (void)
+{
+ mbIsFocused = true;
+
+ // Boradcast the state change.
+ ::com::sun::star::uno::Any aOldState, aNewState;
+ aNewState <<= ::com::sun::star::accessibility::AccessibleStateType::FOCUSED;
+ FireAccessibleEvent(
+ ::com::sun::star::accessibility::AccessibleEventId::STATE_CHANGED,
+ aOldState, aNewState);
+}
+
+void ThumbnailViewAcc::LoseFocus (void)
+{
+ mbIsFocused = false;
+
+ // Boradcast the state change.
+ ::com::sun::star::uno::Any aOldState, aNewState;
+ aOldState <<= ::com::sun::star::accessibility::AccessibleStateType::FOCUSED;
+ FireAccessibleEvent(
+ ::com::sun::star::accessibility::AccessibleEventId::STATE_CHANGED,
+ aOldState, aNewState);
+}
+
+uno::Reference< accessibility::XAccessibleContext > SAL_CALL ThumbnailViewAcc::getAccessibleContext()
+ throw (uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ return this;
+}
+
+sal_Int32 SAL_CALL ThumbnailViewAcc::getAccessibleChildCount()
+ throw (uno::RuntimeException)
+{
+ const SolarMutexGuard aSolarGuard;
+ ThrowIfDisposed();
+
+ sal_Int32 nCount = mpParent->ImplGetVisibleItemCount();
+ if (HasNoneField())
+ nCount += 1;
+ return nCount;
+}
+
+uno::Reference< accessibility::XAccessible > SAL_CALL ThumbnailViewAcc::getAccessibleChild( sal_Int32 i )
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ const SolarMutexGuard aSolarGuard;
+ uno::Reference< accessibility::XAccessible > xRet;
+ ThumbnailViewItem* pItem = getItem (sal::static_int_cast< sal_uInt16 >(i));
+
+ if( pItem )
+ xRet = pItem->GetAccessible( mbIsTransientChildrenDisabled );
+ else
+ throw lang::IndexOutOfBoundsException();
+
+ return xRet;
+}
+
+uno::Reference< accessibility::XAccessible > SAL_CALL ThumbnailViewAcc::getAccessibleParent()
+ throw (uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ const SolarMutexGuard aSolarGuard;
+ Window* pParent = mpParent->GetParent();
+ uno::Reference< accessibility::XAccessible > xRet;
+
+ if( pParent )
+ xRet = pParent->GetAccessible();
+
+ return xRet;
+}
+
+sal_Int32 SAL_CALL ThumbnailViewAcc::getAccessibleIndexInParent()
+ throw (uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ const SolarMutexGuard aSolarGuard;
+ Window* pParent = mpParent->GetParent();
+ sal_Int32 nRet = 0;
+
+ if( pParent )
+ {
+ sal_Bool bFound = sal_False;
+
+ for( sal_uInt16 i = 0, nCount = pParent->GetChildCount(); ( i < nCount ) && !bFound; i++ )
+ {
+ if( pParent->GetChild( i ) == mpParent )
+ {
+ nRet = i;
+ bFound = sal_True;
+ }
+ }
+ }
+
+ return nRet;
+}
+
+sal_Int16 SAL_CALL ThumbnailViewAcc::getAccessibleRole()
+ throw (uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ // #i73746# As the Java Access Bridge (v 2.0.1) uses "managesDescendants"
+ // always if the role is LIST, we need a different role in this case
+ return (mbIsTransientChildrenDisabled
+ ? accessibility::AccessibleRole::PANEL
+ : accessibility::AccessibleRole::LIST );
+}
+
+::rtl::OUString SAL_CALL ThumbnailViewAcc::getAccessibleDescription()
+ throw (uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ const SolarMutexGuard aSolarGuard;
+ return rtl::OUString("ThumbnailView");
+}
+
+::rtl::OUString SAL_CALL ThumbnailViewAcc::getAccessibleName()
+ throw (uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ const SolarMutexGuard aSolarGuard;
+ rtl::OUString aRet;
+
+ if ( mpParent )
+ aRet = mpParent->GetAccessibleName();
+
+ if ( aRet.isEmpty() )
+ {
+ Window* pLabel = mpParent->GetAccessibleRelationLabeledBy();
+ if ( pLabel && pLabel != mpParent )
+ aRet = OutputDevice::GetNonMnemonicString( pLabel->GetText() );
+ }
+
+ return aRet;
+}
+
+uno::Reference< accessibility::XAccessibleRelationSet > SAL_CALL ThumbnailViewAcc::getAccessibleRelationSet()
+ throw (uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ return uno::Reference< accessibility::XAccessibleRelationSet >();
+}
+
+uno::Reference< accessibility::XAccessibleStateSet > SAL_CALL ThumbnailViewAcc::getAccessibleStateSet()
+ throw (uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ ::utl::AccessibleStateSetHelper* pStateSet = new ::utl::AccessibleStateSetHelper();
+
+ // Set some states.
+ pStateSet->AddState (accessibility::AccessibleStateType::ENABLED);
+ pStateSet->AddState (accessibility::AccessibleStateType::SENSITIVE);
+ pStateSet->AddState (accessibility::AccessibleStateType::SHOWING);
+ pStateSet->AddState (accessibility::AccessibleStateType::VISIBLE);
+ if ( !mbIsTransientChildrenDisabled )
+ pStateSet->AddState (accessibility::AccessibleStateType::MANAGES_DESCENDANTS);
+ pStateSet->AddState (accessibility::AccessibleStateType::FOCUSABLE);
+ if (mbIsFocused)
+ pStateSet->AddState (accessibility::AccessibleStateType::FOCUSED);
+
+ return pStateSet;
+}
+
+lang::Locale SAL_CALL ThumbnailViewAcc::getLocale()
+ throw (accessibility::IllegalAccessibleComponentStateException, uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ const SolarMutexGuard aSolarGuard;
+ const ::rtl::OUString aEmptyStr;
+ uno::Reference< accessibility::XAccessible > xParent( getAccessibleParent() );
+ lang::Locale aRet( aEmptyStr, aEmptyStr, aEmptyStr );
+
+ if( xParent.is() )
+ {
+ uno::Reference< accessibility::XAccessibleContext > xParentContext( xParent->getAccessibleContext() );
+
+ if( xParentContext.is() )
+ aRet = xParentContext->getLocale ();
+ }
+
+ return aRet;
+}
+
+void SAL_CALL ThumbnailViewAcc::addEventListener( const uno::Reference< accessibility::XAccessibleEventListener >& rxListener )
+ throw (uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ ::osl::MutexGuard aGuard (m_aMutex);
+
+ if( rxListener.is() )
+ {
+ std::vector< uno::Reference< accessibility::XAccessibleEventListener > >::const_iterator aIter = mxEventListeners.begin();
+ bool bFound = false;
+
+ while( !bFound && ( aIter != mxEventListeners.end() ) )
+ {
+ if( *aIter == rxListener )
+ bFound = true;
+ else
+ ++aIter;
+ }
+
+ if (!bFound)
+ mxEventListeners.push_back( rxListener );
+ }
+}
+
+void SAL_CALL ThumbnailViewAcc::removeEventListener( const uno::Reference< accessibility::XAccessibleEventListener >& rxListener )
+ throw (uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ ::osl::MutexGuard aGuard (m_aMutex);
+
+ if( rxListener.is() )
+ {
+ std::vector< uno::Reference< accessibility::XAccessibleEventListener > >::iterator aIter = mxEventListeners.begin();
+ bool bFound = false;
+
+ while( !bFound && ( aIter != mxEventListeners.end() ) )
+ {
+ if( *aIter == rxListener )
+ {
+ mxEventListeners.erase( aIter );
+ bFound = true;
+ }
+ else
+ ++aIter;
+ }
+ }
+}
+
+sal_Bool SAL_CALL ThumbnailViewAcc::containsPoint( const awt::Point& aPoint )
+ throw (uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ const awt::Rectangle aRect( getBounds() );
+ const Point aSize( aRect.Width, aRect.Height );
+ const Point aNullPoint, aTestPoint( aPoint.X, aPoint.Y );
+
+ return Rectangle( aNullPoint, aSize ).IsInside( aTestPoint );
+}
+
+uno::Reference< accessibility::XAccessible > SAL_CALL ThumbnailViewAcc::getAccessibleAtPoint( const awt::Point& aPoint )
+ throw (uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ const SolarMutexGuard aSolarGuard;
+ const sal_uInt16 nItemId = mpParent->GetItemId( Point( aPoint.X, aPoint.Y ) );
+ uno::Reference< accessibility::XAccessible > xRet;
+
+ if ( nItemId )
+ {
+ const size_t nItemPos = mpParent->GetItemPos( nItemId );
+
+ if( THUMBNAILVIEW_ITEM_NONEITEM != nItemPos )
+ {
+ ThumbnailViewItem *const pItem = mpParent->mItemList[nItemPos];
+ xRet = pItem->GetAccessible( mbIsTransientChildrenDisabled );
+ }
+ }
+
+ return xRet;
+}
+
+awt::Rectangle SAL_CALL ThumbnailViewAcc::getBounds()
+ throw (uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ const SolarMutexGuard aSolarGuard;
+ const Point aOutPos( mpParent->GetPosPixel() );
+ const Size aOutSize( mpParent->GetOutputSizePixel() );
+ awt::Rectangle aRet;
+
+ aRet.X = aOutPos.X();
+ aRet.Y = aOutPos.Y();
+ aRet.Width = aOutSize.Width();
+ aRet.Height = aOutSize.Height();
+
+ return aRet;
+}
+
+awt::Point SAL_CALL ThumbnailViewAcc::getLocation()
+ throw (uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ const awt::Rectangle aRect( getBounds() );
+ awt::Point aRet;
+
+ aRet.X = aRect.X;
+ aRet.Y = aRect.Y;
+
+ return aRet;
+}
+
+awt::Point SAL_CALL ThumbnailViewAcc::getLocationOnScreen()
+ throw (uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ const SolarMutexGuard aSolarGuard;
+ const Point aScreenPos( mpParent->OutputToAbsoluteScreenPixel( Point() ) );
+ awt::Point aRet;
+
+ aRet.X = aScreenPos.X();
+ aRet.Y = aScreenPos.Y();
+
+ return aRet;
+}
+
+awt::Size SAL_CALL ThumbnailViewAcc::getSize()
+ throw (uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ const awt::Rectangle aRect( getBounds() );
+ awt::Size aRet;
+
+ aRet.Width = aRect.Width;
+ aRet.Height = aRect.Height;
+
+ return aRet;
+}
+
+void SAL_CALL ThumbnailViewAcc::grabFocus()
+ throw (uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ const SolarMutexGuard aSolarGuard;
+ mpParent->GrabFocus();
+}
+
+uno::Any SAL_CALL ThumbnailViewAcc::getAccessibleKeyBinding()
+ throw (uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ return uno::Any();
+}
+
+sal_Int32 SAL_CALL ThumbnailViewAcc::getForeground( )
+ throw (uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ sal_uInt32 nColor = Application::GetSettings().GetStyleSettings().GetWindowTextColor().GetColor();
+ return static_cast<sal_Int32>(nColor);
+}
+
+sal_Int32 SAL_CALL ThumbnailViewAcc::getBackground( )
+ throw (uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ sal_uInt32 nColor = Application::GetSettings().GetStyleSettings().GetWindowColor().GetColor();
+ return static_cast<sal_Int32>(nColor);
+}
+
+void SAL_CALL ThumbnailViewAcc::selectAccessibleChild( sal_Int32 nChildIndex )
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ const SolarMutexGuard aSolarGuard;
+ ThumbnailViewItem* pItem = getItem (sal::static_int_cast< sal_uInt16 >(nChildIndex));
+
+ if(pItem != NULL)
+ {
+ mpParent->SelectItem( pItem->mnId );
+ mpParent->Select ();
+ }
+ else
+ throw lang::IndexOutOfBoundsException();
+}
+
+sal_Bool SAL_CALL ThumbnailViewAcc::isAccessibleChildSelected( sal_Int32 nChildIndex )
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ const SolarMutexGuard aSolarGuard;
+ ThumbnailViewItem* pItem = getItem (sal::static_int_cast< sal_uInt16 >(nChildIndex));
+ sal_Bool bRet = sal_False;
+
+ if (pItem != NULL)
+ bRet = mpParent->IsItemSelected( pItem->mnId );
+ else
+ throw lang::IndexOutOfBoundsException();
+
+ return bRet;
+}
+
+void SAL_CALL ThumbnailViewAcc::clearAccessibleSelection()
+ throw (uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ const SolarMutexGuard aSolarGuard;
+ mpParent->SetNoSelection();
+}
+
+void SAL_CALL ThumbnailViewAcc::selectAllAccessibleChildren()
+ throw (uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ // unsupported due to single selection only
+}
+
+sal_Int32 SAL_CALL ThumbnailViewAcc::getSelectedAccessibleChildCount()
+ throw (uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ const SolarMutexGuard aSolarGuard;
+ sal_Int32 nRet = 0;
+
+ for( sal_uInt16 i = 0, nCount = getItemCount(); i < nCount; i++ )
+ {
+ ThumbnailViewItem* pItem = getItem (i);
+
+ if( pItem && mpParent->IsItemSelected( pItem->mnId ) )
+ ++nRet;
+ }
+
+ return nRet;
+}
+
+uno::Reference< accessibility::XAccessible > SAL_CALL ThumbnailViewAcc::getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex )
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ const SolarMutexGuard aSolarGuard;
+ uno::Reference< accessibility::XAccessible > xRet;
+
+ for( sal_uInt16 i = 0, nCount = getItemCount(), nSel = 0; ( i < nCount ) && !xRet.is(); i++ )
+ {
+ ThumbnailViewItem* pItem = getItem(i);
+
+ if( pItem && mpParent->IsItemSelected( pItem->mnId ) && ( nSelectedChildIndex == static_cast< sal_Int32 >( nSel++ ) ) )
+ xRet = pItem->GetAccessible( mbIsTransientChildrenDisabled );
+ }
+
+ return xRet;
+}
+
+void SAL_CALL ThumbnailViewAcc::deselectAccessibleChild( sal_Int32 nChildIndex )
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ const SolarMutexGuard aSolarGuard;
+ // Because of the single selection we can reset the whole selection when
+ // the specified child is currently selected.
+ if (isAccessibleChildSelected(nChildIndex))
+ mpParent->SetNoSelection();
+}
+
+sal_Int64 SAL_CALL ThumbnailViewAcc::getSomething( const uno::Sequence< sal_Int8 >& rId ) throw( uno::RuntimeException )
+{
+ sal_Int64 nRet;
+
+ if( ( rId.getLength() == 16 ) && ( 0 == rtl_compareMemory( ThumbnailViewAcc::getUnoTunnelId().getConstArray(), rId.getConstArray(), 16 ) ) )
+ nRet = reinterpret_cast< sal_Int64 >( this );
+ else
+ nRet = 0;
+
+ return nRet;
+}
+
+void SAL_CALL ThumbnailViewAcc::disposing (void)
+{
+ ::std::vector<uno::Reference<accessibility::XAccessibleEventListener> > aListenerListCopy;
+
+ {
+ // Make a copy of the list and clear the original.
+ const SolarMutexGuard aSolarGuard;
+ ::osl::MutexGuard aGuard (m_aMutex);
+ aListenerListCopy = mxEventListeners;
+ mxEventListeners.clear();
+
+ // Reset the pointer to the parent. It has to be the one who has
+ // disposed us because he is dying.
+ mpParent = NULL;
+ }
+
+ // Inform all listeners that this objects is disposing.
+ ::std::vector<uno::Reference<accessibility::XAccessibleEventListener> >::const_iterator
+ aListenerIterator (aListenerListCopy.begin());
+ lang::EventObject aEvent (static_cast<accessibility::XAccessible*>(this));
+ while (aListenerIterator != aListenerListCopy.end())
+ {
+ try
+ {
+ (*aListenerIterator)->disposing (aEvent);
+ }
+ catch(const uno::Exception&)
+ {
+ // Ignore exceptions.
+ }
+
+ ++aListenerIterator;
+ }
+}
+
+sal_uInt16 ThumbnailViewAcc::getItemCount (void) const
+{
+ sal_uInt16 nCount = mpParent->ImplGetVisibleItemCount();
+ // When the None-Item is visible then increase the number of items by
+ // one.
+ if (HasNoneField())
+ nCount += 1;
+ return nCount;
+}
+
+ThumbnailViewItem* ThumbnailViewAcc::getItem (sal_uInt16 nIndex) const
+{
+ ThumbnailViewItem* pItem = NULL;
+
+ if (HasNoneField())
+ {
+ if (nIndex == 0)
+ // When present the first item is the then allways visible none field.
+ pItem = mpParent->ImplGetItem (THUMBNAILVIEW_ITEM_NONEITEM);
+ else
+ // Shift down the index to compensate for the none field.
+ nIndex -= 1;
+ }
+ if (pItem == NULL)
+ pItem = mpParent->ImplGetVisibleItem (static_cast<sal_uInt16>(nIndex));
+
+ return pItem;
+}
+
+void ThumbnailViewAcc::ThrowIfDisposed (void)
+ throw (::com::sun::star::lang::DisposedException)
+{
+ if (rBHelper.bDisposed || rBHelper.bInDispose)
+ {
+ OSL_TRACE ("Calling disposed object. Throwing exception:");
+ throw lang::DisposedException (
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("object has been already disposed")),
+ static_cast<uno::XWeak*>(this));
+ }
+ else
+ {
+ DBG_ASSERT (mpParent!=NULL, "ValueSetAcc not disposed but mpParent == NULL");
+ }
+}
+
+
+
+bool ThumbnailViewAcc::HasNoneField (void) const
+{
+ DBG_ASSERT (mpParent!=NULL, "ThumbnailViewAcc::HasNoneField called with mpParent==NULL");
+ return ((mpParent->GetStyle() & WB_NONEFIELD) != 0);
+}
+
+ThumbnailViewItemAcc::ThumbnailViewItemAcc( ThumbnailViewItem* pParent, bool bIsTransientChildrenDisabled ) :
+ mpParent( pParent ),
+ mbIsTransientChildrenDisabled( bIsTransientChildrenDisabled )
+{
+}
+
+ThumbnailViewItemAcc::~ThumbnailViewItemAcc()
+{
+}
+
+void ThumbnailViewItemAcc::FireAccessibleEvent( short nEventId, const uno::Any& rOldValue, const uno::Any& rNewValue )
+{
+ if( nEventId )
+ {
+ ::std::vector< uno::Reference< accessibility::XAccessibleEventListener > > aTmpListeners( mxEventListeners );
+ ::std::vector< uno::Reference< accessibility::XAccessibleEventListener > >::const_iterator aIter( aTmpListeners.begin() );
+ accessibility::AccessibleEventObject aEvtObject;
+
+ aEvtObject.EventId = nEventId;
+ aEvtObject.Source = static_cast<uno::XWeak*>(this);
+ aEvtObject.NewValue = rNewValue;
+ aEvtObject.OldValue = rOldValue;
+
+ while( aIter != aTmpListeners.end() )
+ {
+ (*aIter)->notifyEvent( aEvtObject );
+ aIter++;
+ }
+ }
+}
+
+void ThumbnailViewItemAcc::ParentDestroyed()
+{
+ const ::osl::MutexGuard aGuard( maMutex );
+ mpParent = NULL;
+}
+
+namespace
+{
+ class theValueItemAccUnoTunnelId : public rtl::Static< UnoTunnelIdInit, theValueItemAccUnoTunnelId > {};
+}
+
+const uno::Sequence< sal_Int8 >& ThumbnailViewItemAcc::getUnoTunnelId()
+{
+ return theValueItemAccUnoTunnelId::get().getSeq();
+}
+
+ThumbnailViewItemAcc* ThumbnailViewItemAcc::getImplementation( const uno::Reference< uno::XInterface >& rxData )
+ throw()
+{
+ try
+ {
+ uno::Reference< lang::XUnoTunnel > xUnoTunnel( rxData, uno::UNO_QUERY );
+ return( xUnoTunnel.is() ? reinterpret_cast<ThumbnailViewItemAcc*>(sal::static_int_cast<sal_IntPtr>(xUnoTunnel->getSomething( ThumbnailViewItemAcc::getUnoTunnelId() ))) : NULL );
+ }
+ catch(const ::com::sun::star::uno::Exception&)
+ {
+ return NULL;
+ }
+}
+
+uno::Reference< accessibility::XAccessibleContext > SAL_CALL ThumbnailViewItemAcc::getAccessibleContext()
+ throw (uno::RuntimeException)
+{
+ return this;
+}
+
+sal_Int32 SAL_CALL ThumbnailViewItemAcc::getAccessibleChildCount()
+ throw (uno::RuntimeException)
+{
+ return 0;
+}
+
+uno::Reference< accessibility::XAccessible > SAL_CALL ThumbnailViewItemAcc::getAccessibleChild( sal_Int32 )
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
+{
+ throw lang::IndexOutOfBoundsException();
+}
+
+uno::Reference< accessibility::XAccessible > SAL_CALL ThumbnailViewItemAcc::getAccessibleParent()
+ throw (uno::RuntimeException)
+{
+ const SolarMutexGuard aSolarGuard;
+ uno::Reference< accessibility::XAccessible > xRet;
+
+ if( mpParent )
+ xRet = mpParent->mrParent.GetAccessible();
+
+ return xRet;
+}
+
+sal_Int32 SAL_CALL ThumbnailViewItemAcc::getAccessibleIndexInParent()
+ throw (uno::RuntimeException)
+{
+ const SolarMutexGuard aSolarGuard;
+ // The index defaults to -1 to indicate the child does not belong to its
+ // parent.
+ sal_Int32 nIndexInParent = -1;
+
+ if( mpParent )
+ {
+ bool bDone = false;
+
+ sal_uInt16 nCount = mpParent->mrParent.ImplGetVisibleItemCount();
+ ThumbnailViewItem* pItem;
+ for (sal_uInt16 i=0; i<nCount && !bDone; i++)
+ {
+ // Guard the retrieval of the i-th child with a try/catch block
+ // just in case the number of children changes in the mean time.
+ try
+ {
+ pItem = mpParent->mrParent.ImplGetVisibleItem (i);
+ }
+ catch (const lang::IndexOutOfBoundsException&)
+ {
+ pItem = NULL;
+ }
+
+ // Do not create an accessible object for the test.
+ if (pItem != NULL && pItem->mpxAcc != NULL)
+ if (pItem->GetAccessible( mbIsTransientChildrenDisabled ).get() == this )
+ {
+ nIndexInParent = i;
+ bDone = true;
+ }
+ }
+ }
+
+ return nIndexInParent;
+}
+
+sal_Int16 SAL_CALL ThumbnailViewItemAcc::getAccessibleRole()
+ throw (uno::RuntimeException)
+{
+ return accessibility::AccessibleRole::LIST_ITEM;
+}
+
+::rtl::OUString SAL_CALL ThumbnailViewItemAcc::getAccessibleDescription()
+ throw (uno::RuntimeException)
+{
+ return ::rtl::OUString();
+}
+
+::rtl::OUString SAL_CALL ThumbnailViewItemAcc::getAccessibleName()
+ throw (uno::RuntimeException)
+{
+ const SolarMutexGuard aSolarGuard;
+ rtl::OUString aRet;
+
+ if( mpParent )
+ {
+ aRet = mpParent->maText;
+
+ if( aRet.isEmpty() )
+ {
+ rtl::OUStringBuffer aBuffer("Item ");
+ aBuffer.append(static_cast<sal_Int32>(mpParent->mnId));
+ aRet = aBuffer.makeStringAndClear();
+ }
+ }
+
+ return aRet;
+}
+
+uno::Reference< accessibility::XAccessibleRelationSet > SAL_CALL ThumbnailViewItemAcc::getAccessibleRelationSet()
+ throw (uno::RuntimeException)
+{
+ return uno::Reference< accessibility::XAccessibleRelationSet >();
+}
+
+uno::Reference< accessibility::XAccessibleStateSet > SAL_CALL ThumbnailViewItemAcc::getAccessibleStateSet()
+ throw (uno::RuntimeException)
+{
+ const SolarMutexGuard aSolarGuard;
+ ::utl::AccessibleStateSetHelper* pStateSet = new ::utl::AccessibleStateSetHelper;
+
+ if( mpParent )
+ {
+ pStateSet->AddState (accessibility::AccessibleStateType::ENABLED);
+ pStateSet->AddState (accessibility::AccessibleStateType::SENSITIVE);
+ pStateSet->AddState (accessibility::AccessibleStateType::SHOWING);
+ pStateSet->AddState (accessibility::AccessibleStateType::VISIBLE);
+ if ( !mbIsTransientChildrenDisabled )
+ pStateSet->AddState (accessibility::AccessibleStateType::TRANSIENT);
+
+ // SELECTABLE
+ pStateSet->AddState( accessibility::AccessibleStateType::SELECTABLE );
+ // pStateSet->AddState( accessibility::AccessibleStateType::FOCUSABLE );
+
+ // SELECTED
+ if( mpParent->mrParent.GetSelectItemId() == mpParent->mnId )
+ {
+ pStateSet->AddState( accessibility::AccessibleStateType::SELECTED );
+ // pStateSet->AddState( accessibility::AccessibleStateType::FOCUSED );
+ }
+ }
+
+ return pStateSet;
+}
+
+lang::Locale SAL_CALL ThumbnailViewItemAcc::getLocale()
+ throw (accessibility::IllegalAccessibleComponentStateException, uno::RuntimeException)
+{
+ const SolarMutexGuard aSolarGuard;
+ const ::rtl::OUString aEmptyStr;
+ uno::Reference< accessibility::XAccessible > xParent( getAccessibleParent() );
+ lang::Locale aRet( aEmptyStr, aEmptyStr, aEmptyStr );
+
+ if( xParent.is() )
+ {
+ uno::Reference< accessibility::XAccessibleContext > xParentContext( xParent->getAccessibleContext() );
+
+ if( xParentContext.is() )
+ aRet = xParentContext->getLocale();
+ }
+
+ return aRet;
+}
+
+void SAL_CALL ThumbnailViewItemAcc::addEventListener( const uno::Reference< accessibility::XAccessibleEventListener >& rxListener )
+ throw (uno::RuntimeException)
+{
+ const ::osl::MutexGuard aGuard( maMutex );
+
+ if( rxListener.is() )
+ {
+ ::std::vector< uno::Reference< accessibility::XAccessibleEventListener > >::const_iterator aIter = mxEventListeners.begin();
+ sal_Bool bFound = sal_False;
+
+ while( !bFound && ( aIter != mxEventListeners.end() ) )
+ {
+ if( *aIter == rxListener )
+ bFound = sal_True;
+ else
+ ++aIter;
+ }
+
+ if (!bFound)
+ mxEventListeners.push_back( rxListener );
+ }
+}
+
+void SAL_CALL ThumbnailViewItemAcc::removeEventListener( const uno::Reference< accessibility::XAccessibleEventListener >& rxListener )
+ throw (uno::RuntimeException)
+{
+ const ::osl::MutexGuard aGuard( maMutex );
+
+ if( rxListener.is() )
+ {
+ ::std::vector< uno::Reference< accessibility::XAccessibleEventListener > >::iterator aIter = mxEventListeners.begin();
+ sal_Bool bFound = sal_False;
+
+ while( !bFound && ( aIter != mxEventListeners.end() ) )
+ {
+ if( *aIter == rxListener )
+ {
+ mxEventListeners.erase( aIter );
+ bFound = sal_True;
+ }
+ else
+ ++aIter;
+ }
+ }
+}
+
+sal_Bool SAL_CALL ThumbnailViewItemAcc::containsPoint( const awt::Point& aPoint )
+ throw (uno::RuntimeException)
+{
+ const awt::Rectangle aRect( getBounds() );
+ const Point aSize( aRect.Width, aRect.Height );
+ const Point aNullPoint, aTestPoint( aPoint.X, aPoint.Y );
+
+ return Rectangle( aNullPoint, aSize ).IsInside( aTestPoint );
+}
+
+uno::Reference< accessibility::XAccessible > SAL_CALL ThumbnailViewItemAcc::getAccessibleAtPoint( const awt::Point& )
+ throw (uno::RuntimeException)
+{
+ uno::Reference< accessibility::XAccessible > xRet;
+ return xRet;
+}
+
+awt::Rectangle SAL_CALL ThumbnailViewItemAcc::getBounds()
+ throw (uno::RuntimeException)
+{
+ const SolarMutexGuard aSolarGuard;
+ awt::Rectangle aRet;
+
+ if( mpParent )
+ {
+ Rectangle aRect( mpParent->mrParent.GetItemRect(mpParent->mnId) );
+ Point aOrigin;
+ Rectangle aParentRect( aOrigin, mpParent->mrParent.GetOutputSizePixel() );
+
+ aRect.Intersection( aParentRect );
+
+ aRet.X = aRect.Left();
+ aRet.Y = aRect.Top();
+ aRet.Width = aRect.GetWidth();
+ aRet.Height = aRect.GetHeight();
+ }
+
+ return aRet;
+}
+
+awt::Point SAL_CALL ThumbnailViewItemAcc::getLocation()
+ throw (uno::RuntimeException)
+{
+ const awt::Rectangle aRect( getBounds() );
+ awt::Point aRet;
+
+ aRet.X = aRect.X;
+ aRet.Y = aRect.Y;
+
+ return aRet;
+}
+
+awt::Point SAL_CALL ThumbnailViewItemAcc::getLocationOnScreen()
+ throw (uno::RuntimeException)
+{
+ const SolarMutexGuard aSolarGuard;
+ awt::Point aRet;
+
+ if( mpParent )
+ {
+ const Point aPos = mpParent->mrParent.GetItemRect(mpParent->mnId).TopLeft();
+ const Point aScreenPos( mpParent->mrParent.OutputToAbsoluteScreenPixel( aPos ) );
+
+ aRet.X = aScreenPos.X();
+ aRet.Y = aScreenPos.Y();
+ }
+
+ return aRet;
+}
+
+awt::Size SAL_CALL ThumbnailViewItemAcc::getSize()
+ throw (uno::RuntimeException)
+{
+ const awt::Rectangle aRect( getBounds() );
+ awt::Size aRet;
+
+ aRet.Width = aRect.Width;
+ aRet.Height = aRect.Height;
+
+ return aRet;
+}
+
+void SAL_CALL ThumbnailViewItemAcc::grabFocus()
+ throw (uno::RuntimeException)
+{
+ // nothing to do
+}
+
+uno::Any SAL_CALL ThumbnailViewItemAcc::getAccessibleKeyBinding()
+ throw (uno::RuntimeException)
+{
+ return uno::Any();
+}
+
+sal_Int32 SAL_CALL ThumbnailViewItemAcc::getForeground( )
+ throw (uno::RuntimeException)
+{
+ sal_uInt32 nColor = Application::GetSettings().GetStyleSettings().GetWindowTextColor().GetColor();
+ return static_cast<sal_Int32>(nColor);
+}
+
+sal_Int32 SAL_CALL ThumbnailViewItemAcc::getBackground( )
+ throw (uno::RuntimeException)
+{
+ return static_cast<sal_Int32>(Application::GetSettings().GetStyleSettings().GetWindowColor().GetColor());
+}
+
+sal_Int64 SAL_CALL ThumbnailViewItemAcc::getSomething( const uno::Sequence< sal_Int8 >& rId ) throw( uno::RuntimeException )
+{
+ sal_Int64 nRet;
+
+ if( ( rId.getLength() == 16 ) && ( 0 == rtl_compareMemory( ThumbnailViewItemAcc::getUnoTunnelId().getConstArray(), rId.getConstArray(), 16 ) ) )
+ nRet = reinterpret_cast< sal_Int64 >( this );
+ else
+ nRet = 0;
+
+ return nRet;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
+
+
diff --git a/svtools/source/control/thumbnailviewacc.hxx b/svtools/source/control/thumbnailviewacc.hxx
new file mode 100644
index 0000000..d5014fa
--- /dev/null
+++ b/svtools/source/control/thumbnailviewacc.hxx
@@ -0,0 +1,253 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#ifndef THUMBNAILVIEWACC_HXX
+#define THUMBNAILVIEWACC_HXX
+
+#include <osl/mutex.hxx>
+#include <cppuhelper/implbase5.hxx>
+#include <cppuhelper/compbase6.hxx>
+#include <comphelper/broadcasthelper.hxx>
+
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#include <com/sun/star/accessibility/XAccessible.hpp>
+#include <com/sun/star/accessibility/XAccessibleContext.hpp>
+#include <com/sun/star/accessibility/XAccessibleComponent.hpp>
+#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
+#include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
+#include <com/sun/star/lang/DisposedException.hpp>
+
+#include <vector>
+
+class ThumbnailView;
+struct ThumbnailViewItem;
+
+typedef ::cppu::PartialWeakComponentImplHelper6<
+ ::com::sun::star::accessibility::XAccessible,
+ ::com::sun::star::accessibility::XAccessibleEventBroadcaster,
+ ::com::sun::star::accessibility::XAccessibleContext,
+ ::com::sun::star::accessibility::XAccessibleComponent,
+ ::com::sun::star::accessibility::XAccessibleSelection,
+ ::com::sun::star::lang::XUnoTunnel >
+ ValueSetAccComponentBase;
+
+class ThumbnailViewAcc :
+ public ::comphelper::OBaseMutex,
+ public ValueSetAccComponentBase
+{
+public:
+
+ ThumbnailViewAcc( ThumbnailView* pParent, bool bIsTransientChildrenDisabled );
+ ~ThumbnailViewAcc();
+
+ void FireAccessibleEvent( short nEventId,
+ const ::com::sun::star::uno::Any& rOldValue,
+ const ::com::sun::star::uno::Any& rNewValue );
+
+ sal_Bool HasAccessibleListeners() const { return( mxEventListeners.size() > 0 ); }
+
+ static ThumbnailViewAcc* getImplementation( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& rxData ) throw();
+
+public:
+
+ /** Called by the corresponding ValueSet when it gets the focus.
+ Stores the new focus state and broadcasts a state change event.
+ */
+ void GetFocus (void);
+
+ /** Called by the corresponding ValueSet when it loses the focus.
+ Stores the new focus state and broadcasts a state change event.
+ */
+ void LoseFocus (void);
+
+ // XComponent
+ virtual void SAL_CALL dispose()throw (::com::sun::star::uno::RuntimeException)
+ { WeakComponentImplHelperBase::dispose(); }
+ virtual void SAL_CALL addEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > & xListener)throw (::com::sun::star::uno::RuntimeException)
+ { WeakComponentImplHelperBase::addEventListener(xListener); }
+ virtual void SAL_CALL removeEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > & xListener)throw (::com::sun::star::uno::RuntimeException)
+ { WeakComponentImplHelperBase::removeEventListener(xListener); }
+
+ // XAccessible
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleEventBroadcaster
+ virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleDescription( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::lang::Locale SAL_CALL getLocale( ) throw (::com::sun::star::accessibility::IllegalAccessibleComponentStateException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleComponent
+ virtual sal_Bool SAL_CALL containsPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL getBounds( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Point SAL_CALL getLocation( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Size SAL_CALL getSize( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL grabFocus( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getAccessibleKeyBinding( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getForeground( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getBackground( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleSelection
+ virtual void SAL_CALL selectAccessibleChild( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL clearAccessibleSelection( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL selectAllAccessibleChildren( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getSelectedAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL deselectAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+ // XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& rId ) throw( ::com::sun::star::uno::RuntimeException );
+
+private:
+ ::std::vector< ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleEventListener > > mxEventListeners;
+ ThumbnailView* mpParent;
+ bool mbIsTransientChildrenDisabled;
+ /// The current FOCUSED state.
+ bool mbIsFocused;
+
+ static const ::com::sun::star::uno::Sequence< sal_Int8 >& getUnoTunnelId();
+
+ /** Tell all listeners that the object is dying. This callback is
+ usually called from the WeakComponentImplHelper class.
+ */
+ virtual void SAL_CALL disposing (void);
+
+ /** Return the number of items. This takes the None-Item into account.
+ */
+ sal_uInt16 getItemCount (void) const;
+
+ /** Return the item associated with the given index. The None-Item is
+ taken into account which, when present, is taken to be the first
+ (with index 0) item.
+ @param nIndex
+ Index of the item to return. The index 0 denotes the None-Item
+ when present.
+ @return
+ Returns NULL when the given index is out of range.
+ */
+ ThumbnailViewItem* getItem (sal_uInt16 nIndex) const;
+
+ /** Check whether or not the object has been disposed (or is in the
+ state of beeing disposed). If that is the case then
+ DisposedException is thrown to inform the (indirect) caller of the
+ foul deed.
+ */
+ void ThrowIfDisposed (void)
+ throw (::com::sun::star::lang::DisposedException);
+
+ /** Check whether the value set has a 'none' field, i.e. a field (button)
+ that deselects any items (selects none of them).
+ @return
+ Returns <true/> if there is a 'none' field and <false/> it it is
+ missing.
+ */
+ bool HasNoneField (void) const;
+};
+
+class ThumbnailViewItemAcc : public ::cppu::WeakImplHelper5< ::com::sun::star::accessibility::XAccessible,
+ ::com::sun::star::accessibility::XAccessibleEventBroadcaster,
+ ::com::sun::star::accessibility::XAccessibleContext,
+ ::com::sun::star::accessibility::XAccessibleComponent,
+ ::com::sun::star::lang::XUnoTunnel >
+{
+private:
+
+ ::std::vector< ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleEventListener > > mxEventListeners;
+ ::osl::Mutex maMutex;
+ ThumbnailViewItem* mpParent;
+ bool mbIsTransientChildrenDisabled;
+
+ static const ::com::sun::star::uno::Sequence< sal_Int8 >& getUnoTunnelId();
+
+public:
+
+ ThumbnailViewItemAcc( ThumbnailViewItem* pParent, bool bIsTransientChildrenDisabled );
+ ~ThumbnailViewItemAcc();
+
+ void ParentDestroyed();
+
+ void FireAccessibleEvent( short nEventId, const ::com::sun::star::uno::Any& rOldValue, const ::com::sun::star::uno::Any& rNewValue );
+ sal_Bool HasAccessibleListeners() const { return( mxEventListeners.size() > 0 ); }
+
+ static ThumbnailViewItemAcc* getImplementation( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& rxData ) throw();
+
+public:
+
+ // XAccessible
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleEventBroadcaster
+ virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleDescription( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::lang::Locale SAL_CALL getLocale( ) throw (::com::sun::star::accessibility::IllegalAccessibleComponentStateException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleComponent
+ virtual sal_Bool SAL_CALL containsPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL getBounds( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Point SAL_CALL getLocation( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Size SAL_CALL getSize( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL grabFocus( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getAccessibleKeyBinding( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getForeground( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getBackground( ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& rId ) throw( ::com::sun::star::uno::RuntimeException );
+};
+
+#endif // THUMBNAILVIEWACC_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svtools/source/control/thumbnailviewitem.cxx b/svtools/source/control/thumbnailviewitem.cxx
new file mode 100644
index 0000000..4ee3d5d
--- /dev/null
+++ b/svtools/source/control/thumbnailviewitem.cxx
@@ -0,0 +1,64 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+#include "thumbnailviewacc.hxx"
+
+#include <svtools/thumbnailviewitem.hxx>
+#include <vcl/svapp.hxx>
+
+using namespace ::com::sun::star;
+
+ThumbnailViewItem::ThumbnailViewItem( ThumbnailView& rParent )
+ : mrParent(rParent)
+ , mnId(0)
+ , mbVisible(true)
+ , mpData(NULL)
+ , mpxAcc(NULL)
+{
+}
+
+ThumbnailViewItem::~ThumbnailViewItem()
+{
+ if( mpxAcc )
+ {
+ static_cast< ThumbnailViewItemAcc* >( mpxAcc->get() )->ParentDestroyed();
+ delete mpxAcc;
+ }
+}
+
+uno::Reference< accessibility::XAccessible > ThumbnailViewItem::GetAccessible( bool bIsTransientChildrenDisabled )
+{
+ if( !mpxAcc )
+ mpxAcc = new uno::Reference< accessibility::XAccessible >( new ThumbnailViewItemAcc( this, bIsTransientChildrenDisabled ) );
+
+ return *mpxAcc;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
+
+
diff --git a/svtools/source/control/thumbv_acc.cxx b/svtools/source/control/thumbv_acc.cxx
deleted file mode 100644
index bd3557f..0000000
--- a/svtools/source/control/thumbv_acc.cxx
+++ /dev/null
@@ -1,1040 +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.
- *
- ************************************************************************/
-
-#include "thumbv_acc.hxx"
-#include "thumbv_itm.hxx"
-
-#include <comphelper/servicehelper.hxx>
-#include <svtools/thumbnailview.hxx>
-#include <unotools/accessiblestatesethelper.hxx>
-#include <vcl/svapp.hxx>
-
-#include <com/sun/star/accessibility/AccessibleEventId.hpp>
-#include <com/sun/star/accessibility/AccessibleRole.hpp>
-#include <com/sun/star/accessibility/AccessibleStateType.hpp>
-
-using namespace ::com::sun::star;
-
-ThumbnailViewAcc::ThumbnailViewAcc( ThumbnailView* pParent, bool bIsTransientChildrenDisabled ) :
- ValueSetAccComponentBase (m_aMutex),
- mpParent( pParent ),
- mbIsTransientChildrenDisabled( bIsTransientChildrenDisabled ),
- mbIsFocused(false)
-{
-}
-
-ThumbnailViewAcc::~ThumbnailViewAcc()
-{
-}
-
-void ThumbnailViewAcc::FireAccessibleEvent( short nEventId, const uno::Any& rOldValue, const uno::Any& rNewValue )
-{
- if( nEventId )
- {
- ::std::vector< uno::Reference< accessibility::XAccessibleEventListener > > aTmpListeners( mxEventListeners );
- ::std::vector< uno::Reference< accessibility::XAccessibleEventListener > >::const_iterator aIter( aTmpListeners.begin() );
- accessibility::AccessibleEventObject aEvtObject;
-
- aEvtObject.EventId = nEventId;
- aEvtObject.Source = static_cast<uno::XWeak*>(this);
- aEvtObject.NewValue = rNewValue;
- aEvtObject.OldValue = rOldValue;
-
- while( aIter != aTmpListeners.end() )
- {
- try
- {
- (*aIter)->notifyEvent( aEvtObject );
- }
- catch(const uno::Exception&)
- {
- }
-
- aIter++;
- }
- }
-}
-
-namespace
-{
- class theValueSetAccUnoTunnelId : public rtl::Static< UnoTunnelIdInit, theValueSetAccUnoTunnelId > {};
-}
-
-const uno::Sequence< sal_Int8 >& ThumbnailViewAcc::getUnoTunnelId()
-{
- return theValueSetAccUnoTunnelId::get().getSeq();
-}
-
-ThumbnailViewAcc* ThumbnailViewAcc::getImplementation( const uno::Reference< uno::XInterface >& rxData )
- throw()
-{
- try
- {
- uno::Reference< lang::XUnoTunnel > xUnoTunnel( rxData, uno::UNO_QUERY );
- return( xUnoTunnel.is() ? reinterpret_cast<ThumbnailViewAcc*>(sal::static_int_cast<sal_IntPtr>(xUnoTunnel->getSomething( ThumbnailViewAcc::getUnoTunnelId() ))) : NULL );
- }
- catch(const ::com::sun::star::uno::Exception&)
- {
- return NULL;
- }
-}
-
-void ThumbnailViewAcc::GetFocus (void)
-{
- mbIsFocused = true;
-
- // Boradcast the state change.
- ::com::sun::star::uno::Any aOldState, aNewState;
- aNewState <<= ::com::sun::star::accessibility::AccessibleStateType::FOCUSED;
- FireAccessibleEvent(
- ::com::sun::star::accessibility::AccessibleEventId::STATE_CHANGED,
- aOldState, aNewState);
-}
-
-void ThumbnailViewAcc::LoseFocus (void)
-{
- mbIsFocused = false;
-
- // Boradcast the state change.
- ::com::sun::star::uno::Any aOldState, aNewState;
- aOldState <<= ::com::sun::star::accessibility::AccessibleStateType::FOCUSED;
- FireAccessibleEvent(
- ::com::sun::star::accessibility::AccessibleEventId::STATE_CHANGED,
- aOldState, aNewState);
-}
-
-uno::Reference< accessibility::XAccessibleContext > SAL_CALL ThumbnailViewAcc::getAccessibleContext()
- throw (uno::RuntimeException)
-{
- ThrowIfDisposed();
- return this;
-}
-
-sal_Int32 SAL_CALL ThumbnailViewAcc::getAccessibleChildCount()
- throw (uno::RuntimeException)
-{
- const SolarMutexGuard aSolarGuard;
- ThrowIfDisposed();
-
- sal_Int32 nCount = mpParent->ImplGetVisibleItemCount();
- if (HasNoneField())
- nCount += 1;
- return nCount;
-}
-
-uno::Reference< accessibility::XAccessible > SAL_CALL ThumbnailViewAcc::getAccessibleChild( sal_Int32 i )
- throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
-{
- ThrowIfDisposed();
- const SolarMutexGuard aSolarGuard;
- uno::Reference< accessibility::XAccessible > xRet;
- ThumbnailViewItem* pItem = getItem (sal::static_int_cast< sal_uInt16 >(i));
-
- if( pItem )
- xRet = pItem->GetAccessible( mbIsTransientChildrenDisabled );
- else
- throw lang::IndexOutOfBoundsException();
-
- return xRet;
-}
-
-uno::Reference< accessibility::XAccessible > SAL_CALL ThumbnailViewAcc::getAccessibleParent()
- throw (uno::RuntimeException)
-{
- ThrowIfDisposed();
- const SolarMutexGuard aSolarGuard;
- Window* pParent = mpParent->GetParent();
- uno::Reference< accessibility::XAccessible > xRet;
-
- if( pParent )
- xRet = pParent->GetAccessible();
-
- return xRet;
-}
-
-sal_Int32 SAL_CALL ThumbnailViewAcc::getAccessibleIndexInParent()
- throw (uno::RuntimeException)
-{
- ThrowIfDisposed();
- const SolarMutexGuard aSolarGuard;
- Window* pParent = mpParent->GetParent();
- sal_Int32 nRet = 0;
-
- if( pParent )
- {
- sal_Bool bFound = sal_False;
-
- for( sal_uInt16 i = 0, nCount = pParent->GetChildCount(); ( i < nCount ) && !bFound; i++ )
- {
- if( pParent->GetChild( i ) == mpParent )
- {
- nRet = i;
- bFound = sal_True;
- }
- }
- }
-
- return nRet;
-}
-
-sal_Int16 SAL_CALL ThumbnailViewAcc::getAccessibleRole()
- throw (uno::RuntimeException)
-{
- ThrowIfDisposed();
- // #i73746# As the Java Access Bridge (v 2.0.1) uses "managesDescendants"
- // always if the role is LIST, we need a different role in this case
- return (mbIsTransientChildrenDisabled
- ? accessibility::AccessibleRole::PANEL
- : accessibility::AccessibleRole::LIST );
-}
-
-::rtl::OUString SAL_CALL ThumbnailViewAcc::getAccessibleDescription()
- throw (uno::RuntimeException)
-{
- ThrowIfDisposed();
- const SolarMutexGuard aSolarGuard;
- return rtl::OUString("ThumbnailView");
-}
-
-::rtl::OUString SAL_CALL ThumbnailViewAcc::getAccessibleName()
- throw (uno::RuntimeException)
-{
- ThrowIfDisposed();
- const SolarMutexGuard aSolarGuard;
- rtl::OUString aRet;
-
- if ( mpParent )
- aRet = mpParent->GetAccessibleName();
-
- if ( aRet.isEmpty() )
- {
- Window* pLabel = mpParent->GetAccessibleRelationLabeledBy();
- if ( pLabel && pLabel != mpParent )
- aRet = OutputDevice::GetNonMnemonicString( pLabel->GetText() );
- }
-
- return aRet;
-}
-
-uno::Reference< accessibility::XAccessibleRelationSet > SAL_CALL ThumbnailViewAcc::getAccessibleRelationSet()
- throw (uno::RuntimeException)
-{
- ThrowIfDisposed();
- return uno::Reference< accessibility::XAccessibleRelationSet >();
-}
-
-uno::Reference< accessibility::XAccessibleStateSet > SAL_CALL ThumbnailViewAcc::getAccessibleStateSet()
- throw (uno::RuntimeException)
-{
- ThrowIfDisposed();
- ::utl::AccessibleStateSetHelper* pStateSet = new ::utl::AccessibleStateSetHelper();
-
- // Set some states.
- pStateSet->AddState (accessibility::AccessibleStateType::ENABLED);
- pStateSet->AddState (accessibility::AccessibleStateType::SENSITIVE);
- pStateSet->AddState (accessibility::AccessibleStateType::SHOWING);
- pStateSet->AddState (accessibility::AccessibleStateType::VISIBLE);
- if ( !mbIsTransientChildrenDisabled )
- pStateSet->AddState (accessibility::AccessibleStateType::MANAGES_DESCENDANTS);
- pStateSet->AddState (accessibility::AccessibleStateType::FOCUSABLE);
- if (mbIsFocused)
- pStateSet->AddState (accessibility::AccessibleStateType::FOCUSED);
-
- return pStateSet;
-}
-
-lang::Locale SAL_CALL ThumbnailViewAcc::getLocale()
- throw (accessibility::IllegalAccessibleComponentStateException, uno::RuntimeException)
-{
- ThrowIfDisposed();
- const SolarMutexGuard aSolarGuard;
- const ::rtl::OUString aEmptyStr;
- uno::Reference< accessibility::XAccessible > xParent( getAccessibleParent() );
- lang::Locale aRet( aEmptyStr, aEmptyStr, aEmptyStr );
-
- if( xParent.is() )
- {
- uno::Reference< accessibility::XAccessibleContext > xParentContext( xParent->getAccessibleContext() );
-
- if( xParentContext.is() )
- aRet = xParentContext->getLocale ();
- }
-
- return aRet;
-}
-
-void SAL_CALL ThumbnailViewAcc::addEventListener( const uno::Reference< accessibility::XAccessibleEventListener >& rxListener )
- throw (uno::RuntimeException)
-{
- ThrowIfDisposed();
- ::osl::MutexGuard aGuard (m_aMutex);
-
- if( rxListener.is() )
- {
- std::vector< uno::Reference< accessibility::XAccessibleEventListener > >::const_iterator aIter = mxEventListeners.begin();
- bool bFound = false;
-
- while( !bFound && ( aIter != mxEventListeners.end() ) )
- {
- if( *aIter == rxListener )
- bFound = true;
- else
- ++aIter;
- }
-
- if (!bFound)
- mxEventListeners.push_back( rxListener );
- }
-}
-
-void SAL_CALL ThumbnailViewAcc::removeEventListener( const uno::Reference< accessibility::XAccessibleEventListener >& rxListener )
- throw (uno::RuntimeException)
-{
- ThrowIfDisposed();
- ::osl::MutexGuard aGuard (m_aMutex);
-
- if( rxListener.is() )
- {
- std::vector< uno::Reference< accessibility::XAccessibleEventListener > >::iterator aIter = mxEventListeners.begin();
- bool bFound = false;
-
- while( !bFound && ( aIter != mxEventListeners.end() ) )
- {
- if( *aIter == rxListener )
- {
- mxEventListeners.erase( aIter );
- bFound = true;
- }
- else
- ++aIter;
- }
- }
-}
-
-sal_Bool SAL_CALL ThumbnailViewAcc::containsPoint( const awt::Point& aPoint )
- throw (uno::RuntimeException)
-{
- ThrowIfDisposed();
- const awt::Rectangle aRect( getBounds() );
- const Point aSize( aRect.Width, aRect.Height );
- const Point aNullPoint, aTestPoint( aPoint.X, aPoint.Y );
-
- return Rectangle( aNullPoint, aSize ).IsInside( aTestPoint );
-}
-
-uno::Reference< accessibility::XAccessible > SAL_CALL ThumbnailViewAcc::getAccessibleAtPoint( const awt::Point& aPoint )
- throw (uno::RuntimeException)
-{
- ThrowIfDisposed();
- const SolarMutexGuard aSolarGuard;
- const sal_uInt16 nItemId = mpParent->GetItemId( Point( aPoint.X, aPoint.Y ) );
- uno::Reference< accessibility::XAccessible > xRet;
-
- if ( nItemId )
- {
- const size_t nItemPos = mpParent->GetItemPos( nItemId );
-
- if( THUMBNAILVIEW_ITEM_NONEITEM != nItemPos )
- {
- ThumbnailViewItem *const pItem = mpParent->mItemList[nItemPos];
- xRet = pItem->GetAccessible( mbIsTransientChildrenDisabled );
- }
- }
-
- return xRet;
-}
-
-awt::Rectangle SAL_CALL ThumbnailViewAcc::getBounds()
- throw (uno::RuntimeException)
-{
- ThrowIfDisposed();
- const SolarMutexGuard aSolarGuard;
- const Point aOutPos( mpParent->GetPosPixel() );
- const Size aOutSize( mpParent->GetOutputSizePixel() );
- awt::Rectangle aRet;
-
- aRet.X = aOutPos.X();
- aRet.Y = aOutPos.Y();
- aRet.Width = aOutSize.Width();
- aRet.Height = aOutSize.Height();
-
- return aRet;
-}
-
-awt::Point SAL_CALL ThumbnailViewAcc::getLocation()
- throw (uno::RuntimeException)
-{
- ThrowIfDisposed();
- const awt::Rectangle aRect( getBounds() );
- awt::Point aRet;
-
- aRet.X = aRect.X;
- aRet.Y = aRect.Y;
-
- return aRet;
-}
-
-awt::Point SAL_CALL ThumbnailViewAcc::getLocationOnScreen()
- throw (uno::RuntimeException)
-{
- ThrowIfDisposed();
- const SolarMutexGuard aSolarGuard;
- const Point aScreenPos( mpParent->OutputToAbsoluteScreenPixel( Point() ) );
- awt::Point aRet;
-
- aRet.X = aScreenPos.X();
- aRet.Y = aScreenPos.Y();
-
- return aRet;
-}
-
-awt::Size SAL_CALL ThumbnailViewAcc::getSize()
- throw (uno::RuntimeException)
-{
- ThrowIfDisposed();
- const awt::Rectangle aRect( getBounds() );
- awt::Size aRet;
-
- aRet.Width = aRect.Width;
- aRet.Height = aRect.Height;
-
- return aRet;
-}
-
-void SAL_CALL ThumbnailViewAcc::grabFocus()
- throw (uno::RuntimeException)
-{
- ThrowIfDisposed();
- const SolarMutexGuard aSolarGuard;
- mpParent->GrabFocus();
-}
-
-uno::Any SAL_CALL ThumbnailViewAcc::getAccessibleKeyBinding()
- throw (uno::RuntimeException)
-{
- ThrowIfDisposed();
- return uno::Any();
-}
-
-sal_Int32 SAL_CALL ThumbnailViewAcc::getForeground( )
- throw (uno::RuntimeException)
-{
- ThrowIfDisposed();
- sal_uInt32 nColor = Application::GetSettings().GetStyleSettings().GetWindowTextColor().GetColor();
- return static_cast<sal_Int32>(nColor);
-}
-
-sal_Int32 SAL_CALL ThumbnailViewAcc::getBackground( )
- throw (uno::RuntimeException)
-{
- ThrowIfDisposed();
- sal_uInt32 nColor = Application::GetSettings().GetStyleSettings().GetWindowColor().GetColor();
- return static_cast<sal_Int32>(nColor);
-}
-
-void SAL_CALL ThumbnailViewAcc::selectAccessibleChild( sal_Int32 nChildIndex )
- throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
-{
- ThrowIfDisposed();
- const SolarMutexGuard aSolarGuard;
- ThumbnailViewItem* pItem = getItem (sal::static_int_cast< sal_uInt16 >(nChildIndex));
-
- if(pItem != NULL)
- {
- mpParent->SelectItem( pItem->mnId );
- mpParent->Select ();
- }
- else
- throw lang::IndexOutOfBoundsException();
-}
-
-sal_Bool SAL_CALL ThumbnailViewAcc::isAccessibleChildSelected( sal_Int32 nChildIndex )
- throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
-{
- ThrowIfDisposed();
- const SolarMutexGuard aSolarGuard;
- ThumbnailViewItem* pItem = getItem (sal::static_int_cast< sal_uInt16 >(nChildIndex));
- sal_Bool bRet = sal_False;
-
- if (pItem != NULL)
- bRet = mpParent->IsItemSelected( pItem->mnId );
- else
- throw lang::IndexOutOfBoundsException();
-
- return bRet;
-}
-
-void SAL_CALL ThumbnailViewAcc::clearAccessibleSelection()
- throw (uno::RuntimeException)
-{
- ThrowIfDisposed();
- const SolarMutexGuard aSolarGuard;
- mpParent->SetNoSelection();
-}
-
-void SAL_CALL ThumbnailViewAcc::selectAllAccessibleChildren()
- throw (uno::RuntimeException)
-{
- ThrowIfDisposed();
- // unsupported due to single selection only
-}
-
-sal_Int32 SAL_CALL ThumbnailViewAcc::getSelectedAccessibleChildCount()
- throw (uno::RuntimeException)
-{
- ThrowIfDisposed();
- const SolarMutexGuard aSolarGuard;
- sal_Int32 nRet = 0;
-
- for( sal_uInt16 i = 0, nCount = getItemCount(); i < nCount; i++ )
- {
- ThumbnailViewItem* pItem = getItem (i);
-
- if( pItem && mpParent->IsItemSelected( pItem->mnId ) )
- ++nRet;
- }
-
- return nRet;
-}
-
-uno::Reference< accessibility::XAccessible > SAL_CALL ThumbnailViewAcc::getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex )
- throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
-{
- ThrowIfDisposed();
- const SolarMutexGuard aSolarGuard;
- uno::Reference< accessibility::XAccessible > xRet;
-
- for( sal_uInt16 i = 0, nCount = getItemCount(), nSel = 0; ( i < nCount ) && !xRet.is(); i++ )
- {
- ThumbnailViewItem* pItem = getItem(i);
-
- if( pItem && mpParent->IsItemSelected( pItem->mnId ) && ( nSelectedChildIndex == static_cast< sal_Int32 >( nSel++ ) ) )
- xRet = pItem->GetAccessible( mbIsTransientChildrenDisabled );
- }
-
- return xRet;
-}
-
-void SAL_CALL ThumbnailViewAcc::deselectAccessibleChild( sal_Int32 nChildIndex )
- throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
-{
- ThrowIfDisposed();
- const SolarMutexGuard aSolarGuard;
- // Because of the single selection we can reset the whole selection when
- // the specified child is currently selected.
- if (isAccessibleChildSelected(nChildIndex))
- mpParent->SetNoSelection();
-}
-
-sal_Int64 SAL_CALL ThumbnailViewAcc::getSomething( const uno::Sequence< sal_Int8 >& rId ) throw( uno::RuntimeException )
-{
- sal_Int64 nRet;
-
- if( ( rId.getLength() == 16 ) && ( 0 == rtl_compareMemory( ThumbnailViewAcc::getUnoTunnelId().getConstArray(), rId.getConstArray(), 16 ) ) )
- nRet = reinterpret_cast< sal_Int64 >( this );
- else
- nRet = 0;
-
- return nRet;
-}
-
-void SAL_CALL ThumbnailViewAcc::disposing (void)
-{
- ::std::vector<uno::Reference<accessibility::XAccessibleEventListener> > aListenerListCopy;
-
- {
- // Make a copy of the list and clear the original.
- const SolarMutexGuard aSolarGuard;
- ::osl::MutexGuard aGuard (m_aMutex);
- aListenerListCopy = mxEventListeners;
- mxEventListeners.clear();
-
- // Reset the pointer to the parent. It has to be the one who has
- // disposed us because he is dying.
- mpParent = NULL;
- }
-
- // Inform all listeners that this objects is disposing.
- ::std::vector<uno::Reference<accessibility::XAccessibleEventListener> >::const_iterator
- aListenerIterator (aListenerListCopy.begin());
- lang::EventObject aEvent (static_cast<accessibility::XAccessible*>(this));
- while (aListenerIterator != aListenerListCopy.end())
- {
- try
- {
- (*aListenerIterator)->disposing (aEvent);
- }
- catch(const uno::Exception&)
- {
- // Ignore exceptions.
- }
-
- ++aListenerIterator;
- }
-}
-
-sal_uInt16 ThumbnailViewAcc::getItemCount (void) const
-{
- sal_uInt16 nCount = mpParent->ImplGetVisibleItemCount();
- // When the None-Item is visible then increase the number of items by
- // one.
- if (HasNoneField())
- nCount += 1;
- return nCount;
-}
-
-ThumbnailViewItem* ThumbnailViewAcc::getItem (sal_uInt16 nIndex) const
-{
- ThumbnailViewItem* pItem = NULL;
-
- if (HasNoneField())
- {
- if (nIndex == 0)
- // When present the first item is the then allways visible none field.
- pItem = mpParent->ImplGetItem (THUMBNAILVIEW_ITEM_NONEITEM);
- else
- // Shift down the index to compensate for the none field.
- nIndex -= 1;
- }
- if (pItem == NULL)
- pItem = mpParent->ImplGetVisibleItem (static_cast<sal_uInt16>(nIndex));
-
- return pItem;
-}
-
-void ThumbnailViewAcc::ThrowIfDisposed (void)
- throw (::com::sun::star::lang::DisposedException)
-{
- if (rBHelper.bDisposed || rBHelper.bInDispose)
- {
- OSL_TRACE ("Calling disposed object. Throwing exception:");
- throw lang::DisposedException (
- ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("object has been already disposed")),
- static_cast<uno::XWeak*>(this));
- }
- else
- {
- DBG_ASSERT (mpParent!=NULL, "ValueSetAcc not disposed but mpParent == NULL");
- }
-}
-
-
-
-bool ThumbnailViewAcc::HasNoneField (void) const
-{
- DBG_ASSERT (mpParent!=NULL, "ThumbnailViewAcc::HasNoneField called with mpParent==NULL");
- return ((mpParent->GetStyle() & WB_NONEFIELD) != 0);
-}
-
-ThumbnailViewItemAcc::ThumbnailViewItemAcc( ThumbnailViewItem* pParent, bool bIsTransientChildrenDisabled ) :
- mpParent( pParent ),
- mbIsTransientChildrenDisabled( bIsTransientChildrenDisabled )
-{
-}
-
-ThumbnailViewItemAcc::~ThumbnailViewItemAcc()
-{
-}
-
-void ThumbnailViewItemAcc::FireAccessibleEvent( short nEventId, const uno::Any& rOldValue, const uno::Any& rNewValue )
-{
- if( nEventId )
- {
- ::std::vector< uno::Reference< accessibility::XAccessibleEventListener > > aTmpListeners( mxEventListeners );
- ::std::vector< uno::Reference< accessibility::XAccessibleEventListener > >::const_iterator aIter( aTmpListeners.begin() );
- accessibility::AccessibleEventObject aEvtObject;
-
- aEvtObject.EventId = nEventId;
- aEvtObject.Source = static_cast<uno::XWeak*>(this);
- aEvtObject.NewValue = rNewValue;
- aEvtObject.OldValue = rOldValue;
-
- while( aIter != aTmpListeners.end() )
- {
- (*aIter)->notifyEvent( aEvtObject );
- aIter++;
- }
- }
-}
-
-void ThumbnailViewItemAcc::ParentDestroyed()
-{
- const ::osl::MutexGuard aGuard( maMutex );
- mpParent = NULL;
-}
-
-namespace
-{
- class theValueItemAccUnoTunnelId : public rtl::Static< UnoTunnelIdInit, theValueItemAccUnoTunnelId > {};
-}
-
-const uno::Sequence< sal_Int8 >& ThumbnailViewItemAcc::getUnoTunnelId()
-{
- return theValueItemAccUnoTunnelId::get().getSeq();
-}
-
-ThumbnailViewItemAcc* ThumbnailViewItemAcc::getImplementation( const uno::Reference< uno::XInterface >& rxData )
- throw()
-{
- try
- {
- uno::Reference< lang::XUnoTunnel > xUnoTunnel( rxData, uno::UNO_QUERY );
- return( xUnoTunnel.is() ? reinterpret_cast<ThumbnailViewItemAcc*>(sal::static_int_cast<sal_IntPtr>(xUnoTunnel->getSomething( ThumbnailViewItemAcc::getUnoTunnelId() ))) : NULL );
- }
- catch(const ::com::sun::star::uno::Exception&)
- {
- return NULL;
- }
-}
-
-uno::Reference< accessibility::XAccessibleContext > SAL_CALL ThumbnailViewItemAcc::getAccessibleContext()
- throw (uno::RuntimeException)
-{
- return this;
-}
-
-sal_Int32 SAL_CALL ThumbnailViewItemAcc::getAccessibleChildCount()
- throw (uno::RuntimeException)
-{
- return 0;
-}
-
-uno::Reference< accessibility::XAccessible > SAL_CALL ThumbnailViewItemAcc::getAccessibleChild( sal_Int32 )
- throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
-{
- throw lang::IndexOutOfBoundsException();
-}
-
-uno::Reference< accessibility::XAccessible > SAL_CALL ThumbnailViewItemAcc::getAccessibleParent()
- throw (uno::RuntimeException)
-{
- const SolarMutexGuard aSolarGuard;
- uno::Reference< accessibility::XAccessible > xRet;
-
- if( mpParent )
- xRet = mpParent->mrParent.GetAccessible();
-
- return xRet;
-}
-
-sal_Int32 SAL_CALL ThumbnailViewItemAcc::getAccessibleIndexInParent()
- throw (uno::RuntimeException)
-{
- const SolarMutexGuard aSolarGuard;
- // The index defaults to -1 to indicate the child does not belong to its
- // parent.
- sal_Int32 nIndexInParent = -1;
-
- if( mpParent )
- {
- bool bDone = false;
-
- sal_uInt16 nCount = mpParent->mrParent.ImplGetVisibleItemCount();
- ThumbnailViewItem* pItem;
- for (sal_uInt16 i=0; i<nCount && !bDone; i++)
- {
- // Guard the retrieval of the i-th child with a try/catch block
- // just in case the number of children changes in the mean time.
- try
- {
- pItem = mpParent->mrParent.ImplGetVisibleItem (i);
- }
- catch (const lang::IndexOutOfBoundsException&)
- {
- pItem = NULL;
- }
-
- // Do not create an accessible object for the test.
- if (pItem != NULL && pItem->mpxAcc != NULL)
- if (pItem->GetAccessible( mbIsTransientChildrenDisabled ).get() == this )
- {
- nIndexInParent = i;
- bDone = true;
- }
- }
- }
-
- return nIndexInParent;
-}
-
-sal_Int16 SAL_CALL ThumbnailViewItemAcc::getAccessibleRole()
- throw (uno::RuntimeException)
-{
- return accessibility::AccessibleRole::LIST_ITEM;
-}
-
-::rtl::OUString SAL_CALL ThumbnailViewItemAcc::getAccessibleDescription()
- throw (uno::RuntimeException)
-{
- return ::rtl::OUString();
-}
-
-::rtl::OUString SAL_CALL ThumbnailViewItemAcc::getAccessibleName()
- throw (uno::RuntimeException)
-{
- const SolarMutexGuard aSolarGuard;
- rtl::OUString aRet;
-
- if( mpParent )
- {
- aRet = mpParent->maText;
-
- if( aRet.isEmpty() )
- {
- rtl::OUStringBuffer aBuffer("Item ");
- aBuffer.append(static_cast<sal_Int32>(mpParent->mnId));
- aRet = aBuffer.makeStringAndClear();
- }
- }
-
- return aRet;
-}
-
-uno::Reference< accessibility::XAccessibleRelationSet > SAL_CALL ThumbnailViewItemAcc::getAccessibleRelationSet()
- throw (uno::RuntimeException)
-{
- return uno::Reference< accessibility::XAccessibleRelationSet >();
-}
-
-uno::Reference< accessibility::XAccessibleStateSet > SAL_CALL ThumbnailViewItemAcc::getAccessibleStateSet()
- throw (uno::RuntimeException)
-{
- const SolarMutexGuard aSolarGuard;
- ::utl::AccessibleStateSetHelper* pStateSet = new ::utl::AccessibleStateSetHelper;
-
- if( mpParent )
- {
- pStateSet->AddState (accessibility::AccessibleStateType::ENABLED);
- pStateSet->AddState (accessibility::AccessibleStateType::SENSITIVE);
- pStateSet->AddState (accessibility::AccessibleStateType::SHOWING);
- pStateSet->AddState (accessibility::AccessibleStateType::VISIBLE);
- if ( !mbIsTransientChildrenDisabled )
- pStateSet->AddState (accessibility::AccessibleStateType::TRANSIENT);
-
- // SELECTABLE
- pStateSet->AddState( accessibility::AccessibleStateType::SELECTABLE );
- // pStateSet->AddState( accessibility::AccessibleStateType::FOCUSABLE );
-
- // SELECTED
- if( mpParent->mrParent.GetSelectItemId() == mpParent->mnId )
- {
- pStateSet->AddState( accessibility::AccessibleStateType::SELECTED );
- // pStateSet->AddState( accessibility::AccessibleStateType::FOCUSED );
- }
- }
-
- return pStateSet;
-}
-
-lang::Locale SAL_CALL ThumbnailViewItemAcc::getLocale()
- throw (accessibility::IllegalAccessibleComponentStateException, uno::RuntimeException)
-{
- const SolarMutexGuard aSolarGuard;
- const ::rtl::OUString aEmptyStr;
- uno::Reference< accessibility::XAccessible > xParent( getAccessibleParent() );
- lang::Locale aRet( aEmptyStr, aEmptyStr, aEmptyStr );
-
- if( xParent.is() )
- {
- uno::Reference< accessibility::XAccessibleContext > xParentContext( xParent->getAccessibleContext() );
-
- if( xParentContext.is() )
- aRet = xParentContext->getLocale();
- }
-
- return aRet;
-}
-
-void SAL_CALL ThumbnailViewItemAcc::addEventListener( const uno::Reference< accessibility::XAccessibleEventListener >& rxListener )
- throw (uno::RuntimeException)
-{
- const ::osl::MutexGuard aGuard( maMutex );
-
- if( rxListener.is() )
- {
- ::std::vector< uno::Reference< accessibility::XAccessibleEventListener > >::const_iterator aIter = mxEventListeners.begin();
- sal_Bool bFound = sal_False;
-
- while( !bFound && ( aIter != mxEventListeners.end() ) )
- {
- if( *aIter == rxListener )
- bFound = sal_True;
- else
- ++aIter;
- }
-
- if (!bFound)
- mxEventListeners.push_back( rxListener );
- }
-}
-
-void SAL_CALL ThumbnailViewItemAcc::removeEventListener( const uno::Reference< accessibility::XAccessibleEventListener >& rxListener )
- throw (uno::RuntimeException)
-{
- const ::osl::MutexGuard aGuard( maMutex );
-
- if( rxListener.is() )
- {
- ::std::vector< uno::Reference< accessibility::XAccessibleEventListener > >::iterator aIter = mxEventListeners.begin();
- sal_Bool bFound = sal_False;
-
- while( !bFound && ( aIter != mxEventListeners.end() ) )
- {
- if( *aIter == rxListener )
- {
- mxEventListeners.erase( aIter );
- bFound = sal_True;
- }
- else
- ++aIter;
- }
- }
-}
-
-sal_Bool SAL_CALL ThumbnailViewItemAcc::containsPoint( const awt::Point& aPoint )
- throw (uno::RuntimeException)
-{
- const awt::Rectangle aRect( getBounds() );
- const Point aSize( aRect.Width, aRect.Height );
- const Point aNullPoint, aTestPoint( aPoint.X, aPoint.Y );
-
- return Rectangle( aNullPoint, aSize ).IsInside( aTestPoint );
-}
-
-uno::Reference< accessibility::XAccessible > SAL_CALL ThumbnailViewItemAcc::getAccessibleAtPoint( const awt::Point& )
- throw (uno::RuntimeException)
-{
- uno::Reference< accessibility::XAccessible > xRet;
- return xRet;
-}
-
-awt::Rectangle SAL_CALL ThumbnailViewItemAcc::getBounds()
- throw (uno::RuntimeException)
-{
- const SolarMutexGuard aSolarGuard;
- awt::Rectangle aRet;
-
- if( mpParent )
- {
- Rectangle aRect( mpParent->mrParent.GetItemRect(mpParent->mnId) );
- Point aOrigin;
- Rectangle aParentRect( aOrigin, mpParent->mrParent.GetOutputSizePixel() );
-
- aRect.Intersection( aParentRect );
-
- aRet.X = aRect.Left();
- aRet.Y = aRect.Top();
- aRet.Width = aRect.GetWidth();
- aRet.Height = aRect.GetHeight();
- }
-
- return aRet;
-}
-
-awt::Point SAL_CALL ThumbnailViewItemAcc::getLocation()
- throw (uno::RuntimeException)
-{
- const awt::Rectangle aRect( getBounds() );
- awt::Point aRet;
-
- aRet.X = aRect.X;
- aRet.Y = aRect.Y;
-
- return aRet;
-}
-
-awt::Point SAL_CALL ThumbnailViewItemAcc::getLocationOnScreen()
- throw (uno::RuntimeException)
-{
- const SolarMutexGuard aSolarGuard;
- awt::Point aRet;
-
- if( mpParent )
- {
- const Point aPos = mpParent->mrParent.GetItemRect(mpParent->mnId).TopLeft();
- const Point aScreenPos( mpParent->mrParent.OutputToAbsoluteScreenPixel( aPos ) );
-
- aRet.X = aScreenPos.X();
- aRet.Y = aScreenPos.Y();
- }
-
- return aRet;
-}
-
-awt::Size SAL_CALL ThumbnailViewItemAcc::getSize()
- throw (uno::RuntimeException)
-{
- const awt::Rectangle aRect( getBounds() );
- awt::Size aRet;
-
- aRet.Width = aRect.Width;
- aRet.Height = aRect.Height;
-
- return aRet;
-}
-
-void SAL_CALL ThumbnailViewItemAcc::grabFocus()
- throw (uno::RuntimeException)
-{
- // nothing to do
-}
-
-uno::Any SAL_CALL ThumbnailViewItemAcc::getAccessibleKeyBinding()
- throw (uno::RuntimeException)
-{
- return uno::Any();
-}
-
-sal_Int32 SAL_CALL ThumbnailViewItemAcc::getForeground( )
- throw (uno::RuntimeException)
-{
- sal_uInt32 nColor = Application::GetSettings().GetStyleSettings().GetWindowTextColor().GetColor();
- return static_cast<sal_Int32>(nColor);
-}
-
-sal_Int32 SAL_CALL ThumbnailViewItemAcc::getBackground( )
- throw (uno::RuntimeException)
-{
- return static_cast<sal_Int32>(Application::GetSettings().GetStyleSettings().GetWindowColor().GetColor());
-}
-
-sal_Int64 SAL_CALL ThumbnailViewItemAcc::getSomething( const uno::Sequence< sal_Int8 >& rId ) throw( uno::RuntimeException )
-{
- sal_Int64 nRet;
-
- if( ( rId.getLength() == 16 ) && ( 0 == rtl_compareMemory( ThumbnailViewItemAcc::getUnoTunnelId().getConstArray(), rId.getConstArray(), 16 ) ) )
- nRet = reinterpret_cast< sal_Int64 >( this );
- else
- nRet = 0;
-
- return nRet;
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-
-
diff --git a/svtools/source/control/thumbv_acc.hxx b/svtools/source/control/thumbv_acc.hxx
deleted file mode 100644
index 830a605..0000000
--- a/svtools/source/control/thumbv_acc.hxx
+++ /dev/null
@@ -1,253 +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.
- *
- ************************************************************************/
-
-#ifndef THUMBV_ACC_HXX
-#define THUMBV_ACC_HXX
-
-#include <osl/mutex.hxx>
-#include <cppuhelper/implbase5.hxx>
-#include <cppuhelper/compbase6.hxx>
-#include <comphelper/broadcasthelper.hxx>
-
-#include <com/sun/star/lang/XUnoTunnel.hpp>
-#include <com/sun/star/accessibility/XAccessible.hpp>
-#include <com/sun/star/accessibility/XAccessibleContext.hpp>
-#include <com/sun/star/accessibility/XAccessibleComponent.hpp>
-#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
-#include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
-#include <com/sun/star/lang/DisposedException.hpp>
-
-#include <vector>
-
-class ThumbnailView;
-struct ThumbnailViewItem;
-
-typedef ::cppu::PartialWeakComponentImplHelper6<
- ::com::sun::star::accessibility::XAccessible,
- ::com::sun::star::accessibility::XAccessibleEventBroadcaster,
- ::com::sun::star::accessibility::XAccessibleContext,
- ::com::sun::star::accessibility::XAccessibleComponent,
- ::com::sun::star::accessibility::XAccessibleSelection,
- ::com::sun::star::lang::XUnoTunnel >
- ValueSetAccComponentBase;
-
-class ThumbnailViewAcc :
- public ::comphelper::OBaseMutex,
- public ValueSetAccComponentBase
-{
-public:
-
- ThumbnailViewAcc( ThumbnailView* pParent, bool bIsTransientChildrenDisabled );
- ~ThumbnailViewAcc();
-
- void FireAccessibleEvent( short nEventId,
- const ::com::sun::star::uno::Any& rOldValue,
- const ::com::sun::star::uno::Any& rNewValue );
-
- sal_Bool HasAccessibleListeners() const { return( mxEventListeners.size() > 0 ); }
-
- static ThumbnailViewAcc* getImplementation( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& rxData ) throw();
-
-public:
-
- /** Called by the corresponding ValueSet when it gets the focus.
- Stores the new focus state and broadcasts a state change event.
- */
- void GetFocus (void);
-
- /** Called by the corresponding ValueSet when it loses the focus.
- Stores the new focus state and broadcasts a state change event.
- */
- void LoseFocus (void);
-
- // XComponent
- virtual void SAL_CALL dispose()throw (::com::sun::star::uno::RuntimeException)
- { WeakComponentImplHelperBase::dispose(); }
- virtual void SAL_CALL addEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > & xListener)throw (::com::sun::star::uno::RuntimeException)
- { WeakComponentImplHelperBase::addEventListener(xListener); }
- virtual void SAL_CALL removeEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > & xListener)throw (::com::sun::star::uno::RuntimeException)
- { WeakComponentImplHelperBase::removeEventListener(xListener); }
-
- // XAccessible
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) throw (::com::sun::star::uno::RuntimeException);
-
- // XAccessibleEventBroadcaster
- virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
-
- // XAccessibleContext
- virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getAccessibleIndexInParent( ) throw (::com::sun::star::uno::RuntimeException);
- virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getAccessibleDescription( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::lang::Locale SAL_CALL getLocale( ) throw (::com::sun::star::accessibility::IllegalAccessibleComponentStateException, ::com::sun::star::uno::RuntimeException);
-
- // XAccessibleComponent
- virtual sal_Bool SAL_CALL containsPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::awt::Rectangle SAL_CALL getBounds( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::awt::Point SAL_CALL getLocation( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::awt::Size SAL_CALL getSize( ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL grabFocus( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Any SAL_CALL getAccessibleKeyBinding( ) throw (::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getForeground( ) throw (::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getBackground( ) throw (::com::sun::star::uno::RuntimeException);
-
- // XAccessibleSelection
- virtual void SAL_CALL selectAccessibleChild( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL clearAccessibleSelection( ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL selectAllAccessibleChildren( ) throw (::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getSelectedAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL deselectAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
-
- // XUnoTunnel
- virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& rId ) throw( ::com::sun::star::uno::RuntimeException );
-
-private:
- ::std::vector< ::com::sun::star::uno::Reference<
- ::com::sun::star::accessibility::XAccessibleEventListener > > mxEventListeners;
- ThumbnailView* mpParent;
- bool mbIsTransientChildrenDisabled;
- /// The current FOCUSED state.
- bool mbIsFocused;
-
- static const ::com::sun::star::uno::Sequence< sal_Int8 >& getUnoTunnelId();
-
- /** Tell all listeners that the object is dying. This callback is
- usually called from the WeakComponentImplHelper class.
- */
- virtual void SAL_CALL disposing (void);
-
- /** Return the number of items. This takes the None-Item into account.
- */
- sal_uInt16 getItemCount (void) const;
-
- /** Return the item associated with the given index. The None-Item is
- taken into account which, when present, is taken to be the first
- (with index 0) item.
- @param nIndex
- Index of the item to return. The index 0 denotes the None-Item
- when present.
- @return
- Returns NULL when the given index is out of range.
- */
- ThumbnailViewItem* getItem (sal_uInt16 nIndex) const;
-
- /** Check whether or not the object has been disposed (or is in the
- state of beeing disposed). If that is the case then
- DisposedException is thrown to inform the (indirect) caller of the
... etc. - the rest is truncated
More information about the Libreoffice-commits
mailing list