From 3b5dedd93cd5a6d274a869ccfc7a636a1e4d1245 Mon Sep 17 00:00:00 2001 From: Matúš Kukan Date: Wed, 15 Jan 2014 11:14:37 +0100 Subject: sfx: Use constructor feature for PluginObject. Change-Id: Id63d9e29905c63dddaf44f8eab5fdc5b670fc6bf --- sfx2/source/doc/plugin.cxx | 95 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 79 insertions(+), 16 deletions(-) (limited to 'sfx2/source/doc/plugin.cxx') diff --git a/sfx2/source/doc/plugin.cxx b/sfx2/source/doc/plugin.cxx index e8bc5746c5f3..86d4945251ff 100644 --- a/sfx2/source/doc/plugin.cxx +++ b/sfx2/source/doc/plugin.cxx @@ -17,23 +17,33 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include -#include "plugin.hxx" #include +#include #include #include #include +#include +#include +#include +#include +#include #include +#include +#include +#include #include -#include +#include +#include #include +#include #include using namespace ::com::sun::star; -namespace sfx2 -{ +namespace { class PluginWindow_Impl : public Window { @@ -70,23 +80,66 @@ const SfxItemPropertyMapEntry* lcl_GetPluginPropertyMap_Impl() return aPluginPropertyMap_Impl; } -SFX_IMPL_XSERVICEINFO( PluginObject, "com.sun.star.embed.SpecialEmbeddedObject", "com.sun.star.comp.sfx2.PluginObject" ) -SFX_IMPL_SINGLEFACTORY( PluginObject ); - -PluginObject::PluginObject( const uno::Reference < lang::XMultiServiceFactory >& rFact ) - : mxFact( rFact ) - , maPropMap( lcl_GetPluginPropertyMap_Impl() ) +class PluginObject : public ::cppu::WeakImplHelper5 < + css::util::XCloseable, + css::lang::XEventListener, + css::frame::XSynchronousFrameLoader, + css::beans::XPropertySet, + css::lang::XServiceInfo > { -} + css::uno::Reference< css::plugin::XPlugin > mxPlugin; + SfxItemPropertyMap maPropMap; + SvCommandList maCmdList; + OUString maURL; + OUString maMimeType; -PluginObject::~PluginObject() +public: + PluginObject(); + ~PluginObject(); + + virtual sal_Bool SAL_CALL load( const css::uno::Sequence < css::beans::PropertyValue >& lDescriptor, + const css::uno::Reference < css::frame::XFrame >& xFrame ) throw( css::uno::RuntimeException ); + virtual void SAL_CALL cancel() throw( css::uno::RuntimeException ); + virtual void SAL_CALL close( sal_Bool bDeliverOwnership ) throw( css::util::CloseVetoException, css::uno::RuntimeException ); + virtual void SAL_CALL addCloseListener( const css::uno::Reference < css::util::XCloseListener >& xListener ) throw( css::uno::RuntimeException ); + virtual void SAL_CALL removeCloseListener( const css::uno::Reference < css::util::XCloseListener >& xListener ) throw( css::uno::RuntimeException ); + virtual void SAL_CALL disposing( const css::lang::EventObject& aEvent ) throw (css::uno::RuntimeException) ; + virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() throw( css::uno::RuntimeException ); + virtual void SAL_CALL addPropertyChangeListener(const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener > & aListener) throw( css::uno::RuntimeException ); + virtual void SAL_CALL removePropertyChangeListener(const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener > & aListener) throw( css::uno::RuntimeException ); + virtual void SAL_CALL addVetoableChangeListener(const OUString& aPropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener > & aListener) throw( css::uno::RuntimeException ); + virtual void SAL_CALL removeVetoableChangeListener(const OUString& aPropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener > & aListener) throw( css::uno::RuntimeException ); + virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const css::uno::Any& aValue ) throw (css::beans::UnknownPropertyException, css::beans::PropertyVetoException, css::lang::IllegalArgumentException, css::lang::WrappedTargetException, css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName ) throw (css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException); + + virtual OUString SAL_CALL getImplementationName() + throw (css::uno::RuntimeException) + { + return OUString("com.sun.star.comp.sfx2.PluginObject"); + } + + virtual sal_Bool SAL_CALL supportsService(OUString const & ServiceName) + throw (css::uno::RuntimeException) + { + return cppu::supportsService(this, ServiceName); + } + + virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() + throw (css::uno::RuntimeException) + { + css::uno::Sequence< OUString > aSeq(1); + aSeq[0] = OUString("com.sun.star.frame.SpecialEmbeddedObject"); + return aSeq; + } +}; + +PluginObject::PluginObject() + : maPropMap( lcl_GetPluginPropertyMap_Impl() ) { } -void SAL_CALL PluginObject::initialize( const uno::Sequence< uno::Any >& aArguments ) throw ( uno::Exception, uno::RuntimeException ) +PluginObject::~PluginObject() { - if ( aArguments.getLength() ) - aArguments[0] >>= mxObj; } sal_Bool SAL_CALL PluginObject::load( @@ -94,7 +147,7 @@ sal_Bool SAL_CALL PluginObject::load( const uno::Reference < frame::XFrame >& xFrame ) throw( uno::RuntimeException ) { - uno::Reference< plugin::XPluginManager > xPMgr( plugin::PluginManager::create(comphelper::getComponentContext(mxFact)) ); + uno::Reference< plugin::XPluginManager > xPMgr( plugin::PluginManager::create(comphelper::getProcessComponentContext()) ); if ( SvtMiscOptions().IsPluginsEnabled() ) { @@ -253,4 +306,14 @@ void SAL_CALL PluginObject::removeVetoableChangeListener(const OUString&, const } +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL +com_sun_star_comp_sfx2_PluginObject_get_implementation( + css::uno::XComponentContext *, + css::uno::Sequence const &) +{ + rtl::Reference x(new PluginObject()); + x->acquire(); + return static_cast(x.get()); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit