diff options
Diffstat (limited to 'sc/source/ui/vba/vbacontrols.cxx')
-rw-r--r-- | sc/source/ui/vba/vbacontrols.cxx | 227 |
1 files changed, 0 insertions, 227 deletions
diff --git a/sc/source/ui/vba/vbacontrols.cxx b/sc/source/ui/vba/vbacontrols.cxx deleted file mode 100644 index fd07a4336..000000000 --- a/sc/source/ui/vba/vbacontrols.cxx +++ /dev/null @@ -1,227 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile$ - * $Revision$ - * - * 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 "vbacontrols.hxx" -#include "vbacontrol.hxx" -#include <cppuhelper/implbase2.hxx> -#include <com/sun/star/awt/XControlContainer.hpp> -#include <hash_map> - -using namespace com::sun::star; -using namespace ooo::vba; - - -typedef ::cppu::WeakImplHelper2< container::XNameAccess, container::XIndexAccess > ArrayWrapImpl; - -typedef std::hash_map< rtl::OUString, sal_Int32, ::rtl::OUStringHash, - ::std::equal_to< ::rtl::OUString > > ControlIndexMap; -typedef std::vector< uno::Reference< awt::XControl > > ControlVec; - -class ControlArrayWrapper : public ArrayWrapImpl -{ - uno::Reference< awt::XControlContainer > mxDialog; - uno::Sequence< ::rtl::OUString > msNames; - ControlVec mControls; - ControlIndexMap mIndices; - - rtl::OUString getControlName( const uno::Reference< awt::XControl >& xCtrl ) - { - uno::Reference< beans::XPropertySet > xProp( xCtrl->getModel(), uno::UNO_QUERY ); - rtl::OUString sName; - xProp->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Name" ) ) ) >>= sName; - return sName; - } - -public: - - ControlArrayWrapper( const uno::Reference< awt::XControl >& xDialog ) - { - mxDialog.set( xDialog, uno::UNO_QUERY_THROW ); - uno::Sequence< uno::Reference< awt::XControl > > sXControls = mxDialog->getControls(); - - msNames.realloc( sXControls.getLength() ); - for ( sal_Int32 i = 0; i < sXControls.getLength(); ++i ) - { - uno::Reference< awt::XControl > xCtrl = sXControls[ i ]; - msNames[ i ] = getControlName( xCtrl ); - mControls.push_back( xCtrl ); - mIndices[ msNames[ i ] ] = i; - } - } - - // XElementAccess - virtual uno::Type SAL_CALL getElementType( ) throw (uno::RuntimeException) - { - return awt::XControl::static_type(0); - } - - virtual ::sal_Bool SAL_CALL hasElements( ) throw (uno::RuntimeException) - { - return ( mControls.size() > 0 ); - } - - // XNameAcess - virtual uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) throw (container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) - { - if ( !hasByName( aName ) ) - throw container::NoSuchElementException(); - return getByIndex( mIndices[ aName ] ); - } - - virtual uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames( ) throw (uno::RuntimeException) - { - return msNames; - } - - virtual ::sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) throw (css::uno::RuntimeException) - { - ControlIndexMap::iterator it = mIndices.find( aName ); - return it != mIndices.end(); - } - - // XElementAccess - virtual ::sal_Int32 SAL_CALL getCount( ) throw (css::uno::RuntimeException) - { - return mControls.size(); - } - - virtual uno::Any SAL_CALL getByIndex( ::sal_Int32 Index ) throw (lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException ) - { - if ( Index < 0 || Index >= static_cast< sal_Int32 >( mControls.size() ) ) - throw lang::IndexOutOfBoundsException(); - return uno::makeAny( mControls[ Index ] ); - } -}; - - -class ControlsEnumWrapper : public EnumerationHelper_BASE -{ - uno::Reference<XHelperInterface > m_xParent; - uno::Reference<uno::XComponentContext > m_xContext; - uno::Reference<container::XIndexAccess > m_xIndexAccess; - uno::Reference<awt::XControl > m_xDlg; - sal_Int32 nIndex; - -public: - - ControlsEnumWrapper( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< container::XIndexAccess >& xIndexAccess, const uno::Reference< awt::XControl >& xDlg ) : m_xParent( xParent ), m_xContext( xContext), m_xIndexAccess( xIndexAccess ), m_xDlg( xDlg ), nIndex( 0 ) {} - - virtual ::sal_Bool SAL_CALL hasMoreElements( ) throw (uno::RuntimeException) - { - return ( nIndex < m_xIndexAccess->getCount() ); - } - - virtual uno::Any SAL_CALL nextElement( ) throw (container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) - { - if ( nIndex < m_xIndexAccess->getCount() ) - { - uno::Reference< frame::XModel > xModel; - uno::Reference< uno::XInterface > xControl; - m_xIndexAccess->getByIndex( nIndex++ ) >>= xControl; - // Create control from awt::XControl - ScVbaControlFactory aFac( m_xContext, xControl, xModel ); - uno::Reference< msforms::XControl > xVBAControl( aFac.createControl( m_xDlg->getModel() ) ); - return uno::makeAny( xVBAControl ); - } - throw container::NoSuchElementException(); - } - -}; - - -uno::Reference<container::XIndexAccess > -lcl_controlsWrapper( const uno::Reference< awt::XControl >& xDlg ) -{ - return new ControlArrayWrapper( xDlg ); -} - -ScVbaControls::ScVbaControls( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, - const css::uno::Reference< awt::XControl >& xDialog ) - : ControlsImpl_BASE( xParent, xContext, lcl_controlsWrapper( xDialog ) ) -{ - mxDialog.set( xDialog, uno::UNO_QUERY_THROW ); -} - -uno::Reference< container::XEnumeration > -ScVbaControls::createEnumeration() throw (uno::RuntimeException) -{ - uno::Reference< container::XEnumeration > xEnum( new ControlsEnumWrapper( mxParent, mxContext, m_xIndexAccess, mxDialog ) ); - if ( !xEnum.is() ) - throw uno::RuntimeException(); - return xEnum; -} - -uno::Any -ScVbaControls::createCollectionObject( const css::uno::Any& aSource ) -{ - // Create control from awt::XControl - uno::Reference< awt::XControl > xControl; - aSource >>= xControl; - uno::Reference< frame::XModel > xModel; - ScVbaControlFactory aFac( mxContext, xControl, xModel ); - uno::Reference< msforms::XControl > xVBAControl( aFac.createControl( mxDialog->getModel() ) ); - return uno::makeAny( xVBAControl ); -} - -void SAL_CALL -ScVbaControls::Move( double cx, double cy ) throw (uno::RuntimeException) -{ - uno::Reference< container::XEnumeration > xEnum( createEnumeration() ); - while ( xEnum->hasMoreElements() ) - { - uno::Reference< msforms::XControl > xControl( xEnum->nextElement(), uno::UNO_QUERY_THROW ); - xControl->setLeft( xControl->getLeft() + cx ); - xControl->setTop( xControl->getTop() + cy ); - } -} - -uno::Type -ScVbaControls::getElementType() throw (uno::RuntimeException) -{ - return ooo::vba::msforms::XControl::static_type(0); -} -rtl::OUString& -ScVbaControls::getServiceImplName() -{ - static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("ScVbaControls") ); - return sImplName; -} - -uno::Sequence< rtl::OUString > -ScVbaControls::getServiceNames() -{ - static uno::Sequence< rtl::OUString > aServiceNames; - if ( aServiceNames.getLength() == 0 ) - { - aServiceNames.realloc( 1 ); - aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.excel.Controls" ) ); - } - return aServiceNames; -} |