diff options
Diffstat (limited to 'sc/source/ui/unoobj/notesuno.cxx')
-rw-r--r-- | sc/source/ui/unoobj/notesuno.cxx | 735 |
1 files changed, 735 insertions, 0 deletions
diff --git a/sc/source/ui/unoobj/notesuno.cxx b/sc/source/ui/unoobj/notesuno.cxx new file mode 100644 index 000000000000..7860ba8fbde6 --- /dev/null +++ b/sc/source/ui/unoobj/notesuno.cxx @@ -0,0 +1,735 @@ +/* -*- 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_sc.hxx" +#include <svl/smplhint.hxx> + + +#include "rangelst.hxx" +#include <editeng/unotext.hxx> +#include <svx/svdpool.hxx> +#include <svx/svdobj.hxx> +#include <vcl/svapp.hxx> +#include "notesuno.hxx" +#include "textuno.hxx" +#include "cellsuno.hxx" // getParent +#include "docsh.hxx" +#include "docfunc.hxx" +#include "hints.hxx" +#include "editsrc.hxx" +#include "miscuno.hxx" + +// setVisible: +#include <svx/svdundo.hxx> +#include "drwlayer.hxx" +#include "detfunc.hxx" +#include "undocell.hxx" +#include "userdat.hxx" +#include <editeng/outlobj.hxx> +#include <svx/unoshape.hxx> +#include <svx/svdocapt.hxx> +#include <svx/svditer.hxx> +#include <svx/svdpage.hxx> +#include <com/sun/star/drawing/XShapeDescriptor.hpp> +#include <editeng/unoprnms.hxx> + +using namespace com::sun::star; + +//------------------------------------------------------------------------ + +const SvxItemPropertySet* lcl_GetAnnotationPropertySet() +{ + static SfxItemPropertyMapEntry aAnnotationPropertyMap_Impl[] = + { + SVX_UNOEDIT_CHAR_PROPERTIES, + SVX_UNOEDIT_FONT_PROPERTIES, + SVX_UNOEDIT_PARA_PROPERTIES, + SVX_UNOEDIT_NUMBERING_PROPERTIE, // for completeness of service ParagraphProperties + {0,0,0,0,0,0} + }; + static SvxItemPropertySet aAnnotationPropertySet_Impl( aAnnotationPropertyMap_Impl, SdrObject::GetGlobalDrawObjectItemPool() ); + return &aAnnotationPropertySet_Impl; +} + +//------------------------------------------------------------------------ + +SC_SIMPLE_SERVICE_INFO( ScAnnotationObj, "ScAnnotationObj", "com.sun.star.sheet.CellAnnotation" ) +SC_SIMPLE_SERVICE_INFO( ScAnnotationShapeObj, "ScAnnotationShapeObj", "com.sun.star.sheet.CellAnnotationShape" ) + +//------------------------------------------------------------------------ + +ScAnnotationObj::ScAnnotationObj(ScDocShell* pDocSh, const ScAddress& rPos) : + pDocShell( pDocSh ), + aCellPos( rPos ), + pUnoText( NULL ) +{ + pDocShell->GetDocument()->AddUnoObject(*this); + + // pUnoText is allocated on demand (GetUnoText) + // can't be aggregated because getString/setString is handled here +} + +ScAnnotationObj::~ScAnnotationObj() +{ + if (pDocShell) + pDocShell->GetDocument()->RemoveUnoObject(*this); + + if (pUnoText) + pUnoText->release(); +} + +void ScAnnotationObj::Notify( SfxBroadcaster&, const SfxHint& rHint ) +{ + if ( rHint.ISA( ScUpdateRefHint ) ) + { +// const ScUpdateRefHint& rRef = (const ScUpdateRefHint&)rHint; + + //! Ref-Update + } + else if ( rHint.ISA( SfxSimpleHint ) && + ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING ) + { + pDocShell = NULL; // ungueltig geworden + } +} + + +// XChild + +uno::Reference<uno::XInterface> SAL_CALL ScAnnotationObj::getParent() throw(uno::RuntimeException) +{ + SolarMutexGuard aGuard; + + // Parent der Notiz ist die zugehoerige Zelle + //! existierendes Objekt finden und zurueckgeben ??? + + if (pDocShell) + return (cppu::OWeakObject*)new ScCellObj( pDocShell, aCellPos ); + + return NULL; +} + +void SAL_CALL ScAnnotationObj::setParent( const uno::Reference<uno::XInterface>& /* Parent */ ) + throw(lang::NoSupportException, uno::RuntimeException) +{ + // hamma nich + //! Exception oder so ??! +} + +// XSimpleText + +uno::Reference<text::XTextCursor> SAL_CALL ScAnnotationObj::createTextCursor() + throw(uno::RuntimeException) +{ + SolarMutexGuard aGuard; + // Notizen brauchen keine Extrawurst + return GetUnoText().createTextCursor(); +} + +uno::Reference<text::XTextCursor> SAL_CALL ScAnnotationObj::createTextCursorByRange( + const uno::Reference<text::XTextRange>& aTextPosition ) + throw(uno::RuntimeException) +{ + SolarMutexGuard aGuard; + // Notizen brauchen keine Extrawurst + return GetUnoText().createTextCursorByRange(aTextPosition); +} + +rtl::OUString SAL_CALL ScAnnotationObj::getString() throw(uno::RuntimeException) +{ + SolarMutexGuard aGuard; + return GetUnoText().getString(); +} + +void SAL_CALL ScAnnotationObj::setString( const rtl::OUString& aText ) throw(uno::RuntimeException) +{ + SolarMutexGuard aGuard; + GetUnoText().setString(aText); +} + +void SAL_CALL ScAnnotationObj::insertString( const uno::Reference<text::XTextRange>& xRange, + const rtl::OUString& aString, sal_Bool bAbsorb ) + throw(uno::RuntimeException) +{ + SolarMutexGuard aGuard; + GetUnoText().insertString( xRange, aString, bAbsorb ); +} + +void SAL_CALL ScAnnotationObj::insertControlCharacter( const uno::Reference<text::XTextRange>& xRange, + sal_Int16 nControlCharacter, sal_Bool bAbsorb ) + throw(lang::IllegalArgumentException, uno::RuntimeException) +{ + SolarMutexGuard aGuard; + GetUnoText().insertControlCharacter( xRange, nControlCharacter, bAbsorb ); +} + +uno::Reference<text::XText> SAL_CALL ScAnnotationObj::getText() throw(uno::RuntimeException) +{ + SolarMutexGuard aGuard; + return GetUnoText().getText(); +} + +uno::Reference<text::XTextRange> SAL_CALL ScAnnotationObj::getStart() throw(uno::RuntimeException) +{ + SolarMutexGuard aGuard; + return GetUnoText().getStart(); +} + +uno::Reference<text::XTextRange> SAL_CALL ScAnnotationObj::getEnd() throw(uno::RuntimeException) +{ + SolarMutexGuard aGuard; + return GetUnoText().getEnd(); +} + +// XSheetAnnotation + +table::CellAddress SAL_CALL ScAnnotationObj::getPosition() throw(uno::RuntimeException) +{ + SolarMutexGuard aGuard; + table::CellAddress aAdr; + aAdr.Sheet = aCellPos.Tab(); + aAdr.Column = aCellPos.Col(); + aAdr.Row = aCellPos.Row(); + return aAdr; +} + +rtl::OUString SAL_CALL ScAnnotationObj::getAuthor() throw(uno::RuntimeException) +{ + SolarMutexGuard aGuard; + const ScPostIt* pNote = ImplGetNote(); + return pNote ? pNote->GetAuthor() : rtl::OUString(); +} + +rtl::OUString SAL_CALL ScAnnotationObj::getDate() throw(uno::RuntimeException) +{ + SolarMutexGuard aGuard; + const ScPostIt* pNote = ImplGetNote(); + return pNote ? pNote->GetDate() : rtl::OUString(); +} + +sal_Bool SAL_CALL ScAnnotationObj::getIsVisible() throw(uno::RuntimeException) +{ + SolarMutexGuard aGuard; + const ScPostIt* pNote = ImplGetNote(); + return pNote && pNote->IsCaptionShown(); +} + +void SAL_CALL ScAnnotationObj::setIsVisible( sal_Bool bIsVisible ) throw(uno::RuntimeException) +{ + SolarMutexGuard aGuard; + // show/hide note with undo action + if( pDocShell ) + pDocShell->GetDocFunc().ShowNote( aCellPos, bIsVisible ); +} + +// XSheetAnnotationShapeSupplier +uno::Reference < drawing::XShape > SAL_CALL ScAnnotationObj::getAnnotationShape() + throw(::com::sun::star::uno::RuntimeException) +{ + SolarMutexGuard aGuard; + return new ScAnnotationShapeObj(pDocShell, aCellPos); +} + +SvxUnoText& ScAnnotationObj::GetUnoText() +{ + if (!pUnoText) + { + ScAnnotationEditSource aEditSource( pDocShell, aCellPos ); + pUnoText = new SvxUnoText( &aEditSource, lcl_GetAnnotationPropertySet(), + uno::Reference<text::XText>() ); + pUnoText->acquire(); + } + return *pUnoText; +} + +const ScPostIt* ScAnnotationObj::ImplGetNote() const +{ + return pDocShell ? pDocShell->GetDocument()->GetNote( aCellPos ) : 0; +} +//------------------------------------------------------------------------ + +ScAnnotationShapeObj::ScAnnotationShapeObj(ScDocShell* pDocSh, const ScAddress& rPos) : + pDocShell( pDocSh ), + aCellPos( rPos ), + pUnoText( NULL ) +{ + pDocShell->GetDocument()->AddUnoObject(*this); + + // pUnoText is allocated on demand (GetUnoText) + // can't be aggregated because getString/setString is handled here +} + +SvxUnoText& ScAnnotationShapeObj::GetUnoText() +{ + if (!pUnoText) + { + ScAnnotationEditSource aEditSource( pDocShell, aCellPos ); + pUnoText = new SvxUnoText( &aEditSource, lcl_GetAnnotationPropertySet(), + uno::Reference<text::XText>() ); + pUnoText->acquire(); + } + return *pUnoText; +} + +uno::Reference < drawing::XShape > ScAnnotationShapeObj::GetXShape() +{ + if (!xShape.is()) + if( ScPostIt* pNote = pDocShell->GetDocument()->GetNote( aCellPos ) ) + if( SdrObject* pCaption = pNote->GetOrCreateCaption( aCellPos ) ) + xShape.set( pCaption->getUnoShape(), uno::UNO_QUERY ); + return xShape; +} + +ScAnnotationShapeObj::~ScAnnotationShapeObj() +{ + if (pDocShell) + pDocShell->GetDocument()->RemoveUnoObject(*this); + if (pUnoText) + pUnoText->release(); +} + +void ScAnnotationShapeObj::Notify( SfxBroadcaster&, const SfxHint& rHint ) +{ + if ( rHint.ISA( ScUpdateRefHint ) ) + { +// const ScUpdateRefHint& rRef = (const ScUpdateRefHint&)rHint; + + //! Ref-Update + } + else if ( rHint.ISA( SfxSimpleHint ) && + ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING ) + { + pDocShell = NULL; // ungueltig geworden + } +} + + +// XChild + +uno::Reference<uno::XInterface> SAL_CALL ScAnnotationShapeObj::getParent() throw(uno::RuntimeException) +{ + SolarMutexGuard aGuard; + + // Parent der Notiz ist die zugehoerige Zelle + //! existierendes Objekt finden und zurueckgeben ??? + + if (pDocShell) + return (cppu::OWeakObject*)new ScCellObj( pDocShell, aCellPos ); + + return NULL; +} + +void SAL_CALL ScAnnotationShapeObj::setParent( const uno::Reference<uno::XInterface>& /* Parent */ ) + throw(lang::NoSupportException, uno::RuntimeException) +{ + // hamma nich + //! Exception oder so ??! +} + +// XElementAccess +uno::Type SAL_CALL ScAnnotationShapeObj::getElementType( ) throw (uno::RuntimeException) +{ + SolarMutexGuard aGuard; + + return GetUnoText().getElementType(); +} + +sal_Bool SAL_CALL ScAnnotationShapeObj::hasElements( ) throw (uno::RuntimeException) +{ + SolarMutexGuard aGuard; + + return GetUnoText().hasElements(); +} + +// XEnumerationAccess +uno::Reference< container::XEnumeration > SAL_CALL ScAnnotationShapeObj::createEnumeration( ) throw (uno::RuntimeException) +{ + SolarMutexGuard aGuard; + + return GetUnoText().createEnumeration(); +} + +// XTextRangeMover +void SAL_CALL ScAnnotationShapeObj::moveTextRange( const uno::Reference< text::XTextRange >& xRange, sal_Int16 nParagraphs ) + throw (uno::RuntimeException) +{ + SolarMutexGuard aGuard; + + GetUnoText().moveTextRange( xRange, nParagraphs ); +} + +// XText +void SAL_CALL ScAnnotationShapeObj::insertTextContent( const uno::Reference< text::XTextRange >& xRange, + const uno::Reference< text::XTextContent >& xContent, sal_Bool bAbsorb ) + throw (lang::IllegalArgumentException, + uno::RuntimeException) +{ + SolarMutexGuard aGuard; + + GetUnoText().insertTextContent( xRange, xContent, bAbsorb ); +} + +void SAL_CALL ScAnnotationShapeObj::removeTextContent( const uno::Reference< text::XTextContent >& xContent ) + throw (container::NoSuchElementException, + uno::RuntimeException) +{ + SolarMutexGuard aGuard; + + GetUnoText().removeTextContent( xContent ); +} + +// XSimpleText + +uno::Reference<text::XTextCursor> SAL_CALL ScAnnotationShapeObj::createTextCursor() + throw(uno::RuntimeException) +{ + SolarMutexGuard aGuard; + // Notizen brauchen keine Extrawurst + return GetUnoText().createTextCursor(); +} + +uno::Reference<text::XTextCursor> SAL_CALL ScAnnotationShapeObj::createTextCursorByRange( + const uno::Reference<text::XTextRange>& aTextPosition ) + throw(uno::RuntimeException) +{ + SolarMutexGuard aGuard; + // Notizen brauchen keine Extrawurst + return GetUnoText().createTextCursorByRange(aTextPosition); +} + +rtl::OUString SAL_CALL ScAnnotationShapeObj::getString() throw(uno::RuntimeException) +{ + SolarMutexGuard aGuard; + return GetUnoText().getString(); +} + +void SAL_CALL ScAnnotationShapeObj::setString( const rtl::OUString& aText ) throw(uno::RuntimeException) +{ + SolarMutexGuard aGuard; + GetUnoText().setString(aText); +} + +void SAL_CALL ScAnnotationShapeObj::insertString( const uno::Reference<text::XTextRange>& xRange, + const rtl::OUString& aString, sal_Bool bAbsorb ) + throw(uno::RuntimeException) +{ + SolarMutexGuard aGuard; + GetUnoText().insertString( xRange, aString, bAbsorb ); +} + +void SAL_CALL ScAnnotationShapeObj::insertControlCharacter( const uno::Reference<text::XTextRange>& xRange, + sal_Int16 nControlCharacter, sal_Bool bAbsorb ) + throw(lang::IllegalArgumentException, uno::RuntimeException) +{ + SolarMutexGuard aGuard; + GetUnoText().insertControlCharacter( xRange, nControlCharacter, bAbsorb ); +} + +uno::Reference<text::XText> SAL_CALL ScAnnotationShapeObj::getText() throw(uno::RuntimeException) +{ + SolarMutexGuard aGuard; + return GetUnoText().getText(); +} + +uno::Reference<text::XTextRange> SAL_CALL ScAnnotationShapeObj::getStart() throw(uno::RuntimeException) +{ + SolarMutexGuard aGuard; + return GetUnoText().getStart(); +} + +uno::Reference<text::XTextRange> SAL_CALL ScAnnotationShapeObj::getEnd() throw(uno::RuntimeException) +{ + SolarMutexGuard aGuard; + return GetUnoText().getEnd(); +} + +// XShapeDescriptor +::rtl::OUString SAL_CALL ScAnnotationShapeObj::getShapeType( ) + throw (uno::RuntimeException) +{ + SolarMutexGuard aGuard; + uno::Reference < drawing::XShapeDescriptor > xDesc(GetXShape(), uno::UNO_QUERY); + if (xDesc.is()) + return xDesc->getShapeType(); + return rtl::OUString(); +} + +// XShape +awt::Point SAL_CALL ScAnnotationShapeObj::getPosition( ) + throw (uno::RuntimeException) +{ + SolarMutexGuard aGuard; + GetXShape(); + return xShape.is() ? xShape->getPosition() : awt::Point(); +} + +void SAL_CALL ScAnnotationShapeObj::setPosition( const awt::Point& aPosition ) + throw (uno::RuntimeException) +{ + SolarMutexGuard aGuard; + GetXShape(); + if( xShape.is() ) + xShape->setPosition(aPosition); +} + +awt::Size SAL_CALL ScAnnotationShapeObj::getSize( ) + throw (uno::RuntimeException) +{ + SolarMutexGuard aGuard; + GetXShape(); + return xShape.is() ? xShape->getSize() : awt::Size(); +} + +void SAL_CALL ScAnnotationShapeObj::setSize( const awt::Size& aSize ) + throw (beans::PropertyVetoException, uno::RuntimeException) +{ + SolarMutexGuard aGuard; + GetXShape(); + if( xShape.is() ) + xShape->setSize(aSize); +} + +// XPropertyState +beans::PropertyState SAL_CALL ScAnnotationShapeObj::getPropertyState( const rtl::OUString& PropertyName ) + throw (beans::UnknownPropertyException, + uno::RuntimeException) +{ + SolarMutexGuard aGuard; + uno::Reference < beans::XPropertyState > xState (GetXShape(), uno::UNO_QUERY); + if (xState.is()) + return xState->getPropertyState( PropertyName ); + return beans::PropertyState(); +} + +uno::Sequence< beans::PropertyState > SAL_CALL ScAnnotationShapeObj::getPropertyStates( + const uno::Sequence< rtl::OUString >& aPropertyName ) + throw (beans::UnknownPropertyException, + uno::RuntimeException) +{ + SolarMutexGuard aGuard; + uno::Reference < beans::XPropertyState > xState (GetXShape(), uno::UNO_QUERY); + if (xState.is()) + return xState->getPropertyStates( aPropertyName ); + return uno::Sequence< beans::PropertyState >(); +} + +void SAL_CALL ScAnnotationShapeObj::setPropertyToDefault( const ::rtl::OUString& PropertyName ) + throw (::com::sun::star::beans::UnknownPropertyException, + ::com::sun::star::uno::RuntimeException) +{ + SolarMutexGuard aGuard; + uno::Reference < beans::XPropertyState > xState (GetXShape(), uno::UNO_QUERY); + if (xState.is()) + xState->setPropertyToDefault( PropertyName ); +} + +uno::Any SAL_CALL ScAnnotationShapeObj::getPropertyDefault( const rtl::OUString& aPropertyName ) + throw (beans::UnknownPropertyException, + lang::WrappedTargetException, uno::RuntimeException) +{ + SolarMutexGuard aGuard; + uno::Reference < beans::XPropertyState > xState (GetXShape(), uno::UNO_QUERY); + if (xState.is()) + return xState->getPropertyDefault( aPropertyName ); + return uno::Any(); +} + +// XPropertySet +uno::Reference< beans::XPropertySetInfo > SAL_CALL ScAnnotationShapeObj::getPropertySetInfo( ) + throw (uno::RuntimeException) +{ + SolarMutexGuard aGuard; + uno::Reference < beans::XPropertySet > xProp (GetXShape(), uno::UNO_QUERY); + if (xProp.is()) + return xProp->getPropertySetInfo(); + return uno::Reference< beans::XPropertySetInfo >(); +} + +void SAL_CALL ScAnnotationShapeObj::setPropertyValue( const rtl::OUString& aPropertyName, const uno::Any& aValue ) + throw (beans::UnknownPropertyException, + beans::PropertyVetoException, + lang::IllegalArgumentException, + lang::WrappedTargetException, + uno::RuntimeException) +{ + SolarMutexGuard aGuard; + uno::Reference < beans::XPropertySet > xProp (GetXShape(), uno::UNO_QUERY); + if (xProp.is()) + xProp->setPropertyValue( aPropertyName, aValue ); +} + +uno::Any SAL_CALL ScAnnotationShapeObj::getPropertyValue( const rtl::OUString& PropertyName ) + throw (beans::UnknownPropertyException, + lang::WrappedTargetException, + uno::RuntimeException) +{ + SolarMutexGuard aGuard; + uno::Reference < beans::XPropertySet > xProp (GetXShape(), uno::UNO_QUERY); + if (xProp.is()) + return xProp->getPropertyValue( PropertyName ); + return uno::Any(); +} + +void SAL_CALL ScAnnotationShapeObj::addPropertyChangeListener( const rtl::OUString& aPropertyName, + const uno::Reference< beans::XPropertyChangeListener >& xListener ) + throw (beans::UnknownPropertyException, + lang::WrappedTargetException, + uno::RuntimeException) +{ + SolarMutexGuard aGuard; + uno::Reference < beans::XPropertySet > xProp (GetXShape(), uno::UNO_QUERY); + if (xProp.is()) + return xProp->addPropertyChangeListener( aPropertyName, xListener ); +} + +void SAL_CALL ScAnnotationShapeObj::removePropertyChangeListener( const rtl::OUString& aPropertyName, + const uno::Reference< beans::XPropertyChangeListener >& aListener ) + throw (beans::UnknownPropertyException, + lang::WrappedTargetException, + uno::RuntimeException) +{ + SolarMutexGuard aGuard; + uno::Reference < beans::XPropertySet > xProp (GetXShape(), uno::UNO_QUERY); + if (xProp.is()) + return xProp->removePropertyChangeListener( aPropertyName, aListener ); +} + +void SAL_CALL ScAnnotationShapeObj::addVetoableChangeListener( const rtl::OUString& PropertyName, + const uno::Reference< beans::XVetoableChangeListener >& aListener ) + throw (beans::UnknownPropertyException, + lang::WrappedTargetException, + uno::RuntimeException) +{ + SolarMutexGuard aGuard; + uno::Reference < beans::XPropertySet > xProp (GetXShape(), uno::UNO_QUERY); + if (xProp.is()) + return xProp->addVetoableChangeListener( PropertyName, aListener ); +} + +void SAL_CALL ScAnnotationShapeObj::removeVetoableChangeListener( const rtl::OUString& PropertyName, + const uno::Reference< beans::XVetoableChangeListener >& aListener ) + throw (beans::UnknownPropertyException, + lang::WrappedTargetException, + uno::RuntimeException) +{ + SolarMutexGuard aGuard; + uno::Reference < beans::XPropertySet > xProp (GetXShape(), uno::UNO_QUERY); + if (xProp.is()) + return xProp->removeVetoableChangeListener( PropertyName, aListener ); +} + + // XMultiPropertySet +void SAL_CALL ScAnnotationShapeObj::setPropertyValues( const uno::Sequence< rtl::OUString >& aPropertyNames, + const uno::Sequence< uno::Any >& aValues ) + throw (beans::PropertyVetoException, + lang::IllegalArgumentException, + lang::WrappedTargetException, + uno::RuntimeException) +{ + SolarMutexGuard aGuard; + uno::Reference < beans::XMultiPropertySet > xProp (GetXShape(), uno::UNO_QUERY); + if (xProp.is()) + xProp->setPropertyValues( aPropertyNames, aValues ); +} + +uno::Sequence< uno::Any > SAL_CALL ScAnnotationShapeObj::getPropertyValues( + const uno::Sequence< rtl::OUString >& aPropertyNames ) + throw (uno::RuntimeException) +{ + SolarMutexGuard aGuard; + uno::Reference < beans::XMultiPropertySet > xProp (GetXShape(), uno::UNO_QUERY); + if (xProp.is()) + return xProp->getPropertyValues( aPropertyNames ); + return uno::Sequence< uno::Any >(); +} + +void SAL_CALL ScAnnotationShapeObj::addPropertiesChangeListener( const uno::Sequence< rtl::OUString >& aPropertyNames, + const uno::Reference< beans::XPropertiesChangeListener >& xListener ) + throw (uno::RuntimeException) +{ + SolarMutexGuard aGuard; + uno::Reference < beans::XMultiPropertySet > xProp (GetXShape(), uno::UNO_QUERY); + if (xProp.is()) + xProp->addPropertiesChangeListener( aPropertyNames, xListener ); +} + +void SAL_CALL ScAnnotationShapeObj::removePropertiesChangeListener( const uno::Reference< beans::XPropertiesChangeListener >& xListener ) + throw (uno::RuntimeException) +{ + SolarMutexGuard aGuard; + uno::Reference < beans::XMultiPropertySet > xProp (GetXShape(), uno::UNO_QUERY); + if (xProp.is()) + xProp->removePropertiesChangeListener( xListener ); +} + +void SAL_CALL ScAnnotationShapeObj::firePropertiesChangeEvent( const uno::Sequence< rtl::OUString >& aPropertyNames, + const uno::Reference< beans::XPropertiesChangeListener >& xListener ) + throw (uno::RuntimeException) +{ + SolarMutexGuard aGuard; + uno::Reference < beans::XMultiPropertySet > xProp (GetXShape(), uno::UNO_QUERY); + if (xProp.is()) + xProp->firePropertiesChangeEvent( aPropertyNames, xListener ); +} + + // XComponent +void SAL_CALL ScAnnotationShapeObj::dispose( ) throw (uno::RuntimeException) +{ + SolarMutexGuard aGuard; + uno::Reference < lang::XComponent > xComp (GetXShape(), uno::UNO_QUERY); + if (xComp.is()) + xComp->dispose(); + if (xShape.is()) + xShape.clear(); +} + +void SAL_CALL ScAnnotationShapeObj::addEventListener( const uno::Reference< lang::XEventListener >& xListener ) + throw (uno::RuntimeException) +{ + SolarMutexGuard aGuard; + uno::Reference < lang::XComponent > xComp (GetXShape(), uno::UNO_QUERY); + if (xComp.is()) + xComp->addEventListener( xListener ); +} + +void SAL_CALL ScAnnotationShapeObj::removeEventListener( const uno::Reference< lang::XEventListener >& aListener ) + throw (uno::RuntimeException) +{ + SolarMutexGuard aGuard; + uno::Reference < lang::XComponent > xComp (GetXShape(), uno::UNO_QUERY); + if (xComp.is()) + xComp->removeEventListener( aListener ); +} + +//------------------------------------------------------------------------ + + + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |