diff options
author | Mihaela Kedikova <misheto@openoffice.org> | 2010-08-12 17:44:19 +0200 |
---|---|---|
committer | Mihaela Kedikova <misheto@openoffice.org> | 2010-08-12 17:44:19 +0200 |
commit | 5eb0040d0199f8c80d47ed912e055f27a193b81d (patch) | |
tree | d179fdc45b167a7d00c5cb6ec97aeb04fed5816e /toolkit/source/controls/tabpagecontainer.cxx | |
parent | a59d3476c34f246619895af36d563b618c4d8408 (diff) |
tabcontrol: new source code for tabcontrol added
Diffstat (limited to 'toolkit/source/controls/tabpagecontainer.cxx')
-rw-r--r-- | toolkit/source/controls/tabpagecontainer.cxx | 293 |
1 files changed, 293 insertions, 0 deletions
diff --git a/toolkit/source/controls/tabpagecontainer.cxx b/toolkit/source/controls/tabpagecontainer.cxx new file mode 100644 index 000000000000..b8df7e414168 --- /dev/null +++ b/toolkit/source/controls/tabpagecontainer.cxx @@ -0,0 +1,293 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_toolkit.hxx" + +#include <toolkit/controls/tabpagecontainer.hxx> + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> +#include <toolkit/helper/unopropertyarrayhelper.hxx> +#include <toolkit/helper/property.hxx> +#include <com/sun/star/awt/XVclWindowPeer.hpp> +#include <comphelper/processfactory.hxx> +#include <osl/diagnose.h> +#include <com/sun/star/awt/XControlModel.hpp> + +using ::rtl::OUString; +using namespace ::com::sun::star; +using namespace ::com::sun::star::uno; +using namespace ::com::sun::star::lang; +using namespace ::com::sun::star::beans; +using namespace ::com::sun::star::container; +using namespace ::com::sun::star::view; + +#define WRONG_TYPE_EXCEPTION "Type must be ::com::sun::star::awt::tab::XTabPage!" +// ---------------------------------------------------- +// class UnoControlTabPageContainerModel +// ---------------------------------------------------- +UnoControlTabPageContainerModel::UnoControlTabPageContainerModel() +{ + ImplRegisterProperty( BASEPROPERTY_BACKGROUNDCOLOR ); + ImplRegisterProperty( BASEPROPERTY_BORDER ); + ImplRegisterProperty( BASEPROPERTY_BORDERCOLOR ); + ImplRegisterProperty( BASEPROPERTY_DEFAULTCONTROL ); + ImplRegisterProperty( BASEPROPERTY_ENABLED ); + ImplRegisterProperty( BASEPROPERTY_HELPTEXT ); + ImplRegisterProperty( BASEPROPERTY_HELPURL ); + ImplRegisterProperty( BASEPROPERTY_PRINTABLE ); + ImplRegisterProperty( BASEPROPERTY_TEXT ); +} + +::rtl::OUString UnoControlTabPageContainerModel::getServiceName() throw(::com::sun::star::uno::RuntimeException) +{ + return ::rtl::OUString::createFromAscii( szServiceName_UnoControlTabPageContainerModel ); +} + +uno::Any SAL_CALL UnoControlTabPageContainerModel::queryInterface( const uno::Type & rType ) + throw( uno::RuntimeException ) +{ + Any aReturn = UnoControlModel::queryInterface( rType ); + if ( !aReturn.hasValue() ) + aReturn = ::cppu::queryInterface ( rType, static_cast< XIndexContainer*>( this ) ); + return aReturn; +} +Any UnoControlTabPageContainerModel::queryAggregation( const Type & rType ) throw(RuntimeException) +{ + uno::Any aAny; + if( rType == ::getCppuType((const uno::Reference< XIndexContainer >*)0) ) + aAny <<= uno::Reference< XIndexContainer >( this ); + else if( rType == ::getCppuType((const uno::Reference< XContainer >*)0) ) + aAny <<= uno::Reference< XContainer >( this ); + else + aAny <<= UnoControlModel::queryAggregation( rType ); + return aAny; +} +uno::Any UnoControlTabPageContainerModel::ImplGetDefaultValue( sal_uInt16 nPropId ) const +{ + switch(nPropId) + { + case BASEPROPERTY_DEFAULTCONTROL: + return uno::makeAny( ::rtl::OUString::createFromAscii( szServiceName_UnoControlTabPageContainer ) ); + default: + return UnoControlModel::ImplGetDefaultValue( nPropId ); + } +} + +::cppu::IPropertyArrayHelper& UnoControlTabPageContainerModel::getInfoHelper() +{ + static UnoPropertyArrayHelper* pHelper = NULL; + if ( !pHelper ) + { + com::sun::star::uno::Sequence<sal_Int32> aIDs = ImplGetPropertyIds(); + pHelper = new UnoPropertyArrayHelper( aIDs ); + } + return *pHelper; +} +::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > UnoControlTabPageContainerModel::getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException) +{ + static ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) ); + return xInfo; +} + +void SAL_CALL UnoControlTabPageContainerModel::insertByIndex( ::sal_Int32 nIndex, const com::sun::star::uno::Any& aElement) throw (IllegalArgumentException, IndexOutOfBoundsException, WrappedTargetException, uno::RuntimeException) +{ + ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() ); + uno::Reference < ::awt::tab::XTabPage > xTabPage; + if(aElement >>= xTabPage) + { + if ( sal_Int32( m_aTabPageVector.size()) ==nIndex ) + m_aTabPageVector.push_back( xTabPage ); + else if ( sal_Int32( m_aTabPageVector.size()) > nIndex ) + { + std::vector< uno::Reference< ::awt::tab::XTabPage > >::iterator aIter = m_aTabPageVector.begin(); + aIter += nIndex; + m_aTabPageVector.insert( aIter, xTabPage ); + } + else + throw IndexOutOfBoundsException( ::rtl::OUString(), (OWeakObject *)this ); + } + else + throw IllegalArgumentException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( WRONG_TYPE_EXCEPTION )), + (OWeakObject *)this, 2 ); +} +// ----------------------------------------------------------------------------- +void SAL_CALL UnoControlTabPageContainerModel::removeByIndex( ::sal_Int32 /*Index*/ ) throw (lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException) +{ +} +// XIndexReplace +void SAL_CALL UnoControlTabPageContainerModel::replaceByIndex( ::sal_Int32 /*Index*/, const uno::Any& /*Element*/ ) throw (lang::IllegalArgumentException, lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException) +{ +} +// ----------------------------------------------------------------------------- +// XIndexAccess +::sal_Int32 SAL_CALL UnoControlTabPageContainerModel::getCount( ) throw (uno::RuntimeException) +{ + sal_Int32 nElementCount = sal_Int32( m_aTabPageVector.size()); + return nElementCount >0 ? nElementCount : 0; +} +// ----------------------------------------------------------------------------- +uno::Any SAL_CALL UnoControlTabPageContainerModel::getByIndex( ::sal_Int32 nIndex ) throw (lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException) +{ + (void)nIndex; + return uno::Any(); +} +// ----------------------------------------------------------------------------- +// XElementAccess +uno::Type SAL_CALL UnoControlTabPageContainerModel::getElementType( ) throw (uno::RuntimeException) +{ + return ::getCppuType(static_cast< Reference< com::sun::star::awt::XControlModel>* >(NULL)); +} +// ----------------------------------------------------------------------------- +::sal_Bool SAL_CALL UnoControlTabPageContainerModel::hasElements( ) throw (uno::RuntimeException) +{ + return false; +} +// XContainer +void UnoControlTabPageContainerModel::addContainerListener( const Reference< XContainerListener >& l ) throw(RuntimeException) +{ + (void) l; +} + +void UnoControlTabPageContainerModel::removeContainerListener( const Reference< XContainerListener >& l ) throw(RuntimeException) +{ + (void) l; +} + +// ---------------------------------------------------- +// class UnoControlTabPageContainer +// ---------------------------------------------------- +UnoControlTabPageContainer::UnoControlTabPageContainer(): + m_aTabPageListeners( *this ) +{ +} + +Any SAL_CALL UnoControlTabPageContainer::queryInterface( const Type & rType ) throw(RuntimeException) +{ + return UnoControlContainer::queryInterface(rType); +} + +OUString UnoControlTabPageContainer::GetComponentServiceName() +{ + return OUString::createFromAscii( "TabPageContainer" ); +} + +//// uno::XInterface +uno::Any UnoControlTabPageContainer::queryAggregation( const uno::Type & rType ) throw(uno::RuntimeException) +{ + uno::Any aRet = ::cppu::queryInterface( rType, + SAL_STATIC_CAST( awt::tab::XTabPageContainer*, this ) ); + return (aRet.hasValue() ? aRet : ControlContainerBase::queryAggregation( rType )); +} + +void SAL_CALL UnoControlTabPageContainer::dispose( ) throw(RuntimeException) +{ + lang::EventObject aEvt; + aEvt.Source = (::cppu::OWeakObject*)this; + m_aTabPageListeners.disposeAndClear( aEvt ); + UnoControl::dispose(); +} + +void UnoControlTabPageContainer::createPeer( const uno::Reference< awt::XToolkit > & rxToolkit, const uno::Reference< awt::XWindowPeer > & rParentPeer ) throw(uno::RuntimeException) +{ + UnoControlBase::createPeer( rxToolkit, rParentPeer ); + + Reference< XTabPageContainer > xTPContainer( getPeer(), UNO_QUERY_THROW ); + xTPContainer->addTabPageListener(&m_aTabPageListeners); +} + +// ------------------------------------------------------------------- +// XTabPageContainer + +::sal_Int16 SAL_CALL UnoControlTabPageContainer::getActiveTabPageID() throw (::com::sun::star::uno::RuntimeException) +{ + return m_nActiveTabPageId; +} +void SAL_CALL UnoControlTabPageContainer::setActiveTabPageID( ::sal_Int16 _activetabpageid ) throw (::com::sun::star::uno::RuntimeException) +{ + m_nActiveTabPageId = _activetabpageid; +} +::sal_Int32 SAL_CALL UnoControlTabPageContainer::getTabPageCount( ) throw (::com::sun::star::uno::RuntimeException) +{ + return 0; +} +::sal_Bool SAL_CALL UnoControlTabPageContainer::isTabPageActive( ::sal_Int16 /*tabPageIndex*/ ) throw (::com::sun::star::uno::RuntimeException) +{ + return false; +} +::com::sun::star::uno::Reference< ::com::sun::star::awt::tab::XTabPage > SAL_CALL UnoControlTabPageContainer::getTabPage( ::sal_Int16 /*tabPageIndex*/ ) throw (::com::sun::star::uno::RuntimeException) +{ + return NULL; +} +::com::sun::star::uno::Reference< ::com::sun::star::awt::tab::XTabPage > SAL_CALL UnoControlTabPageContainer::getTabPageByID( ::sal_Int16 /*tabPageID */) throw (::com::sun::star::uno::RuntimeException) +{ + return NULL; +} +void SAL_CALL UnoControlTabPageContainer::addTabPageListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::tab::XTabPageContainerListener >& listener ) throw (::com::sun::star::uno::RuntimeException) +{ + m_aTabPageListeners.addInterface( listener ); +} +void SAL_CALL UnoControlTabPageContainer::removeTabPageListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::tab::XTabPageContainerListener >& listener ) throw (::com::sun::star::uno::RuntimeException) +{ + m_aTabPageListeners.removeInterface( listener ); +} + +//// ::com::sun::star::awt::XControlContainer +void SAL_CALL UnoControlTabPageContainer::setStatusText( const ::rtl::OUString& StatusText ) throw (::com::sun::star::uno::RuntimeException) +{ + (void)StatusText; +} +::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl > > SAL_CALL UnoControlTabPageContainer::getControls( ) throw (::com::sun::star::uno::RuntimeException) +{ + return 0; +} +uno::Reference< awt::XControl > UnoControlTabPageContainer::getControl( const ::rtl::OUString& rName ) throw(uno::RuntimeException) +{ + ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() ); + (void)rName; + //return mpControls->getControlForName( rName ); + return uno::Reference< awt::XControl >(); +} +void SAL_CALL UnoControlTabPageContainer::addControl( const ::rtl::OUString& Name, const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl >& Control ) throw (::com::sun::star::uno::RuntimeException) +{ + (void)Name; + (void)Control; +} +void SAL_CALL UnoControlTabPageContainer::removeControl( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl >& Control ) throw (::com::sun::star::uno::RuntimeException) +{ + (void)Control; +} + +Reference< XInterface > SAL_CALL UnoControlTabPageContainer_CreateInstance( const Reference< XMultiServiceFactory >& ) +{ + return Reference < XInterface >( ( ::cppu::OWeakObject* ) new UnoControlTabPageContainer ); +} + +Reference< XInterface > SAL_CALL UnoControlTabPageContainerModel_CreateInstance( const Reference< XMultiServiceFactory >& ) +{ + return Reference < XInterface >( ( ::cppu::OWeakObject* ) new UnoControlTabPageContainerModel ); +} |