diff options
Diffstat (limited to 'chart2/source/controller/chartapiwrapper/TitleWrapper.cxx')
-rw-r--r-- | chart2/source/controller/chartapiwrapper/TitleWrapper.cxx | 560 |
1 files changed, 0 insertions, 560 deletions
diff --git a/chart2/source/controller/chartapiwrapper/TitleWrapper.cxx b/chart2/source/controller/chartapiwrapper/TitleWrapper.cxx deleted file mode 100644 index 6311fec75..000000000 --- a/chart2/source/controller/chartapiwrapper/TitleWrapper.cxx +++ /dev/null @@ -1,560 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_chart2.hxx" -#include "TitleWrapper.hxx" -#include "macros.hxx" -#include "ContainerHelper.hxx" -#include "ControllerLockGuard.hxx" - -#include <comphelper/InlineContainer.hxx> -#include <com/sun/star/beans/PropertyAttribute.hpp> -#include <com/sun/star/chart2/RelativePosition.hpp> - -#include "CharacterProperties.hxx" -#include "LineProperties.hxx" -#include "FillProperties.hxx" -#include "UserDefinedProperties.hxx" -#include "WrappedCharacterHeightProperty.hxx" -#include "WrappedTextRotationProperty.hxx" -#include "WrappedAutomaticPositionProperties.hxx" -#include "WrappedScaleTextProperties.hxx" - -#include <algorithm> -#include <rtl/ustrbuf.hxx> - -using namespace ::com::sun::star; -using ::com::sun::star::beans::Property; -using ::osl::MutexGuard; -using ::rtl::OUString; -using ::com::sun::star::uno::Any; -using ::com::sun::star::uno::Reference; -using ::com::sun::star::uno::Sequence; - - -namespace chart -{ -class WrappedTitleStringProperty : public WrappedProperty -{ -public: - WrappedTitleStringProperty( const Reference< uno::XComponentContext >& xContext ); - virtual ~WrappedTitleStringProperty(); - - virtual void setPropertyValue( const Any& rOuterValue, const Reference< beans::XPropertySet >& xInnerPropertySet ) const - throw (beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException); - virtual Any getPropertyValue( const Reference< beans::XPropertySet >& xInnerPropertySet ) const - throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException); - virtual Any getPropertyDefault( const Reference< beans::XPropertyState >& xInnerPropertyState ) const - throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException); - -protected: - Reference< uno::XComponentContext > m_xContext; -}; - -WrappedTitleStringProperty::WrappedTitleStringProperty( const Reference< uno::XComponentContext >& xContext ) - : ::chart::WrappedProperty( C2U( "String" ), OUString() ) - , m_xContext( xContext ) -{ -} -WrappedTitleStringProperty::~WrappedTitleStringProperty() -{ -} - -void WrappedTitleStringProperty::setPropertyValue( const Any& rOuterValue, const Reference< beans::XPropertySet >& xInnerPropertySet ) const - throw (beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException) -{ - Reference< chart2::XTitle > xTitle(xInnerPropertySet,uno::UNO_QUERY); - if(xTitle.is()) - { - OUString aString; - rOuterValue >>= aString; - TitleHelper::setCompleteString( aString, xTitle, m_xContext ); - } -} -Any WrappedTitleStringProperty::getPropertyValue( const Reference< beans::XPropertySet >& xInnerPropertySet ) const - throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) -{ - Any aRet( getPropertyDefault( Reference< beans::XPropertyState >( xInnerPropertySet, uno::UNO_QUERY ) ) ); - Reference< chart2::XTitle > xTitle(xInnerPropertySet,uno::UNO_QUERY); - if(xTitle.is()) - { - Sequence< Reference< chart2::XFormattedString > > aStrings( xTitle->getText()); - - ::rtl::OUStringBuffer aBuf; - for( sal_Int32 i = 0; i < aStrings.getLength(); ++i ) - { - aBuf.append( aStrings[ i ]->getString()); - } - aRet <<= aBuf.makeStringAndClear(); - } - return aRet; -} -Any WrappedTitleStringProperty::getPropertyDefault( const Reference< beans::XPropertyState >& /*xInnerPropertyState*/ ) const - throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) -{ - return uno::makeAny( rtl::OUString() );//default title is a empty String -} - -//----------------------------------------------------------------------------- - -class WrappedStackedTextProperty : public WrappedProperty -{ -public: - WrappedStackedTextProperty(); - virtual ~WrappedStackedTextProperty(); -}; - -WrappedStackedTextProperty::WrappedStackedTextProperty() - : ::chart::WrappedProperty( C2U( "StackedText" ), C2U( "StackCharacters" ) ) -{ -} -WrappedStackedTextProperty::~WrappedStackedTextProperty() -{ -} - -}// end namespace chart - -//----------------------------------------------------------------------------- - -namespace -{ -static const OUString lcl_aServiceName( - RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.chart.Title" )); - -enum -{ - PROP_TITLE_STRING, - PROP_TITLE_TEXT_ROTATION, - PROP_TITLE_TEXT_STACKED -}; - -void lcl_AddPropertiesToVector( - ::std::vector< Property > & rOutProperties ) -{ - rOutProperties.push_back( - Property( C2U( "String" ), - PROP_TITLE_STRING, - ::getCppuType( reinterpret_cast< const ::rtl::OUString * >(0)), - beans::PropertyAttribute::BOUND - | beans::PropertyAttribute::MAYBEVOID )); - - rOutProperties.push_back( - Property( C2U( "TextRotation" ), - PROP_TITLE_TEXT_ROTATION, - ::getCppuType( reinterpret_cast< const sal_Int32 * >(0)), - beans::PropertyAttribute::BOUND - | beans::PropertyAttribute::MAYBEDEFAULT )); - rOutProperties.push_back( - Property( C2U( "StackedText" ), - PROP_TITLE_TEXT_STACKED, - ::getBooleanCppuType(), - beans::PropertyAttribute::BOUND - | beans::PropertyAttribute::MAYBEDEFAULT )); -} - -struct StaticTitleWrapperPropertyArray_Initializer -{ - Sequence< Property >* operator()() - { - static Sequence< Property > aPropSeq( lcl_GetPropertySequence() ); - return &aPropSeq; - } - -private: - Sequence< Property > lcl_GetPropertySequence() - { - ::std::vector< beans::Property > aProperties; - lcl_AddPropertiesToVector( aProperties ); - ::chart::CharacterProperties::AddPropertiesToVector( aProperties ); - ::chart::LineProperties::AddPropertiesToVector( aProperties ); - ::chart::FillProperties::AddPropertiesToVector( aProperties ); - ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties ); - ::chart::wrapper::WrappedAutomaticPositionProperties::addProperties( aProperties ); - ::chart::wrapper::WrappedScaleTextProperties::addProperties( aProperties ); - - ::std::sort( aProperties.begin(), aProperties.end(), - ::chart::PropertyNameLess() ); - - return ::chart::ContainerHelper::ContainerToSequence( aProperties ); - } -}; - -struct StaticTitleWrapperPropertyArray : public rtl::StaticAggregate< Sequence< Property >, StaticTitleWrapperPropertyArray_Initializer > -{ -}; - -} // anonymous namespace - -// -------------------------------------------------------------------------------- - -namespace chart -{ -namespace wrapper -{ - -TitleWrapper::TitleWrapper( ::chart::TitleHelper::eTitleType eTitleType, - ::boost::shared_ptr< Chart2ModelContact > spChart2ModelContact ) : - m_spChart2ModelContact( spChart2ModelContact ), - m_aEventListenerContainer( m_aMutex ), - m_eTitleType(eTitleType) -{ - ControllerLockGuard aCtrlLockGuard( Reference< frame::XModel >( m_spChart2ModelContact->getChart2Document(), uno::UNO_QUERY )); - if( !getTitleObject().is() ) //#i83831# create an empty title at the model, thus references to properties can be mapped mapped correctly - TitleHelper::createTitle( m_eTitleType, OUString(), m_spChart2ModelContact->getChartModel(), m_spChart2ModelContact->m_xContext ); -} - -TitleWrapper::~TitleWrapper() -{ -} - -// ____ XShape ____ -awt::Point SAL_CALL TitleWrapper::getPosition() - throw (uno::RuntimeException) -{ - return m_spChart2ModelContact->GetTitlePosition( this->getTitleObject() ); -} - -void SAL_CALL TitleWrapper::setPosition( const awt::Point& aPosition ) - throw (uno::RuntimeException) -{ - Reference< beans::XPropertySet > xPropertySet( this->getInnerPropertySet() ); - if(xPropertySet.is()) - { - awt::Size aPageSize( m_spChart2ModelContact->GetPageSize() ); - - chart2::RelativePosition aRelativePosition; - aRelativePosition.Anchor = drawing::Alignment_TOP_LEFT; - aRelativePosition.Primary = double(aPosition.X)/double(aPageSize.Width); - aRelativePosition.Secondary = double(aPosition.Y)/double(aPageSize.Height); - xPropertySet->setPropertyValue( C2U( "RelativePosition" ), uno::makeAny(aRelativePosition) ); - } -} - -awt::Size SAL_CALL TitleWrapper::getSize() - throw (uno::RuntimeException) -{ - return m_spChart2ModelContact->GetTitleSize( this->getTitleObject() ); -} - -void SAL_CALL TitleWrapper::setSize( const awt::Size& /*aSize*/ ) - throw (beans::PropertyVetoException, - uno::RuntimeException) -{ - OSL_FAIL( "trying to set size of title" ); -} - -// ____ XShapeDescriptor (base of XShape) ____ -OUString SAL_CALL TitleWrapper::getShapeType() - throw (uno::RuntimeException) -{ - return C2U( "com.sun.star.chart.ChartTitle" ); -} - -// ____ XComponent ____ -void SAL_CALL TitleWrapper::dispose() - throw (uno::RuntimeException) -{ - Reference< uno::XInterface > xSource( static_cast< ::cppu::OWeakObject* >( this ) ); - m_aEventListenerContainer.disposeAndClear( lang::EventObject( xSource ) ); - - MutexGuard aGuard( GetMutex()); - clearWrappedPropertySet(); -} - -void SAL_CALL TitleWrapper::addEventListener( - const Reference< lang::XEventListener >& xListener ) - throw (uno::RuntimeException) -{ - m_aEventListenerContainer.addInterface( xListener ); -} - -void SAL_CALL TitleWrapper::removeEventListener( - const Reference< lang::XEventListener >& aListener ) - throw (uno::RuntimeException) -{ - m_aEventListenerContainer.removeInterface( aListener ); -} - -// ================================================================================ - -Reference< beans::XPropertySet > TitleWrapper::getFirstCharacterPropertySet() -{ - Reference< beans::XPropertySet > xProp; - - Reference< chart2::XTitle > xTitle( this->getTitleObject() ); - if( xTitle.is()) - { - Sequence< Reference< chart2::XFormattedString > > aStrings( xTitle->getText()); - if( aStrings.getLength() > 0 ) - xProp.set( aStrings[0], uno::UNO_QUERY ); - } - - return xProp; -} - -void TitleWrapper::getFastCharacterPropertyValue( sal_Int32 nHandle, Any& rValue ) -{ - OSL_ASSERT( FAST_PROPERTY_ID_START_CHAR_PROP <= nHandle && - nHandle < CharacterProperties::FAST_PROPERTY_ID_END_CHAR_PROP ); - - Reference< beans::XPropertySet > xProp( getFirstCharacterPropertySet(), uno::UNO_QUERY ); - Reference< beans::XFastPropertySet > xFastProp( xProp, uno::UNO_QUERY ); - if(xProp.is()) - { - const WrappedProperty* pWrappedProperty = getWrappedProperty( nHandle ); - if( pWrappedProperty ) - { - rValue = pWrappedProperty->getPropertyValue( xProp ); - } - else if( xFastProp.is() ) - { - rValue = xFastProp->getFastPropertyValue( nHandle ); - } - } - -} - -void TitleWrapper::setFastCharacterPropertyValue( - sal_Int32 nHandle, const Any& rValue ) throw (uno::Exception) -{ - OSL_ASSERT( FAST_PROPERTY_ID_START_CHAR_PROP <= nHandle && - nHandle < CharacterProperties::FAST_PROPERTY_ID_END_CHAR_PROP ); - - Reference< chart2::XTitle > xTitle( this->getTitleObject() ); - if( xTitle.is()) - { - Sequence< Reference< chart2::XFormattedString > > aStrings( xTitle->getText()); - const WrappedProperty* pWrappedProperty = getWrappedProperty( nHandle ); - - for( sal_Int32 i = 0; i < aStrings.getLength(); ++i ) - { - Reference< beans::XFastPropertySet > xFastPropertySet( aStrings[ i ], uno::UNO_QUERY ); - Reference< beans::XPropertySet > xPropSet( xFastPropertySet, uno::UNO_QUERY ); - - if( pWrappedProperty ) - pWrappedProperty->setPropertyValue( rValue, xPropSet ); - else if( xFastPropertySet.is() ) - xFastPropertySet->setFastPropertyValue( nHandle, rValue ); - } - } -} - -// ================================================================================ -// WrappedPropertySet - -void SAL_CALL TitleWrapper::setPropertyValue( const OUString& rPropertyName, const Any& rValue ) - throw (beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException) -{ - sal_Int32 nHandle = getInfoHelper().getHandleByName( rPropertyName ); - if( CharacterProperties::IsCharacterPropertyHandle( nHandle ) ) - { - setFastCharacterPropertyValue( nHandle, rValue ); - } - else - WrappedPropertySet::setPropertyValue( rPropertyName, rValue ); -} - -Any SAL_CALL TitleWrapper::getPropertyValue( const OUString& rPropertyName ) - throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) -{ - Any aRet; - sal_Int32 nHandle = getInfoHelper().getHandleByName( rPropertyName ); - if( CharacterProperties::IsCharacterPropertyHandle( nHandle ) ) - getFastCharacterPropertyValue( nHandle, aRet ); - else - aRet = WrappedPropertySet::getPropertyValue( rPropertyName ); - return aRet; -} - -beans::PropertyState SAL_CALL TitleWrapper::getPropertyState( const OUString& rPropertyName ) - throw (beans::UnknownPropertyException, uno::RuntimeException) -{ - beans::PropertyState aState( beans::PropertyState_DIRECT_VALUE ); - - sal_Int32 nHandle = getInfoHelper().getHandleByName( rPropertyName ); - if( CharacterProperties::IsCharacterPropertyHandle( nHandle ) ) - { - Reference< beans::XPropertyState > xPropState( getFirstCharacterPropertySet(), uno::UNO_QUERY ); - if( xPropState.is() ) - { - const WrappedProperty* pWrappedProperty = getWrappedProperty( rPropertyName ); - if( pWrappedProperty ) - aState = pWrappedProperty->getPropertyState( xPropState ); - else - aState = xPropState->getPropertyState( rPropertyName ); - } - } - else - aState = WrappedPropertySet::getPropertyState( rPropertyName ); - - return aState; -} -void SAL_CALL TitleWrapper::setPropertyToDefault( const OUString& rPropertyName ) - throw (beans::UnknownPropertyException, uno::RuntimeException) -{ - sal_Int32 nHandle = getInfoHelper().getHandleByName( rPropertyName ); - if( CharacterProperties::IsCharacterPropertyHandle( nHandle ) ) - { - Any aDefault = getPropertyDefault( rPropertyName ); - setFastCharacterPropertyValue( nHandle, aDefault ); - } - else - WrappedPropertySet::setPropertyToDefault( rPropertyName ); -} -Any SAL_CALL TitleWrapper::getPropertyDefault( const OUString& rPropertyName ) - throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) -{ - Any aRet; - - sal_Int32 nHandle = getInfoHelper().getHandleByName( rPropertyName ); - if( CharacterProperties::IsCharacterPropertyHandle( nHandle ) ) - { - Reference< beans::XPropertyState > xPropState( getFirstCharacterPropertySet(), uno::UNO_QUERY ); - if( xPropState.is() ) - { - const WrappedProperty* pWrappedProperty = getWrappedProperty( rPropertyName ); - if( pWrappedProperty ) - aRet = pWrappedProperty->getPropertyDefault(xPropState); - else - aRet = xPropState->getPropertyDefault( rPropertyName ); - } - } - else - aRet = WrappedPropertySet::getPropertyDefault( rPropertyName ); - - return aRet; -} - -void SAL_CALL TitleWrapper::addPropertyChangeListener( const OUString& rPropertyName, const Reference< beans::XPropertyChangeListener >& xListener ) - throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) -{ - sal_Int32 nHandle = getInfoHelper().getHandleByName( rPropertyName ); - if( CharacterProperties::IsCharacterPropertyHandle( nHandle ) ) - { - Reference< beans::XPropertySet > xPropSet( getFirstCharacterPropertySet(), uno::UNO_QUERY ); - if( xPropSet.is() ) - xPropSet->addPropertyChangeListener( rPropertyName, xListener ); - } - else - WrappedPropertySet::addPropertyChangeListener( rPropertyName, xListener ); -} -void SAL_CALL TitleWrapper::removePropertyChangeListener( const OUString& rPropertyName, const Reference< beans::XPropertyChangeListener >& xListener ) - throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) -{ - sal_Int32 nHandle = getInfoHelper().getHandleByName( rPropertyName ); - if( CharacterProperties::IsCharacterPropertyHandle( nHandle ) ) - { - Reference< beans::XPropertySet > xPropSet( getFirstCharacterPropertySet(), uno::UNO_QUERY ); - if( xPropSet.is() ) - xPropSet->removePropertyChangeListener( rPropertyName, xListener ); - } - else - WrappedPropertySet::removePropertyChangeListener( rPropertyName, xListener ); -} - -// ================================================================================ - -//ReferenceSizePropertyProvider -void TitleWrapper::updateReferenceSize() -{ - Reference< beans::XPropertySet > xProp( this->getTitleObject(), uno::UNO_QUERY ); - if( xProp.is() ) - { - if( xProp->getPropertyValue( C2U("ReferencePageSize") ).hasValue() ) - xProp->setPropertyValue( C2U("ReferencePageSize"), uno::makeAny( - m_spChart2ModelContact->GetPageSize() )); - } -} -Any TitleWrapper::getReferenceSize() -{ - Any aRet; - Reference< beans::XPropertySet > xProp( this->getTitleObject(), uno::UNO_QUERY ); - if( xProp.is() ) - aRet = xProp->getPropertyValue( C2U("ReferencePageSize") ); - - return aRet; -} -awt::Size TitleWrapper::getCurrentSizeForReference() -{ - return m_spChart2ModelContact->GetPageSize(); -} - -// ================================================================================ - -Reference< chart2::XTitle > TitleWrapper::getTitleObject() -{ - return TitleHelper::getTitle( m_eTitleType, m_spChart2ModelContact->getChartModel() ); -} - -// WrappedPropertySet - -Reference< beans::XPropertySet > TitleWrapper::getInnerPropertySet() -{ - return Reference< beans::XPropertySet >( this->getTitleObject(), uno::UNO_QUERY ); -} - -const Sequence< beans::Property >& TitleWrapper::getPropertySequence() -{ - return *StaticTitleWrapperPropertyArray::get(); -} - -const std::vector< WrappedProperty* > TitleWrapper::createWrappedProperties() -{ - ::std::vector< ::chart::WrappedProperty* > aWrappedProperties; - - aWrappedProperties.push_back( new WrappedTitleStringProperty( m_spChart2ModelContact->m_xContext ) ); - aWrappedProperties.push_back( new WrappedTextRotationProperty( m_eTitleType==TitleHelper::Y_AXIS_TITLE || m_eTitleType==TitleHelper::X_AXIS_TITLE ) ); - aWrappedProperties.push_back( new WrappedStackedTextProperty() ); - WrappedCharacterHeightProperty::addWrappedProperties( aWrappedProperties, this ); - WrappedAutomaticPositionProperties::addWrappedProperties( aWrappedProperties ); - WrappedScaleTextProperties::addWrappedProperties( aWrappedProperties, m_spChart2ModelContact ); - - return aWrappedProperties; -} - -// ================================================================================ - -Sequence< OUString > TitleWrapper::getSupportedServiceNames_Static() -{ - Sequence< OUString > aServices( 4 ); - aServices[ 0 ] = C2U( "com.sun.star.chart.ChartTitle" ); - aServices[ 1 ] = C2U( "com.sun.star.drawing.Shape" ); - aServices[ 2 ] = C2U( "com.sun.star.xml.UserDefinedAttributeSupplier" ); - aServices[ 3 ] = C2U( "com.sun.star.style.CharacterProperties" ); - - return aServices; -} - -// implement XServiceInfo methods basing upon getSupportedServiceNames_Static -APPHELPER_XSERVICEINFO_IMPL( TitleWrapper, lcl_aServiceName ); - -} // namespace wrapper -} // namespace chart - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |