summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatúš Kukan <matus.kukan@collabora.com>2014-01-09 11:45:46 +0100
committerMatúš Kukan <matus.kukan@collabora.com>2014-01-10 10:13:19 +0100
commit0acccc9195baa257c2edc47eb34a654b7fd52a60 (patch)
treec3a6b6f2ff309524e9324b1748c4789df1a5cc7e
parente69d96448a72386f808dc092f75358784482c6c8 (diff)
fwk: Use constructor feature for TabWindowService.
Change-Id: I37c6cb578ed4085d721b993496173822e0a554d9
-rw-r--r--framework/inc/services/tabwindowservice.hxx194
-rw-r--r--framework/source/register/registerservices.cxx2
-rw-r--r--framework/source/services/tabwindowservice.cxx156
-rw-r--r--framework/util/fwk.component3
4 files changed, 146 insertions, 209 deletions
diff --git a/framework/inc/services/tabwindowservice.hxx b/framework/inc/services/tabwindowservice.hxx
deleted file mode 100644
index 88366c565eb7..000000000000
--- a/framework/inc/services/tabwindowservice.hxx
+++ /dev/null
@@ -1,194 +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_FRAMEWORK_INC_SERVICES_TABWINDOWSERVICE_HXX
-#define INCLUDED_FRAMEWORK_INC_SERVICES_TABWINDOWSERVICE_HXX
-
-/** Attention: stl headers must(!) be included at first. Otherwise it can make trouble
- with solaris headers ...
-*/
-#include <vector>
-
-#include <classes/fwktabwindow.hxx>
-#include <classes/propertysethelper.hxx>
-#include <threadhelp/threadhelpbase.hxx>
-#include <macros/generic.hxx>
-#include <macros/xinterface.hxx>
-#include <macros/xtypeprovider.hxx>
-#include <macros/xserviceinfo.hxx>
-#include <general.h>
-#include <stdtypes.h>
-
-#include <com/sun/star/awt/XSimpleTabController.hpp>
-#include <com/sun/star/awt/XWindow.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-
-#include <cppuhelper/weak.hxx>
-#include <vcl/window.hxx>
-
-namespace framework{
-
-struct TTabPageInfo
-{
- public:
-
- TTabPageInfo()
- : m_nIndex ( -1 )
- , m_bCreated (sal_False)
- , m_pPage ( NULL )
- , m_lProperties ( )
- {}
-
- TTabPageInfo(::sal_Int32 nID)
- : m_nIndex ( nID )
- , m_bCreated (sal_False)
- , m_pPage ( NULL )
- , m_lProperties ( )
- {}
-
- public:
-
- ::sal_Int32 m_nIndex;
- ::sal_Bool m_bCreated;
- FwkTabPage* m_pPage;
- css::uno::Sequence< css::beans::NamedValue > m_lProperties;
-};
-
-typedef ::boost::unordered_map< ::sal_Int32 ,
- TTabPageInfo ,
- Int32HashCode ,
- ::std::equal_to< ::sal_Int32 > > TTabPageInfoHash;
-
-/*-************************************************************************************************************//**
- @short implements a helper service providing a dockable tab control window
-*//*-*************************************************************************************************************/
-
-class TabWindowService : public css::lang::XTypeProvider
- , public css::lang::XServiceInfo
- , public css::awt::XSimpleTabController
- , public css::lang::XComponent
- , public ThreadHelpBase
- , public TransactionBase
- , public PropertySetHelper
- , public ::cppu::OWeakObject
-{
- //-------------------------------------------------------------------------------------------------------------
- // public methods
- //-------------------------------------------------------------------------------------------------------------
-
- public:
-
- //---------------------------------------------------------------------------------------------------------
- // constructor / destructor
- //---------------------------------------------------------------------------------------------------------
-
- TabWindowService( const css::uno::Reference< css::lang::XMultiServiceFactory >& xFactory );
- virtual ~TabWindowService();
-
- //---------------------------------------------------------------------------------------------------------
- // XInterface, XTypeProvider, XServiceInfo
- //---------------------------------------------------------------------------------------------------------
-
- FWK_DECLARE_XINTERFACE
- FWK_DECLARE_XTYPEPROVIDER
- DECLARE_XSERVICEINFO
-
- //---------------------------------------------------------------------------------------------------------
- // XSimpleTabController
- //---------------------------------------------------------------------------------------------------------
-
- virtual sal_Int32 SAL_CALL insertTab() throw ( css::uno::RuntimeException );
- virtual void SAL_CALL removeTab( sal_Int32 nID ) throw ( css::lang::IndexOutOfBoundsException, css::uno::RuntimeException );
- virtual void SAL_CALL setTabProps( sal_Int32 nID, const css::uno::Sequence< css::beans::NamedValue >& aProperties ) throw ( css::lang::IndexOutOfBoundsException, css::uno::RuntimeException );
- virtual css::uno::Sequence< css::beans::NamedValue > SAL_CALL getTabProps( sal_Int32 nID ) throw ( css::lang::IndexOutOfBoundsException, css::uno::RuntimeException );
- virtual void SAL_CALL activateTab( sal_Int32 nID ) throw ( css::lang::IndexOutOfBoundsException, css::uno::RuntimeException );
- virtual sal_Int32 SAL_CALL getActiveTabID() throw ( css::uno::RuntimeException );
- virtual void SAL_CALL addTabListener( const css::uno::Reference< css::awt::XTabListener >& Listener ) throw ( css::uno::RuntimeException );
- virtual void SAL_CALL removeTabListener( const css::uno::Reference< css::awt::XTabListener >& Listener ) 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 );
-
- //-------------------------------------------------------------------------------------------------------------
- // protected methods
- //-------------------------------------------------------------------------------------------------------------
-
- protected:
-
- //-------------------------------------------------------------------------------------------------------------
- // private methods
- //-------------------------------------------------------------------------------------------------------------
-
- private:
-
- void impl_initializePropInfo();
- virtual void SAL_CALL impl_setPropertyValue(const OUString& sProperty,
- sal_Int32 nHandle ,
- const css::uno::Any& aValue );
- virtual css::uno::Any SAL_CALL impl_getPropertyValue(const OUString& sProperty,
- sal_Int32 nHandle );
-
- DECL_DLLPRIVATE_LINK( EventListener, VclSimpleEvent * );
-
- void impl_checkTabIndex (::sal_Int32 nID) throw (css::lang::IndexOutOfBoundsException);
- TTabPageInfoHash::iterator impl_getTabPageInfo(::sal_Int32 nID) throw (css::lang::IndexOutOfBoundsException);
- FwkTabWindow* mem_TabWin ();
- //-------------------------------------------------------------------------------------------------------------
- // variables
- // (should be private everyway!)
- //-------------------------------------------------------------------------------------------------------------
-
- private:
-
- /// reference to factory, which has created this instance
- css::uno::Reference< css::lang::XMultiServiceFactory > m_xFactory;
-
- /// the tab window as XWindow ( to hold window* alive !)
- css::uno::Reference< css::awt::XWindow > m_xTabWin;
-
- /// the VCL tab window
- FwkTabWindow* m_pTabWin;
-
- /// container of inserted tab pages
- TTabPageInfoHash m_lTabPageInfos;
-
- /// container of the added TabListener
- ::cppu::OMultiTypeInterfaceContainerHelper m_lListener;
-
- /// counter of the tabpage indexes
- ::sal_Int32 m_nPageIndexCounter;
-
- /// index of the current active page
- ::sal_Int32 m_nCurrentPageIndex;
-
- /// title of the tabcontrolled window
- OUString m_sTitle;
-
-}; // class TabWindowService
-
-} // namespace framework
-
-#endif // INCLUDED_FRAMEWORK_INC_SERVICES_TABWINDOWSERVICE_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/framework/source/register/registerservices.cxx b/framework/source/register/registerservices.cxx
index 8cced2d96412..b6796d8e8b97 100644
--- a/framework/source/register/registerservices.cxx
+++ b/framework/source/register/registerservices.cxx
@@ -35,7 +35,6 @@
=================================================================================================================*/
#include <services/urltransformer.hxx>
#include <services/desktop.hxx>
-#include <services/tabwindowservice.hxx>
#include <services/frame.hxx>
#include <services/modulemanager.hxx>
#include <jobs/jobexecutor.hxx>
@@ -107,7 +106,6 @@ COMPONENTGETFACTORY ( fwk,
IFFACTORY( ::framework::ImageManager ) else
IFFACTORY( ::framework::LangSelectionStatusbarController ) else
IFFACTORY( ::framework::WindowContentFactoryManager ) else
- IFFACTORY( ::framework::TabWindowService ) else
IFFACTORY( ::framework::SubstitutePathVariables ) else
IFFACTORY( ::framework::PathSettings ) else
IFFACTORY( ::framework::ContextChangeEventMultiplexer )
diff --git a/framework/source/services/tabwindowservice.cxx b/framework/source/services/tabwindowservice.cxx
index 5cb09b9ec20a..784ae16528f0 100644
--- a/framework/source/services/tabwindowservice.cxx
+++ b/framework/source/services/tabwindowservice.cxx
@@ -17,24 +17,149 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#include <services/tabwindowservice.hxx>
#include <classes/fwktabwindow.hxx>
#include <threadhelp/resetableguard.hxx>
#include <services.h>
#include <properties.h>
#include <com/sun/star/awt/PosSize.hpp>
+#include <com/sun/star/awt/XSimpleTabController.hpp>
+#include <com/sun/star/awt/XWindow.hpp>
#include <com/sun/star/beans/PropertyAttribute.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <cppuhelper/weak.hxx>
#include <toolkit/helper/vclunohelper.hxx>
+#include <rtl/ref.hxx>
#include <rtl/ustrbuf.hxx>
#include <vcl/svapp.hxx>
+#include <vcl/window.hxx>
+#include <classes/propertysethelper.hxx>
+#include <threadhelp/threadhelpbase.hxx>
+#include <macros/generic.hxx>
+#include <macros/xinterface.hxx>
+#include <macros/xtypeprovider.hxx>
+#include <macros/xserviceinfo.hxx>
+#include <general.h>
+#include <stdtypes.h>
-namespace framework{
+using namespace framework;
-//*****************************************************************************************************************
-// css::uno::XInterface, XTypeProvider, XServiceInfo
-//*****************************************************************************************************************
+namespace {
+
+struct TTabPageInfo
+{
+ public:
+
+ TTabPageInfo()
+ : m_nIndex ( -1 )
+ , m_bCreated (sal_False)
+ , m_pPage ( NULL )
+ , m_lProperties ( )
+ {}
+
+ TTabPageInfo(::sal_Int32 nID)
+ : m_nIndex ( nID )
+ , m_bCreated (sal_False)
+ , m_pPage ( NULL )
+ , m_lProperties ( )
+ {}
+
+ public:
+
+ ::sal_Int32 m_nIndex;
+ ::sal_Bool m_bCreated;
+ FwkTabPage* m_pPage;
+ css::uno::Sequence< css::beans::NamedValue > m_lProperties;
+};
+
+typedef ::boost::unordered_map< ::sal_Int32 ,
+ TTabPageInfo ,
+ Int32HashCode ,
+ ::std::equal_to< ::sal_Int32 > > TTabPageInfoHash;
+
+/*-************************************************************************************************************//**
+ @short implements a helper service providing a dockable tab control window
+*//*-*************************************************************************************************************/
+
+class TabWindowService : public css::lang::XTypeProvider
+ , public css::lang::XServiceInfo
+ , public css::awt::XSimpleTabController
+ , public css::lang::XComponent
+ , public ThreadHelpBase
+ , public TransactionBase
+ , public PropertySetHelper
+ , public ::cppu::OWeakObject
+{
+ public:
+
+ TabWindowService();
+ virtual ~TabWindowService();
+
+ FWK_DECLARE_XINTERFACE
+ FWK_DECLARE_XTYPEPROVIDER
+ DECLARE_XSERVICEINFO
+
+ //---------------------------------------------------------------------------------------------------------
+ // XSimpleTabController
+ //---------------------------------------------------------------------------------------------------------
+
+ virtual sal_Int32 SAL_CALL insertTab() throw ( css::uno::RuntimeException );
+ virtual void SAL_CALL removeTab( sal_Int32 nID ) throw ( css::lang::IndexOutOfBoundsException, css::uno::RuntimeException );
+ virtual void SAL_CALL setTabProps( sal_Int32 nID, const css::uno::Sequence< css::beans::NamedValue >& aProperties ) throw ( css::lang::IndexOutOfBoundsException, css::uno::RuntimeException );
+ virtual css::uno::Sequence< css::beans::NamedValue > SAL_CALL getTabProps( sal_Int32 nID ) throw ( css::lang::IndexOutOfBoundsException, css::uno::RuntimeException );
+ virtual void SAL_CALL activateTab( sal_Int32 nID ) throw ( css::lang::IndexOutOfBoundsException, css::uno::RuntimeException );
+ virtual sal_Int32 SAL_CALL getActiveTabID() throw ( css::uno::RuntimeException );
+ virtual void SAL_CALL addTabListener( const css::uno::Reference< css::awt::XTabListener >& Listener ) throw ( css::uno::RuntimeException );
+ virtual void SAL_CALL removeTabListener( const css::uno::Reference< css::awt::XTabListener >& Listener ) 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 );
+
+ private:
+
+ void impl_initializePropInfo();
+ virtual void SAL_CALL impl_setPropertyValue(const OUString& sProperty,
+ sal_Int32 nHandle ,
+ const css::uno::Any& aValue );
+ virtual css::uno::Any SAL_CALL impl_getPropertyValue(const OUString& sProperty,
+ sal_Int32 nHandle );
+
+ DECL_DLLPRIVATE_LINK( EventListener, VclSimpleEvent * );
+
+ void impl_checkTabIndex (::sal_Int32 nID) throw (css::lang::IndexOutOfBoundsException);
+ TTabPageInfoHash::iterator impl_getTabPageInfo(::sal_Int32 nID) throw (css::lang::IndexOutOfBoundsException);
+ FwkTabWindow* mem_TabWin ();
+
+ private:
+
+ /// the tab window as XWindow ( to hold window* alive !)
+ css::uno::Reference< css::awt::XWindow > m_xTabWin;
+
+ /// the VCL tab window
+ FwkTabWindow* m_pTabWin;
+
+ /// container of inserted tab pages
+ TTabPageInfoHash m_lTabPageInfos;
+
+ /// container of the added TabListener
+ ::cppu::OMultiTypeInterfaceContainerHelper m_lListener;
+
+ /// counter of the tabpage indexes
+ ::sal_Int32 m_nPageIndexCounter;
+
+ /// index of the current active page
+ ::sal_Int32 m_nCurrentPageIndex;
+
+ /// title of the tabcontrolled window
+ OUString m_sTitle;
+
+}; // class TabWindowService
DEFINE_XINTERFACE_6 ( TabWindowService ,
OWeakObject ,
@@ -55,7 +180,7 @@ DEFINE_XTYPEPROVIDER_6 ( TabWindowService ,
css::beans::XPropertySetInfo
)
-DEFINE_XSERVICEINFO_MULTISERVICE ( TabWindowService ,
+PRIVATE_DEFINE_XSERVICEINFO_BASE ( TabWindowService ,
OWeakObject ,
SERVICENAME_TABWINDOWSERVICE ,
IMPLEMENTATIONNAME_TABWINDOWSERVICE
@@ -71,7 +196,7 @@ DEFINE_INIT_SERVICE ( TabWindowService,
//*****************************************************************************************************************
// constructor
//*****************************************************************************************************************
-TabWindowService::TabWindowService( const css::uno::Reference< css::lang::XMultiServiceFactory >& xFactory )
+TabWindowService::TabWindowService()
// Init baseclasses first
// Attention:
// Don't change order of initialization!
@@ -86,7 +211,6 @@ TabWindowService::TabWindowService( const css::uno::Reference< css::lang::XMulti
, OWeakObject ( )
// Init member
- , m_xFactory ( xFactory )
, m_xTabWin ( )
, m_pTabWin ( NULL )
, m_lTabPageInfos ( )
@@ -94,9 +218,6 @@ TabWindowService::TabWindowService( const css::uno::Reference< css::lang::XMulti
, m_nPageIndexCounter ( 1 )
, m_nCurrentPageIndex ( 0 )
{
- // Safe impossible cases.
- // Method not defined for all incoming parameter.
- SAL_WARN_IF( !xFactory.is(), "fwk", "TabWindowService::TabWindowService(): Invalid parameter detected!" );
}
//*****************************************************************************************************************
@@ -443,6 +564,17 @@ FwkTabWindow* TabWindowService::mem_TabWin ()
return pWin;
}
-} // namespace framework
+}
+
+extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
+com_sun_star_comp_framework_TabWindowService_get_implementation(
+ SAL_UNUSED_PARAMETER css::uno::XComponentContext *,
+ uno_Sequence * arguments)
+{
+ assert(arguments != 0 && arguments->nElements == 0); (void) arguments;
+ rtl::Reference<TabWindowService> x(new TabWindowService);
+ x->acquire();
+ return static_cast<cppu::OWeakObject *>(x.get());
+}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/framework/util/fwk.component b/framework/util/fwk.component
index a1fe849c0d58..1971d4a9d124 100644
--- a/framework/util/fwk.component
+++ b/framework/util/fwk.component
@@ -130,7 +130,8 @@
<implementation name="com.sun.star.comp.framework.jobs.JobDispatch">
<service name="com.sun.star.frame.ProtocolHandler"/>
</implementation>
- <implementation name="com.sun.star.comp.framework.TabWindowService">
+ <implementation name="com.sun.star.comp.framework.TabWindowService"
+ constructor="com_sun_star_comp_framework_TabWindowService_get_implementation">
<service name="com.sun.star.ui.dialogs.TabContainerWindow"/>
</implementation>
<implementation name="org.apache.openoffice.comp.framework.OpenToolbarController"