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 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_framework.hxx" 26 27 #include <framework/sfxhelperfunctions.hxx> 28 29 #include <tools/diagnose_ex.h> 30 31 static pfunc_setToolBoxControllerCreator pToolBoxControllerCreator = NULL; 32 static pfunc_setStatusBarControllerCreator pStatusBarControllerCreator = NULL; 33 static pfunc_getRefreshToolbars pRefreshToolbars = NULL; 34 static pfunc_createDockingWindow pCreateDockingWindow = NULL; 35 static pfunc_isDockingWindowVisible pIsDockingWindowVisible = NULL; 36 static pfunc_activateToolPanel pActivateToolPanel = NULL; 37 38 39 40 using namespace ::com::sun::star::uno; 41 using namespace ::com::sun::star::frame; 42 43 namespace framework 44 { 45 46 pfunc_setToolBoxControllerCreator SAL_CALL SetToolBoxControllerCreator( pfunc_setToolBoxControllerCreator pSetToolBoxControllerCreator ) 47 { 48 ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); 49 pfunc_setToolBoxControllerCreator pOldSetToolBoxControllerCreator = pToolBoxControllerCreator; 50 pToolBoxControllerCreator = pSetToolBoxControllerCreator; 51 return pOldSetToolBoxControllerCreator; 52 } 53 54 svt::ToolboxController* SAL_CALL CreateToolBoxController( const Reference< XFrame >& rFrame, ToolBox* pToolbox, unsigned short nID, const ::rtl::OUString& aCommandURL ) 55 { 56 pfunc_setToolBoxControllerCreator pFactory = NULL; 57 { 58 ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); 59 pFactory = pToolBoxControllerCreator; 60 } 61 62 if ( pFactory ) 63 return (*pFactory)( rFrame, pToolbox, nID, aCommandURL ); 64 else 65 return NULL; 66 } 67 68 pfunc_setStatusBarControllerCreator SAL_CALL SetStatusBarControllerCreator( pfunc_setStatusBarControllerCreator pSetStatusBarControllerCreator ) 69 { 70 ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); 71 pfunc_setStatusBarControllerCreator pOldSetStatusBarControllerCreator = pSetStatusBarControllerCreator; 72 pStatusBarControllerCreator = pSetStatusBarControllerCreator; 73 return pOldSetStatusBarControllerCreator; 74 } 75 76 svt::StatusbarController* SAL_CALL CreateStatusBarController( const Reference< XFrame >& rFrame, StatusBar* pStatusBar, unsigned short nID, const ::rtl::OUString& aCommandURL ) 77 { 78 pfunc_setStatusBarControllerCreator pFactory = NULL; 79 { 80 ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); 81 pFactory = pStatusBarControllerCreator; 82 } 83 84 if ( pFactory ) 85 return (*pFactory)( rFrame, pStatusBar, nID, aCommandURL ); 86 else 87 return NULL; 88 } 89 90 pfunc_getRefreshToolbars SAL_CALL SetRefreshToolbars( pfunc_getRefreshToolbars pNewRefreshToolbarsFunc ) 91 { 92 ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); 93 pfunc_getRefreshToolbars pOldFunc = pRefreshToolbars; 94 pRefreshToolbars = pNewRefreshToolbarsFunc; 95 96 return pOldFunc; 97 } 98 99 void SAL_CALL RefreshToolbars( ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame ) 100 { 101 pfunc_getRefreshToolbars pCallback = NULL; 102 { 103 ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); 104 pCallback = pRefreshToolbars; 105 } 106 107 if ( pCallback ) 108 (*pCallback)( rFrame ); 109 } 110 111 pfunc_createDockingWindow SAL_CALL SetDockingWindowCreator( pfunc_createDockingWindow pNewCreateDockingWindow ) 112 { 113 ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); 114 pfunc_createDockingWindow pOldFunc = pCreateDockingWindow; 115 pCreateDockingWindow = pNewCreateDockingWindow; 116 117 return pOldFunc; 118 } 119 120 void SAL_CALL CreateDockingWindow( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, const ::rtl::OUString& rResourceURL ) 121 { 122 pfunc_createDockingWindow pFactory = NULL; 123 { 124 ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); 125 pFactory = pCreateDockingWindow; 126 } 127 128 if ( pFactory ) 129 (*pFactory)( rFrame, rResourceURL ); 130 } 131 132 pfunc_isDockingWindowVisible SAL_CALL SetIsDockingWindowVisible( pfunc_isDockingWindowVisible pNewIsDockingWindowVisible) 133 { 134 ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); 135 pfunc_isDockingWindowVisible pOldFunc = pIsDockingWindowVisible; 136 pIsDockingWindowVisible = pNewIsDockingWindowVisible; 137 138 return pOldFunc; 139 } 140 141 bool SAL_CALL IsDockingWindowVisible( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, const ::rtl::OUString& rResourceURL ) 142 { 143 pfunc_isDockingWindowVisible pCall = NULL; 144 { 145 ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); 146 pCall = pIsDockingWindowVisible; 147 } 148 149 if ( pIsDockingWindowVisible ) 150 return (*pIsDockingWindowVisible)( rFrame, rResourceURL ); 151 else 152 return false; 153 } 154 155 pfunc_activateToolPanel SAL_CALL SetActivateToolPanel( pfunc_activateToolPanel i_pActivator ) 156 { 157 ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); 158 pfunc_activateToolPanel pOldFunc = pActivateToolPanel; 159 pActivateToolPanel = i_pActivator; 160 return pOldFunc; 161 } 162 163 void SAL_CALL ActivateToolPanel( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& i_rFrame, const ::rtl::OUString& i_rPanelURL ) 164 { 165 pfunc_activateToolPanel pActivator = NULL; 166 { 167 ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); 168 pActivator = pActivateToolPanel; 169 } 170 171 ENSURE_OR_RETURN_VOID( pActivator, "framework::ActivateToolPanel: no activator function!" ); 172 (*pActivator)( i_rFrame, i_rPanelURL ); 173 } 174 175 } 176