/************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite * * This file is part of OpenOffice.org. * * OpenOffice.org is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License version 3 * only, as published by the Free Software Foundation. * * OpenOffice.org is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License version 3 for more details * (a copy is included in the LICENSE file that accompanied this code). * * You should have received a copy of the GNU Lesser General Public License * version 3 along with OpenOffice.org. If not, see * * for a copy of the LGPLv3 License. * ************************************************************************/ #ifndef TOOLKIT_ACCESSIBLE_CONTROL_CONTEXT_HXX #define TOOLKIT_ACCESSIBLE_CONTROL_CONTEXT_HXX #include #include #include #include #include #include class Window; //........................................................................ namespace toolkit { //........................................................................ //==================================================================== //= OAccessibleControlContext //==================================================================== typedef ::comphelper::OAccessibleComponentHelper OAccessibleControlContext_Base; typedef ::cppu::ImplHelper1 < ::com::sun::star::lang::XEventListener > OAccessibleControlContext_IBase; /** class implementing the AccessibleContext for an UNO control - to be used in design mode of the control.

life time control
This control should be held weak by the creator (an UNO control), it itself holds a hard reference to the control model, and a weak reference to the control. The reference to the model is freed when the model is beeing disposed.

*/ class OAccessibleControlContext :public ::comphelper::OAccessibleImplementationAccess ,public OAccessibleControlContext_Base ,public OAccessibleControlContext_IBase { private: ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xControlModel; // the model of the control which's context we implement ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > m_xModelPropsInfo; // the cached property set info of the model protected: /// ctor. @see Init OAccessibleControlContext(); ~OAccessibleControlContext(); /** late ctor */ void Init( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxCreator ) SAL_THROW( ( ::com::sun::star::uno::Exception ) ); // OCommonAccessibleComponent overridables virtual ::com::sun::star::awt::Rectangle SAL_CALL implGetBounds( ) throw (::com::sun::star::uno::RuntimeException); public: /** creates an accessible context for an uno control @param _rxCreator the uno control's XAccessible interface. This must be an XControl, from which an XControlModel can be retrieved. */ static OAccessibleControlContext* create( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxCreator ) SAL_THROW( ( ) ); protected: // XInterface DECLARE_XINTERFACE( ) DECLARE_XTYPEPROVIDER( ) // XAccessibleContext virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException); 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); virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException); virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException); virtual ::rtl::OUString SAL_CALL getAccessibleDescription( ) throw (::com::sun::star::uno::RuntimeException); virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException); virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) throw (::com::sun::star::uno::RuntimeException); virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) throw (::com::sun::star::uno::RuntimeException); // XAccessibleComponent 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); virtual void SAL_CALL grabFocus( ) throw (::com::sun::star::uno::RuntimeException); virtual ::com::sun::star::uno::Any SAL_CALL getAccessibleKeyBinding( ) throw (::com::sun::star::uno::RuntimeException); virtual sal_Int32 SAL_CALL getForeground( ) throw (::com::sun::star::uno::RuntimeException); virtual sal_Int32 SAL_CALL getBackground( ) throw (::com::sun::star::uno::RuntimeException); // XEventListener using comphelper::OAccessibleContextHelper::disposing; virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException); private: // retrieves the value of a string property from the model, if the property is present ::rtl::OUString getModelStringProperty( const sal_Char* _pPropertyName ) SAL_THROW( ( ) ); // starts listening at the control model (currently for disposal only) void startModelListening( ) SAL_THROW( ( ::com::sun::star::uno::Exception ) ); // stops listening at the control model void stopModelListening( ) SAL_THROW( ( ::com::sun::star::uno::Exception ) ); Window* implGetWindow( ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >* _pxUNOWindow = NULL ) const; }; //........................................................................ } // namespace toolkit //........................................................................ #endif // TOOLKIT_ACCESSIBLE_CONTROL_CONTEXT_HXX