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 #ifndef __FRAMEWORK_UIELEMENT_MENUBARWRAPPER_HXX_
25 #define __FRAMEWORK_UIELEMENT_MENUBARWRAPPER_HXX_
26 
27 //_________________________________________________________________________________________________________________
28 //	my own includes
29 //_________________________________________________________________________________________________________________
30 
31 #include <helper/uiconfigelementwrapperbase.hxx>
32 #include <uielement/menubarmanager.hxx>
33 
34 //_________________________________________________________________________________________________________________
35 //	interface includes
36 //_________________________________________________________________________________________________________________
37 #include <com/sun/star/frame/XFrame.hpp>
38 #include <com/sun/star/frame/XDispatchProvider.hpp>
39 #include <com/sun/star/lang/XComponent.hpp>
40 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
41 #ifndef __COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_
42 #include <com/sun/star/container/XNameAccess.hpp>
43 #endif
44 
45 //_________________________________________________________________________________________________________________
46 //	other includes
47 //_________________________________________________________________________________________________________________
48 
49 #include <hash_map>
50 
51 namespace framework
52 {
53 
54 class MenuBarWrapper : public UIConfigElementWrapperBase,
55                        public ::com::sun::star::container::XNameAccess
56 
57 {
58     public:
59         // #110897#
60 		MenuBarWrapper(
61 			const com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >& xServiceManager );
62         virtual ~MenuBarWrapper();
63 
64         //---------------------------------------------------------------------------------------------------------
65         //	XInterface, XTypeProvider
66         //---------------------------------------------------------------------------------------------------------
67         FWK_DECLARE_XINTERFACE
68         FWK_DECLARE_XTYPEPROVIDER
69 
GetMenuBarManager() const70 		MenuBarManager* GetMenuBarManager() const { return static_cast< MenuBarManager* >( m_xMenuBarManager.get() ); }
InvalidatePopupControllerCache()71         void            InvalidatePopupControllerCache() { m_bRefreshPopupControllerCache = sal_True; }
72 
73         // XComponent
74         virtual void SAL_CALL dispose() throw (::com::sun::star::uno::RuntimeException);
75 
76         // XInitialization
77         virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
78 
79         // XUIElement
80         virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getRealInterface() throw (::com::sun::star::uno::RuntimeException);
81 
82         // XUIElementSettings
83         virtual void SAL_CALL updateSettings(  ) throw (::com::sun::star::uno::RuntimeException);
84 
85         // XElementAccess
86         virtual ::com::sun::star::uno::Type SAL_CALL getElementType() throw (::com::sun::star::uno::RuntimeException);
87         virtual ::sal_Bool SAL_CALL hasElements() throw (::com::sun::star::uno::RuntimeException);
88 
89         // XNameAccess
90         virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
91         virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames() throw (::com::sun::star::uno::RuntimeException);
92         virtual ::sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) throw (::com::sun::star::uno::RuntimeException);
93 
94     private:
95         virtual void impl_fillNewData();
96         void fillPopupControllerCache();
97 
98         sal_Bool                                                                                m_bRefreshPopupControllerCache : 1;
99         com::sun::star::uno::Reference< com::sun::star::lang::XComponent >                      m_xMenuBarManager;
100         PopupControllerCache                                                                    m_aPopupControllerCache;
101 };
102 
103 } // namespace framework
104 
105 #endif // __FRAMEWORK_UIELEMENT_MENUBARWRAPPER_HXX_
106