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