[Libreoffice-commits] core.git: 3 commits - desktop/source framework/inc framework/Library_fwk.mk framework/source framework/util offapi/com offapi/UnoApi_offapi.mk svtools/source

Ariel Constenla-Haile arielch at apache.org
Tue May 21 08:29:56 PDT 2013


 desktop/source/app/app.cxx                                |   10 
 framework/Library_fwk.mk                                  |    4 
 framework/inc/services.h                                  |    2 
 framework/inc/uielement/menubarmanager.hxx                |    5 
 framework/inc/uielement/statusbarmanager.hxx              |    4 
 framework/inc/uielement/toolbarmanager.hxx                |    4 
 framework/inc/uifactory/factoryconfiguration.hxx          |    1 
 framework/inc/uifactory/popupmenucontrollerfactory.hxx    |   50 --
 framework/inc/uifactory/statusbarcontrollerfactory.hxx    |   44 --
 framework/inc/uifactory/toolbarcontrollerfactory.hxx      |   73 ----
 framework/source/layoutmanager/layoutmanager.cxx          |    1 
 framework/source/register/registerservices.cxx            |    4 
 framework/source/uielement/addonstoolbarmanager.cxx       |   65 +--
 framework/source/uielement/menubarmanager.cxx             |   34 +
 framework/source/uielement/popupmenucontroller.cxx        |    6 
 framework/source/uielement/statusbarmanager.cxx           |   86 ++--
 framework/source/uielement/toolbarmanager.cxx             |   66 +--
 framework/source/uifactory/factoryconfiguration.cxx       |    1 
 framework/source/uifactory/popupmenucontrollerfactory.cxx |   73 ----
 framework/source/uifactory/statusbarcontrollerfactory.cxx |   71 ----
 framework/source/uifactory/toolbarcontrollerfactory.cxx   |  242 --------------
 framework/util/fwk.component                              |    2 
 offapi/UnoApi_offapi.mk                                   |    7 
 offapi/com/sun/star/frame/PopupMenuControllerFactory.idl  |   15 
 offapi/com/sun/star/frame/StatusbarControllerFactory.idl  |   36 --
 offapi/com/sun/star/frame/ToolBarControllerFactory.idl    |   41 --
 offapi/com/sun/star/frame/ToolbarControllerFactory.idl    |   43 ++
 offapi/com/sun/star/frame/XToolbarControllerFactory.idl   |   65 ---
 offapi/com/sun/star/frame/XUIControllerFactory.idl        |   72 ++++
 svtools/source/uno/toolboxcontroller.cxx                  |    2 
 30 files changed, 273 insertions(+), 856 deletions(-)

New commits:
commit 8b050d1e91a6623fb2770421e564a74d6259d816
Author: Ariel Constenla-Haile <arielch at apache.org>
Date:   Fri Apr 26 21:55:57 2013 +0000

    UI Controller Factory fixes
    
    - "ModuleName" --> "ModuleIdentifier": the IDL definition for
    css::frame::PopupMenuControllerFactory and
    css::frame::StatusbarControllerFactory tells to use a property named
    "ModuleIdentifier", but in the code it is named "ModuleName"
    
    - Undocumented css::frame::ToolbarControllerFactory
    
    - Fix service name of ToolbarControllerFactory (ToolbarControllerFactory
    instead of ToolBarControllerFactory)
    
    - Convert the three service factories to new style, and use these
    new-style services in the source code
    
    - Implement multiple inheritance: added new css::frame::XUIControllerFactory
    
    - Added a (true) base class and implemented the three factories in a
    single file
    
    (cherry picked from commit acc7fed28f54f836b0923180431a0c180f91e98c)
    
    Conflicts:
    	framework/inc/pch/precompiled_framework.hxx
    	framework/inc/uielement/toolbarmanager.hxx
    	framework/inc/uifactory/popupmenucontrollerfactory.hxx
    	framework/inc/uifactory/statusbarcontrollerfactory.hxx
    	framework/inc/uifactory/uicontrollerfactory.hxx
    	framework/source/uielement/addonstoolbarmanager.cxx
    	framework/source/uielement/menubarmanager.cxx
    	framework/source/uielement/popupmenucontroller.cxx
    	framework/source/uielement/statusbarmanager.cxx
    	framework/source/uielement/toolbarmanager.cxx
    	framework/source/uifactory/popupmenucontrollerfactory.cxx
    	framework/source/uifactory/statusbarcontrollerfactory.cxx
    	framework/source/uifactory/uicontrollerfactory.cxx
    	framework/source/unotypes/fwk.xml
    	offapi/com/sun/star/frame/PopupMenuControllerFactory.idl
    	offapi/com/sun/star/frame/StatusbarControllerFactory.idl
    	offapi/com/sun/star/frame/makefile.mk
    	svtools/source/uno/toolboxcontroller.cxx
    
    Change-Id: Ia8580539badf650a84bc6e57a6b832071e011f0a

diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx
index 0b05fab..195776f 100644
--- a/desktop/source/app/app.cxx
+++ b/desktop/source/app/app.cxx
@@ -69,6 +69,8 @@
 #include <com/sun/star/ui/UIElementFactoryManager.hpp>
 #include <com/sun/star/ui/WindowStateConfiguration.hpp>
 #include <com/sun/star/frame/XUIControllerRegistration.hpp>
+#include <com/sun/star/frame/ToolbarControllerFactory.hpp>
+#include <com/sun/star/frame/PopupMenuControllerFactory.hpp>
 
 #include <toolkit/unohlp.hxx>
 #include <comphelper/configuration.hxx>
@@ -2214,21 +2216,17 @@ void Desktop::PreloadConfigurationData()
 
     // preload popup menu controller factories. As all controllers are in the same
     // configuration file they also get preloaded!
-    Reference< ::com::sun::star::frame::XUIControllerRegistration > xPopupMenuControllerFactory(
-        rFactory->createInstance(
-            rtl::OUString( "com.sun.star.frame.PopupMenuControllerFactory" )),
-            UNO_QUERY );
-    if ( xPopupMenuControllerFactory.is() )
+
+    Reference< css::frame::XUIControllerRegistration > xPopupMenuControllerFactory =
+    css::frame::PopupMenuControllerFactory::create( xContext );
+    try
+    {
+        xPopupMenuControllerFactory->hasController(
+                    OUString( ".uno:CharFontName" ),
+                    OUString() );
+    }
+    catch ( const ::com::sun::star::uno::Exception& )
     {
-        try
-        {
-            xPopupMenuControllerFactory->hasController(
-                        rtl::OUString( ".uno:CharFontName" ),
-                        OUString() );
-        }
-        catch ( const ::com::sun::star::uno::Exception& )
-        {
-        }
     }
 
     // preload filter configuration
