diff options
author | Matúš Kukan <matus.kukan@collabora.com> | 2014-01-15 11:14:37 +0100 |
---|---|---|
committer | Matúš Kukan <matus.kukan@collabora.com> | 2014-01-15 15:11:50 +0100 |
commit | 3b5dedd93cd5a6d274a869ccfc7a636a1e4d1245 (patch) | |
tree | d9b419afdcd5665964f75d27d2f55cb8d2735861 /sfx2 | |
parent | 0a2d80f754cecc5075b2808e292360a8b13835fc (diff) |
sfx: Use constructor feature for PluginObject.
Change-Id: Id63d9e29905c63dddaf44f8eab5fdc5b670fc6bf
Diffstat (limited to 'sfx2')
-rw-r--r-- | sfx2/source/appl/appuno.cxx | 2 | ||||
-rw-r--r-- | sfx2/source/doc/plugin.cxx | 95 | ||||
-rw-r--r-- | sfx2/source/inc/plugin.hxx | 85 | ||||
-rw-r--r-- | sfx2/util/sfx.component | 3 |
4 files changed, 81 insertions, 104 deletions
diff --git a/sfx2/source/appl/appuno.cxx b/sfx2/source/appl/appuno.cxx index e5e4f50cb6d5..570b7a0dc650 100644 --- a/sfx2/source/appl/appuno.cxx +++ b/sfx2/source/appl/appuno.cxx @@ -30,7 +30,6 @@ #include "frmload.hxx" #include "iframe.hxx" #include "objshimp.hxx" -#include "plugin.hxx" #include <sfx2/app.hxx> #include <sfx2/brokenpackageint.hxx> #include <sfx2/dispatch.hxx> @@ -1812,7 +1811,6 @@ SFX2_DLLPUBLIC void* SAL_CALL sfx_component_getFactory( IF_NAME_CREATECOMPONENTFACTORY( TestMouseClickHandler ) #endif IF_NAME_CREATECOMPONENTFACTORY( OPackageStructureCreator ) - IF_NAME_CREATECOMPONENTFACTORY( ::sfx2::PluginObject ) IF_NAME_CREATECOMPONENTFACTORY( ::sfx2::IFrameObject ) IF_NAME_CREATECOMPONENTFACTORY( ::sfx2::OwnSubFilterService ) if ( ::comp_SfxDocumentMetaData::_getImplementationName().equals( 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 <sal/config.h> -#include "plugin.hxx" #include <com/sun/star/plugin/PluginManager.hpp> +#include <com/sun/star/plugin/XPlugin.hpp> #include <com/sun/star/plugin/XPluginManager.hpp> #include <com/sun/star/plugin/PluginMode.hpp> #include <com/sun/star/awt/XControl.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/frame/XSynchronousFrameLoader.hpp> +#include <com/sun/star/lang/XEventListener.hpp> +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <com/sun/star/util/XCloseable.hpp> #include <comphelper/processfactory.hxx> +#include <cppuhelper/implbase5.hxx> +#include <cppuhelper/supportsservice.hxx> +#include <rtl/ref.hxx> #include <rtl/ustring.hxx> -#include <toolkit/helper/vclunohelper.hxx> +#include <svl/itemprop.hxx> +#include <svl/ownlist.hxx> #include <svtools/miscopt.hxx> +#include <toolkit/helper/vclunohelper.hxx> #include <vcl/window.hxx> 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<OUString> 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<css::uno::Any> const &) +{ + rtl::Reference<PluginObject> x(new PluginObject()); + x->acquire(); + return static_cast<cppu::OWeakObject *>(x.get()); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sfx2/source/inc/plugin.hxx b/sfx2/source/inc/plugin.hxx deleted file mode 100644 index c304435e7a11..000000000000 --- a/sfx2/source/inc/plugin.hxx +++ /dev/null @@ -1,85 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -#ifndef INCLUDED_SFX2_SOURCE_INC_PLUGIN_HXX -#define INCLUDED_SFX2_SOURCE_INC_PLUGIN_HXX - -#include <com/sun/star/uno/Reference.hxx> -#include <com/sun/star/uno/Sequence.hxx> -#include <com/sun/star/util/XCloseable.hpp> -#include <com/sun/star/lang/XEventListener.hpp> -#include <com/sun/star/frame/XSynchronousFrameLoader.hpp> -#include <com/sun/star/beans/XPropertySet.hpp> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <com/sun/star/ui/dialogs/XExecutableDialog.hpp> -#include <com/sun/star/plugin/XPlugin.hpp> -#include <com/sun/star/lang/XInitialization.hpp> -#include <com/sun/star/embed/XEmbeddedObject.hpp> -#include <cppuhelper/implbase5.hxx> - -#include <rtl/ustring.hxx> -#include <svl/ownlist.hxx> -#include <svl/itemprop.hxx> - -#include <sfx2/sfxuno.hxx> - -namespace sfx2 -{ - -class PluginObject : public ::cppu::WeakImplHelper5 < - com::sun::star::util::XCloseable, - com::sun::star::lang::XEventListener, - com::sun::star::frame::XSynchronousFrameLoader, - com::sun::star::lang::XInitialization, - com::sun::star::beans::XPropertySet > -{ - com::sun::star::uno::Reference < com::sun::star::lang::XMultiServiceFactory > mxFact; - com::sun::star::uno::Reference< com::sun::star::plugin::XPlugin > mxPlugin; - com::sun::star::uno::Reference < com::sun::star::embed::XEmbeddedObject > mxObj; - SfxItemPropertyMap maPropMap; - SvCommandList maCmdList; - OUString maURL; - OUString maMimeType; - - PluginObject( const com::sun::star::uno::Reference < com::sun::star::lang::XMultiServiceFactory >& rFact ); - ~PluginObject(); - - virtual sal_Bool SAL_CALL load( const com::sun::star::uno::Sequence < com::sun::star::beans::PropertyValue >& lDescriptor, - const com::sun::star::uno::Reference < com::sun::star::frame::XFrame >& xFrame ) throw( com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL cancel() throw( com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL close( sal_Bool bDeliverOwnership ) throw( com::sun::star::util::CloseVetoException, com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL addCloseListener( const com::sun::star::uno::Reference < com::sun::star::util::XCloseListener >& xListener ) throw( com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL removeCloseListener( const com::sun::star::uno::Reference < com::sun::star::util::XCloseListener >& xListener ) throw( com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL disposing( const com::sun::star::lang::EventObject& aEvent ) throw (com::sun::star::uno::RuntimeException) ; - virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() throw( ::com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL addPropertyChangeListener(const OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener > & aListener) throw( ::com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL removePropertyChangeListener(const OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener > & aListener) throw( ::com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL addVetoableChangeListener(const OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener > & aListener) throw( ::com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL removeVetoableChangeListener(const OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener > & aListener) throw( ::com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); -public: - SFX_DECL_XSERVICEINFO -}; - -} -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sfx2/util/sfx.component b/sfx2/util/sfx.component index 2395b73d5d25..bd1acd1fe2f5 100644 --- a/sfx2/util/sfx.component +++ b/sfx2/util/sfx.component @@ -64,7 +64,8 @@ <implementation name="com.sun.star.comp.sfx2.IFrameObject"> <service name="com.sun.star.frame.SpecialEmbeddedObject"/> </implementation> - <implementation name="com.sun.star.comp.sfx2.PluginObject"> + <implementation name="com.sun.star.comp.sfx2.PluginObject" + constructor="com_sun_star_comp_sfx2_PluginObject_get_implementation"> <service name="com.sun.star.frame.SpecialEmbeddedObject"/> </implementation> <implementation name="com.sun.star.comp.sfx2.SfxMacroLoader" |