menubarmanager.cxx (796936d9) | menubarmanager.cxx (dccf82be) |
---|---|
1/************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance --- 43 unchanged lines hidden (view full) --- 52#include <com/sun/star/beans/XPropertySet.hpp> 53#include <com/sun/star/frame/XFramesSupplier.hpp> 54#include <com/sun/star/frame/XDesktop.hpp> 55#include <com/sun/star/container/XEnumeration.hpp> 56#include <com/sun/star/util/XStringWidth.hpp> 57#include <com/sun/star/uno/XComponentContext.hpp> 58#include <com/sun/star/lang/XMultiComponentFactory.hpp> 59#include <com/sun/star/frame/XPopupMenuController.hpp> | 1/************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance --- 43 unchanged lines hidden (view full) --- 52#include <com/sun/star/beans/XPropertySet.hpp> 53#include <com/sun/star/frame/XFramesSupplier.hpp> 54#include <com/sun/star/frame/XDesktop.hpp> 55#include <com/sun/star/container/XEnumeration.hpp> 56#include <com/sun/star/util/XStringWidth.hpp> 57#include <com/sun/star/uno/XComponentContext.hpp> 58#include <com/sun/star/lang/XMultiComponentFactory.hpp> 59#include <com/sun/star/frame/XPopupMenuController.hpp> |
60#include <com/sun/star/frame/XUIControllerRegistration.hpp> | 60#include <com/sun/star/frame/PopupMenuControllerFactory.hpp> |
61#ifndef _COM_SUN_STAR_LANG_XSYSTEMDEPENDENT_HPP_ 62#include <com/sun/star/lang/SystemDependent.hpp> 63#endif 64#include <com/sun/star/ui/ItemType.hpp> 65#include <com/sun/star/ui/ImageType.hpp> 66#include <com/sun/star/container/XNameAccess.hpp> 67#include <com/sun/star/frame/XModuleManager.hpp> 68#include <com/sun/star/ui/XModuleUIConfigurationManagerSupplier.hpp> --- 147 unchanged lines hidden (view full) --- 216 , m_bAcceleratorCfg( sal_False ) 217 , m_bModuleIdentified( sal_False ) 218 , m_aListenerContainer( m_aLock.getShareableOslMutex() ) 219 , mxServiceFactory(xServiceFactory) 220 , m_xURLTransformer(_xURLTransformer) 221 , m_nSymbolsStyle( SvtMiscOptions().GetCurrentSymbolsStyle() ) 222{ 223 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "framework", "Ocke.Janssen@sun.com", "MenuBarManager::MenuBarManager" ); | 61#ifndef _COM_SUN_STAR_LANG_XSYSTEMDEPENDENT_HPP_ 62#include <com/sun/star/lang/SystemDependent.hpp> 63#endif 64#include <com/sun/star/ui/ItemType.hpp> 65#include <com/sun/star/ui/ImageType.hpp> 66#include <com/sun/star/container/XNameAccess.hpp> 67#include <com/sun/star/frame/XModuleManager.hpp> 68#include <com/sun/star/ui/XModuleUIConfigurationManagerSupplier.hpp> --- 147 unchanged lines hidden (view full) --- 216 , m_bAcceleratorCfg( sal_False ) 217 , m_bModuleIdentified( sal_False ) 218 , m_aListenerContainer( m_aLock.getShareableOslMutex() ) 219 , mxServiceFactory(xServiceFactory) 220 , m_xURLTransformer(_xURLTransformer) 221 , m_nSymbolsStyle( SvtMiscOptions().GetCurrentSymbolsStyle() ) 222{ 223 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "framework", "Ocke.Janssen@sun.com", "MenuBarManager::MenuBarManager" ); |
224 m_xPopupMenuControllerRegistration = Reference< ::com::sun::star::frame::XUIControllerRegistration >( 225 getServiceFactory()->createInstance( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.PopupMenuControllerFactory" ))), 226 UNO_QUERY ); | 224 m_xPopupMenuControllerFactory = frame::PopupMenuControllerFactory::create( 225 ::comphelper::getProcessComponentContext() ); |
227 FillMenuManager( pMenu, rFrame, rDispatchProvider, rModuleIdentifier, bDelete, bDeleteChildren ); 228} 229 230// #110897# 231MenuBarManager::MenuBarManager( 232 const Reference< XMultiServiceFactory >& xServiceFactory, 233 const Reference< XFrame >& rFrame, 234 const Reference< XURLTransformer >& _xURLTransformer, --- 189 unchanged lines hidden (view full) --- 424 m_xModuleImageManager.clear(); 425 Reference< XComponent > xCompGAM( m_xGlobalAcceleratorManager, UNO_QUERY ); 426 if ( xCompGAM.is() ) 427 xCompGAM->dispose(); 428 m_xGlobalAcceleratorManager.clear(); 429 m_xModuleAcceleratorManager.clear(); 430 m_xDocAcceleratorManager.clear(); 431 m_xUICommandLabels.clear(); | 226 FillMenuManager( pMenu, rFrame, rDispatchProvider, rModuleIdentifier, bDelete, bDeleteChildren ); 227} 228 229// #110897# 230MenuBarManager::MenuBarManager( 231 const Reference< XMultiServiceFactory >& xServiceFactory, 232 const Reference< XFrame >& rFrame, 233 const Reference< XURLTransformer >& _xURLTransformer, --- 189 unchanged lines hidden (view full) --- 423 m_xModuleImageManager.clear(); 424 Reference< XComponent > xCompGAM( m_xGlobalAcceleratorManager, UNO_QUERY ); 425 if ( xCompGAM.is() ) 426 xCompGAM->dispose(); 427 m_xGlobalAcceleratorManager.clear(); 428 m_xModuleAcceleratorManager.clear(); 429 m_xDocAcceleratorManager.clear(); 430 m_xUICommandLabels.clear(); |
432 m_xPopupMenuControllerRegistration.clear(); | 431 m_xPopupMenuControllerFactory.clear(); |
433 mxServiceFactory.clear(); 434 } 435} 436 437void SAL_CALL MenuBarManager::addEventListener( const Reference< XEventListener >& xListener ) throw( RuntimeException ) 438{ 439 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "framework", "Ocke.Janssen@sun.com", "MenuBarManager::addEventListener" ); 440 ResetableGuard aGuard( m_aLock ); --- 534 unchanged lines hidden (view full) --- 975 976 if ( m_bIsBookmarkMenu ) 977 xMenuItemDispatch = xDispatchProvider->queryDispatch( aTargetURL, pMenuItemHandler->aTargetFrame, 0 ); 978 else 979 xMenuItemDispatch = xDispatchProvider->queryDispatch( aTargetURL, ::rtl::OUString(), 0 ); 980 981 sal_Bool bPopupMenu( sal_False ); 982 if ( !pMenuItemHandler->xPopupMenuController.is() && | 432 mxServiceFactory.clear(); 433 } 434} 435 436void SAL_CALL MenuBarManager::addEventListener( const Reference< XEventListener >& xListener ) throw( RuntimeException ) 437{ 438 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "framework", "Ocke.Janssen@sun.com", "MenuBarManager::addEventListener" ); 439 ResetableGuard aGuard( m_aLock ); --- 534 unchanged lines hidden (view full) --- 974 975 if ( m_bIsBookmarkMenu ) 976 xMenuItemDispatch = xDispatchProvider->queryDispatch( aTargetURL, pMenuItemHandler->aTargetFrame, 0 ); 977 else 978 xMenuItemDispatch = xDispatchProvider->queryDispatch( aTargetURL, ::rtl::OUString(), 0 ); 979 980 sal_Bool bPopupMenu( sal_False ); 981 if ( !pMenuItemHandler->xPopupMenuController.is() && |
983 m_xPopupMenuControllerRegistration->hasController( aItemCommand, rtl::OUString() )) | 982 m_xPopupMenuControllerFactory->hasController( aItemCommand, rtl::OUString() )) |
984 { 985 bPopupMenu = CreatePopupMenuController( pMenuItemHandler ); 986 } 987 else if ( pMenuItemHandler->xPopupMenuController.is() ) 988 { 989 // Force update of popup menu 990 pMenuItemHandler->xPopupMenuController->updatePopupMenu(); 991 bPopupMenu = sal_True; --- 225 unchanged lines hidden (view full) --- 1217 1218 1219sal_Bool MenuBarManager::CreatePopupMenuController( MenuItemHandler* pMenuItemHandler ) 1220{ 1221 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "framework", "Ocke.Janssen@sun.com", "MenuBarManager::CreatePopupMenuController" ); 1222 rtl::OUString aItemCommand( pMenuItemHandler->aMenuItemURL ); 1223 1224 // Try instanciate a popup menu controller. It is stored in the menu item handler. | 983 { 984 bPopupMenu = CreatePopupMenuController( pMenuItemHandler ); 985 } 986 else if ( pMenuItemHandler->xPopupMenuController.is() ) 987 { 988 // Force update of popup menu 989 pMenuItemHandler->xPopupMenuController->updatePopupMenu(); 990 bPopupMenu = sal_True; --- 225 unchanged lines hidden (view full) --- 1216 1217 1218sal_Bool MenuBarManager::CreatePopupMenuController( MenuItemHandler* pMenuItemHandler ) 1219{ 1220 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "framework", "Ocke.Janssen@sun.com", "MenuBarManager::CreatePopupMenuController" ); 1221 rtl::OUString aItemCommand( pMenuItemHandler->aMenuItemURL ); 1222 1223 // Try instanciate a popup menu controller. It is stored in the menu item handler. |
1225 Reference< XMultiComponentFactory > xPopupMenuControllerFactory( m_xPopupMenuControllerRegistration, UNO_QUERY ); 1226 if ( xPopupMenuControllerFactory.is() ) 1227 { 1228 Sequence< Any > aSeq( 2 ); 1229 PropertyValue aPropValue; | 1224 if ( !m_xPopupMenuControllerFactory.is() ) 1225 return sal_False; |
1230 | 1226 |
1231 aPropValue.Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ModuleName" )); 1232 aPropValue.Value <<= m_aModuleIdentifier; 1233 aSeq[0] <<= aPropValue; 1234 aPropValue.Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Frame" )); 1235 aPropValue.Value <<= m_xFrame; 1236 aSeq[1] <<= aPropValue; | 1227 Sequence< Any > aSeq( 2 ); 1228 PropertyValue aPropValue; |
1237 | 1229 |
1238 Reference< XComponentContext > xComponentContext; 1239 Reference< XPropertySet > xProps( getServiceFactory(), UNO_QUERY ); | 1230 aPropValue.Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ModuleIdentifier" )); 1231 aPropValue.Value <<= m_aModuleIdentifier; 1232 aSeq[0] <<= aPropValue; 1233 aPropValue.Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Frame" )); 1234 aPropValue.Value <<= m_xFrame; 1235 aSeq[1] <<= aPropValue; |
1240 | 1236 |
1241 xProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DefaultContext" ))) >>= 1242 xComponentContext; | 1237 Reference< XComponentContext > xComponentContext; 1238 Reference< XPropertySet > xProps( getServiceFactory(), UNO_QUERY ); |
1243 | 1239 |
1244 Reference< XPopupMenuController > xPopupMenuController( 1245 xPopupMenuControllerFactory->createInstanceWithArgumentsAndContext( 1246 aItemCommand, 1247 aSeq, 1248 xComponentContext ), 1249 UNO_QUERY ); | 1240 xProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DefaultContext" ))) >>= 1241 xComponentContext; |
1250 | 1242 |
1251 if ( xPopupMenuController.is() ) 1252 { 1253 // Provide our awt popup menu to the popup menu controller 1254 pMenuItemHandler->xPopupMenuController = xPopupMenuController; 1255 xPopupMenuController->setPopupMenu( pMenuItemHandler->xPopupMenu ); 1256 return sal_True; 1257 } | 1243 Reference< XPopupMenuController > xPopupMenuController( 1244 m_xPopupMenuControllerFactory->createInstanceWithArgumentsAndContext( 1245 aItemCommand, 1246 aSeq, 1247 xComponentContext ), 1248 UNO_QUERY ); 1249 1250 if ( xPopupMenuController.is() ) 1251 { 1252 // Provide our awt popup menu to the popup menu controller 1253 pMenuItemHandler->xPopupMenuController = xPopupMenuController; 1254 xPopupMenuController->setPopupMenu( pMenuItemHandler->xPopupMenu ); 1255 return sal_True; |
1258 } 1259 1260 return sal_False; 1261} 1262 1263void MenuBarManager::FillMenuManager( Menu* pMenu, const Reference< XFrame >& rFrame, const Reference< XDispatchProvider >& rDispatchProvider, const rtl::OUString& rModuleIdentifier, sal_Bool bDelete, sal_Bool bDeleteChildren ) 1264{ 1265 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "framework", "Ocke.Janssen@sun.com", "MenuBarManager::FillMenuManager" ); --- 77 unchanged lines hidden (view full) --- 1343 // Retrieve module identifier from Help Command entry 1344 rtl::OUString aModuleIdentifier( rModuleIdentifier ); 1345 if ( pMenu->GetHelpCommand( nItemId ).Len() > 0 ) 1346 { 1347 aModuleIdentifier = pMenu->GetHelpCommand( nItemId ); 1348 pMenu->SetHelpCommand( nItemId, aEmpty ); 1349 } 1350 | 1256 } 1257 1258 return sal_False; 1259} 1260 1261void MenuBarManager::FillMenuManager( Menu* pMenu, const Reference< XFrame >& rFrame, const Reference< XDispatchProvider >& rDispatchProvider, const rtl::OUString& rModuleIdentifier, sal_Bool bDelete, sal_Bool bDeleteChildren ) 1262{ 1263 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "framework", "Ocke.Janssen@sun.com", "MenuBarManager::FillMenuManager" ); --- 77 unchanged lines hidden (view full) --- 1341 // Retrieve module identifier from Help Command entry 1342 rtl::OUString aModuleIdentifier( rModuleIdentifier ); 1343 if ( pMenu->GetHelpCommand( nItemId ).Len() > 0 ) 1344 { 1345 aModuleIdentifier = pMenu->GetHelpCommand( nItemId ); 1346 pMenu->SetHelpCommand( nItemId, aEmpty ); 1347 } 1348 |
1351 if ( m_xPopupMenuControllerRegistration.is() && | 1349 if ( m_xPopupMenuControllerFactory.is() && |
1352 pPopup->GetItemCount() == 0 && | 1350 pPopup->GetItemCount() == 0 && |
1353 m_xPopupMenuControllerRegistration->hasController( aItemCommand, rtl::OUString() ) | 1351 m_xPopupMenuControllerFactory->hasController( aItemCommand, rtl::OUString() ) |
1354 ) 1355 { 1356 // Check if we have to create a popup menu for a uno based popup menu controller. 1357 // We have to set an empty popup menu into our menu structure so the controller also 1358 // works with inplace OLE. Remove old dummy popup menu! 1359 MenuItemHandler* pItemHandler = new MenuItemHandler( nItemId, xStatusListener, xDispatch ); 1360 VCLXPopupMenu* pVCLXPopupMenu = new VCLXPopupMenu; 1361 PopupMenu* pNewPopupMenu = (PopupMenu *)pVCLXPopupMenu->GetMenu(); --- 120 unchanged lines hidden (view full) --- 1482 m_bRetrieveImages = sal_True; 1483 } 1484 m_bRetrieveImages = sal_True; 1485 } 1486 1487 MenuItemHandler* pItemHandler = new MenuItemHandler( nItemId, xStatusListener, xDispatch ); 1488 pItemHandler->aMenuItemURL = aItemCommand; 1489 | 1352 ) 1353 { 1354 // Check if we have to create a popup menu for a uno based popup menu controller. 1355 // We have to set an empty popup menu into our menu structure so the controller also 1356 // works with inplace OLE. Remove old dummy popup menu! 1357 MenuItemHandler* pItemHandler = new MenuItemHandler( nItemId, xStatusListener, xDispatch ); 1358 VCLXPopupMenu* pVCLXPopupMenu = new VCLXPopupMenu; 1359 PopupMenu* pNewPopupMenu = (PopupMenu *)pVCLXPopupMenu->GetMenu(); --- 120 unchanged lines hidden (view full) --- 1480 m_bRetrieveImages = sal_True; 1481 } 1482 m_bRetrieveImages = sal_True; 1483 } 1484 1485 MenuItemHandler* pItemHandler = new MenuItemHandler( nItemId, xStatusListener, xDispatch ); 1486 pItemHandler->aMenuItemURL = aItemCommand; 1487 |
1490 if ( m_xPopupMenuControllerRegistration.is() && 1491 m_xPopupMenuControllerRegistration->hasController( aItemCommand, rtl::OUString() )) | 1488 if ( m_xPopupMenuControllerFactory.is() && 1489 m_xPopupMenuControllerFactory->hasController( aItemCommand, rtl::OUString() )) |
1492 { 1493 // Check if we have to create a popup menu for a uno based popup menu controller. 1494 // We have to set an empty popup menu into our menu structure so the controller also 1495 // works with inplace OLE. 1496 VCLXPopupMenu* pVCLXPopupMenu = new VCLXPopupMenu; 1497 PopupMenu* pPopupMenu = (PopupMenu *)pVCLXPopupMenu->GetMenu(); 1498 pMenu->SetPopupMenu( pItemHandler->nItemId, pPopupMenu ); 1499 pItemHandler->xPopupMenu = Reference< com::sun::star::awt::XPopupMenu >( (OWeakObject *)pVCLXPopupMenu, UNO_QUERY ); --- 565 unchanged lines hidden (view full) --- 2065 m_bDeleteMenu = bDelete; 2066 m_bDeleteChildren = bDeleteChildren; 2067 m_pVCLMenu = pAddonMenu; 2068 m_xFrame = rFrame; 2069 m_bInitialized = sal_False; 2070 m_bIsBookmarkMenu = sal_True; 2071 2072 rtl::OUString aModuleIdentifier; | 1490 { 1491 // Check if we have to create a popup menu for a uno based popup menu controller. 1492 // We have to set an empty popup menu into our menu structure so the controller also 1493 // works with inplace OLE. 1494 VCLXPopupMenu* pVCLXPopupMenu = new VCLXPopupMenu; 1495 PopupMenu* pPopupMenu = (PopupMenu *)pVCLXPopupMenu->GetMenu(); 1496 pMenu->SetPopupMenu( pItemHandler->nItemId, pPopupMenu ); 1497 pItemHandler->xPopupMenu = Reference< com::sun::star::awt::XPopupMenu >( (OWeakObject *)pVCLXPopupMenu, UNO_QUERY ); --- 565 unchanged lines hidden (view full) --- 2063 m_bDeleteMenu = bDelete; 2064 m_bDeleteChildren = bDeleteChildren; 2065 m_pVCLMenu = pAddonMenu; 2066 m_xFrame = rFrame; 2067 m_bInitialized = sal_False; 2068 m_bIsBookmarkMenu = sal_True; 2069 2070 rtl::OUString aModuleIdentifier; |
2073 m_xPopupMenuControllerRegistration = Reference< ::com::sun::star::frame::XUIControllerRegistration >( 2074 getServiceFactory()->createInstance( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.PopupMenuControllerFactory" ))), 2075 UNO_QUERY ); | 2071 m_xPopupMenuControllerFactory = frame::PopupMenuControllerFactory::create( 2072 ::comphelper::getProcessComponentContext()); |
2076 2077 const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings(); 2078 m_bWasHiContrast = rSettings.GetHighContrastMode(); 2079 2080 Reference< XStatusListener > xStatusListener; 2081 Reference< XDispatch > xDispatch; 2082 sal_uInt16 nItemCount = pAddonMenu->GetItemCount(); 2083 ::rtl::OUString aItemCommand; --- 34 unchanged lines hidden (view full) --- 2118 } 2119 2120 pMenuItemHandler->aMenuItemURL = aItemCommand; 2121 if ( _bHandlePopUp ) 2122 { 2123 // Check if we have to create a popup menu for a uno based popup menu controller. 2124 // We have to set an empty popup menu into our menu structure so the controller also 2125 // works with inplace OLE. | 2073 2074 const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings(); 2075 m_bWasHiContrast = rSettings.GetHighContrastMode(); 2076 2077 Reference< XStatusListener > xStatusListener; 2078 Reference< XDispatch > xDispatch; 2079 sal_uInt16 nItemCount = pAddonMenu->GetItemCount(); 2080 ::rtl::OUString aItemCommand; --- 34 unchanged lines hidden (view full) --- 2115 } 2116 2117 pMenuItemHandler->aMenuItemURL = aItemCommand; 2118 if ( _bHandlePopUp ) 2119 { 2120 // Check if we have to create a popup menu for a uno based popup menu controller. 2121 // We have to set an empty popup menu into our menu structure so the controller also 2122 // works with inplace OLE. |
2126 if ( m_xPopupMenuControllerRegistration.is() && 2127 m_xPopupMenuControllerRegistration->hasController( aItemCommand, rtl::OUString() )) | 2123 if ( m_xPopupMenuControllerFactory.is() && 2124 m_xPopupMenuControllerFactory->hasController( aItemCommand, rtl::OUString() )) |
2128 { 2129 VCLXPopupMenu* pVCLXPopupMenu = new VCLXPopupMenu; 2130 PopupMenu* pCtlPopupMenu = (PopupMenu *)pVCLXPopupMenu->GetMenu(); 2131 pAddonMenu->SetPopupMenu( pMenuItemHandler->nItemId, pCtlPopupMenu ); 2132 pMenuItemHandler->xPopupMenu = Reference< com::sun::star::awt::XPopupMenu >( (OWeakObject *)pVCLXPopupMenu, UNO_QUERY ); 2133 2134 } 2135 } --- 22 unchanged lines hidden --- | 2125 { 2126 VCLXPopupMenu* pVCLXPopupMenu = new VCLXPopupMenu; 2127 PopupMenu* pCtlPopupMenu = (PopupMenu *)pVCLXPopupMenu->GetMenu(); 2128 pAddonMenu->SetPopupMenu( pMenuItemHandler->nItemId, pCtlPopupMenu ); 2129 pMenuItemHandler->xPopupMenu = Reference< com::sun::star::awt::XPopupMenu >( (OWeakObject *)pVCLXPopupMenu, UNO_QUERY ); 2130 2131 } 2132 } --- 22 unchanged lines hidden --- |