101aa44aaSAndrew Rist /************************************************************** 201aa44aaSAndrew Rist * 301aa44aaSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 401aa44aaSAndrew Rist * or more contributor license agreements. See the NOTICE file 501aa44aaSAndrew Rist * distributed with this work for additional information 601aa44aaSAndrew Rist * regarding copyright ownership. The ASF licenses this file 701aa44aaSAndrew Rist * to you under the Apache License, Version 2.0 (the 801aa44aaSAndrew Rist * "License"); you may not use this file except in compliance 901aa44aaSAndrew Rist * with the License. You may obtain a copy of the License at 1001aa44aaSAndrew Rist * 1101aa44aaSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 1201aa44aaSAndrew Rist * 1301aa44aaSAndrew Rist * Unless required by applicable law or agreed to in writing, 1401aa44aaSAndrew Rist * software distributed under the License is distributed on an 1501aa44aaSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 1601aa44aaSAndrew Rist * KIND, either express or implied. See the License for the 1701aa44aaSAndrew Rist * specific language governing permissions and limitations 1801aa44aaSAndrew Rist * under the License. 1901aa44aaSAndrew Rist * 2001aa44aaSAndrew Rist *************************************************************/ 2101aa44aaSAndrew Rist 2201aa44aaSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #include <vos/mutex.hxx> 25cdf0e10cSrcweir #include <vcl/image.hxx> 26cdf0e10cSrcweir #include <vcl/menu.hxx> 27cdf0e10cSrcweir 28cdf0e10cSrcweir #include <cppuhelper/compbase4.hxx> 29cdf0e10cSrcweir #include <cppuhelper/compbase5.hxx> 30cdf0e10cSrcweir #include <comphelper/broadcasthelper.hxx> 31cdf0e10cSrcweir 32cdf0e10cSrcweir #include <com/sun/star/frame/XFrame.hpp> 33cdf0e10cSrcweir #include <com/sun/star/accessibility/XAccessible.hpp> 34cdf0e10cSrcweir #include <com/sun/star/accessibility/XAccessibleContext.hpp> 35cdf0e10cSrcweir #include <com/sun/star/accessibility/XAccessibleComponent.hpp> 36cdf0e10cSrcweir #include <com/sun/star/accessibility/XAccessibleSelection.hpp> 37cdf0e10cSrcweir #include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp> 38cdf0e10cSrcweir #include <com/sun/star/lang/DisposedException.hpp> 39cdf0e10cSrcweir 40cdf0e10cSrcweir #include <rtl/ref.hxx> 41cdf0e10cSrcweir 42cdf0e10cSrcweir #include <vector> 43cdf0e10cSrcweir 44cdf0e10cSrcweir #include "framestatuslistener.hxx" 45cdf0e10cSrcweir 46cdf0e10cSrcweir #include "svtools/valueset.hxx" 47cdf0e10cSrcweir 48cdf0e10cSrcweir namespace svtools { 49cdf0e10cSrcweir 50cdf0e10cSrcweir struct ToolbarMenu_Impl; 51cdf0e10cSrcweir class ToolbarMenu; 52cdf0e10cSrcweir class ToolbarMenuEntry; 53cdf0e10cSrcweir 54cdf0e10cSrcweir typedef ::std::vector< ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener > > EventListenerVector; 55cdf0e10cSrcweir typedef std::vector< ToolbarMenuEntry * > ToolbarMenuEntryVector; 56cdf0e10cSrcweir 57cdf0e10cSrcweir const int EXTRAITEMHEIGHT = 0; // 4; 58cdf0e10cSrcweir const int SEPARATOR_HEIGHT = 4; 59cdf0e10cSrcweir const int TITLE_ID = -1; 60cdf0e10cSrcweir const int BORDER_X = 0; 61cdf0e10cSrcweir const int BORDER_Y = 0; 62cdf0e10cSrcweir 63cdf0e10cSrcweir // -------------------- 64cdf0e10cSrcweir // - ToolbarMenuEntry - 65cdf0e10cSrcweir // -------------------- 66cdf0e10cSrcweir 67cdf0e10cSrcweir class ToolbarMenuEntry 68cdf0e10cSrcweir { 69cdf0e10cSrcweir public: 70cdf0e10cSrcweir ToolbarMenu& mrMenu; 71cdf0e10cSrcweir 72cdf0e10cSrcweir int mnEntryId; 73cdf0e10cSrcweir MenuItemBits mnBits; 74cdf0e10cSrcweir Size maSize; 75cdf0e10cSrcweir 76cdf0e10cSrcweir bool mbHasText; 77cdf0e10cSrcweir bool mbHasImage; 78cdf0e10cSrcweir bool mbChecked; 79cdf0e10cSrcweir bool mbEnabled; 80cdf0e10cSrcweir 81cdf0e10cSrcweir String maText; 82cdf0e10cSrcweir Image maImage; 83cdf0e10cSrcweir Control* mpControl; 84cdf0e10cSrcweir Rectangle maRect; 85cdf0e10cSrcweir 86cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > mxAccContext; 87cdf0e10cSrcweir 88cdf0e10cSrcweir public: 89cdf0e10cSrcweir ToolbarMenuEntry( ToolbarMenu& rMenu, int nEntryId, const String& rText, MenuItemBits nBits ); 90cdf0e10cSrcweir ToolbarMenuEntry( ToolbarMenu& rMenu, int nEntryId, const Image& rImage, MenuItemBits nBits ); 91cdf0e10cSrcweir ToolbarMenuEntry( ToolbarMenu& rMenu, int nEntryId, const Image& rImage, const String& rText, MenuItemBits nBits ); 92cdf0e10cSrcweir ToolbarMenuEntry( ToolbarMenu& rMenu, int nEntryId, Control* pControl, MenuItemBits nBits ); 93cdf0e10cSrcweir ~ToolbarMenuEntry(); 94cdf0e10cSrcweir 95cdf0e10cSrcweir void init( int nEntryId, MenuItemBits nBits ); 96cdf0e10cSrcweir 97cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >& GetAccessible( bool bCreate = false ); 98cdf0e10cSrcweir 99cdf0e10cSrcweir sal_Int32 getAccessibleChildCount() throw (::com::sun::star::uno::RuntimeException); 100cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > getAccessibleChild( sal_Int32 index ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); 101cdf0e10cSrcweir void selectAccessibleChild( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); 102cdf0e10cSrcweir HasCheck() const103cdf0e10cSrcweir bool HasCheck() const 104cdf0e10cSrcweir { 105cdf0e10cSrcweir return mbChecked || ( mnBits & ( MIB_RADIOCHECK | MIB_CHECKABLE | MIB_AUTOCHECK ) ); 106cdf0e10cSrcweir } 107cdf0e10cSrcweir }; 108cdf0e10cSrcweir 109cdf0e10cSrcweir // --------------- 110cdf0e10cSrcweir // - ToolbarMenuAcc - 111cdf0e10cSrcweir // --------------- 112cdf0e10cSrcweir 113cdf0e10cSrcweir typedef ::cppu::WeakComponentImplHelper5< 114cdf0e10cSrcweir ::com::sun::star::accessibility::XAccessible, 115cdf0e10cSrcweir ::com::sun::star::accessibility::XAccessibleEventBroadcaster, 116cdf0e10cSrcweir ::com::sun::star::accessibility::XAccessibleContext, 117cdf0e10cSrcweir ::com::sun::star::accessibility::XAccessibleComponent, 118cdf0e10cSrcweir ::com::sun::star::accessibility::XAccessibleSelection > 119cdf0e10cSrcweir ToolbarMenuAccComponentBase; 120cdf0e10cSrcweir 121cdf0e10cSrcweir class ToolbarMenuAcc : 122cdf0e10cSrcweir public ::comphelper::OBaseMutex, 123cdf0e10cSrcweir public ToolbarMenuAccComponentBase 124cdf0e10cSrcweir { 125cdf0e10cSrcweir public: 126cdf0e10cSrcweir 127cdf0e10cSrcweir ToolbarMenuAcc( ToolbarMenu_Impl& rParent ); 128cdf0e10cSrcweir ~ToolbarMenuAcc(); 129cdf0e10cSrcweir 130cdf0e10cSrcweir void FireAccessibleEvent( short nEventId, const ::com::sun::star::uno::Any& rOldValue, const ::com::sun::star::uno::Any& rNewValue ); HasAccessibleListeners() const131cdf0e10cSrcweir bool HasAccessibleListeners() const { return( mxEventListeners.size() > 0 ); } 132cdf0e10cSrcweir 133cdf0e10cSrcweir public: 134cdf0e10cSrcweir // XAccessible 135cdf0e10cSrcweir virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) throw (::com::sun::star::uno::RuntimeException); 136cdf0e10cSrcweir 137cdf0e10cSrcweir // XAccessibleEventBroadcaster 138cdf0e10cSrcweir using cppu::WeakComponentImplHelper5<com::sun::star::accessibility::XAccessible, com::sun::star::accessibility::XAccessibleEventBroadcaster, com::sun::star::accessibility::XAccessibleContext, com::sun::star::accessibility::XAccessibleComponent, com::sun::star::accessibility::XAccessibleSelection>::addEventListener; 139cdf0e10cSrcweir virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); 140cdf0e10cSrcweir using cppu::WeakComponentImplHelper5<com::sun::star::accessibility::XAccessible, com::sun::star::accessibility::XAccessibleEventBroadcaster, com::sun::star::accessibility::XAccessibleContext, com::sun::star::accessibility::XAccessibleComponent, com::sun::star::accessibility::XAccessibleSelection>::removeEventListener; 141cdf0e10cSrcweir virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); 142cdf0e10cSrcweir 143cdf0e10cSrcweir // XAccessibleContext 144cdf0e10cSrcweir virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException); 145cdf0e10cSrcweir virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); 146cdf0e10cSrcweir virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException); 147cdf0e10cSrcweir virtual sal_Int32 SAL_CALL getAccessibleIndexInParent( ) throw (::com::sun::star::uno::RuntimeException); 148cdf0e10cSrcweir virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException); 149cdf0e10cSrcweir virtual ::rtl::OUString SAL_CALL getAccessibleDescription( ) throw (::com::sun::star::uno::RuntimeException); 150cdf0e10cSrcweir virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException); 151cdf0e10cSrcweir virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) throw (::com::sun::star::uno::RuntimeException); 152cdf0e10cSrcweir virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) throw (::com::sun::star::uno::RuntimeException); 153cdf0e10cSrcweir virtual ::com::sun::star::lang::Locale SAL_CALL getLocale( ) throw (::com::sun::star::accessibility::IllegalAccessibleComponentStateException, ::com::sun::star::uno::RuntimeException); 154cdf0e10cSrcweir 155cdf0e10cSrcweir // XAccessibleComponent 156cdf0e10cSrcweir virtual sal_Bool SAL_CALL containsPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException); 157cdf0e10cSrcweir virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException); 158cdf0e10cSrcweir virtual ::com::sun::star::awt::Rectangle SAL_CALL getBounds( ) throw (::com::sun::star::uno::RuntimeException); 159cdf0e10cSrcweir virtual ::com::sun::star::awt::Point SAL_CALL getLocation( ) throw (::com::sun::star::uno::RuntimeException); 160cdf0e10cSrcweir virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen( ) throw (::com::sun::star::uno::RuntimeException); 161cdf0e10cSrcweir virtual ::com::sun::star::awt::Size SAL_CALL getSize( ) throw (::com::sun::star::uno::RuntimeException); 162cdf0e10cSrcweir virtual void SAL_CALL grabFocus( ) throw (::com::sun::star::uno::RuntimeException); 163cdf0e10cSrcweir virtual ::com::sun::star::uno::Any SAL_CALL getAccessibleKeyBinding( ) throw (::com::sun::star::uno::RuntimeException); 164cdf0e10cSrcweir virtual sal_Int32 SAL_CALL getForeground( ) throw (::com::sun::star::uno::RuntimeException); 165cdf0e10cSrcweir virtual sal_Int32 SAL_CALL getBackground( ) throw (::com::sun::star::uno::RuntimeException); 166cdf0e10cSrcweir 167cdf0e10cSrcweir // XAccessibleSelection 168cdf0e10cSrcweir virtual void SAL_CALL selectAccessibleChild( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); 169cdf0e10cSrcweir virtual sal_Bool SAL_CALL isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); 170cdf0e10cSrcweir virtual void SAL_CALL clearAccessibleSelection( ) throw (::com::sun::star::uno::RuntimeException); 171cdf0e10cSrcweir virtual void SAL_CALL selectAllAccessibleChildren( ) throw (::com::sun::star::uno::RuntimeException); 172cdf0e10cSrcweir virtual sal_Int32 SAL_CALL getSelectedAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException); 173cdf0e10cSrcweir virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); 174cdf0e10cSrcweir virtual void SAL_CALL deselectAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); 175cdf0e10cSrcweir 176cdf0e10cSrcweir DECL_LINK( WindowEventListener, VclSimpleEvent* ); 177cdf0e10cSrcweir 178cdf0e10cSrcweir private: 179cdf0e10cSrcweir EventListenerVector mxEventListeners; 180cdf0e10cSrcweir ToolbarMenu_Impl* mpParent; 181cdf0e10cSrcweir /// The current FOCUSED state. 182cdf0e10cSrcweir bool mbIsFocused; 183cdf0e10cSrcweir 184cdf0e10cSrcweir void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent ); 185cdf0e10cSrcweir 186cdf0e10cSrcweir /** Tell all listeners that the object is dying. This callback is 187cdf0e10cSrcweir usually called from the WeakComponentImplHelper class. 188cdf0e10cSrcweir */ 189cdf0e10cSrcweir virtual void SAL_CALL disposing (void); 190cdf0e10cSrcweir 191cdf0e10cSrcweir /** Check whether or not the object has been disposed (or is in the 192*d92770c0Smseidel state of being disposed). If that is the case then 193cdf0e10cSrcweir DisposedException is thrown to inform the (indirect) caller of the 194cdf0e10cSrcweir foul deed. 195cdf0e10cSrcweir */ 196cdf0e10cSrcweir void ThrowIfDisposed (void) throw (::com::sun::star::lang::DisposedException); 197cdf0e10cSrcweir }; 198cdf0e10cSrcweir 199cdf0e10cSrcweir // ----------------------- 200cdf0e10cSrcweir // - ToolbarMenuEntryAcc - 201cdf0e10cSrcweir // ----------------------- 202cdf0e10cSrcweir 203cdf0e10cSrcweir typedef ::cppu::WeakComponentImplHelper4< ::com::sun::star::accessibility::XAccessible, 204cdf0e10cSrcweir ::com::sun::star::accessibility::XAccessibleEventBroadcaster, 205cdf0e10cSrcweir ::com::sun::star::accessibility::XAccessibleContext, 206cdf0e10cSrcweir ::com::sun::star::accessibility::XAccessibleComponent > ToolbarMenuEntryAccBase; 207cdf0e10cSrcweir 208cdf0e10cSrcweir class ToolbarMenuEntryAcc : public ::comphelper::OBaseMutex, 209cdf0e10cSrcweir public ToolbarMenuEntryAccBase 210cdf0e10cSrcweir { 211cdf0e10cSrcweir public: 212cdf0e10cSrcweir ToolbarMenuEntryAcc( ToolbarMenuEntry* pParent ); 213cdf0e10cSrcweir ~ToolbarMenuEntryAcc(); 214cdf0e10cSrcweir 215cdf0e10cSrcweir void FireAccessibleEvent( short nEventId, const ::com::sun::star::uno::Any& rOldValue, const ::com::sun::star::uno::Any& rNewValue ); HasAccessibleListeners() const216cdf0e10cSrcweir bool HasAccessibleListeners() const { return( mxEventListeners.size() > 0 ); } 217cdf0e10cSrcweir 218cdf0e10cSrcweir // XAccessible 219cdf0e10cSrcweir virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) throw (::com::sun::star::uno::RuntimeException); 220cdf0e10cSrcweir 221cdf0e10cSrcweir // XAccessibleEventBroadcaster 222cdf0e10cSrcweir using ToolbarMenuEntryAccBase::addEventListener; 223cdf0e10cSrcweir virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); 224cdf0e10cSrcweir using ToolbarMenuEntryAccBase::removeEventListener; 225cdf0e10cSrcweir virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); 226cdf0e10cSrcweir 227cdf0e10cSrcweir // XAccessibleContext 228cdf0e10cSrcweir virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException); 229cdf0e10cSrcweir virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); 230cdf0e10cSrcweir virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException); 231cdf0e10cSrcweir virtual sal_Int32 SAL_CALL getAccessibleIndexInParent( ) throw (::com::sun::star::uno::RuntimeException); 232cdf0e10cSrcweir virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException); 233cdf0e10cSrcweir virtual ::rtl::OUString SAL_CALL getAccessibleDescription( ) throw (::com::sun::star::uno::RuntimeException); 234cdf0e10cSrcweir virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException); 235cdf0e10cSrcweir virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) throw (::com::sun::star::uno::RuntimeException); 236cdf0e10cSrcweir virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) throw (::com::sun::star::uno::RuntimeException); 237cdf0e10cSrcweir virtual ::com::sun::star::lang::Locale SAL_CALL getLocale( ) throw (::com::sun::star::accessibility::IllegalAccessibleComponentStateException, ::com::sun::star::uno::RuntimeException); 238cdf0e10cSrcweir 239cdf0e10cSrcweir // XAccessibleComponent 240cdf0e10cSrcweir virtual sal_Bool SAL_CALL containsPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException); 241cdf0e10cSrcweir virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException); 242cdf0e10cSrcweir virtual ::com::sun::star::awt::Rectangle SAL_CALL getBounds( ) throw (::com::sun::star::uno::RuntimeException); 243cdf0e10cSrcweir virtual ::com::sun::star::awt::Point SAL_CALL getLocation( ) throw (::com::sun::star::uno::RuntimeException); 244cdf0e10cSrcweir virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen( ) throw (::com::sun::star::uno::RuntimeException); 245cdf0e10cSrcweir virtual ::com::sun::star::awt::Size SAL_CALL getSize( ) throw (::com::sun::star::uno::RuntimeException); 246cdf0e10cSrcweir virtual void SAL_CALL grabFocus( ) throw (::com::sun::star::uno::RuntimeException); 247cdf0e10cSrcweir virtual ::com::sun::star::uno::Any SAL_CALL getAccessibleKeyBinding( ) throw (::com::sun::star::uno::RuntimeException); 248cdf0e10cSrcweir virtual sal_Int32 SAL_CALL getForeground( ) throw (::com::sun::star::uno::RuntimeException); 249cdf0e10cSrcweir virtual sal_Int32 SAL_CALL getBackground( ) throw (::com::sun::star::uno::RuntimeException); 250cdf0e10cSrcweir 251cdf0e10cSrcweir private: 252cdf0e10cSrcweir EventListenerVector mxEventListeners; 253cdf0e10cSrcweir ::vos::OMutex maMutex; 254cdf0e10cSrcweir ToolbarMenuEntry* mpParent; 255cdf0e10cSrcweir 256cdf0e10cSrcweir /** Tell all listeners that the object is dying. This callback is 257cdf0e10cSrcweir usually called from the WeakComponentImplHelper class. 258cdf0e10cSrcweir */ 259cdf0e10cSrcweir virtual void SAL_CALL disposing (void); 260cdf0e10cSrcweir }; 261cdf0e10cSrcweir 262cdf0e10cSrcweir // ----------------------------------------------------------------------------- 263cdf0e10cSrcweir 264cdf0e10cSrcweir struct ToolbarMenu_Impl 265cdf0e10cSrcweir { 266cdf0e10cSrcweir ToolbarMenu& mrMenu; 267cdf0e10cSrcweir 268cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > mxFrame; 269cdf0e10cSrcweir rtl::Reference< svt::FrameStatusListener > mxStatusListener; 270cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > mxServiceManager; 271cdf0e10cSrcweir rtl::Reference< ToolbarMenuAcc > mxAccessible; 272cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > mxOldSelection; 273cdf0e10cSrcweir 274cdf0e10cSrcweir ToolbarMenuEntryVector maEntryVector; 275cdf0e10cSrcweir 276cdf0e10cSrcweir int mnCheckPos; 277cdf0e10cSrcweir int mnImagePos; 278cdf0e10cSrcweir int mnTextPos; 279cdf0e10cSrcweir 280cdf0e10cSrcweir int mnHighlightedEntry; 281cdf0e10cSrcweir int mnSelectedEntry; 282cdf0e10cSrcweir int mnLastColumn; 283cdf0e10cSrcweir 284cdf0e10cSrcweir Size maSize; 285cdf0e10cSrcweir 286cdf0e10cSrcweir Link maSelectHdl; 287cdf0e10cSrcweir 288cdf0e10cSrcweir ToolbarMenu_Impl( ToolbarMenu& rMenu, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& xFrame ); 289cdf0e10cSrcweir ~ToolbarMenu_Impl(); 290cdf0e10cSrcweir 291cdf0e10cSrcweir void setAccessible( ToolbarMenuAcc* pAccessible ); 292cdf0e10cSrcweir 293cdf0e10cSrcweir void fireAccessibleEvent( short nEventId, const ::com::sun::star::uno::Any& rOldValue, const ::com::sun::star::uno::Any& rNewValue ); 294cdf0e10cSrcweir bool hasAccessibleListeners(); 295cdf0e10cSrcweir 296cdf0e10cSrcweir sal_Int32 getAccessibleChildCount() throw (::com::sun::star::uno::RuntimeException); 297cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > getAccessibleChild( sal_Int32 index ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); 298cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > getAccessibleChild( Control* pControl, sal_Int32 childIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); 299cdf0e10cSrcweir 300cdf0e10cSrcweir void selectAccessibleChild( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); 301cdf0e10cSrcweir sal_Bool isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); 302cdf0e10cSrcweir void clearAccessibleSelection(); 303cdf0e10cSrcweir 304cdf0e10cSrcweir ToolbarMenuEntry* implGetEntry( int nEntry ) const; 305cdf0e10cSrcweir void notifyHighlightedEntry(); 306cdf0e10cSrcweir 307cdf0e10cSrcweir void implHighlightControl( sal_uInt16 nCode, Control* pControl ); 308cdf0e10cSrcweir }; 309cdf0e10cSrcweir 310cdf0e10cSrcweir } 311