1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski #ifndef SD_VIEW_TAB_BAR_HXX 25*b1cdbd2cSJim Jagielski #define SD_VIEW_TAB_BAR_HXX 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XController.hpp> 28*b1cdbd2cSJim Jagielski #include <com/sun/star/drawing/framework/XPane.hpp> 29*b1cdbd2cSJim Jagielski #include <com/sun/star/drawing/framework/TabBarButton.hpp> 30*b1cdbd2cSJim Jagielski #include <com/sun/star/drawing/framework/XTabBar.hpp> 31*b1cdbd2cSJim Jagielski #include <com/sun/star/drawing/framework/XToolBar.hpp> 32*b1cdbd2cSJim Jagielski #include <com/sun/star/drawing/framework/XConfigurationController.hpp> 33*b1cdbd2cSJim Jagielski #include <com/sun/star/drawing/framework/XConfigurationChangeListener.hpp> 34*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XUnoTunnel.hpp> 35*b1cdbd2cSJim Jagielski #ifndef _VCL_TABCTRL_HXX_ 36*b1cdbd2cSJim Jagielski #include <vcl/tabctrl.hxx> 37*b1cdbd2cSJim Jagielski #endif 38*b1cdbd2cSJim Jagielski #include <cppuhelper/compbase4.hxx> 39*b1cdbd2cSJim Jagielski #include "MutexOwner.hxx" 40*b1cdbd2cSJim Jagielski 41*b1cdbd2cSJim Jagielski #include <vector> 42*b1cdbd2cSJim Jagielski #include <boost/scoped_ptr.hpp> 43*b1cdbd2cSJim Jagielski #include <boost/shared_ptr.hpp> 44*b1cdbd2cSJim Jagielski 45*b1cdbd2cSJim Jagielski namespace sd { namespace tools { 46*b1cdbd2cSJim Jagielski class EventMultiplexerEvent; 47*b1cdbd2cSJim Jagielski } } 48*b1cdbd2cSJim Jagielski 49*b1cdbd2cSJim Jagielski namespace sd { 50*b1cdbd2cSJim Jagielski class ViewShellBase; 51*b1cdbd2cSJim Jagielski class PaneManagerEvent; 52*b1cdbd2cSJim Jagielski } 53*b1cdbd2cSJim Jagielski 54*b1cdbd2cSJim Jagielski namespace { 55*b1cdbd2cSJim Jagielski typedef ::cppu::WeakComponentImplHelper4 < 56*b1cdbd2cSJim Jagielski ::com::sun::star::drawing::framework::XToolBar, 57*b1cdbd2cSJim Jagielski ::com::sun::star::drawing::framework::XTabBar, 58*b1cdbd2cSJim Jagielski ::com::sun::star::drawing::framework::XConfigurationChangeListener, 59*b1cdbd2cSJim Jagielski ::com::sun::star::lang::XUnoTunnel 60*b1cdbd2cSJim Jagielski > ViewTabBarInterfaceBase; 61*b1cdbd2cSJim Jagielski } 62*b1cdbd2cSJim Jagielski 63*b1cdbd2cSJim Jagielski 64*b1cdbd2cSJim Jagielski 65*b1cdbd2cSJim Jagielski 66*b1cdbd2cSJim Jagielski namespace sd { 67*b1cdbd2cSJim Jagielski 68*b1cdbd2cSJim Jagielski /** Tab control for switching between views in the center pane. 69*b1cdbd2cSJim Jagielski */ 70*b1cdbd2cSJim Jagielski class ViewTabBar 71*b1cdbd2cSJim Jagielski : private sd::MutexOwner, 72*b1cdbd2cSJim Jagielski public ViewTabBarInterfaceBase 73*b1cdbd2cSJim Jagielski { 74*b1cdbd2cSJim Jagielski public: 75*b1cdbd2cSJim Jagielski ViewTabBar ( 76*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< 77*b1cdbd2cSJim Jagielski com::sun::star::drawing::framework::XResourceId>& rxViewTabBarId, 78*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< 79*b1cdbd2cSJim Jagielski ::com::sun::star::frame::XController>& rxController); 80*b1cdbd2cSJim Jagielski virtual ~ViewTabBar (void); 81*b1cdbd2cSJim Jagielski 82*b1cdbd2cSJim Jagielski virtual void SAL_CALL disposing (void); 83*b1cdbd2cSJim Jagielski 84*b1cdbd2cSJim Jagielski ::boost::shared_ptr< ::TabControl> GetTabControl (void) const; 85*b1cdbd2cSJim Jagielski 86*b1cdbd2cSJim Jagielski bool ActivatePage (void); 87*b1cdbd2cSJim Jagielski 88*b1cdbd2cSJim Jagielski //----- drawing::framework::XConfigurationChangeListener ------------------ 89*b1cdbd2cSJim Jagielski 90*b1cdbd2cSJim Jagielski virtual void SAL_CALL 91*b1cdbd2cSJim Jagielski notifyConfigurationChange ( 92*b1cdbd2cSJim Jagielski const ::com::sun::star::drawing::framework::ConfigurationChangeEvent& rEvent) 93*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 94*b1cdbd2cSJim Jagielski 95*b1cdbd2cSJim Jagielski 96*b1cdbd2cSJim Jagielski //----- XEventListener ---------------------------------------------------- 97*b1cdbd2cSJim Jagielski 98*b1cdbd2cSJim Jagielski virtual void SAL_CALL disposing( 99*b1cdbd2cSJim Jagielski const com::sun::star::lang::EventObject& rEvent) 100*b1cdbd2cSJim Jagielski throw (com::sun::star::uno::RuntimeException); 101*b1cdbd2cSJim Jagielski 102*b1cdbd2cSJim Jagielski 103*b1cdbd2cSJim Jagielski //----- XTabBar ----------------------------------------------------------- 104*b1cdbd2cSJim Jagielski 105*b1cdbd2cSJim Jagielski virtual void 106*b1cdbd2cSJim Jagielski SAL_CALL addTabBarButtonAfter ( 107*b1cdbd2cSJim Jagielski const ::com::sun::star::drawing::framework::TabBarButton& rButton, 108*b1cdbd2cSJim Jagielski const ::com::sun::star::drawing::framework::TabBarButton& rAnchor) 109*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 110*b1cdbd2cSJim Jagielski 111*b1cdbd2cSJim Jagielski virtual void 112*b1cdbd2cSJim Jagielski SAL_CALL appendTabBarButton ( 113*b1cdbd2cSJim Jagielski const ::com::sun::star::drawing::framework::TabBarButton& rButton) 114*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 115*b1cdbd2cSJim Jagielski 116*b1cdbd2cSJim Jagielski virtual void 117*b1cdbd2cSJim Jagielski SAL_CALL removeTabBarButton ( 118*b1cdbd2cSJim Jagielski const ::com::sun::star::drawing::framework::TabBarButton& rButton) 119*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 120*b1cdbd2cSJim Jagielski 121*b1cdbd2cSJim Jagielski virtual sal_Bool 122*b1cdbd2cSJim Jagielski SAL_CALL hasTabBarButton ( 123*b1cdbd2cSJim Jagielski const ::com::sun::star::drawing::framework::TabBarButton& rButton) 124*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 125*b1cdbd2cSJim Jagielski 126*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Sequence<com::sun::star::drawing::framework::TabBarButton> 127*b1cdbd2cSJim Jagielski SAL_CALL getTabBarButtons (void) 128*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 129*b1cdbd2cSJim Jagielski 130*b1cdbd2cSJim Jagielski 131*b1cdbd2cSJim Jagielski //----- XResource --------------------------------------------------------- 132*b1cdbd2cSJim Jagielski 133*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Reference< 134*b1cdbd2cSJim Jagielski ::com::sun::star::drawing::framework::XResourceId> SAL_CALL getResourceId (void) 135*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 136*b1cdbd2cSJim Jagielski 137*b1cdbd2cSJim Jagielski virtual sal_Bool SAL_CALL isAnchorOnly (void) 138*b1cdbd2cSJim Jagielski throw (com::sun::star::uno::RuntimeException); 139*b1cdbd2cSJim Jagielski 140*b1cdbd2cSJim Jagielski 141*b1cdbd2cSJim Jagielski //----- XUnoTunnel -------------------------------------------------------- 142*b1cdbd2cSJim Jagielski 143*b1cdbd2cSJim Jagielski virtual sal_Int64 SAL_CALL getSomething (const com::sun::star::uno::Sequence<sal_Int8>& rId) 144*b1cdbd2cSJim Jagielski throw (com::sun::star::uno::RuntimeException); 145*b1cdbd2cSJim Jagielski 146*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------ 147*b1cdbd2cSJim Jagielski 148*b1cdbd2cSJim Jagielski /** The returned value is calculated as the difference between the 149*b1cdbd2cSJim Jagielski total height of the control and the heigh of its first tab page. 150*b1cdbd2cSJim Jagielski This can be considered a hack. 151*b1cdbd2cSJim Jagielski This procedure works only when the control is visible. Calling this 152*b1cdbd2cSJim Jagielski method when the control is not visible results in returning a 153*b1cdbd2cSJim Jagielski default value. 154*b1cdbd2cSJim Jagielski To be on the safe side wait for this control to become visible and 155*b1cdbd2cSJim Jagielski the call this method again. 156*b1cdbd2cSJim Jagielski */ 157*b1cdbd2cSJim Jagielski int GetHeight (void); 158*b1cdbd2cSJim Jagielski 159*b1cdbd2cSJim Jagielski void AddTabBarButton ( 160*b1cdbd2cSJim Jagielski const ::com::sun::star::drawing::framework::TabBarButton& rButton, 161*b1cdbd2cSJim Jagielski const ::com::sun::star::drawing::framework::TabBarButton& rAnchor); 162*b1cdbd2cSJim Jagielski void AddTabBarButton ( 163*b1cdbd2cSJim Jagielski const ::com::sun::star::drawing::framework::TabBarButton& rButton); 164*b1cdbd2cSJim Jagielski void RemoveTabBarButton ( 165*b1cdbd2cSJim Jagielski const ::com::sun::star::drawing::framework::TabBarButton& rButton); 166*b1cdbd2cSJim Jagielski bool HasTabBarButton ( 167*b1cdbd2cSJim Jagielski const ::com::sun::star::drawing::framework::TabBarButton& rButton); 168*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Sequence<com::sun::star::drawing::framework::TabBarButton> 169*b1cdbd2cSJim Jagielski GetTabBarButtons (void); 170*b1cdbd2cSJim Jagielski 171*b1cdbd2cSJim Jagielski private: 172*b1cdbd2cSJim Jagielski ::boost::shared_ptr< ::TabControl> mpTabControl; 173*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< 174*b1cdbd2cSJim Jagielski ::com::sun::star::frame::XController> mxController; 175*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< 176*b1cdbd2cSJim Jagielski ::com::sun::star::drawing::framework::XConfigurationController> mxConfigurationController; 177*b1cdbd2cSJim Jagielski typedef ::std::vector<com::sun::star::drawing::framework::TabBarButton> TabBarButtonList; 178*b1cdbd2cSJim Jagielski TabBarButtonList maTabBarButtons; 179*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<TabPage> mpTabPage; 180*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< 181*b1cdbd2cSJim Jagielski ::com::sun::star::drawing::framework::XResourceId> mxViewTabBarId; 182*b1cdbd2cSJim Jagielski ViewShellBase* mpViewShellBase; 183*b1cdbd2cSJim Jagielski 184*b1cdbd2cSJim Jagielski void UpdateActiveButton (void); 185*b1cdbd2cSJim Jagielski void AddTabBarButton ( 186*b1cdbd2cSJim Jagielski const ::com::sun::star::drawing::framework::TabBarButton& rButton, 187*b1cdbd2cSJim Jagielski sal_Int32 nPosition); 188*b1cdbd2cSJim Jagielski void UpdateTabBarButtons (void); 189*b1cdbd2cSJim Jagielski 190*b1cdbd2cSJim Jagielski /** This method is called from the constructor to get the window for an 191*b1cdbd2cSJim Jagielski anchor ResourceId and pass it to our base class. It has to be 192*b1cdbd2cSJim Jagielski static because it must not access any of the, not yet initialized 193*b1cdbd2cSJim Jagielski members. 194*b1cdbd2cSJim Jagielski */ 195*b1cdbd2cSJim Jagielski static ::Window* GetAnchorWindow( 196*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< 197*b1cdbd2cSJim Jagielski ::com::sun::star::drawing::framework::XResourceId>& rxViewTabBarId, 198*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< 199*b1cdbd2cSJim Jagielski ::com::sun::star::frame::XController>& rxController); 200*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId (void); 201*b1cdbd2cSJim Jagielski }; 202*b1cdbd2cSJim Jagielski 203*b1cdbd2cSJim Jagielski } // end of namespace sd 204*b1cdbd2cSJim Jagielski 205*b1cdbd2cSJim Jagielski #endif 206*b1cdbd2cSJim Jagielski 207