summaryrefslogtreecommitdiffstats
path: root/editeng/source/accessibility/AccessibleParaManager.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'editeng/source/accessibility/AccessibleParaManager.hxx')
-rw-r--r--editeng/source/accessibility/AccessibleParaManager.hxx349
1 files changed, 0 insertions, 349 deletions
diff --git a/editeng/source/accessibility/AccessibleParaManager.hxx b/editeng/source/accessibility/AccessibleParaManager.hxx
deleted file mode 100644
index bf50b97d32fb..000000000000
--- a/editeng/source/accessibility/AccessibleParaManager.hxx
+++ /dev/null
@@ -1,349 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: AccessibleParaManager.hxx,v $
- * $Revision: 1.12 $
- *
- * 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
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _SVX_ACCESSIBLE_PARA_MANAGER_HXX
-#define _SVX_ACCESSIBLE_PARA_MANAGER_HXX
-
-#include <vector>
-#include <algorithm>
-#include <functional>
-#include <utility>
-#include <tools/gen.hxx>
-#include <com/sun/star/awt/Rectangle.hpp>
-#include <com/sun/star/uno/Reference.hxx>
-#include <cppuhelper/weakref.hxx>
-#include <com/sun/star/accessibility/XAccessibleContext.hpp>
-
-class SvxEditSourceAdapter;
-
-namespace accessibility
-{
- class AccessibleEditableTextPara;
-
- /** Helper class for WeakCppRef
-
- This class is returned by WeakChild::get() and contains a hard
- reference and a reference to the c++ object. This combination
- prevents the c++ object from destruction during usage. Hold
- this object only as long as absolutely necessary, prevents
- referenced object from vanishing otherwise
- */
- template < class UnoType, class CppType > class HardCppRef
- {
- public:
-
- typedef UnoType UnoInterfaceType;
- typedef CppType InterfaceType;
-
- HardCppRef( const ::com::sun::star::uno::WeakReference< UnoInterfaceType >& xRef, InterfaceType* rImpl ) :
- mxRef( xRef ),
- mpImpl( rImpl )
- {
- }
-
- /** Query whether the reference is still valid.
-
- Hands off also from the implementation pointer if this
- returns sal_False!
- */
- sal_Bool is() const { return mxRef.is(); }
- InterfaceType* operator->() const { return mpImpl; }
- InterfaceType& operator*() const { return *mpImpl; }
- ::com::sun::star::uno::Reference< UnoInterfaceType >& getRef() { return mxRef; }
- const ::com::sun::star::uno::Reference< UnoInterfaceType >& getRef() const { return mxRef; }
-
- // default copy constructor and assignment will do
- // HardCppRef( const HardCppRef& );
- // HardCppRef& operator= ( const HardCppRef& );
-
- private:
-
- // the interface, hard reference to prevent object from vanishing
- ::com::sun::star::uno::Reference< UnoInterfaceType > mxRef;
-
- // the c++ object, for our internal stuff
- InterfaceType* mpImpl;
-
- };
-
- /** Helper class for weak object references plus implementation
-
- This class combines a weak reference (to facilitate automatic
- object disposal if user drops last reference) and hard
- reference to the c++ class (for fast access and bypassing of
- the UNO interface)
- */
- template < class UnoType, class CppType > class WeakCppRef
- {
- public:
-
- typedef UnoType UnoInterfaceType;
- typedef CppType InterfaceType;
- typedef HardCppRef< UnoInterfaceType, InterfaceType > HardRefType;
-
- WeakCppRef() : maWeakRef(), maUnsafeRef( NULL ) {}
- WeakCppRef( InterfaceType& rImpl ) :
- maWeakRef( ::com::sun::star::uno::Reference< UnoInterfaceType >( rImpl, ::com::sun::star::uno::UNO_QUERY ) ),
- maUnsafeRef( &rImpl )
- {
- }
-
- WeakCppRef( HardRefType& rImpl ) :
- maWeakRef( rImpl.getRef() ),
- maUnsafeRef( rImpl.operator->() )
- {
- }
-
- // get object with c++ object and hard reference (which
- // prevents the c++ object from destruction during use)
- HardRefType get() const { return HardRefType( maWeakRef, maUnsafeRef ); }
-
- // default copy constructor and assignment will do
- // WeakCppRef( const WeakCppRef& );
- // WeakCppRef& operator= ( const WeakCppRef& );
-
- private:
-
- // the interface, hold weakly
- ::com::sun::star::uno::WeakReference< UnoInterfaceType > maWeakRef;
-
- // hard ref to c++ class, _only_ valid if maWeakRef.is() is true
- InterfaceType* maUnsafeRef;
- };
-
-
- /** This class manages the paragraphs of an AccessibleTextHelper
-
- To facilitate automatic deletion of paragraphs no longer used,
- this class uses the WeakCppRef helper to hold the objects weakly.
- */
- class AccessibleParaManager
- {
- public:
- typedef WeakCppRef < ::com::sun::star::accessibility::XAccessible, AccessibleEditableTextPara > WeakPara;
- typedef ::std::pair< WeakPara, ::com::sun::star::awt::Rectangle > WeakChild;
- typedef ::std::pair< ::com::sun::star::uno::Reference<
- ::com::sun::star::accessibility::XAccessible > , ::com::sun::star::awt::Rectangle > Child;
- typedef ::std::vector< WeakChild > VectorOfChildren;
- typedef ::std::vector< sal_Int16 > VectorOfStates;
-
- AccessibleParaManager();
- ~AccessibleParaManager();
-
- /** Sets a vector of additional accessible states.
-
- The states are passed to every created child object
- (text paragraph). The state values are defined in
- com::sun::star::accessibility::AccessibleStateType.
- */
- void SetAdditionalChildStates( const VectorOfStates& rChildStates );
-
- /** Returns the additional accessible states for children.
- */
- const VectorOfStates& GetAdditionalChildStates() const;
-
- /** Set the number of paragraphs
-
- @param nNumPara
- The total number of paragraphs the EditEngine currently
- has (_not_ the number of currently visible children)
- */
- void SetNum( sal_Int32 nNumParas );
-
- /** Get the number of paragraphs currently possible */
- sal_uInt32 GetNum() const;
-
- // iterators
- VectorOfChildren::iterator begin();
- VectorOfChildren::iterator end();
- VectorOfChildren::const_iterator begin() const;
- VectorOfChildren::const_iterator end() const;
-
- // dealing with single paragraphs (release reference, return reference etc)
- void Release( sal_uInt32 nPara );
- /// Set focus to given child
- void SetFocus( sal_Int32 nChild );
-
- void FireEvent( sal_uInt32 nPara,
- const sal_Int16 nEventId,
- const ::com::sun::star::uno::Any& rNewValue = ::com::sun::star::uno::Any(),
- const ::com::sun::star::uno::Any& rOldValue = ::com::sun::star::uno::Any() ) const;
-
- static sal_Bool IsReferencable( WeakPara::HardRefType aChild );
- sal_Bool IsReferencable( sal_uInt32 nChild ) const;
- static void ShutdownPara( const WeakChild& rChild );
-
- Child CreateChild( sal_Int32 nChild,
- const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& xFrontEnd,
- SvxEditSourceAdapter& rEditSource,
- sal_uInt32 nParagraphIndex );
-
- WeakChild GetChild( sal_uInt32 nParagraphIndex ) const;
-
- // forwarder to all paragraphs
- /// Make all children active and editable (or off)
- void SetActive( sal_Bool bActive = sal_True );
- /// Set state of all children
- void SetState( const sal_Int16 nStateId );
- /// Unset state of all children
- void UnSetState( const sal_Int16 nStateId );
- /// Set offset to edit engine for all children
- void SetEEOffset ( const Point& rOffset );
- /// Change edit source on all living children
- void SetEditSource ( SvxEditSourceAdapter* pEditSource );
- /// Dispose all living children
- void Dispose ();
-
- // forwarder to given paragraphs
- //------------------------------------------------------------------------
- /** Release the given range of paragraphs
-
- All ranges have the meaning [start,end), similar to STL
-
- @param nStartPara
- Index of paragraph to start with releasing
-
- @param nEndPara
- Index of first paragraph to stop with releasing
- */
- void Release( sal_uInt32 nStartPara, sal_uInt32 nEndPara );
-
- /** Fire event for the given range of paragraphs
-
- All ranges have the meaning [start,end), similar to STL
-
- @param nStartPara
- Index of paragraph to start with event firing
-
- @param nEndPara
- Index of first paragraph to stop with event firing
- */
- void FireEvent( sal_uInt32 nStartPara,
- sal_uInt32 nEndPara,
- const sal_Int16 nEventId,
- const ::com::sun::star::uno::Any& rNewValue = ::com::sun::star::uno::Any(),
- const ::com::sun::star::uno::Any& rOldValue = ::com::sun::star::uno::Any() ) const;
-
- /** Functor adapter for ForEach template
-
- Adapts giving functor such that only the paragraph objects
- are accessed and the fact that our children are held
- weakly is hidden
-
- The functor must provide the following method:
- void operator() ( AccessibleEditablePara& )
-
- */
- template < typename Functor > class WeakChildAdapter : public ::std::unary_function< const WeakChild&, void >
- {
- public:
- WeakChildAdapter( Functor& rFunctor ) : mrFunctor(rFunctor) {}
- void operator()( const WeakChild& rPara )
- {
- // retrieve hard reference from weak one
- WeakPara::HardRefType aHardRef( rPara.first.get() );
-
- if( aHardRef.is() )
- mrFunctor( *aHardRef );
- }
-
- private:
- Functor& mrFunctor;
- };
-
- /** Adapter for unary member functions
-
- Since STL's binder don't work with const& arguments (and
- BOOST's neither, at least on MSVC), have to provide our
- own adapter for unary member functions.
-
- Create with pointer to member function of
- AccessibleEditableTextPara and the corresponding argument.
- */
- template < typename Argument > class MemFunAdapter : public ::std::unary_function< const WeakChild&, void >
- {
- public:
- typedef void (::accessibility::AccessibleEditableTextPara::*FunctionPointer)( Argument );
-
- MemFunAdapter( FunctionPointer aFunPtr, Argument aArg ) : maFunPtr(aFunPtr), maArg(aArg) {}
- void operator()( const WeakChild& rPara )
- {
- // retrieve hard reference from weak one
- WeakPara::HardRefType aHardRef( rPara.first.get() );
-
- if( aHardRef.is() )
- (*aHardRef.*maFunPtr)( maArg );
- }
-
- private:
- FunctionPointer maFunPtr;
- Argument maArg;
- };
-
- /** Generic algorithm on given paragraphs
-
- Convenience method, that already adapts the given functor with WeakChildAdapter
- */
- template < typename Functor > void ForEach( Functor& rFunctor )
- {
- ::std::for_each( begin(), end(), WeakChildAdapter< Functor >(rFunctor) );
- }
-
- private:
- /// Set state on given child
- void SetState( sal_Int32 nChild, const sal_Int16 nStateId );
- /// Unset state on given child
- void UnSetState( sal_Int32 nChild, const sal_Int16 nStateId );
- /// Init child with default state (as stored in previous SetFocus and SetActive calls)
- void InitChild( AccessibleEditableTextPara& rChild,
- SvxEditSourceAdapter& rEditSource,
- sal_Int32 nChild,
- sal_uInt32 nParagraphIndex ) const;
-
- // vector the size of the paragraph number of the underlying EditEngine
- VectorOfChildren maChildren;
-
- /// Additional states that will be set at every created child object.
- VectorOfStates maChildStates;
-
- // cache EE offset for child creation
- Point maEEOffset;
-
- // which child currently has the focus (-1 for none)
- sal_Int32 mnFocusedChild;
-
- // whether children are active and editable
- sal_Bool mbActive;
- };
-
-} // end of namespace accessibility
-
-#endif
-