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/source/doc/plugin.cxx | |
parent | 0a2d80f754cecc5075b2808e292360a8b13835fc (diff) |
sfx: Use constructor feature for PluginObject.
Change-Id: Id63d9e29905c63dddaf44f8eab5fdc5b670fc6bf
Diffstat (limited to 'sfx2/source/doc/plugin.cxx')
-rw-r--r-- | sfx2/source/doc/plugin.cxx | 95 |
1 files changed, 79 insertions, 16 deletions
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: */ |