1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 29*cdf0e10cSrcweir #include "precompiled_framework.hxx" 30*cdf0e10cSrcweir 31*cdf0e10cSrcweir #include <framework/sfxhelperfunctions.hxx> 32*cdf0e10cSrcweir 33*cdf0e10cSrcweir #include <tools/diagnose_ex.h> 34*cdf0e10cSrcweir 35*cdf0e10cSrcweir static pfunc_setToolBoxControllerCreator pToolBoxControllerCreator = NULL; 36*cdf0e10cSrcweir static pfunc_setStatusBarControllerCreator pStatusBarControllerCreator = NULL; 37*cdf0e10cSrcweir static pfunc_getRefreshToolbars pRefreshToolbars = NULL; 38*cdf0e10cSrcweir static pfunc_createDockingWindow pCreateDockingWindow = NULL; 39*cdf0e10cSrcweir static pfunc_isDockingWindowVisible pIsDockingWindowVisible = NULL; 40*cdf0e10cSrcweir static pfunc_activateToolPanel pActivateToolPanel = NULL; 41*cdf0e10cSrcweir 42*cdf0e10cSrcweir 43*cdf0e10cSrcweir 44*cdf0e10cSrcweir using namespace ::com::sun::star::uno; 45*cdf0e10cSrcweir using namespace ::com::sun::star::frame; 46*cdf0e10cSrcweir 47*cdf0e10cSrcweir namespace framework 48*cdf0e10cSrcweir { 49*cdf0e10cSrcweir 50*cdf0e10cSrcweir pfunc_setToolBoxControllerCreator SAL_CALL SetToolBoxControllerCreator( pfunc_setToolBoxControllerCreator pSetToolBoxControllerCreator ) 51*cdf0e10cSrcweir { 52*cdf0e10cSrcweir ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); 53*cdf0e10cSrcweir pfunc_setToolBoxControllerCreator pOldSetToolBoxControllerCreator = pToolBoxControllerCreator; 54*cdf0e10cSrcweir pToolBoxControllerCreator = pSetToolBoxControllerCreator; 55*cdf0e10cSrcweir return pOldSetToolBoxControllerCreator; 56*cdf0e10cSrcweir } 57*cdf0e10cSrcweir 58*cdf0e10cSrcweir svt::ToolboxController* SAL_CALL CreateToolBoxController( const Reference< XFrame >& rFrame, ToolBox* pToolbox, unsigned short nID, const ::rtl::OUString& aCommandURL ) 59*cdf0e10cSrcweir { 60*cdf0e10cSrcweir pfunc_setToolBoxControllerCreator pFactory = NULL; 61*cdf0e10cSrcweir { 62*cdf0e10cSrcweir ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); 63*cdf0e10cSrcweir pFactory = pToolBoxControllerCreator; 64*cdf0e10cSrcweir } 65*cdf0e10cSrcweir 66*cdf0e10cSrcweir if ( pFactory ) 67*cdf0e10cSrcweir return (*pFactory)( rFrame, pToolbox, nID, aCommandURL ); 68*cdf0e10cSrcweir else 69*cdf0e10cSrcweir return NULL; 70*cdf0e10cSrcweir } 71*cdf0e10cSrcweir 72*cdf0e10cSrcweir pfunc_setStatusBarControllerCreator SAL_CALL SetStatusBarControllerCreator( pfunc_setStatusBarControllerCreator pSetStatusBarControllerCreator ) 73*cdf0e10cSrcweir { 74*cdf0e10cSrcweir ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); 75*cdf0e10cSrcweir pfunc_setStatusBarControllerCreator pOldSetStatusBarControllerCreator = pSetStatusBarControllerCreator; 76*cdf0e10cSrcweir pStatusBarControllerCreator = pSetStatusBarControllerCreator; 77*cdf0e10cSrcweir return pOldSetStatusBarControllerCreator; 78*cdf0e10cSrcweir } 79*cdf0e10cSrcweir 80*cdf0e10cSrcweir svt::StatusbarController* SAL_CALL CreateStatusBarController( const Reference< XFrame >& rFrame, StatusBar* pStatusBar, unsigned short nID, const ::rtl::OUString& aCommandURL ) 81*cdf0e10cSrcweir { 82*cdf0e10cSrcweir pfunc_setStatusBarControllerCreator pFactory = NULL; 83*cdf0e10cSrcweir { 84*cdf0e10cSrcweir ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); 85*cdf0e10cSrcweir pFactory = pStatusBarControllerCreator; 86*cdf0e10cSrcweir } 87*cdf0e10cSrcweir 88*cdf0e10cSrcweir if ( pFactory ) 89*cdf0e10cSrcweir return (*pFactory)( rFrame, pStatusBar, nID, aCommandURL ); 90*cdf0e10cSrcweir else 91*cdf0e10cSrcweir return NULL; 92*cdf0e10cSrcweir } 93*cdf0e10cSrcweir 94*cdf0e10cSrcweir pfunc_getRefreshToolbars SAL_CALL SetRefreshToolbars( pfunc_getRefreshToolbars pNewRefreshToolbarsFunc ) 95*cdf0e10cSrcweir { 96*cdf0e10cSrcweir ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); 97*cdf0e10cSrcweir pfunc_getRefreshToolbars pOldFunc = pRefreshToolbars; 98*cdf0e10cSrcweir pRefreshToolbars = pNewRefreshToolbarsFunc; 99*cdf0e10cSrcweir 100*cdf0e10cSrcweir return pOldFunc; 101*cdf0e10cSrcweir } 102*cdf0e10cSrcweir 103*cdf0e10cSrcweir void SAL_CALL RefreshToolbars( ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame ) 104*cdf0e10cSrcweir { 105*cdf0e10cSrcweir pfunc_getRefreshToolbars pCallback = NULL; 106*cdf0e10cSrcweir { 107*cdf0e10cSrcweir ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); 108*cdf0e10cSrcweir pCallback = pRefreshToolbars; 109*cdf0e10cSrcweir } 110*cdf0e10cSrcweir 111*cdf0e10cSrcweir if ( pCallback ) 112*cdf0e10cSrcweir (*pCallback)( rFrame ); 113*cdf0e10cSrcweir } 114*cdf0e10cSrcweir 115*cdf0e10cSrcweir pfunc_createDockingWindow SAL_CALL SetDockingWindowCreator( pfunc_createDockingWindow pNewCreateDockingWindow ) 116*cdf0e10cSrcweir { 117*cdf0e10cSrcweir ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); 118*cdf0e10cSrcweir pfunc_createDockingWindow pOldFunc = pCreateDockingWindow; 119*cdf0e10cSrcweir pCreateDockingWindow = pNewCreateDockingWindow; 120*cdf0e10cSrcweir 121*cdf0e10cSrcweir return pOldFunc; 122*cdf0e10cSrcweir } 123*cdf0e10cSrcweir 124*cdf0e10cSrcweir void SAL_CALL CreateDockingWindow( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, const ::rtl::OUString& rResourceURL ) 125*cdf0e10cSrcweir { 126*cdf0e10cSrcweir pfunc_createDockingWindow pFactory = NULL; 127*cdf0e10cSrcweir { 128*cdf0e10cSrcweir ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); 129*cdf0e10cSrcweir pFactory = pCreateDockingWindow; 130*cdf0e10cSrcweir } 131*cdf0e10cSrcweir 132*cdf0e10cSrcweir if ( pFactory ) 133*cdf0e10cSrcweir (*pFactory)( rFrame, rResourceURL ); 134*cdf0e10cSrcweir } 135*cdf0e10cSrcweir 136*cdf0e10cSrcweir pfunc_isDockingWindowVisible SAL_CALL SetIsDockingWindowVisible( pfunc_isDockingWindowVisible pNewIsDockingWindowVisible) 137*cdf0e10cSrcweir { 138*cdf0e10cSrcweir ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); 139*cdf0e10cSrcweir pfunc_isDockingWindowVisible pOldFunc = pIsDockingWindowVisible; 140*cdf0e10cSrcweir pIsDockingWindowVisible = pNewIsDockingWindowVisible; 141*cdf0e10cSrcweir 142*cdf0e10cSrcweir return pOldFunc; 143*cdf0e10cSrcweir } 144*cdf0e10cSrcweir 145*cdf0e10cSrcweir bool SAL_CALL IsDockingWindowVisible( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, const ::rtl::OUString& rResourceURL ) 146*cdf0e10cSrcweir { 147*cdf0e10cSrcweir pfunc_isDockingWindowVisible pCall = NULL; 148*cdf0e10cSrcweir { 149*cdf0e10cSrcweir ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); 150*cdf0e10cSrcweir pCall = pIsDockingWindowVisible; 151*cdf0e10cSrcweir } 152*cdf0e10cSrcweir 153*cdf0e10cSrcweir if ( pIsDockingWindowVisible ) 154*cdf0e10cSrcweir return (*pIsDockingWindowVisible)( rFrame, rResourceURL ); 155*cdf0e10cSrcweir else 156*cdf0e10cSrcweir return false; 157*cdf0e10cSrcweir } 158*cdf0e10cSrcweir 159*cdf0e10cSrcweir pfunc_activateToolPanel SAL_CALL SetActivateToolPanel( pfunc_activateToolPanel i_pActivator ) 160*cdf0e10cSrcweir { 161*cdf0e10cSrcweir ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); 162*cdf0e10cSrcweir pfunc_activateToolPanel pOldFunc = pActivateToolPanel; 163*cdf0e10cSrcweir pActivateToolPanel = i_pActivator; 164*cdf0e10cSrcweir return pOldFunc; 165*cdf0e10cSrcweir } 166*cdf0e10cSrcweir 167*cdf0e10cSrcweir void SAL_CALL ActivateToolPanel( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& i_rFrame, const ::rtl::OUString& i_rPanelURL ) 168*cdf0e10cSrcweir { 169*cdf0e10cSrcweir pfunc_activateToolPanel pActivator = NULL; 170*cdf0e10cSrcweir { 171*cdf0e10cSrcweir ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); 172*cdf0e10cSrcweir pActivator = pActivateToolPanel; 173*cdf0e10cSrcweir } 174*cdf0e10cSrcweir 175*cdf0e10cSrcweir ENSURE_OR_RETURN_VOID( pActivator, "framework::ActivateToolPanel: no activator function!" ); 176*cdf0e10cSrcweir (*pActivator)( i_rFrame, i_rPanelURL ); 177*cdf0e10cSrcweir } 178*cdf0e10cSrcweir 179*cdf0e10cSrcweir } 180