summaryrefslogtreecommitdiff
path: root/sfx2
diff options
context:
space:
mode:
authorMatúš Kukan <matus.kukan@collabora.com>2014-01-15 17:16:15 +0100
committerMatúš Kukan <matus.kukan@collabora.com>2014-01-16 10:24:59 +0100
commitde74b8c58ac516fe5f083a88cbcb89fc3ccc5eef (patch)
treecb8e51ecfd5233f3b1156b0fa861299e3833300f /sfx2
parent2b30c5057800e39fb6129be4b175ee10bf5f0e5e (diff)
sfx: Use constructor feature for BackingComp.
Change-Id: Ia461b8315ddd07adcb5609aefa85385db17ebba4
Diffstat (limited to 'sfx2')
-rw-r--r--sfx2/inc/backingcomp.hxx148
-rw-r--r--sfx2/source/appl/appuno.cxx2
-rw-r--r--sfx2/source/dialog/backingcomp.cxx254
-rw-r--r--sfx2/util/sfx.component3
4 files changed, 114 insertions, 293 deletions
diff --git a/sfx2/inc/backingcomp.hxx b/sfx2/inc/backingcomp.hxx
deleted file mode 100644
index 7d1b38e46949..000000000000
--- a/sfx2/inc/backingcomp.hxx
+++ /dev/null
@@ -1,148 +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_INC_BACKINGCOMP_HXX
-#define INCLUDED_SFX2_INC_BACKINGCOMP_HXX
-
-#include <com/sun/star/lang/XTypeProvider.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/lang/XInitialization.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/lang/XSingleServiceFactory.hpp>
-#include <com/sun/star/awt/XWindow.hpp>
-#include <com/sun/star/awt/XKeyListener.hpp>
-#include <com/sun/star/uno/XComponentContext.hpp>
-
-#include <com/sun/star/frame/XFrame.hpp>
-#include <com/sun/star/frame/XDispatch.hpp>
-#include <com/sun/star/frame/XDispatchProvider.hpp>
-
-#include <com/sun/star/datatransfer/dnd/XDropTargetListener.hpp>
-#include <com/sun/star/lang/XEventListener.hpp>
-#include <com/sun/star/lang/XComponent.hpp>
-
-#include <cppuhelper/weak.hxx>
-
-//__________________________________________
-// definition
-
-//__________________________________________
-/**
- implements the backing component.
-
- This component is a special one, which doesn't provide a controller
- nor a model. It supports the following features:
- - Drag & Drop
- - Key Accelerators
- - Simple Menu
- - Progress Bar
- - Background
- */
-class BackingComp : public css::lang::XTypeProvider
- , public css::lang::XServiceInfo
- , public css::lang::XInitialization
- , public css::frame::XController // => XComponent
- , public css::awt::XKeyListener // => XEventListener
- , public css::frame::XDispatchProvider
- , public css::frame::XDispatch
- , public ::cppu::OWeakObject
-{
- //______________________________________
- // member
-
- private:
- /** the global uno service manager.
- Must be used to create own needed services. */
- css::uno::Reference< css::uno::XComponentContext > m_xContext;
-
- /** reference to the component window. */
- css::uno::Reference< css::awt::XWindow > m_xWindow;
-
- /** the owner frame of this component. */
- css::uno::Reference< css::frame::XFrame > m_xFrame;
-
- //______________________________________
- // interface
-
- public:
-
- BackingComp( const css::uno::Reference< css::uno::XComponentContext >& xContext );
- virtual ~BackingComp( );
-
- // XInterface
- virtual css::uno::Any SAL_CALL queryInterface( const css::uno::Type& aType ) throw(css::uno::RuntimeException);
- virtual void SAL_CALL acquire ( ) throw( );
- virtual void SAL_CALL release ( ) throw( );
-
- // XTypeProvide
- virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes () throw(css::uno::RuntimeException);
- virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw(css::uno::RuntimeException);
-
- // XServiceInfo
- virtual OUString SAL_CALL getImplementationName ( ) throw(css::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsService ( const OUString& sServiceName ) throw(css::uno::RuntimeException);
- virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) throw(css::uno::RuntimeException);
-
- // XInitialization
- virtual void SAL_CALL initialize( const css::uno::Sequence< css::uno::Any >& lArgs ) throw(css::uno::Exception, css::uno::RuntimeException);
-
- // XController
- virtual void SAL_CALL attachFrame ( const css::uno::Reference< css::frame::XFrame >& xFrame ) throw(css::uno::RuntimeException);
- virtual sal_Bool SAL_CALL attachModel ( const css::uno::Reference< css::frame::XModel >& xModel ) throw(css::uno::RuntimeException);
- virtual sal_Bool SAL_CALL suspend ( sal_Bool bSuspend ) throw(css::uno::RuntimeException);
- virtual css::uno::Any SAL_CALL getViewData ( ) throw(css::uno::RuntimeException);
- virtual void SAL_CALL restoreViewData( const css::uno::Any& aData ) throw(css::uno::RuntimeException);
- virtual css::uno::Reference< css::frame::XModel > SAL_CALL getModel ( ) throw(css::uno::RuntimeException);
- virtual css::uno::Reference< css::frame::XFrame > SAL_CALL getFrame ( ) throw(css::uno::RuntimeException);
-
- // XKeyListener
- virtual void SAL_CALL keyPressed ( const css::awt::KeyEvent& aEvent ) throw(css::uno::RuntimeException);
- virtual void SAL_CALL keyReleased( const css::awt::KeyEvent& aEvent ) throw(css::uno::RuntimeException);
-
- // XEventListener
- virtual void SAL_CALL disposing( const css::lang::EventObject& aEvent ) throw(css::uno::RuntimeException);
-
- // XComponent
- virtual void SAL_CALL dispose ( ) throw(css::uno::RuntimeException);
- virtual void SAL_CALL addEventListener ( const css::uno::Reference< css::lang::XEventListener >& xListener ) throw(css::uno::RuntimeException);
- virtual void SAL_CALL removeEventListener( const css::uno::Reference< css::lang::XEventListener >& xListener ) throw(css::uno::RuntimeException);
-
- // XDispatchProvider
- virtual css::uno::Reference< css::frame::XDispatch > SAL_CALL queryDispatch( const css::util::URL& aURL, const OUString& sTargetFrameName , sal_Int32 nSearchFlags ) throw( css::uno::RuntimeException );
- virtual css::uno::Sequence< css::uno::Reference< css::frame::XDispatch > > SAL_CALL queryDispatches( const css::uno::Sequence< css::frame::DispatchDescriptor >& lDescriptions ) throw( css::uno::RuntimeException );
-
- // XDispatch
- virtual void SAL_CALL dispatch( const css::util::URL& aURL, const css::uno::Sequence< css::beans::PropertyValue >& lArguments ) throw( css::uno::RuntimeException );
- virtual void SAL_CALL addStatusListener( const css::uno::Reference< css::frame::XStatusListener >& xListener, const css::util::URL& aURL ) throw( css::uno::RuntimeException );
- virtual void SAL_CALL removeStatusListener( const css::uno::Reference< css::frame::XStatusListener >& xListener, const css::util::URL& aURL ) throw( css::uno::RuntimeException );
-
- //______________________________________
- // helper
-
- public:
-
- static css::uno::Sequence< OUString > SAL_CALL impl_getStaticSupportedServiceNames( );
- static OUString SAL_CALL impl_getStaticImplementationName ( );
- static css::uno::Reference< css::uno::XInterface > SAL_CALL impl_createInstance ( const css::uno::Reference< css::lang::XMultiServiceFactory >& xSMGR ) throw( css::uno::Exception );
- static css::uno::Reference< css::lang::XSingleServiceFactory > SAL_CALL impl_createFactory ( const css::uno::Reference< css::lang::XMultiServiceFactory >& xSMGR );
-};
-
-#endif // INCLUDED_SFX2_INC_BACKINGCOMP_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sfx2/source/appl/appuno.cxx b/sfx2/source/appl/appuno.cxx
index 5bad955a2b7a..b47fb0b6ac7f 100644
--- a/sfx2/source/appl/appuno.cxx
+++ b/sfx2/source/appl/appuno.cxx
@@ -21,7 +21,6 @@
#pragma warning( disable : 4290 )
#endif
-#include "backingcomp.hxx"
#include "eventsupplier.hxx"
#include "fltoptint.hxx"
#include "objshimp.hxx"
@@ -1791,7 +1790,6 @@ SFX2_DLLPUBLIC void* SAL_CALL sfx_component_getFactory(
// !!! ATTENTION !!!
// Write no ";" at end of line and dont forget "else" ! (see macro)
//=============================================================================
- IF_NAME_CREATECOMPONENTFACTORY( BackingComp )
IF_NAME_CREATECOMPONENTFACTORY( SfxGlobalEvents_Impl )
#ifdef TEST_HANDLERS
IF_NAME_CREATECOMPONENTFACTORY( TestKeyHandler )
diff --git a/sfx2/source/dialog/backingcomp.cxx b/sfx2/source/dialog/backingcomp.cxx
index 5e357e3fd333..6052c96a1ba0 100644
--- a/sfx2/source/dialog/backingcomp.cxx
+++ b/sfx2/source/dialog/backingcomp.cxx
@@ -17,8 +17,6 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#include "backingcomp.hxx"
-
#include "backingwindow.hxx"
#include <helpid.hrc>
@@ -33,14 +31,23 @@
#include <com/sun/star/awt/KeyModifier.hpp>
#include <com/sun/star/frame/XLayoutManager.hpp>
#include <com/sun/star/util/URLTransformer.hpp>
-
-#include <comphelper/processfactory.hxx>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/awt/XWindow.hpp>
+#include <com/sun/star/awt/XKeyListener.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/frame/XFrame.hpp>
+#include <com/sun/star/frame/XDispatch.hpp>
+#include <com/sun/star/lang/XEventListener.hpp>
+#include <com/sun/star/lang/XComponent.hpp>
+
+#include <cppuhelper/supportsservice.hxx>
#include <cppuhelper/typeprovider.hxx>
-#include <cppuhelper/factory.hxx>
#include <toolkit/helper/vclunohelper.hxx>
#include <vcl/keycod.hxx>
#include <vcl/wrkwin.hxx>
#include <vcl/svapp.hxx>
+#include <rtl/ref.hxx>
#include <rtl/ustrbuf.hxx>
#include <svl/solar.hrc>
@@ -50,15 +57,96 @@
#include <unotools/bootstrap.hxx>
-const char SERVICENAME_FRAMECONTROLLER[] = "com.sun.star.frame.Controller";
-const char IMPLEMENTATIONNAME_STARTMODULE[] = "com.sun.star.comp.sfx2.BackingComp";
+
+namespace {
+
const char FRAME_PROPNAME_LAYOUTMANAGER[] = "LayoutManager";
const char HID_BACKINGWINDOW[] = "FWK_HID_BACKINGWINDOW";
const char SPECIALTARGET_MENUBAR[] = "_menubar";
-//_______________________________________________
-
-//_______________________________________________
+/**
+ implements the backing component.
+
+ This component is a special one, which doesn't provide a controller
+ nor a model. It supports the following features:
+ - Drag & Drop
+ - Key Accelerators
+ - Simple Menu
+ - Progress Bar
+ - Background
+ */
+class BackingComp : public css::lang::XTypeProvider
+ , public css::lang::XServiceInfo
+ , public css::lang::XInitialization
+ , public css::frame::XController // => XComponent
+ , public css::awt::XKeyListener // => XEventListener
+ , public css::frame::XDispatchProvider
+ , public css::frame::XDispatch
+ , public ::cppu::OWeakObject
+{
+private:
+ /** the global uno service manager.
+ Must be used to create own needed services. */
+ css::uno::Reference< css::uno::XComponentContext > m_xContext;
+
+ /** reference to the component window. */
+ css::uno::Reference< css::awt::XWindow > m_xWindow;
+
+ /** the owner frame of this component. */
+ css::uno::Reference< css::frame::XFrame > m_xFrame;
+
+public:
+
+ BackingComp( const css::uno::Reference< css::uno::XComponentContext >& xContext );
+ virtual ~BackingComp( );
+
+ // XInterface
+ virtual css::uno::Any SAL_CALL queryInterface( const css::uno::Type& aType ) throw(css::uno::RuntimeException);
+ virtual void SAL_CALL acquire ( ) throw( );
+ virtual void SAL_CALL release ( ) throw( );
+
+ // XTypeProvide
+ virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes () throw(css::uno::RuntimeException);
+ virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw(css::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual OUString SAL_CALL getImplementationName ( ) throw(css::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService ( const OUString& sServiceName ) throw(css::uno::RuntimeException);
+ virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) throw(css::uno::RuntimeException);
+
+ // XInitialization
+ virtual void SAL_CALL initialize( const css::uno::Sequence< css::uno::Any >& lArgs ) throw(css::uno::Exception, css::uno::RuntimeException);
+
+ // XController
+ virtual void SAL_CALL attachFrame( const css::uno::Reference< css::frame::XFrame >& xFrame ) throw(css::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL attachModel( const css::uno::Reference< css::frame::XModel >& xModel ) throw(css::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL suspend( sal_Bool bSuspend ) throw(css::uno::RuntimeException);
+ virtual css::uno::Any SAL_CALL getViewData() throw(css::uno::RuntimeException);
+ virtual void SAL_CALL restoreViewData( const css::uno::Any& aData ) throw(css::uno::RuntimeException);
+ virtual css::uno::Reference< css::frame::XModel > SAL_CALL getModel() throw(css::uno::RuntimeException);
+ virtual css::uno::Reference< css::frame::XFrame > SAL_CALL getFrame() throw(css::uno::RuntimeException);
+
+ // XKeyListener
+ virtual void SAL_CALL keyPressed ( const css::awt::KeyEvent& aEvent ) throw(css::uno::RuntimeException);
+ virtual void SAL_CALL keyReleased( const css::awt::KeyEvent& aEvent ) throw(css::uno::RuntimeException);
+
+ // XEventListener
+ virtual void SAL_CALL disposing( const css::lang::EventObject& aEvent ) throw(css::uno::RuntimeException);
+
+ // XComponent
+ virtual void SAL_CALL dispose ( ) throw(css::uno::RuntimeException);
+ virtual void SAL_CALL addEventListener ( const css::uno::Reference< css::lang::XEventListener >& xListener ) throw(css::uno::RuntimeException);
+ virtual void SAL_CALL removeEventListener( const css::uno::Reference< css::lang::XEventListener >& xListener ) throw(css::uno::RuntimeException);
+
+ // XDispatchProvider
+ virtual css::uno::Reference< css::frame::XDispatch > SAL_CALL queryDispatch( const css::util::URL& aURL, const OUString& sTargetFrameName , sal_Int32 nSearchFlags ) throw( css::uno::RuntimeException );
+ virtual css::uno::Sequence< css::uno::Reference< css::frame::XDispatch > > SAL_CALL queryDispatches( const css::uno::Sequence< css::frame::DispatchDescriptor >& lDescriptions ) throw( css::uno::RuntimeException );
+
+ // XDispatch
+ virtual void SAL_CALL dispatch( const css::util::URL& aURL, const css::uno::Sequence< css::beans::PropertyValue >& lArguments ) throw( css::uno::RuntimeException );
+ virtual void SAL_CALL addStatusListener( const css::uno::Reference< css::frame::XStatusListener >& xListener, const css::util::URL& aURL ) throw( css::uno::RuntimeException );
+ virtual void SAL_CALL removeStatusListener( const css::uno::Reference< css::frame::XStatusListener >& xListener, const css::util::URL& aURL ) throw( css::uno::RuntimeException );
+};
BackingComp::BackingComp( const css::uno::Reference< css::uno::XComponentContext >& xContext )
: m_xContext(xContext)
@@ -227,101 +315,21 @@ css::uno::Sequence< sal_Int8 > SAL_CALL BackingComp::getImplementationId()
return pID->getImplementationId();
}
-//_______________________________________________
-
-/** returns a static implementation name for this UNO service.
-
- Because this value is needed at different places and our class is used
- by some generic macros too, we have to use a static impl method for that!
-
- @see impl_getStaticImplementationName()
- @see IMPLEMENTATIONNAME
-
- @return The implementation name of this class.
-*/
-
OUString SAL_CALL BackingComp::getImplementationName()
throw(css::uno::RuntimeException)
{
- return impl_getStaticImplementationName();
+ return OUString("com.sun.star.comp.sfx2.BackingComp");
}
-//_______________________________________________
-
-/** returns information about supported services.
-
- Because this value is needed at different places and our class is used
- by some generic macros too, we have to use a static impl method for that!
-
- @see impl_getStaticSupportedServiceNames()
- @see SERVICENAME
-
- @return <TRUE/> if the queried service is supported;
- <br><FALSE/> otherwise.
-*/
-
sal_Bool SAL_CALL BackingComp::supportsService( /*IN*/ const OUString& sServiceName )
throw(css::uno::RuntimeException)
{
- return (
- sServiceName.equals("com.sun.star.frame.StartModule") ||
- sServiceName.equals(SERVICENAME_FRAMECONTROLLER) ||
- sServiceName.equals("com.sun.star.frame.ProtocolHandler")
- );
+ return cppu::supportsService(this, sServiceName);
}
-//_______________________________________________
-
-/** returns collection of supported services.
-
- Because this value is needed at different places and our class is used
- by some generic macros too, we have to use a static impl method for that!
-
- @see impl_getStaticSupportedServiceNames()
- @see SERVICENAME
-
- @return A list of all supported uno service names.
-*/
-
css::uno::Sequence< OUString > SAL_CALL BackingComp::getSupportedServiceNames()
throw(css::uno::RuntimeException)
{
- return impl_getStaticSupportedServiceNames();
-}
-
-//_______________________________________________
-
-/** returns static implementation name.
-
- Because this value is needed at different places and our class is used
- by some generic macros too, we have to use a static impl method for that!
-
- @see impl_getStaticSupportedServiceNames()
- @see SERVICENAME
-
- @return The implementation name of this class.
-*/
-
-OUString BackingComp::impl_getStaticImplementationName()
-{
- return OUString( IMPLEMENTATIONNAME_STARTMODULE );
-}
-
-//_______________________________________________
-
-/** returns static list of supported service names.
-
- Because this value is needed at different places and our class is used
- by some generic macros too, we have to use a static impl method for that!
-
- @see impl_getStaticSupportedServiceNames()
- @see SERVICENAME
-
- @return A list of all supported uno service names.
-*/
-
-css::uno::Sequence< OUString > BackingComp::impl_getStaticSupportedServiceNames()
-{
css::uno::Sequence< OUString > lNames(2);
lNames[0] = "com.sun.star.frame.StartModule";
lNames[1] = "com.sun.star.frame.ProtocolHandler";
@@ -330,56 +338,6 @@ css::uno::Sequence< OUString > BackingComp::impl_getStaticSupportedServiceNames(
//_______________________________________________
-/** returns a new instance of this class.
-
- This factory method is registered inside the UNO runtime
- and will be called for every createInstance() request from outside,
- which wish to use this service.
-
- @param xSMGR
- reference to the uno service manager, which call us
- We use it too, to set it at the new created instance.
-
- @return A new instance as uno reference.
-*/
-
-css::uno::Reference< css::uno::XInterface > SAL_CALL BackingComp::impl_createInstance( /*IN*/ const css::uno::Reference< css::lang::XMultiServiceFactory >& xSMGR )
- throw(css::uno::Exception)
-{
- BackingComp* pObject = new BackingComp(comphelper::getComponentContext(xSMGR));
- return css::uno::Reference< css::uno::XInterface >(static_cast< ::cppu::OWeakObject* >(pObject), css::uno::UNO_QUERY);
-}
-
-//_______________________________________________
-
-/** returns a new factory instance for instances of this class.
-
- It uses a helper class of the cppuhelper project as factory.
- It will be initialized with all necessary information and
- will be able afterwards to create instance of this class.
- This factory call us back inside our method impl_createInstance().
- So we can create and initialize ourself. Only filtering of creation
- requests will be done by this factory.
-
- @param xSMGR
- reference to the uno service manager, which call us
-
- @return A new instance of our factory.
-*/
-
-css::uno::Reference< css::lang::XSingleServiceFactory > BackingComp::impl_createFactory( /*IN*/ const css::uno::Reference< css::lang::XMultiServiceFactory >& xSMGR )
-{
- css::uno::Reference< css::lang::XSingleServiceFactory > xReturn(
- cppu::createSingleFactory(
- xSMGR,
- BackingComp::impl_getStaticImplementationName(),
- BackingComp::impl_createInstance,
- BackingComp::impl_getStaticSupportedServiceNames()));
- return xReturn;
-}
-
-//_______________________________________________
-
/**
attach this component to a target frame.
@@ -848,4 +806,16 @@ void SAL_CALL BackingComp::removeStatusListener( const css::uno::Reference< css:
{
}
+}
+
+extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
+com_sun_star_comp_sfx2_BackingComp_get_implementation(
+ css::uno::XComponentContext *context,
+ css::uno::Sequence<css::uno::Any> const &)
+{
+ rtl::Reference<BackingComp> x(new BackingComp(context));
+ x->acquire();
+ return static_cast<cppu::OWeakObject *>(x.get());
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sfx2/util/sfx.component b/sfx2/util/sfx.component
index 09ab1328cafd..a66335e0fc69 100644
--- a/sfx2/util/sfx.component
+++ b/sfx2/util/sfx.component
@@ -19,7 +19,8 @@
<component loader="com.sun.star.loader.SharedLibrary" environment="@CPPU_ENV@"
prefix="sfx" xmlns="http://openoffice.org/2010/uno-components">
- <implementation name="com.sun.star.comp.sfx2.BackingComp">
+ <implementation name="com.sun.star.comp.sfx2.BackingComp"
+ constructor="com_sun_star_comp_sfx2_BackingComp_get_implementation">
<service name="com.sun.star.frame.StartModule"/>
<service name="com.sun.star.frame.ProtocolHandler"/>
</implementation>