diff --git a/framework/Library_fwk.mk b/framework/Library_fwk.mk
index 2a53057..bc9b711 100644
--- a/framework/Library_fwk.mk
+++ b/framework/Library_fwk.mk
@@ -160,10 +160,8 @@ $(eval $(call gb_Library_add_exception_objects,fwk,\
     framework/source/uifactory/addonstoolboxfactory \
     framework/source/uifactory/factoryconfiguration \
     framework/source/uifactory/menubarfactory \
-    framework/source/uifactory/popupmenucontrollerfactory \
-    framework/source/uifactory/statusbarcontrollerfactory \
     framework/source/uifactory/statusbarfactory \
-    framework/source/uifactory/toolbarcontrollerfactory \
+    framework/source/uifactory/uicontrollerfactory \
     framework/source/uifactory/toolboxfactory \
     framework/source/uifactory/uielementfactorymanager \
     framework/source/uifactory/windowcontentfactorymanager \
diff --git a/framework/inc/services.h b/framework/inc/services.h
index d57af35..16a9443 100644
--- a/framework/inc/services.h
+++ b/framework/inc/services.h
@@ -46,7 +46,7 @@ namespace framework{
 #define SERVICENAME_MODULEACCELERATORCONFIGURATION              DECLARE_ASCII("com.sun.star.ui.ModuleAcceleratorConfiguration")
 #define SERVICENAME_DOCUMENTACCELERATORCONFIGURATION            DECLARE_ASCII("com.sun.star.ui.DocumentAcceleratorConfiguration")
 #define SERVICENAME_TOOLBARFACTORY                              DECLARE_ASCII("com.sun.star.ui.ToolBarFactory"               )
-#define SERVICENAME_TOOLBARCONTROLLERFACTORY                    DECLARE_ASCII("com.sun.star.frame.ToolBarControllerFactory"         )
+#define SERVICENAME_TOOLBARCONTROLLERFACTORY                    DECLARE_ASCII("com.sun.star.frame.ToolbarControllerFactory"         )
 #define SERVICENAME_LICENSE                                     SERVICENAME_JOB
 #define SERVICENAME_STATUSBARFACTORY                            DECLARE_ASCII("com.sun.star.ui.StatusBarFactory"             )
 #define SERVICENAME_STATUSBARCONTROLLERFACTORY                  DECLARE_ASCII("com.sun.star.frame.StatusbarControllerFactory"       )
diff --git a/framework/inc/uielement/menubarmanager.hxx b/framework/inc/uielement/menubarmanager.hxx
index 1e9e386..50e27d66 100644
--- a/framework/inc/uielement/menubarmanager.hxx
+++ b/framework/inc/uielement/menubarmanager.hxx
@@ -41,7 +41,7 @@
 #include <com/sun/star/container/XNameAccess.hpp>
 #include <com/sun/star/lang/XComponent.hpp>
 #include <com/sun/star/lang/XMultiComponentFactory.hpp>
-#include <com/sun/star/frame/XUIControllerRegistration.hpp>
+#include <com/sun/star/frame/XUIControllerFactory.hpp>
 #include <com/sun/star/ui/XUIConfigurationListener.hpp>
 #include <com/sun/star/ui/XImageManager.hpp>
 #include <com/sun/star/ui/XAcceleratorConfiguration.hpp>
@@ -235,7 +235,7 @@ class MenuBarManager : public com::sun::star::frame::XStatusListener
         Menu*                                                                                  m_pVCLMenu;
         ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >                    m_xFrame;
         ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >           m_xUICommandLabels;
-        ::com::sun::star::uno::Reference< ::com::sun::star::frame::XUIControllerRegistration > m_xPopupMenuControllerRegistration;
+        ::com::sun::star::uno::Reference< ::com::sun::star::frame::XUIControllerFactory > m_xPopupMenuControllerFactory;
         ::std::vector< MenuItemHandler* >                                                      m_aMenuItemHandlerVector;
         ::cppu::OMultiTypeInterfaceContainerHelper                                             m_aListenerContainer;   /// container for ALL Listener
         ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider >         m_xDispatchProvider;
diff --git a/framework/inc/uielement/statusbarmanager.hxx b/framework/inc/uielement/statusbarmanager.hxx
index 26cc183..c855b12 100644
--- a/framework/inc/uielement/statusbarmanager.hxx
+++ b/framework/inc/uielement/statusbarmanager.hxx
@@ -29,7 +29,7 @@
 #include <com/sun/star/frame/XFrame.hpp>
 #include <com/sun/star/frame/XStatusListener.hpp>
 #include <com/sun/star/frame/XStatusbarController.hpp>
-#include <com/sun/star/frame/XUIControllerRegistration.hpp>
+#include <com/sun/star/frame/XUIControllerFactory.hpp>
 #include <com/sun/star/ui/XUIConfiguration.hpp>
 #include <com/sun/star/frame/XModuleManager.hpp>
 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
@@ -118,7 +118,7 @@ class StatusBarManager : public ::com::sun::star::frame::XFrameActionListener
         StatusBarControllerMap                                                                          m_aControllerMap;
         ::cppu::OMultiTypeInterfaceContainerHelper                                                      m_aListenerContainer;   /// container for ALL Listener
         ::com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >                  m_xServiceManager;
-        ::com::sun::star::uno::Reference< ::com::sun::star::frame::XUIControllerRegistration >  m_xStatusbarControllerRegistration;
+        ::com::sun::star::uno::Reference< ::com::sun::star::frame::XUIControllerFactory >  m_xStatusbarControllerFactory;
 };
 
 }
diff --git a/framework/inc/uielement/toolbarmanager.hxx b/framework/inc/uielement/toolbarmanager.hxx
index 3e05868..1b26588 100644
--- a/framework/inc/uielement/toolbarmanager.hxx
+++ b/framework/inc/uielement/toolbarmanager.hxx
@@ -34,7 +34,7 @@
 #include <com/sun/star/container/XNameAccess.hpp>
 #include <com/sun/star/container/XIndexContainer.hpp>
 #include <com/sun/star/frame/XModuleManager.hpp>
-#include <com/sun/star/frame/XUIControllerRegistration.hpp>
+#include <com/sun/star/frame/XUIControllerFactory.hpp>
 #include <com/sun/star/ui/XImageManager.hpp>
 #include <com/sun/star/ui/XUIConfigurationManager.hpp>
 #include <com/sun/star/frame/XSubToolbarController.hpp>
@@ -202,7 +202,7 @@ class ToolBarManager : public ::com::sun::star::frame::XFrameActionListener
         ToolBarControllerMap                                                                   m_aControllerMap;
         ::cppu::OMultiTypeInterfaceContainerHelper                                             m_aListenerContainer;   /// container for ALL Listener
         ::com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >             m_xContext;
-        ::com::sun::star::uno::Reference< ::com::sun::star::frame::XUIControllerRegistration > m_xToolbarControllerRegistration;
+        ::com::sun::star::uno::Reference< ::com::sun::star::frame::XUIControllerFactory > m_xToolbarControllerFactory;
         ::com::sun::star::uno::Reference< ::com::sun::star::ui::XImageManager >                m_xModuleImageManager;
         ::com::sun::star::uno::Reference< ::com::sun::star::ui::XImageManager >                m_xDocImageManager;
         ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >                 m_xImageOrientationListener;
diff --git a/framework/inc/uifactory/factoryconfiguration.hxx b/framework/inc/uifactory/factoryconfiguration.hxx
index 82a9943..eacb8da 100644
--- a/framework/inc/uifactory/factoryconfiguration.hxx
+++ b/framework/inc/uifactory/factoryconfiguration.hxx
@@ -31,7 +31,6 @@
 #include <com/sun/star/container/XContainerListener.hpp>
 #include <com/sun/star/container/XNameAccess.hpp>
 #include <com/sun/star/lang/XMultiComponentFactory.hpp>
-#include <com/sun/star/frame/XUIControllerRegistration.hpp>
 
 #include <cppuhelper/implbase1.hxx>
 #include <rtl/ustring.hxx>
diff --git a/framework/inc/uifactory/popupmenucontrollerfactory.hxx b/framework/inc/uifactory/popupmenucontrollerfactory.hxx
deleted file mode 100644
index 749bd51..0000000
--- a/framework/inc/uifactory/popupmenucontrollerfactory.hxx
+++ /dev/null
@@ -1,50 +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 __FRAMEWORK_UIFACTORY_POPUPMENUCONTROLLERFACTORY_HXX_
-#define __FRAMEWORK_UIFACTORY_POPUPMENUCONTROLLERFACTORY_HXX_
-
-/** Attention: stl headers must(!) be included at first. Otherwhise it can make trouble
-               with solaris headers ...
-*/
-#include <vector>
-#include <list>
-
-#include <macros/xserviceinfo.hxx>
-#include <stdtypes.h>
-#include <uifactory/toolbarcontrollerfactory.hxx>
-
-namespace framework
-{
-
-class ConfigurationAccess_ControllerFactory;
-class PopupMenuControllerFactory :  public ToolbarControllerFactory
-{
-    public:
-        PopupMenuControllerFactory( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceManager );
-
-        //  XInterface, XTypeProvider, XServiceInfo
-        DECLARE_XSERVICEINFO
-};
-
-} // namespace framework
-
-#endif // __FRAMEWORK_SERVICES_POPUPMENUCONTROLLERFACTORY_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/framework/inc/uifactory/toolbarcontrollerfactory.hxx b/framework/inc/uifactory/toolbarcontrollerfactory.hxx
deleted file mode 100644
index 7534e6c..0000000
--- a/framework/inc/uifactory/toolbarcontrollerfactory.hxx
+++ /dev/null
@@ -1,75 +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 __FRAMEWORK_UIFACTORY_TOOLBARCONTROLLERFACTORY_HXX_
-#define __FRAMEWORK_UIFACTORY_TOOLBARCONTROLLERFACTORY_HXX_
-
-#include <threadhelp/threadhelpbase.hxx>
-#include <macros/generic.hxx>
-#include <macros/xinterface.hxx>
-#include <macros/xtypeprovider.hxx>
-#include <macros/xserviceinfo.hxx>
-#include <stdtypes.h>
-
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/lang/XTypeProvider.hpp>
-#include <com/sun/star/lang/XMultiComponentFactory.hpp>
-#include <com/sun/star/frame/XUIControllerRegistration.hpp>
-
-#include <cppuhelper/implbase3.hxx>
-#include <rtl/ustring.hxx>
-
-namespace framework
-{
-
-class ConfigurationAccess_ControllerFactory;
-class ToolbarControllerFactory :  protected ThreadHelpBase                                          ,   // Struct for right initalization of mutex member! Must be first of baseclasses.
-                                  public ::cppu::WeakImplHelper3<   com::sun::star::lang::XServiceInfo,
-                                                                    com::sun::star::lang::XMultiComponentFactory,
-                                                                    com::sun::star::frame::XUIControllerRegistration>
-{
-    public:
-        ToolbarControllerFactory( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceManager );
-        virtual ~ToolbarControllerFactory();
-
-        //  XInterface, XTypeProvider, XServiceInfo
-        DECLARE_XSERVICEINFO
-
-        // XMultiComponentFactory
-        virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL createInstanceWithContext( const OUString& aServiceSpecifier, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& Context ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
-        virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL createInstanceWithArgumentsAndContext( const OUString& ServiceSpecifier, const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& Arguments, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& Context ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
-        virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getAvailableServiceNames() throw (::com::sun::star::uno::RuntimeException);
-
-        // XUIControllerRegistration
-        virtual sal_Bool SAL_CALL hasController( const OUString& aCommandURL, const OUString& aModuleName ) throw (::com::sun::star::uno::RuntimeException);
-        virtual void SAL_CALL registerController( const OUString& aCommandURL, const OUString& aModuleName, const OUString& aControllerImplementationName ) throw (::com::sun::star::uno::RuntimeException);
-        virtual void SAL_CALL deregisterController( const OUString& aCommandURL, const OUString& aModuleName ) throw (::com::sun::star::uno::RuntimeException);
-
-    protected:
-        ToolbarControllerFactory( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceManager,bool  );
-        sal_Bool                                                                         m_bConfigRead;
-        ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > m_xServiceManager;
-        ConfigurationAccess_ControllerFactory*                                           m_pConfigAccess;
-};
-
-} // namespace framework
-
-#endif // __FRAMEWORK_SERVICES_TOOLBARCONTROLLERFACTORY_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/framework/source/layoutmanager/layoutmanager.cxx b/framework/source/layoutmanager/layoutmanager.cxx
index 173a0fe..0c75daa 100644
--- a/framework/source/layoutmanager/layoutmanager.cxx
+++ b/framework/source/layoutmanager/layoutmanager.cxx
@@ -38,7 +38,6 @@
 #include <com/sun/star/frame/ModuleManager.hpp>
 #include <com/sun/star/frame/XModel.hpp>
 #include <com/sun/star/frame/FrameAction.hpp>
-#include <com/sun/star/frame/XUIControllerRegistration.hpp>
 #include <com/sun/star/lang/XMultiComponentFactory.hpp>
 #include <com/sun/star/awt/XTopWindow.hpp>
 #include <com/sun/star/awt/XSystemDependentMenuPeer.hpp>
diff --git a/framework/source/register/registerservices.cxx b/framework/source/register/registerservices.cxx
index 8d9c058..984ad9d 100644
--- a/framework/source/register/registerservices.cxx
+++ b/framework/source/register/registerservices.cxx
@@ -43,7 +43,7 @@
 #include <services/backingcomp.hxx>
 #include <services/layoutmanager.hxx>
 #include <uifactory/uielementfactorymanager.hxx>
-#include <uifactory/popupmenucontrollerfactory.hxx>
+#include <uifactory/uicontrollerfactory.hxx>
 #include <uielement/objectmenucontroller.hxx>
 #include <uielement/controlmenucontroller.hxx>
 #include <uielement/uicommanddescription.hxx>
@@ -57,8 +57,6 @@
 #include <uifactory/toolboxfactory.hxx>
 #include <uifactory/addonstoolboxfactory.hxx>
 #include "uiconfiguration/windowstateconfiguration.hxx"
-#include "uifactory/toolbarcontrollerfactory.hxx"
-#include "uifactory/statusbarcontrollerfactory.hxx"
 #include <services/autorecovery.hxx>
 #include <helper/statusindicatorfactory.hxx>
 #include <uielement/recentfilesmenucontroller.hxx>
diff --git a/framework/source/uielement/addonstoolbarmanager.cxx b/framework/source/uielement/addonstoolbarmanager.cxx
index b0992ee..0bde95d 100644
--- a/framework/source/uielement/addonstoolbarmanager.cxx
+++ b/framework/source/uielement/addonstoolbarmanager.cxx
@@ -221,8 +221,6 @@ void AddonsToolBarManager::FillToolbar( const Sequence< Sequence< PropertyValue
     {
     }
 
-    Reference< XMultiComponentFactory > xToolbarControllerFactory( m_xToolbarControllerRegistration, UNO_QUERY );
-
     sal_uInt32  nElements( 0 );
     sal_Bool    bAppendSeparator( sal_False );
     Reference< XWindow > xToolbarWindow = VCLUnoHelper::GetInterface( m_pToolBar );
@@ -279,42 +277,39 @@ void AddonsToolBarManager::FillToolbar( const Sequence< Sequence< PropertyValue
                 sal_Bool bMustBeInit( sal_True );
 
                 // Support external toolbar controller for add-ons!
-                if ( m_xToolbarControllerRegistration.is() &&
-                     m_xToolbarControllerRegistration->hasController( aURL, m_aModuleIdentifier ))
+                if ( m_xToolbarControllerFactory.is() &&
+                     m_xToolbarControllerFactory->hasController( aURL, m_aModuleIdentifier ))
                 {
-                    if ( xToolbarControllerFactory.is() )
+                    Sequence< Any > aArgs(5);
+                    PropertyValue   aPropValue;
+
+                    aPropValue.Name     = OUString( "ModuleIdentifier" );
+                    aPropValue.Value    <<= m_aModuleIdentifier;
+                    aArgs[0] <<= aPropValue;
+                    aPropValue.Name     = OUString( "Frame" );
+                    aPropValue.Value    <<= m_xFrame;
+                    aArgs[1] <<= aPropValue;
+                    aPropValue.Name     = OUString( "ServiceManager" );
+                    Reference<XMultiServiceFactory> xMSF(m_xContext->getServiceManager(), UNO_QUERY_THROW);
+                    aPropValue.Value    <<= xMSF;
+                    aArgs[2] <<= aPropValue;
+                    aPropValue.Name     = OUString( "ParentWindow" );
+                    aPropValue.Value    <<= xToolbarWindow;
+                    aArgs[3] <<= aPropValue;
+                    aPropValue.Name     = OUString( "ItemId" );
+                    aPropValue.Value    = makeAny( sal_Int32( nId ));
+                    aArgs[4] <<= aPropValue;
+
+                    try
+                    {
+                        xController = Reference< XStatusListener >( m_xToolbarControllerFactory->createInstanceWithArgumentsAndContext(
+                                                                        aURL, aArgs, m_xContext ),
+                                                                    UNO_QUERY );
+                    }
+                    catch ( uno::Exception& )
                     {
-                        Sequence< Any > aArgs(5);
-                        PropertyValue   aPropValue;
-
-                        aPropValue.Name     = OUString( "ModuleName" );
-                        aPropValue.Value    <<= m_aModuleIdentifier;
-                        aArgs[0] <<= aPropValue;
-                        aPropValue.Name     = OUString( "Frame" );
-                        aPropValue.Value    <<= m_xFrame;
-                        aArgs[1] <<= aPropValue;
-                        aPropValue.Name     = OUString( "ServiceManager" );
-                        Reference<XMultiServiceFactory> xMSF(m_xContext->getServiceManager(), UNO_QUERY_THROW);
-                        aPropValue.Value    <<= xMSF;
-                        aArgs[2] <<= aPropValue;
-                        aPropValue.Name     = OUString( "ParentWindow" );
-                        aPropValue.Value    <<= xToolbarWindow;
-                        aArgs[3] <<= aPropValue;
-                        aPropValue.Name     = OUString( "ItemId" );
-                        aPropValue.Value    = makeAny( sal_Int32( nId ));
-                        aArgs[4] <<= aPropValue;
-
-                        try
-                        {
-                            xController = Reference< XStatusListener >( xToolbarControllerFactory->createInstanceWithArgumentsAndContext(
-                                                                            aURL, aArgs, m_xContext ),
-                                                                        UNO_QUERY );
-                        }
-                        catch ( const uno::Exception& )
-                        {
-                        }
-                        bMustBeInit = sal_False; // factory called init already!
                     }
+                    bMustBeInit = sal_False; // factory called init already!
                 }
                 else
                 {
diff --git a/framework/source/uielement/menubarmanager.cxx b/framework/source/uielement/menubarmanager.cxx
index 91e7df8..f8a330b 100644
--- a/framework/source/uielement/menubarmanager.cxx
+++ b/framework/source/uielement/menubarmanager.cxx
@@ -31,6 +31,7 @@
 #include <classes/resource.hrc>
 #include <services.h>
 
+#include <com/sun/star/beans/XPropertySet.hpp>
 #include <com/sun/star/frame/XDispatch.hpp>
 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
 #include <com/sun/star/lang/DisposedException.hpp>
@@ -42,7 +43,7 @@
 #include <com/sun/star/uno/XCurrentContext.hpp>
 #include <com/sun/star/lang/XMultiComponentFactory.hpp>
 #include <com/sun/star/frame/XPopupMenuController.hpp>
-#include <com/sun/star/frame/XUIControllerRegistration.hpp>
+#include <com/sun/star/frame/PopupMenuControllerFactory.hpp>
 #include <com/sun/star/lang/SystemDependent.hpp>
 #include <com/sun/star/ui/GlobalAcceleratorConfiguration.hpp>
 #include <com/sun/star/ui/ItemType.hpp>
@@ -182,9 +183,7 @@ MenuBarManager::MenuBarManager(
     , m_nSymbolsStyle( SvtMiscOptions().GetCurrentSymbolsStyle() )
 {
     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "framework", "Ocke.Janssen at sun.com", "MenuBarManager::MenuBarManager" );
-    m_xPopupMenuControllerRegistration = Reference< ::com::sun::star::frame::XUIControllerRegistration >(
-        getServiceFactory()->createInstance( OUString( "com.sun.star.frame.PopupMenuControllerFactory" )),
-        UNO_QUERY );
+    m_xPopupMenuControllerFactory = frame::PopupMenuControllerFactory::create(m_xContext);
     FillMenuManager( pMenu, rFrame, rDispatchProvider, rModuleIdentifier, bDelete, bDeleteChildren );
 }
 
@@ -387,7 +386,7 @@ void SAL_CALL MenuBarManager::dispose() throw( RuntimeException )
         m_xModuleAcceleratorManager.clear();
         m_xDocAcceleratorManager.clear();
         m_xUICommandLabels.clear();
-        m_xPopupMenuControllerRegistration.clear();
+        m_xPopupMenuControllerFactory.clear();
         m_xContext.clear();
     }
 }
@@ -953,7 +952,7 @@ IMPL_LINK( MenuBarManager, Activate, Menu *, pMenu )
 
                             sal_Bool bPopupMenu( sal_False );
                             if ( !pMenuItemHandler->xPopupMenuController.is() &&
-                                 m_xPopupMenuControllerRegistration->hasController( aItemCommand, OUString() ))
+                                 m_xPopupMenuControllerFactory->hasController( aItemCommand, OUString() ))
                             {
                                 bPopupMenu = CreatePopupMenuController( pMenuItemHandler );
                             }
@@ -1188,36 +1187,32 @@ sal_Bool MenuBarManager::CreatePopupMenuController( MenuItemHandler* pMenuItemHa
     OUString aItemCommand( pMenuItemHandler->aMenuItemURL );
 
     // Try instanciate a popup menu controller. It is stored in the menu item handler.
-    Reference< XMultiComponentFactory > xPopupMenuControllerFactory( m_xPopupMenuControllerRegistration, UNO_QUERY );
-    if ( xPopupMenuControllerFactory.is() )
+    if ( !m_xPopupMenuControllerFactory.is() )
+        return sal_False;
+
+    Sequence< Any > aSeq( 2 );
+    PropertyValue aPropValue;
+
+    aPropValue.Name         = OUString( "ModuleIdentifier" );
+    aPropValue.Value      <<= m_aModuleIdentifier;
+    aSeq[0] <<= aPropValue;
+    aPropValue.Name         = OUString( "Frame" );
+    aPropValue.Value      <<= m_xFrame;
+    aSeq[1] <<= aPropValue;
+
+    Reference< XPopupMenuController > xPopupMenuController(
+                                            m_xPopupMenuControllerFactory->createInstanceWithArgumentsAndContext(
+                                                aItemCommand,
+                                                aSeq,
+                                                m_xContext ),
+                                            UNO_QUERY );
+
+    if ( xPopupMenuController.is() )
     {
-        Sequence< Any > aSeq( 2 );
-        PropertyValue aPropValue;
-
-        aPropValue.Name         = OUString( "ModuleName" );
-        aPropValue.Value      <<= m_aModuleIdentifier;
-        aSeq[0] <<= aPropValue;
-        aPropValue.Name         = OUString( "Frame" );
-        aPropValue.Value      <<= m_xFrame;
-        aSeq[1] <<= aPropValue;
-
-        Reference< XComponentContext > xComponentContext(
-            comphelper::getComponentContext( getServiceFactory() ) );
-
-        Reference< XPopupMenuController > xPopupMenuController(
-                                                xPopupMenuControllerFactory->createInstanceWithArgumentsAndContext(
-                                                    aItemCommand,
-                                                    aSeq,
-                                                    xComponentContext ),
-                                                UNO_QUERY );
-
-        if ( xPopupMenuController.is() )
-        {
-            // Provide our awt popup menu to the popup menu controller
-            pMenuItemHandler->xPopupMenuController = xPopupMenuController;
-            xPopupMenuController->setPopupMenu( pMenuItemHandler->xPopupMenu );
-            return sal_True;
-        }
+        // Provide our awt popup menu to the popup menu controller
+        pMenuItemHandler->xPopupMenuController = xPopupMenuController;
+        xPopupMenuController->setPopupMenu( pMenuItemHandler->xPopupMenu );
+        return sal_True;
     }
 
     return sal_False;
@@ -1311,9 +1306,9 @@ void MenuBarManager::FillMenuManager( Menu* pMenu, const Reference< XFrame >& rF
                 pMenu->SetHelpCommand( nItemId, aEmpty );
             }
 
-            if ( m_xPopupMenuControllerRegistration.is() &&
+            if ( m_xPopupMenuControllerFactory.is() &&
                  pPopup->GetItemCount() == 0 &&
-                 m_xPopupMenuControllerRegistration->hasController( aItemCommand, OUString() )
+                 m_xPopupMenuControllerFactory->hasController( aItemCommand, OUString() )
                   )
             {
                 // Check if we have to create a popup menu for a uno based popup menu controller.
@@ -1446,8 +1441,8 @@ void MenuBarManager::FillMenuManager( Menu* pMenu, const Reference< XFrame >& rF
             MenuItemHandler* pItemHandler = new MenuItemHandler( nItemId, xStatusListener, xDispatch );
             pItemHandler->aMenuItemURL = aItemCommand;
 
-            if ( m_xPopupMenuControllerRegistration.is() &&
-                 m_xPopupMenuControllerRegistration->hasController( aItemCommand, OUString() ))
+            if ( m_xPopupMenuControllerFactory.is() &&
+                 m_xPopupMenuControllerFactory->hasController( aItemCommand, OUString() ))
             {
                 // Check if we have to create a popup menu for a uno based popup menu controller.
                 // We have to set an empty popup menu into our menu structure so the controller also
@@ -2020,9 +2015,8 @@ void MenuBarManager::Init(const Reference< XFrame >& rFrame,AddonMenu* pAddonMen
     m_bIsBookmarkMenu   = sal_True;
 
     OUString aModuleIdentifier;
-    m_xPopupMenuControllerRegistration = Reference< ::com::sun::star::frame::XUIControllerRegistration >(
-        getServiceFactory()->createInstance( OUString( "com.sun.star.frame.PopupMenuControllerFactory" )),
-        UNO_QUERY );
+    m_xPopupMenuControllerFactory = frame::PopupMenuControllerFactory::create(
+        ::comphelper::getProcessComponentContext());
 
     Reference< XStatusListener > xStatusListener;
     Reference< XDispatch > xDispatch;
@@ -2069,8 +2063,8 @@ void MenuBarManager::Init(const Reference< XFrame >& rFrame,AddonMenu* pAddonMen
                     // Check if we have to create a popup menu for a uno based popup menu controller.
                     // We have to set an empty popup menu into our menu structure so the controller also
                     // works with inplace OLE.
-                    if ( m_xPopupMenuControllerRegistration.is() &&
-                        m_xPopupMenuControllerRegistration->hasController( aItemCommand, OUString() ))
+                    if ( m_xPopupMenuControllerFactory.is() &&
+                        m_xPopupMenuControllerFactory->hasController( aItemCommand, OUString() ))
                     {
                         VCLXPopupMenu* pVCLXPopupMenu = new VCLXPopupMenu;
                         PopupMenu* pCtlPopupMenu = (PopupMenu *)pVCLXPopupMenu->GetMenu();
diff --git a/framework/source/uielement/popupmenucontroller.cxx b/framework/source/uielement/popupmenucontroller.cxx
index 571b5cb..76e8949 100644
--- a/framework/source/uielement/popupmenucontroller.cxx
+++ b/framework/source/uielement/popupmenucontroller.cxx
@@ -19,6 +19,7 @@
 
 
 #include <com/sun/star/awt/XPopupMenu.hpp>
+#include <com/sun/star/frame/PopupMenuControllerFactory.hpp>
 #include <com/sun/star/frame/XPopupMenuController.hpp>
 
 #include <toolkit/helper/vclunohelper.hxx>
@@ -155,22 +156,19 @@ void SAL_CALL PopupMenuController::doubleClick() throw (RuntimeException)
 
 bool PopupMenuController::CreatePopupMenuController() throw (Exception)
 {
-    Reference< XMultiComponentFactory > xPopupMenuControllerRegistration( getServiceManager()->createInstance( SERVICENAME_POPUPMENUCONTROLLERFACTORY ), UNO_QUERY_THROW );
+    Reference< XMultiComponentFactory > xPopupMenuControllerRegistration = PopupMenuControllerFactory::create( m_xContext );
 
     Sequence< Any > aSeq( 2 );
     PropertyValue aPropValue;
 
-    aPropValue.Name = OUString( "ModuleName" );
+    aPropValue.Name = OUString( "ModuleIdentifier" );
     aPropValue.Value <<= getModuleName();
     aSeq[0] <<= aPropValue;
     aPropValue.Name = OUString( "Frame" );
     aPropValue.Value <<= m_xFrame;
     aSeq[1] <<= aPropValue;
 
-    Reference< XComponentContext > xComponentContext(
-        comphelper::getComponentContext( getServiceManager() ) );
-
-    Reference< XPopupMenuController > xPopupMenuController( xPopupMenuControllerRegistration->createInstanceWithArgumentsAndContext( getCommandURL(), aSeq, xComponentContext ), UNO_QUERY );
+    Reference< XPopupMenuController > xPopupMenuController( xPopupMenuControllerRegistration->createInstanceWithArgumentsAndContext( getCommandURL(), aSeq, m_xContext ), UNO_QUERY );
     if ( xPopupMenuController.is() )
     {
         mxPopupMenuController = xPopupMenuController;
diff --git a/framework/source/uielement/statusbarmanager.cxx b/framework/source/uielement/statusbarmanager.cxx
index 35f8930..fb8ce45 100644
--- a/framework/source/uielement/statusbarmanager.cxx
+++ b/framework/source/uielement/statusbarmanager.cxx
@@ -38,6 +38,7 @@
 
 #include <com/sun/star/frame/XFrame.hpp>
 #include <com/sun/star/frame/XStatusListener.hpp>
+#include <com/sun/star/frame/StatusbarControllerFactory.hpp>
 #include <com/sun/star/util/XUpdatable.hpp>
 #include <com/sun/star/ui/ItemStyle.hpp>
 #include <com/sun/star/ui/ItemType.hpp>
@@ -49,6 +50,7 @@
 #include <toolkit/unohlp.hxx>
 #include <toolkit/helper/vclunohelper.hxx>
 #include <svtools/statusbarcontroller.hxx>
+#include <comphelper/processfactory.hxx>
 
 #include <vcl/status.hxx>
 #include <vcl/svapp.hxx>
@@ -172,10 +174,8 @@ StatusBarManager::StatusBarManager(
 {
     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "framework", "Ocke.Janssen at sun.com", "StatusBarManager::StatusBarManager" );
 
-    if ( m_xServiceManager.is() )
-        m_xStatusbarControllerRegistration = uno::Reference< css::frame::XUIControllerRegistration >(
-                                                    m_xServiceManager->createInstance( SERVICENAME_STATUSBARCONTROLLERFACTORY ),
-                                                    uno::UNO_QUERY );
+    m_xStatusbarControllerFactory = frame::StatusbarControllerFactory::create(
+        ::comphelper::getProcessComponentContext());
 
     m_pStatusBar->SetClickHdl( LINK( this, StatusBarManager, Click ) );
     m_pStatusBar->SetDoubleClickHdl( LINK( this, StatusBarManager, DoubleClick ) );
@@ -353,7 +353,6 @@ OUString StatusBarManager::RetrieveLabelFromCommand( const OUString& aCmdURL )
 void StatusBarManager::CreateControllers()
 {
     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "framework", "Ocke.Janssen at sun.com", "StatusBarManager::CreateControllers" );
-    uno::Reference< lang::XMultiComponentFactory > xStatusbarControllerFactory( m_xStatusbarControllerRegistration, uno::UNO_QUERY );
     uno::Reference< uno::XComponentContext > xComponentContext(
         comphelper::getComponentContext( m_xServiceManager ) );
     uno::Reference< awt::XWindow > xStatusbarWindow = VCLUnoHelper::GetInterface( m_pStatusBar );
@@ -375,47 +374,44 @@ void StatusBarManager::CreateControllers()
         svt::StatusbarController* pController( 0 );
 
         // 1º) UNO Statusbar controllers, registered in Controllers.xcu
-        if ( m_xStatusbarControllerRegistration.is() &&
-             m_xStatusbarControllerRegistration->hasController( aCommandURL, m_aModuleIdentifier ))
+        if ( m_xStatusbarControllerFactory.is() &&
+             m_xStatusbarControllerFactory->hasController( aCommandURL, m_aModuleIdentifier ))
         {
-            if ( xStatusbarControllerFactory.is() )
-            {
-                beans::PropertyValue aPropValue;
-                std::vector< uno::Any > aPropVector;
-
-                aPropValue.Name     = OUString( "ModuleName" );
-                aPropValue.Value    = uno::makeAny( m_aModuleIdentifier );
-                aPropVector.push_back( uno::makeAny( aPropValue ) );
-
-                aPropValue.Name     = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Frame" ));
-                aPropValue.Value    = uno::makeAny( m_xFrame );
-                aPropVector.push_back( uno::makeAny( aPropValue ) );
-
-                // TODO remove this
-                aPropValue.Name     = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ServiceManager" ));
-                aPropValue.Value    = uno::makeAny( m_xServiceManager );
-                aPropVector.push_back( uno::makeAny( aPropValue ) );
-
-                aPropValue.Name     = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ParentWindow" ));
-                aPropValue.Value    = uno::makeAny( xStatusbarWindow );
-                aPropVector.push_back( uno::makeAny( aPropValue ) );
-
-                // TODO still needing with the css::ui::XStatusbarItem?
-                aPropValue.Name     = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Identifier" ));
-                aPropValue.Value    = uno::makeAny( nId );
-                aPropVector.push_back( uno::makeAny( aPropValue ) );
-
-                aPropValue.Name     = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "StatusbarItem" ));
-                aPropValue.Value    <<= xStatusbarItem;
-                aPropVector.push_back( uno::makeAny( aPropValue ) );
-
-                uno::Sequence< uno::Any > aArgs( comphelper::containerToSequence( aPropVector ) );
-                xController = uno::Reference< frame::XStatusListener >(
-                                xStatusbarControllerFactory->createInstanceWithArgumentsAndContext(
-                                    aCommandURL, aArgs, xComponentContext ),
-                                uno::UNO_QUERY );
-                bInit = sal_False; // Initialization is done through the factory service
-            }
+            beans::PropertyValue aPropValue;
+            std::vector< uno::Any > aPropVector;
+
+            aPropValue.Name     = OUString( "ModuleIdentifier" );
+            aPropValue.Value    = uno::makeAny( m_aModuleIdentifier );
+            aPropVector.push_back( uno::makeAny( aPropValue ) );
+
+            aPropValue.Name     = OUString( "Frame" );
+            aPropValue.Value    = uno::makeAny( m_xFrame );
+            aPropVector.push_back( uno::makeAny( aPropValue ) );
+
+            // TODO remove this
+            aPropValue.Name     = OUString( "ServiceManager" );
+            aPropValue.Value    = uno::makeAny( m_xServiceManager );
+            aPropVector.push_back( uno::makeAny( aPropValue ) );
+
+            aPropValue.Name     = OUString( "ParentWindow" );
+            aPropValue.Value    = uno::makeAny( xStatusbarWindow );
+            aPropVector.push_back( uno::makeAny( aPropValue ) );
+
+            // TODO still needing with the css::ui::XStatusbarItem?
+            aPropValue.Name     = OUString( "Identifier" );
+            aPropValue.Value    = uno::makeAny( nId );
+            aPropVector.push_back( uno::makeAny( aPropValue ) );
+
+            aPropValue.Name     = OUString( "StatusbarItem" );
+            aPropValue.Value    <<= xStatusbarItem;
+            aPropVector.push_back( uno::makeAny( aPropValue ) );
+
+            uno::Sequence< uno::Any > aArgs( comphelper::containerToSequence( aPropVector ) );
+            xController = uno::Reference< frame::XStatusListener >(
+                            m_xStatusbarControllerFactory->createInstanceWithArgumentsAndContext(
+                                aCommandURL, aArgs, xComponentContext ),
+                            uno::UNO_QUERY );
+            bInit = sal_False; // Initialization is done through the factory service
         }
 
         if ( !xController.is() )
diff --git a/framework/source/uielement/toolbarmanager.cxx b/framework/source/uielement/toolbarmanager.cxx
index ca4e2cf..05f15ba 100644
--- a/framework/source/uielement/toolbarmanager.cxx
+++ b/framework/source/uielement/toolbarmanager.cxx
@@ -41,6 +41,7 @@
 #include <com/sun/star/graphic/XGraphic.hpp>
 #include <com/sun/star/lang/XMultiComponentFactory.hpp>
 #include <com/sun/star/frame/ModuleManager.hpp>
+#include <com/sun/star/frame/ToolbarControllerFactory.hpp>
 #include <com/sun/star/ui/GlobalAcceleratorConfiguration.hpp>
 #include <com/sun/star/ui/XUIElementSettings.hpp>
 #include <com/sun/star/ui/XUIConfigurationPersistence.hpp>
@@ -229,7 +230,7 @@ ToolBarManager::ToolBarManager( const Reference< XComponentContext >& rxContext,
     if ( pWindow )
         ((SystemWindow *)pWindow)->GetTaskPaneList()->AddWindow( m_pToolBar );
 
-    m_xToolbarControllerRegistration = frame::ToolBarControllerFactory::create( m_xContext );
+    m_xToolbarControllerFactory = frame::ToolbarControllerFactory::create( m_xContext );
     m_xURLTransformer = URLTransformer::create( m_xContext );
 
     m_pToolBar->SetSelectHdl( LINK( this, ToolBarManager, Select) );
@@ -873,7 +874,6 @@ void ToolBarManager::CreateControllers()
 {
     RTL_LOGFILE_CONTEXT( aLog, "framework (cd100003) ::ToolBarManager::CreateControllers" );
 
-    Reference< XMultiComponentFactory > xToolbarControllerFactory( m_xToolbarControllerRegistration, UNO_QUERY );
     Reference< XWindow > xToolbarWindow = VCLUnoHelper::GetInterface( m_pToolBar );
 
     css::util::URL      aURL;
@@ -908,41 +908,38 @@ void ToolBarManager::CreateControllers()
             }
         }
 
-        if ( m_xToolbarControllerRegistration.is() &&
-             m_xToolbarControllerRegistration->hasController( aCommandURL, m_aModuleIdentifier ))
+        if ( m_xToolbarControllerFactory.is() &&
+             m_xToolbarControllerFactory->hasController( aCommandURL, m_aModuleIdentifier ))
         {
-            if ( xToolbarControllerFactory.is() )
+            PropertyValue aPropValue;
+            std::vector< Any > aPropertyVector;
+
+            aPropValue.Name     = OUString( "ModuleIdentifier" );
+            aPropValue.Value    <<= m_aModuleIdentifier;
+            aPropertyVector.push_back( makeAny( aPropValue ));
+            aPropValue.Name     = OUString( "Frame" );
+            aPropValue.Value    <<= m_xFrame;
+            aPropertyVector.push_back( makeAny( aPropValue ));
+            aPropValue.Name     = OUString( "ServiceManager" );
+            Reference<XMultiServiceFactory> xMSF(m_xContext->getServiceManager(), UNO_QUERY_THROW);
+            aPropValue.Value    <<= xMSF;
+            aPropertyVector.push_back( makeAny( aPropValue ));
+            aPropValue.Name     = OUString( "ParentWindow" );
+            aPropValue.Value    <<= xToolbarWindow;
+            aPropertyVector.push_back( makeAny( aPropValue ));
+
+            if ( nWidth > 0 )
             {
-                PropertyValue aPropValue;
-                std::vector< Any > aPropertyVector;
-
-                aPropValue.Name     = OUString( "ModuleName" );
-                aPropValue.Value    <<= m_aModuleIdentifier;
+                aPropValue.Name     = OUString( "Width" );
+                aPropValue.Value    <<= nWidth;
                 aPropertyVector.push_back( makeAny( aPropValue ));
-                aPropValue.Name     = OUString( "Frame" );
-                aPropValue.Value    <<= m_xFrame;
-                aPropertyVector.push_back( makeAny( aPropValue ));
-                aPropValue.Name     = OUString( "ServiceManager" );
-                Reference<XMultiServiceFactory> xMSF(m_xContext->getServiceManager(), UNO_QUERY_THROW);
-                aPropValue.Value    <<= xMSF;
-                aPropertyVector.push_back( makeAny( aPropValue ));
-                aPropValue.Name     = OUString( "ParentWindow" );
-                aPropValue.Value    <<= xToolbarWindow;
-                aPropertyVector.push_back( makeAny( aPropValue ));
-
-                if ( nWidth > 0 )
-                {
-                    aPropValue.Name     = OUString( "Width" );
-                    aPropValue.Value    <<= nWidth;
-                    aPropertyVector.push_back( makeAny( aPropValue ));
-                }
-
-                Sequence< Any > aArgs( comphelper::containerToSequence( aPropertyVector ));
-                xController = Reference< XStatusListener >( xToolbarControllerFactory->createInstanceWithArgumentsAndContext(
-                                                                aCommandURL, aArgs, m_xContext ),
-                                                            UNO_QUERY );
-                bInit = sal_False; // Initialization is done through the factory service
             }
+
+            Sequence< Any > aArgs( comphelper::containerToSequence( aPropertyVector ));
+            xController = Reference< XStatusListener >( m_xToolbarControllerFactory->createInstanceWithArgumentsAndContext(
+                                                            aCommandURL, aArgs, m_xContext ),
+                                                        UNO_QUERY );
+            bInit = sal_False; // Initialization is done through the factory service
         }
 
         if (( aCommandURL == aLoadURL ) && ( !m_pToolBar->IsItemVisible(nId)))
@@ -1040,7 +1037,7 @@ void ToolBarManager::CreateControllers()
                 aPropValue.Name = OUString( "ParentWindow" );
                 aPropValue.Value <<= xToolbarWindow;
                 aPropertyVector.push_back( makeAny( aPropValue ));
-                aPropValue.Name = OUString( "ModuleName" );
+                aPropValue.Name = OUString( "ModuleIdentifier" );
                 aPropValue.Value <<= m_aModuleIdentifier;
                 aPropertyVector.push_back( makeAny( aPropValue ));
 
diff --git a/framework/source/uifactory/factoryconfiguration.cxx b/framework/source/uifactory/factoryconfiguration.cxx
index 759de8d..73fa872 100644
--- a/framework/source/uifactory/factoryconfiguration.cxx
+++ b/framework/source/uifactory/factoryconfiguration.cxx
@@ -42,7 +42,6 @@ using namespace com::sun::star::uno;
 using namespace com::sun::star::lang;
 using namespace com::sun::star::beans;
 using namespace com::sun::star::container;
-using namespace ::com::sun::star::frame;
 
 //_________________________________________________________________________________________________________________
 //  Namespace
diff --git a/framework/source/uifactory/popupmenucontrollerfactory.cxx b/framework/source/uifactory/popupmenucontrollerfactory.cxx
deleted file mode 100644
index 2b47fd3..0000000
--- a/framework/source/uifactory/popupmenucontrollerfactory.cxx
+++ /dev/null
@@ -1,73 +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 .
- */
-
-#include "uifactory/popupmenucontrollerfactory.hxx"
-#include <threadhelp/resetableguard.hxx>
-#include "services.h"
-#include "uifactory/factoryconfiguration.hxx"
-
-#include <com/sun/star/beans/PropertyValue.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/container/XNameAccess.hpp>
-#include <com/sun/star/container/XNameContainer.hpp>
-#include <com/sun/star/container/XContainer.hpp>
-
-#include <rtl/ustrbuf.hxx>
-#include <cppuhelper/weak.hxx>
-#include <rtl/logfile.hxx>
-
-//_________________________________________________________________________________________________________________
-//  Defines
-//_________________________________________________________________________________________________________________
-
-using namespace com::sun::star::uno;
-using namespace com::sun::star::lang;
-using namespace com::sun::star::beans;
-using namespace com::sun::star::container;
-using namespace ::com::sun::star::frame;
-
-//_________________________________________________________________________________________________________________
-//  Namespace
-//_________________________________________________________________________________________________________________
-
-namespace framework
-{
-
-//*****************************************************************************************************************
-//  XInterface, XTypeProvider, XServiceInfo
-//*****************************************************************************************************************
-DEFINE_XSERVICEINFO_ONEINSTANCESERVICE  (   PopupMenuControllerFactory                      ,
-                                            ::cppu::OWeakObject                             ,
-                                            SERVICENAME_POPUPMENUCONTROLLERFACTORY          ,
-                                            IMPLEMENTATIONNAME_POPUPMENUCONTROLLERFACTORY
-                                        )
-
-DEFINE_INIT_SERVICE                     (   PopupMenuControllerFactory, {} )
-
-PopupMenuControllerFactory::PopupMenuControllerFactory( const Reference< XMultiServiceFactory >& xServiceManager ) :
-    ToolbarControllerFactory(xServiceManager,true)
-{
-    RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "framework", "Ocke.Janssen at sun.com", "PopupMenuControllerFactory::PopupMenuControllerFactory" );
-    m_pConfigAccess = new ConfigurationAccess_ControllerFactory( comphelper::getComponentContext(m_xServiceManager), OUString( "/org.openoffice.Office.UI.Controller/Registered/PopupMenu" ) );
-    m_pConfigAccess->acquire();
-}
-
-} // namespace framework
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/framework/source/uifactory/statusbarcontrollerfactory.cxx b/framework/source/uifactory/statusbarcontrollerfactory.cxx
deleted file mode 100644
index 3496d17..0000000
--- a/framework/source/uifactory/statusbarcontrollerfactory.cxx
+++ /dev/null
@@ -1,71 +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 .
- */
-
-#include "uifactory/statusbarcontrollerfactory.hxx"
-#include "uifactory/factoryconfiguration.hxx"
-#include <threadhelp/resetableguard.hxx>
-#include "services.h"
-
-#include <com/sun/star/beans/PropertyValue.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/container/XNameAccess.hpp>
-#include <com/sun/star/container/XNameContainer.hpp>
-#include <com/sun/star/container/XContainer.hpp>
-
-#include <rtl/ustrbuf.hxx>
-#include <cppuhelper/weak.hxx>
-
-//_________________________________________________________________________________________________________________
-//  Defines
-//_________________________________________________________________________________________________________________
-
-using namespace com::sun::star::uno;
-using namespace com::sun::star::lang;
-using namespace com::sun::star::beans;
-using namespace com::sun::star::container;
-using namespace ::com::sun::star::frame;
-
-//_________________________________________________________________________________________________________________
-//  Namespace
-//_________________________________________________________________________________________________________________
-
-namespace framework
-{
-//*****************************************************************************************************************
-//  XInterface, XTypeProvider, XServiceInfo
-//*****************************************************************************************************************
-DEFINE_XSERVICEINFO_ONEINSTANCESERVICE  (   StatusbarControllerFactory                      ,
-                                            ::cppu::OWeakObject                             ,
-                                            SERVICENAME_STATUSBARCONTROLLERFACTORY          ,
-                                            IMPLEMENTATIONNAME_STATUSBARCONTROLLERFACTORY
-                                        )
-
-DEFINE_INIT_SERVICE                     (   StatusbarControllerFactory, {} )
-
-StatusbarControllerFactory::StatusbarControllerFactory( const Reference< XMultiServiceFactory >& xServiceManager ) :
-    ToolbarControllerFactory(xServiceManager,true)
-{
-    m_pConfigAccess = new ConfigurationAccess_ControllerFactory( comphelper::getComponentContext(m_xServiceManager), OUString( "/org.openoffice.Office.UI.Controller/Registered/StatusBar" ),true );
-    m_pConfigAccess->acquire();
-}
-
-
-} // namespace framework
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/framework/source/uifactory/toolbarcontrollerfactory.cxx b/framework/source/uifactory/toolbarcontrollerfactory.cxx
deleted file mode 100644
index 592b89c..0000000
--- a/framework/source/uifactory/toolbarcontrollerfactory.cxx
+++ /dev/null
@@ -1,242 +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 .
- */
-
-#include "uifactory/toolbarcontrollerfactory.hxx"
-#include "uifactory/factoryconfiguration.hxx"
-#include <threadhelp/resetableguard.hxx>
-#include "services.h"
-
-#include <com/sun/star/beans/PropertyValue.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/container/XNameAccess.hpp>
-#include <com/sun/star/container/XNameContainer.hpp>
-#include <com/sun/star/container/XContainer.hpp>
-
-#include <rtl/ustrbuf.hxx>
-#include <cppuhelper/weak.hxx>
-
-//_________________________________________________________________________________________________________________
-//  Defines
-//_________________________________________________________________________________________________________________
-
-using namespace com::sun::star::uno;
-using namespace com::sun::star::lang;
-using namespace com::sun::star::beans;
-using namespace com::sun::star::container;
-using namespace ::com::sun::star::frame;
-
-//_________________________________________________________________________________________________________________
-//  Namespace
-//_________________________________________________________________________________________________________________
-
-namespace framework
-{
-
-//*****************************************************************************************************************
-//  XInterface, XTypeProvider, XServiceInfo
-//*****************************************************************************************************************
-DEFINE_XSERVICEINFO_ONEINSTANCESERVICE  (   ToolbarControllerFactory                        ,
-                                            ::cppu::OWeakObject                             ,
-                                            SERVICENAME_TOOLBARCONTROLLERFACTORY            ,
-                                            IMPLEMENTATIONNAME_TOOLBARCONTROLLERFACTORY
-                                        )
-
-DEFINE_INIT_SERVICE                     (   ToolbarControllerFactory, {} )
-
-ToolbarControllerFactory::ToolbarControllerFactory( const Reference< XMultiServiceFactory >& xServiceManager ) :
-    ThreadHelpBase(),
-    m_bConfigRead( sal_False ),
-    m_xServiceManager( xServiceManager )
-{
-    m_pConfigAccess = new ConfigurationAccess_ControllerFactory( comphelper::getComponentContext(m_xServiceManager), OUString( "/org.openoffice.Office.UI.Controller/Registered/ToolBar" ) );
-    m_pConfigAccess->acquire();
-}
-
-ToolbarControllerFactory::ToolbarControllerFactory( const Reference< XMultiServiceFactory >& xServiceManager,bool ) :
-    ThreadHelpBase(),
-    m_bConfigRead( sal_False ),
-    m_xServiceManager( xServiceManager )
-{
-    m_pConfigAccess = NULL;
-}
-
-ToolbarControllerFactory::~ToolbarControllerFactory()
-{
-    ResetableGuard aLock( m_aLock );
-
-    // reduce reference count
-    m_pConfigAccess->release();
-}
-
-// XMultiComponentFactory
-Reference< XInterface > SAL_CALL ToolbarControllerFactory::createInstanceWithContext(
-    const OUString& aServiceSpecifier,
-    const Reference< XComponentContext >& )
-throw (Exception, RuntimeException)
-{
-    // SAFE
-    ResetableGuard aLock( m_aLock );
-
-    if ( !m_bConfigRead )
-    {
-        m_bConfigRead = sal_True;
-        m_pConfigAccess->readConfigurationData();
-    }
-
-    OUString aServiceName = m_pConfigAccess->getServiceFromCommandModule( aServiceSpecifier, OUString() );
-    if ( !aServiceName.isEmpty() )
-        return m_xServiceManager->createInstance( aServiceName );
-    else
-        return Reference< XInterface >();
-    // SAFE
-}
-
-Reference< XInterface > SAL_CALL ToolbarControllerFactory::createInstanceWithArgumentsAndContext(
-    const OUString&                  ServiceSpecifier,
-    const Sequence< Any >&                  Arguments,
-    const Reference< XComponentContext >& )
-throw (Exception, RuntimeException)
-{
-    const OUString aPropModuleName( "ModuleName" );
-    const OUString aPropValueName( "Value" );
-
-    OUString   aPropName;
-    PropertyValue   aPropValue;
-
-    // Retrieve the optional module name form the Arguments sequence. It is used as a part of
-    // the hash map key to support different controller implementation for the same URL but different
-    // module!!
-    for ( int i = 0; i < Arguments.getLength(); i++ )
-    {
-        if (( Arguments[i] >>= aPropValue ) && ( aPropValue.Name.equals( aPropModuleName )))
-        {
-            aPropValue.Value >>= aPropName;
-            break;
-        }
-    }
-
-    Sequence< Any > aNewArgs( Arguments );
-
-    sal_Int32 nAppendIndex = aNewArgs.getLength();
-    bool bHasValue = m_pConfigAccess->hasValue();
-    aNewArgs.realloc( aNewArgs.getLength() + (bHasValue ? 2 : 1) );
-
-    // Append the command URL to the Arguments sequence so that one controller can be
-    // used for more than one command URL.
-    aPropValue.Name     = OUString( "CommandURL" );
-    aPropValue.Value  <<= ServiceSpecifier;
-    aNewArgs[nAppendIndex] <<= aPropValue;
-
-    if ( bHasValue )
-    {
-        // Append the optional value argument. It's an empty string if no additional info
-        // is provided to the controller.
-        OUString aValue = m_pConfigAccess->getValueFromCommandModule( ServiceSpecifier, aPropName );
-        aPropValue.Name = aPropValueName;
-        aPropValue.Value <<= aValue;
-        aNewArgs[nAppendIndex+1] <<= aPropValue;
-    }
-
-    {
-        // SAFE
-        ResetableGuard aLock( m_aLock );
-
-        if ( !m_bConfigRead )
-        {
-            m_bConfigRead = sal_True;
-            m_pConfigAccess->readConfigurationData();
-        }
-
-        OUString aServiceName = m_pConfigAccess->getServiceFromCommandModule( ServiceSpecifier, aPropName );
-        Reference< XMultiServiceFactory > xServiceManager( m_xServiceManager );
-
-        aLock.unlock();
-        // SAFE
-
-
-        if ( !aServiceName.isEmpty() )
-            return xServiceManager->createInstanceWithArguments( aServiceName, aNewArgs );
-        else
-            return Reference< XInterface >();
-    }
-}
-
-Sequence< OUString > SAL_CALL ToolbarControllerFactory::getAvailableServiceNames()
-throw (RuntimeException)
-{
-    return Sequence< OUString >();
-}
-
-// XUIControllerRegistration
-sal_Bool SAL_CALL ToolbarControllerFactory::hasController(
-    const OUString& aCommandURL,
-    const OUString& aModuleName )
-throw (::com::sun::star::uno::RuntimeException)
-{
-    ResetableGuard aLock( m_aLock );
-
-    if ( !m_bConfigRead )
-    {
-        m_bConfigRead = sal_True;
-        m_pConfigAccess->readConfigurationData();
-    }
-
-    return ( !m_pConfigAccess->getServiceFromCommandModule( aCommandURL, aModuleName ).isEmpty() );
-}
-
-void SAL_CALL ToolbarControllerFactory::registerController(
-    const OUString& aCommandURL,
-    const OUString& aModuleName,
-    const OUString& aControllerImplementationName )
-throw (RuntimeException)
-{
-    // SAFE
-    ResetableGuard aLock( m_aLock );
-
-    if ( !m_bConfigRead )
-    {
-        m_bConfigRead = sal_True;
-        m_pConfigAccess->readConfigurationData();
-    }
-
-    m_pConfigAccess->addServiceToCommandModule( aCommandURL, aModuleName, aControllerImplementationName );
-    // SAFE
-}
-
-void SAL_CALL ToolbarControllerFactory::deregisterController(
-    const OUString& aCommandURL,
-    const OUString& aModuleName )
-throw (RuntimeException)
-{
-    // SAFE
-    ResetableGuard aLock( m_aLock );
-
-    if ( !m_bConfigRead )
-    {
-        m_bConfigRead = sal_True;
-        m_pConfigAccess->readConfigurationData();
-    }
-
-    m_pConfigAccess->removeServiceFromCommandModule( aCommandURL, aModuleName );
-    // SAFE
-}
-
-} // namespace framework
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/framework/util/fwk.component b/framework/util/fwk.component
index 9d604c5..2e0c265 100644
--- a/framework/util/fwk.component
+++ b/framework/util/fwk.component
@@ -105,7 +105,7 @@
     <service name="com.sun.star.frame.TaskCreator"/>
   </implementation>
   <implementation name="com.sun.star.comp.framework.ToolBarControllerFactory">
-    <service name="com.sun.star.frame.ToolBarControllerFactory"/>
+    <service name="com.sun.star.frame.ToolbarControllerFactory"/>
   </implementation>
   <implementation name="com.sun.star.comp.framework.ToolBarFactory">
     <service name="com.sun.star.ui.ToolBarFactory"/>
diff --git a/offapi/UnoApi_offapi.mk b/offapi/UnoApi_offapi.mk
index 395d541..f1e935e 100644
--- a/offapi/UnoApi_offapi.mk
+++ b/offapi/UnoApi_offapi.mk
@@ -951,6 +951,7 @@ $(eval $(call gb_UnoApi_add_idlfiles_noheader,offapi,offapi/com/sun/star/frame,\
 	Task \
 	TemplateAccess \
 	ToolbarController \
+	ToolbarControllerFactory \
 	TransientDocumentsDocumentContentFactory \
 ))
 $(eval $(call gb_UnoApi_add_idlfiles_noheader,offapi,offapi/com/sun/star/gallery,\
@@ -2632,7 +2633,7 @@ $(eval $(call gb_UnoApi_add_idlfiles,offapi,offapi/com/sun/star/frame,\
 	XToolbarController \
 	XToolbarControllerListener \
 	XTransientDocumentsDocumentContentFactory \
-	XUIControllerRegistration \
+    XUIControllerFactory \
 	XUntitledNumbers \
 	XUrlList \
 	XWindowArranger \
diff --git a/offapi/com/sun/star/frame/PopupMenuControllerFactory.idl b/offapi/com/sun/star/frame/PopupMenuControllerFactory.idl
index 03e0fd8..d873e3d 100644
--- a/offapi/com/sun/star/frame/PopupMenuControllerFactory.idl
+++ b/offapi/com/sun/star/frame/PopupMenuControllerFactory.idl
@@ -20,14 +20,11 @@
 #ifndef __com_sun_star_frame_PopupMenuControllerFactory_idl__
 #define __com_sun_star_frame_PopupMenuControllerFactory_idl__
 
-#include <com/sun/star/lang/XMultiComponentFactory.idl>
-#include <com/sun/star/frame/XUIControllerRegistration.idl>
-
+#include <com/sun/star/frame/XUIControllerFactory.idl>
 
 module com { module sun { module star { module frame {
 
-
-/** specifies a factory that creates instances of registered pop-up menu controller.
+/** specifies a factory that creates instances of registered popup menu controller.
 
     <p>
     A pop-up menu controller can be registered for a command URL and a model service name.
@@ -37,35 +34,15 @@ module com { module sun { module star { module frame {
 
     @since OOo 2.0
 */
-
-service PopupMenuControllerFactory
+service PopupMenuControllerFactory : XUIControllerFactory
 {
-    /** this interface provides functions to create new instances of a registered pop-up menu controller.
-
-        <p>
-        Use <member scope="com.sun.star.lang">XMultiComponentFactory::createInstanceWithArguments()</member> to create
-        a new pop-up menu controller instance. Use the CommandURL as the service specifier.
-
-        This call supports the following arguments provided as <type scope="com::sun::star::beans">PropertyValue</type>:
-        <ul>
-            <li><b>Frame</b><br>specifies the <type scope="com::sun::star::frame">XFrame</type>
-                   instance to which the pop-up menu controller belongs to. This property must be provided to
-                   the pop-up menu controller, otherwise it cannot dispatch its internal commands.</li>
-            <li><b>ModuleIdentifier</b><br>optional string that specifies in which module context the pop-up menu
-                   controller should be created.</li>
-        </ul>
-        </p>
-     */
-    interface com::sun::star::lang::XMultiComponentFactory;
-
-    /** provides functions to query for, register and deregister a pop-up menu controller.
+    /** service constructor
      */
-    interface com::sun::star::frame::XUIControllerRegistration;
+    create();
 };
 
 }; }; }; };
 
-
 #endif
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/frame/StatusbarControllerFactory.idl b/offapi/com/sun/star/frame/StatusbarControllerFactory.idl
index 173ef5d..7572c6c 100644
--- a/offapi/com/sun/star/frame/StatusbarControllerFactory.idl
+++ b/offapi/com/sun/star/frame/StatusbarControllerFactory.idl
@@ -20,13 +20,10 @@
 #ifndef __com_sun_star_frame_StatusbarControllerFactory_idl__
 #define __com_sun_star_frame_StatusbarControllerFactory_idl__
 
-#include <com/sun/star/lang/XMultiComponentFactory.idl>
-#include <com/sun/star/frame/XUIControllerRegistration.idl>
-
+#include <com/sun/star/frame/XUIControllerFactory.idl>
 
 module com { module sun { module star { module frame {
 
-
 /** specifies a factory that creates instances of registered status bar
     controller.
 
@@ -38,40 +35,15 @@ module com { module sun { module star { module frame {
 
     @since OOo 2.0
 */
-
-service StatusbarControllerFactory
+service StatusbarControllerFactory : XUIControllerFactory
 {
-    /** this interface provides functions to create new instances of a registered
-        status bar controller.
-
-        <p>
-        Use <member scope="com.sun.star.lang">XMultiComponentFactory::createInstanceWithArguments()</member>
-        to create a new status bar controller instance. Use the CommandURL as the
-        service specifier.
-
-        This call supports the following arguments provided as
-        <type scope="com::sun::star::beans">PropertyValue</type>:
-        <ul>
-            <li><b>Frame</b><br>specifies the <type scope="com::sun::star::frame">XFrame</type>
-                   instance to which the status bar controller belongs to. This
-                   property must be provided to the status bar controller, otherwise it
-                   cannot dispatch its internal commands.</li>
-            <li><b>ModuleIdentifier</b><br>optional string that specifies in which module
-                   context the status bar controller should be created.</li>
-        </ul>
-        </p>
-     */
-    interface com::sun::star::lang::XMultiComponentFactory;
-
-    /** provides functions to query for, register and deregister a status bar
-        controller.
+    /** service constructor
      */
-    interface com::sun::star::frame::XUIControllerRegistration;
+    create();
 };
 
 }; }; }; };
 
-
 #endif
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/framework/inc/uifactory/statusbarcontrollerfactory.hxx b/offapi/com/sun/star/frame/ToolbarControllerFactory.idl
similarity index 50%
rename from framework/inc/uifactory/statusbarcontrollerfactory.hxx
rename to offapi/com/sun/star/frame/ToolbarControllerFactory.idl
index 979639f..220046e 100644
--- a/framework/inc/uifactory/statusbarcontrollerfactory.hxx
+++ b/offapi/com/sun/star/frame/ToolbarControllerFactory.idl
@@ -1,4 +1,3 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
 /*
  * This file is part of the LibreOffice project.
  *
@@ -16,29 +15,29 @@
  *   except in compliance with the License. You may obtain a copy of
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
+#ifndef __com_sun_star_frame_ToolbarControllerFactory_idl__
+#define __com_sun_star_frame_ToolbarControllerFactory_idl__
 
-#ifndef __FRAMEWORK_UIFACTORY_STATUSBARCONTROLLERFACTORY_HXX_
-#define __FRAMEWORK_UIFACTORY_STATUSBARCONTROLLERFACTORY_HXX_
+#include <com/sun/star/frame/XUIControllerFactory.idl>
 
-#include <macros/xserviceinfo.hxx>
-#include <uifactory/toolbarcontrollerfactory.hxx>
-#include <stdtypes.h>
+module com { module sun { module star { module frame {
 
-namespace framework
-{
+/** specifies a factory that creates instances of registered toolbar controller.
 
-class ConfigurationAccess_ControllerFactory;
-class StatusbarControllerFactory :  public ToolbarControllerFactory
-{
-    public:
-        StatusbarControllerFactory( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceManager );
+    <p>
+    A toolbar controller can be registered for a command URL and a model service name.
+    </p>
 
-        //  XInterface, XTypeProvider, XServiceInfo
-        DECLARE_XSERVICEINFO
-};
+    @since OOo 2.0
+*/
 
-} // namespace framework
+service ToolbarControllerFactory : XUIControllerFactory
+{
+    /** service constructor
+     */
+    create();
+};
 
-#endif // __FRAMEWORK_SERVICES_STATUSBARCONTROLLERFACTORY_HXX_
+}; }; }; };
 
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
+#endif
diff --git a/offapi/com/sun/star/frame/XUIControllerFactory.idl b/offapi/com/sun/star/frame/XUIControllerFactory.idl
new file mode 100644
index 0000000..ff352f5
--- /dev/null
+++ b/offapi/com/sun/star/frame/XUIControllerFactory.idl
@@ -0,0 +1,72 @@
+/*
+ * 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 __com_sun_star_frame_XUIControllerFactory_idl__
+#define __com_sun_star_frame_XUIControllerFactory_idl__
+
+#include <com/sun/star/lang/XMultiComponentFactory.idl>
+#include <com/sun/star/frame/XUIControllerRegistration.idl>
+
+module com { module sun { module star { module frame {
+
+/** a factory to create User Interface controllers.
+
+    <p>
+    A user interface controller can be registered for a command URL. A certain user
+    interface controller will be created when a user interface element contains a
+    registered command URL.
+
+    @see PopupMenuControllerFactory
+    @see StatusbarControllerFactory
+    @see ToolbarControllerFactory
+    </p>
+
+    @since LibreOffice 4.1
+ */
+interface XUIControllerFactory
+{
+    /** this interface provides functions to create new instances of a registered UI controller.
+
+        <p>
+        Use <member scope="com::sun::star::lang">XMultiComponentFactory::createInstanceWithArgumentsAndContext()</member> to create
+        a new UI controller instance. Use the CommandURL as the service specifier.
+
+        This call supports the following arguments provided as <type scope="com::sun::star::beans">PropertyValue</type>:
+        <ul>
+            <li>
+                <b>Frame</b><br>specifies the <type scope="com::sun::star::frame">XFrame</type>
+                instance to which the UI controller belongs to. This property must be provided to
+                the UI controller, otherwise it cannot dispatch its internal commands.
+             </li>
+            <li>
+                <b>ModuleIdentifier</b><br>optional string that specifies in which module context the UI
+                controller should be created.</br>The module identifier can be retrieved using the
+                <type>ModuleManager</type>.
+            </li>
+        </ul>
+        </p>
+     */
+    interface com::sun::star::lang::XMultiComponentFactory;
+
+    /** provides functions to query for, register and deregister a popup menu controller.
+     */
+    interface XUIControllerRegistration;
+};
+
+}; }; }; };
+
+#endif
diff --git a/svtools/source/uno/toolboxcontroller.cxx b/svtools/source/uno/toolboxcontroller.cxx
index 25e519b..d077b24 100644
--- a/svtools/source/uno/toolboxcontroller.cxx
+++ b/svtools/source/uno/toolboxcontroller.cxx
@@ -231,7 +231,7 @@ throw ( Exception, RuntimeException )
                 }
                 else if ( aPropValue.Name == "ParentWindow" )
                     m_pImpl->m_xParentWindow.set(aPropValue.Value,UNO_QUERY);
-                else if ( aPropValue.Name == "ModuleName" )
+                else if ( aPropValue.Name == "ModuleIdentifier" )
                     aPropValue.Value >>= m_pImpl->m_sModuleName;
             }
         }
commit f4bccae9eb48d36de9edd1fa5551e5e8de85b17e
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Mon May 20 17:18:56 2013 +0100

    Revert "fdo#46808, Adapt frame::PopupMenuControllerFactory UNO service"
    
    This reverts commit e93a0018871ebea4da1959c72c06f3c7f4dc7b27.
    
    Conflicts:
    	desktop/source/app/app.cxx
    	framework/source/uielement/menubarmanager.cxx
    	framework/source/uielement/popupmenucontroller.cxx
    	offapi/UnoApi_offapi.mk
    
    Change-Id: I3d4d49f98603e75357fb315a603a10851b3a7090

diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx
index de0e7b5..0b05fab 100644
--- a/desktop/source/app/app.cxx
+++ b/desktop/source/app/app.cxx
@@ -41,7 +41,6 @@
 #include <com/sun/star/frame/SessionListener.hpp>
 #include <com/sun/star/frame/XSessionManagerListener.hpp>
 #include <com/sun/star/frame/XSynchronousDispatch.hpp>
-#include <com/sun/star/frame/PopupMenuControllerFactory.hpp>
 #include <com/sun/star/document/CorruptedFilterConfigurationException.hpp>
 #include <com/sun/star/configuration/CorruptedConfigurationException.hpp>
 #include <com/sun/star/configuration/theDefaultProvider.hpp>
@@ -2215,16 +2214,21 @@ void Desktop::PreloadConfigurationData()
 
     // preload popup menu controller factories. As all controllers are in the same
     // configuration file they also get preloaded!
-    Reference< css::frame::XToolbarControllerFactory > xPopupMenuControllerFactory =
-        css::frame::PopupMenuControllerFactory::create( xContext );
-    try
-    {
-        xPopupMenuControllerFactory->hasController(
-                    OUString( ".uno:CharFontName" ),
-                    OUString() );
-    }
-    catch ( const ::com::sun::star::uno::Exception& )
+    Reference< ::com::sun::star::frame::XUIControllerRegistration > xPopupMenuControllerFactory(
+        rFactory->createInstance(
+            rtl::OUString( "com.sun.star.frame.PopupMenuControllerFactory" )),
+            UNO_QUERY );
+    if ( xPopupMenuControllerFactory.is() )
     {
+        try
+        {
+            xPopupMenuControllerFactory->hasController(
+                        rtl::OUString( ".uno:CharFontName" ),
+                        OUString() );
+        }
+        catch ( const ::com::sun::star::uno::Exception& )
+        {
+        }
     }
 
     // preload filter configuration
@@ -2269,6 +2273,8 @@ void Desktop::OpenClients()
 
     const CommandLineArgs& rArgs = GetCommandLineArgs();
 
+    Reference<XMultiServiceFactory> rFactory = ::comphelper::getProcessServiceFactory();
+
     if (!rArgs.IsQuickstart())
     {
         sal_Bool bShowHelp = sal_False;
diff --git a/framework/inc/services.h b/framework/inc/services.h
index a4bd093c..d57af35 100644
--- a/framework/inc/services.h
+++ b/framework/inc/services.h
@@ -38,6 +38,7 @@ namespace framework{
 #define SERVICENAME_JOB                                         DECLARE_ASCII("com.sun.star.task.Job"                               )
 #define SERVICENAME_PROTOCOLHANDLER                             DECLARE_ASCII("com.sun.star.frame.ProtocolHandler"                  )
 #define SERVICENAME_LAYOUTMANAGER                               DECLARE_ASCII("com.sun.star.frame.LayoutManager"             )
+#define SERVICENAME_POPUPMENUCONTROLLERFACTORY                  DECLARE_ASCII("com.sun.star.frame.PopupMenuControllerFactory" )
 #define SERVICENAME_POPUPMENUCONTROLLER                         DECLARE_ASCII("com.sun.star.frame.PopupMenuController"       )
 #define SERVICENAME_MODULEUICONFIGURATIONMANAGER                DECLARE_ASCII("com.sun.star.ui.ModuleUIConfigurationManager" )
 #define SERVICENAME_MENUBARFACTORY                              DECLARE_ASCII("com.sun.star.ui.UIElementFactory"             )
diff --git a/framework/inc/uielement/menubarmanager.hxx b/framework/inc/uielement/menubarmanager.hxx
index 37d6893..1e9e386 100644
--- a/framework/inc/uielement/menubarmanager.hxx
+++ b/framework/inc/uielement/menubarmanager.hxx
@@ -34,7 +34,6 @@
 #include <com/sun/star/frame/XDispatchProvider.hpp>
 #include <com/sun/star/frame/FeatureStateEvent.hpp>
 #include <com/sun/star/frame/XFrameActionListener.hpp>
-#include <com/sun/star/frame/XToolbarControllerFactory.hpp>
 #include <com/sun/star/beans/PropertyValue.hpp>
 #include <com/sun/star/frame/XPopupMenuController.hpp>
 #include <com/sun/star/awt/XSystemDependentMenuPeer.hpp>
@@ -236,7 +235,7 @@ class MenuBarManager : public com::sun::star::frame::XStatusListener
         Menu*                                                                                  m_pVCLMenu;
         ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >                    m_xFrame;
         ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >           m_xUICommandLabels;
-        ::com::sun::star::uno::Reference< ::com::sun::star::frame::XToolbarControllerFactory > m_xPopupMenuControllerRegistration;
+        ::com::sun::star::uno::Reference< ::com::sun::star::frame::XUIControllerRegistration > m_xPopupMenuControllerRegistration;
         ::std::vector< MenuItemHandler* >                                                      m_aMenuItemHandlerVector;
         ::cppu::OMultiTypeInterfaceContainerHelper                                             m_aListenerContainer;   /// container for ALL Listener
         ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider >         m_xDispatchProvider;
diff --git a/framework/inc/uifactory/toolbarcontrollerfactory.hxx b/framework/inc/uifactory/toolbarcontrollerfactory.hxx
index f72c6e6..7534e6c 100644
--- a/framework/inc/uifactory/toolbarcontrollerfactory.hxx
+++ b/framework/inc/uifactory/toolbarcontrollerfactory.hxx
@@ -29,9 +29,10 @@
 
 #include <com/sun/star/lang/XServiceInfo.hpp>
 #include <com/sun/star/lang/XTypeProvider.hpp>
-#include <com/sun/star/frame/XToolbarControllerFactory.hpp>
+#include <com/sun/star/lang/XMultiComponentFactory.hpp>
+#include <com/sun/star/frame/XUIControllerRegistration.hpp>
 
-#include <cppuhelper/implbase2.hxx>
+#include <cppuhelper/implbase3.hxx>
 #include <rtl/ustring.hxx>
 
 namespace framework
@@ -39,8 +40,9 @@ namespace framework
 
 class ConfigurationAccess_ControllerFactory;
 class ToolbarControllerFactory :  protected ThreadHelpBase                                          ,   // Struct for right initalization of mutex member! Must be first of baseclasses.
-                                  public ::cppu::WeakImplHelper2<   com::sun::star::lang::XServiceInfo,
-                                                                    com::sun::star::frame::XToolbarControllerFactory>
+                                  public ::cppu::WeakImplHelper3<   com::sun::star::lang::XServiceInfo,
+                                                                    com::sun::star::lang::XMultiComponentFactory,
+                                                                    com::sun::star::frame::XUIControllerRegistration>
 {
     public:
         ToolbarControllerFactory( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceManager );
diff --git a/framework/source/uielement/menubarmanager.cxx b/framework/source/uielement/menubarmanager.cxx
index b846039..91e7df8 100644
--- a/framework/source/uielement/menubarmanager.cxx
+++ b/framework/source/uielement/menubarmanager.cxx
@@ -36,7 +36,6 @@
 #include <com/sun/star/lang/DisposedException.hpp>
 #include <com/sun/star/frame/XFramesSupplier.hpp>
 #include <com/sun/star/frame/Desktop.hpp>
-#include <com/sun/star/frame/PopupMenuControllerFactory.hpp>
 #include <com/sun/star/container/XEnumeration.hpp>
 #include <com/sun/star/util/XStringWidth.hpp>
 #include <com/sun/star/uno/XComponentContext.hpp>
@@ -183,7 +182,9 @@ MenuBarManager::MenuBarManager(
     , m_nSymbolsStyle( SvtMiscOptions().GetCurrentSymbolsStyle() )
 {
     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "framework", "Ocke.Janssen at sun.com", "MenuBarManager::MenuBarManager" );
-    m_xPopupMenuControllerRegistration = PopupMenuControllerFactory::create( m_xContext );
+    m_xPopupMenuControllerRegistration = Reference< ::com::sun::star::frame::XUIControllerRegistration >(
+        getServiceFactory()->createInstance( OUString( "com.sun.star.frame.PopupMenuControllerFactory" )),
+        UNO_QUERY );
     FillMenuManager( pMenu, rFrame, rDispatchProvider, rModuleIdentifier, bDelete, bDeleteChildren );
 }
 
@@ -1186,30 +1187,37 @@ sal_Bool MenuBarManager::CreatePopupMenuController( MenuItemHandler* pMenuItemHa
     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "framework", "Ocke.Janssen at sun.com", "MenuBarManager::CreatePopupMenuController" );
     OUString aItemCommand( pMenuItemHandler->aMenuItemURL );
 
-    // Try instantiate a popup menu controller. It is stored in the menu item handler.
-    Sequence< Any > aSeq( 2 );
-    PropertyValue aPropValue;
-
-    aPropValue.Name         = OUString( "ModuleName" );
-    aPropValue.Value      <<= m_aModuleIdentifier;
-    aSeq[0] <<= aPropValue;
-    aPropValue.Name         = OUString( "Frame" );
-    aPropValue.Value      <<= m_xFrame;
-    aSeq[1] <<= aPropValue;
-
-    Reference< XPopupMenuController > xPopupMenuController(
-                                            m_xPopupMenuControllerRegistration->createInstanceWithArgumentsAndContext(
-                                                aItemCommand,
-                                                aSeq,
-                                                m_xContext ),
-                                            UNO_QUERY );
-
-    if ( xPopupMenuController.is() )
+    // Try instanciate a popup menu controller. It is stored in the menu item handler.
+    Reference< XMultiComponentFactory > xPopupMenuControllerFactory( m_xPopupMenuControllerRegistration, UNO_QUERY );
+    if ( xPopupMenuControllerFactory.is() )
     {
-        // Provide our awt popup menu to the popup menu controller
-        pMenuItemHandler->xPopupMenuController = xPopupMenuController;
-        xPopupMenuController->setPopupMenu( pMenuItemHandler->xPopupMenu );
-        return sal_True;
+        Sequence< Any > aSeq( 2 );
+        PropertyValue aPropValue;
+
+        aPropValue.Name         = OUString( "ModuleName" );
+        aPropValue.Value      <<= m_aModuleIdentifier;
+        aSeq[0] <<= aPropValue;
+        aPropValue.Name         = OUString( "Frame" );
+        aPropValue.Value      <<= m_xFrame;
+        aSeq[1] <<= aPropValue;
+
+        Reference< XComponentContext > xComponentContext(
+            comphelper::getComponentContext( getServiceFactory() ) );
+
+        Reference< XPopupMenuController > xPopupMenuController(
+                                                xPopupMenuControllerFactory->createInstanceWithArgumentsAndContext(
+                                                    aItemCommand,
+                                                    aSeq,
+                                                    xComponentContext ),
+                                                UNO_QUERY );
+
+        if ( xPopupMenuController.is() )
+        {
+            // Provide our awt popup menu to the popup menu controller
+            pMenuItemHandler->xPopupMenuController = xPopupMenuController;
+            xPopupMenuController->setPopupMenu( pMenuItemHandler->xPopupMenu );
+            return sal_True;
+        }
     }
 
     return sal_False;
@@ -2012,7 +2020,9 @@ void MenuBarManager::Init(const Reference< XFrame >& rFrame,AddonMenu* pAddonMen
     m_bIsBookmarkMenu   = sal_True;
 
     OUString aModuleIdentifier;
-    m_xPopupMenuControllerRegistration = PopupMenuControllerFactory::create( m_xContext );
+    m_xPopupMenuControllerRegistration = Reference< ::com::sun::star::frame::XUIControllerRegistration >(
+        getServiceFactory()->createInstance( OUString( "com.sun.star.frame.PopupMenuControllerFactory" )),
+        UNO_QUERY );
 
     Reference< XStatusListener > xStatusListener;
     Reference< XDispatch > xDispatch;
diff --git a/framework/source/uielement/popupmenucontroller.cxx b/framework/source/uielement/popupmenucontroller.cxx
index 80fbdc3..571b5cb 100644
--- a/framework/source/uielement/popupmenucontroller.cxx
+++ b/framework/source/uielement/popupmenucontroller.cxx
@@ -20,7 +20,6 @@
 
 #include <com/sun/star/awt/XPopupMenu.hpp>
 #include <com/sun/star/frame/XPopupMenuController.hpp>
-#include <com/sun/star/frame/PopupMenuControllerFactory.hpp>
 
 #include <toolkit/helper/vclunohelper.hxx>
 
@@ -156,7 +155,7 @@ void SAL_CALL PopupMenuController::doubleClick() throw (RuntimeException)
 
 bool PopupMenuController::CreatePopupMenuController() throw (Exception)
 {
-    Reference< XToolbarControllerFactory > xPopupMenuControllerRegistration = PopupMenuControllerFactory::create( m_xContext );
+    Reference< XMultiComponentFactory > xPopupMenuControllerRegistration( getServiceManager()->createInstance( SERVICENAME_POPUPMENUCONTROLLERFACTORY ), UNO_QUERY_THROW );
 
     Sequence< Any > aSeq( 2 );
     PropertyValue aPropValue;
@@ -168,7 +167,10 @@ bool PopupMenuController::CreatePopupMenuController() throw (Exception)
     aPropValue.Value <<= m_xFrame;
     aSeq[1] <<= aPropValue;
 
-    Reference< XPopupMenuController > xPopupMenuController( xPopupMenuControllerRegistration->createInstanceWithArgumentsAndContext( getCommandURL(), aSeq, m_xContext ), UNO_QUERY );
+    Reference< XComponentContext > xComponentContext(
+        comphelper::getComponentContext( getServiceManager() ) );
+
+    Reference< XPopupMenuController > xPopupMenuController( xPopupMenuControllerRegistration->createInstanceWithArgumentsAndContext( getCommandURL(), aSeq, xComponentContext ), UNO_QUERY );
     if ( xPopupMenuController.is() )
     {
         mxPopupMenuController = xPopupMenuController;
diff --git a/framework/source/uifactory/popupmenucontrollerfactory.cxx b/framework/source/uifactory/popupmenucontrollerfactory.cxx
index e49e346..2b47fd3 100644
--- a/framework/source/uifactory/popupmenucontrollerfactory.cxx
+++ b/framework/source/uifactory/popupmenucontrollerfactory.cxx
@@ -54,7 +54,7 @@ namespace framework
 //*****************************************************************************************************************
 DEFINE_XSERVICEINFO_ONEINSTANCESERVICE  (   PopupMenuControllerFactory                      ,
                                             ::cppu::OWeakObject                             ,
-                                            DECLARE_ASCII("com.sun.star.frame.PopupMenuControllerFactory"),
+                                            SERVICENAME_POPUPMENUCONTROLLERFACTORY          ,
                                             IMPLEMENTATIONNAME_POPUPMENUCONTROLLERFACTORY
                                         )
 
diff --git a/offapi/UnoApi_offapi.mk b/offapi/UnoApi_offapi.mk
index 91c31c4..395d541 100644
--- a/offapi/UnoApi_offapi.mk
+++ b/offapi/UnoApi_offapi.mk
@@ -198,7 +198,6 @@ $(eval $(call gb_UnoApi_add_idlfiles_nohdl,offapi,offapi/com/sun/star/frame,\
 	GlobalEventBroadcaster \
 	MediaTypeDetectionHelper \
 	ModuleManager \
-	PopupMenuControllerFactory \
     SessionListener \
     StartModule \
     TaskCreator \
@@ -942,6 +941,7 @@ $(eval $(call gb_UnoApi_add_idlfiles_noheader,offapi,offapi/com/sun/star/frame,\
 	FramesContainer \
 	LayoutManager \
 	PopupMenuController \
+	PopupMenuControllerFactory \
 	ProtocolHandler \
 	SessionManager \
 	Settings \
@@ -2630,7 +2630,6 @@ $(eval $(call gb_UnoApi_add_idlfiles,offapi,offapi/com/sun/star/frame,\
 	XTitleChangeBroadcaster \
 	XTitleChangeListener \
 	XToolbarController \
-	XToolbarControllerFactory \
 	XToolbarControllerListener \
 	XTransientDocumentsDocumentContentFactory \
 	XUIControllerRegistration \
diff --git a/offapi/com/sun/star/frame/PopupMenuControllerFactory.idl b/offapi/com/sun/star/frame/PopupMenuControllerFactory.idl
index 674112b..03e0fd8 100644
--- a/offapi/com/sun/star/frame/PopupMenuControllerFactory.idl
+++ b/offapi/com/sun/star/frame/PopupMenuControllerFactory.idl
@@ -20,7 +20,8 @@
 #ifndef __com_sun_star_frame_PopupMenuControllerFactory_idl__
 #define __com_sun_star_frame_PopupMenuControllerFactory_idl__
 
-#include <com/sun/star/frame/XToolbarControllerFactory.idl>
+#include <com/sun/star/lang/XMultiComponentFactory.idl>
+#include <com/sun/star/frame/XUIControllerRegistration.idl>
 
 
 module com { module sun { module star { module frame {
@@ -37,7 +38,30 @@ module com { module sun { module star { module frame {
     @since OOo 2.0
 */
 
-service PopupMenuControllerFactory : XToolbarControllerFactory;
+service PopupMenuControllerFactory
+{
+    /** this interface provides functions to create new instances of a registered pop-up menu controller.
+
+        <p>
+        Use <member scope="com.sun.star.lang">XMultiComponentFactory::createInstanceWithArguments()</member> to create
+        a new pop-up menu controller instance. Use the CommandURL as the service specifier.
+
+        This call supports the following arguments provided as <type scope="com::sun::star::beans">PropertyValue</type>:
+        <ul>
+            <li><b>Frame</b><br>specifies the <type scope="com::sun::star::frame">XFrame</type>
+                   instance to which the pop-up menu controller belongs to. This property must be provided to
+                   the pop-up menu controller, otherwise it cannot dispatch its internal commands.</li>
+            <li><b>ModuleIdentifier</b><br>optional string that specifies in which module context the pop-up menu
+                   controller should be created.</li>
+        </ul>
+        </p>
+     */
+    interface com::sun::star::lang::XMultiComponentFactory;
+
+    /** provides functions to query for, register and deregister a pop-up menu controller.
+     */
+    interface com::sun::star::frame::XUIControllerRegistration;
+};
 
 }; }; }; };
 
diff --git a/offapi/com/sun/star/frame/XToolbarControllerFactory.idl b/offapi/com/sun/star/frame/XToolbarControllerFactory.idl
deleted file mode 100644
index 8f3ac8c..0000000
--- a/offapi/com/sun/star/frame/XToolbarControllerFactory.idl
+++ /dev/null
@@ -1,65 +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 __com_sun_star_frame_XToolbarControllerFactory_idl__
-#define __com_sun_star_frame_XToolbarControllerFactory_idl__
-
-#include <com/sun/star/lang/XMultiComponentFactory.idl>
-#include <com/sun/star/frame/XUIControllerRegistration.idl>
-
-
-module com { module sun { module star { module frame {
-
-
-/** Provides a unified interface for the new-style PopupMenuControllerFactory service to implement.
-
-    @since LibreOffice 4.1
-*/
-
-interface XToolbarControllerFactory
-{
-    /** this interface provides functions to create new instances of a registered pop-up menu controller.
-
-        <p>
-        Use <member scope="com.sun.star.lang">XMultiComponentFactory::createInstanceWithArguments()</member> to create
-        a new pop-up menu controller instance. Use the CommandURL as the service specifier.
-
-        This call supports the following arguments provided as <type scope="com::sun::star::beans">PropertyValue</type>:
-        <ul>
-            <li><b>Frame</b><br>specifies the <type scope="com::sun::star::frame">XFrame</type>
-                   instance to which the pop-up menu controller belongs to. This property must be provided to
-                   the pop-up menu controller, otherwise it cannot dispatch its internal commands.</li>
-            <li><b>ModuleIdentifier</b><br>optional string that specifies in which module context the pop-up menu
-                   controller should be created.</li>
-        </ul>
-        </p>
-     */
-    interface com::sun::star::lang::XMultiComponentFactory;
-
-    /** provides functions to query for, register and deregister a pop-up menu controller.
-     */
-    interface com::sun::star::frame::XUIControllerRegistration;
-};
-
-}; }; }; };
-
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit e9679a4a769e1edcc9c41c96de5739286323be79
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Mon May 20 17:09:47 2013 +0100

    Revert "fdo#46808, Create new-style frame::ToolBarControllerFactory service"
    
    This reverts commit ecae523d9603eaf7ff0acc98682576813e50c94a.
    
    Conflicts:
    	framework/source/uielement/toolbarmanager.cxx
    	offapi/UnoApi_offapi.mk
    
    Change-Id: I9f5fe49ffdf3176f0d742d28277c4ec2afbc1ed4

diff --git a/framework/inc/services.h b/framework/inc/services.h
index cd3eb2b..a4bd093c 100644
--- a/framework/inc/services.h
+++ b/framework/inc/services.h
@@ -45,6 +45,7 @@ namespace framework{
 #define SERVICENAME_MODULEACCELERATORCONFIGURATION              DECLARE_ASCII("com.sun.star.ui.ModuleAcceleratorConfiguration")
 #define SERVICENAME_DOCUMENTACCELERATORCONFIGURATION            DECLARE_ASCII("com.sun.star.ui.DocumentAcceleratorConfiguration")
 #define SERVICENAME_TOOLBARFACTORY                              DECLARE_ASCII("com.sun.star.ui.ToolBarFactory"               )
+#define SERVICENAME_TOOLBARCONTROLLERFACTORY                    DECLARE_ASCII("com.sun.star.frame.ToolBarControllerFactory"         )
 #define SERVICENAME_LICENSE                                     SERVICENAME_JOB
 #define SERVICENAME_STATUSBARFACTORY                            DECLARE_ASCII("com.sun.star.ui.StatusBarFactory"             )
 #define SERVICENAME_STATUSBARCONTROLLERFACTORY                  DECLARE_ASCII("com.sun.star.frame.StatusbarControllerFactory"       )
diff --git a/framework/source/uielement/toolbarmanager.cxx b/framework/source/uielement/toolbarmanager.cxx
index b8ca9bd..ca4e2cf 100644
--- a/framework/source/uielement/toolbarmanager.cxx
+++ b/framework/source/uielement/toolbarmanager.cxx
@@ -34,7 +34,6 @@
 #include <com/sun/star/ui/ItemType.hpp>
 #include <com/sun/star/frame/XDispatchProvider.hpp>
 #include <com/sun/star/frame/UICommandDescription.hpp>
-#include <com/sun/star/frame/ToolBarControllerFactory.hpp>
 #include <com/sun/star/beans/XPropertySet.hpp>
 #include <com/sun/star/awt/XDockableWindow.hpp>
 #include <com/sun/star/frame/XLayoutManager.hpp>

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list