diff options
Diffstat (limited to 'extensions/source/propctrlr/propertyhandler.hxx')
-rw-r--r-- | extensions/source/propctrlr/propertyhandler.hxx | 457 |
1 files changed, 0 insertions, 457 deletions
diff --git a/extensions/source/propctrlr/propertyhandler.hxx b/extensions/source/propctrlr/propertyhandler.hxx deleted file mode 100644 index 8e5fa68ea..000000000 --- a/extensions/source/propctrlr/propertyhandler.hxx +++ /dev/null @@ -1,457 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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 - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef EXTENSIONS_SOURCE_PROPCTRLR_PROPERTYHANDLER_HXX -#define EXTENSIONS_SOURCE_PROPCTRLR_PROPERTYHANDLER_HXX - -#include "pcrcomponentcontext.hxx" -#include "pcrcommon.hxx" -#include "modulepcr.hxx" - -/** === begin UNO includes === **/ -#include <com/sun/star/uno/XComponentContext.hpp> -#include <com/sun/star/beans/PropertyState.hpp> -#include <com/sun/star/beans/XPropertySet.hpp> -#include <com/sun/star/beans/Property.hpp> -#include <com/sun/star/script/XTypeConverter.hpp> -#include <com/sun/star/frame/XModel.hpp> -#include <com/sun/star/uno/Sequence.hxx> -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/util/Date.hpp> -#include <com/sun/star/util/Time.hpp> -#include <com/sun/star/util/DateTime.hpp> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <com/sun/star/inspection/XPropertyHandler.hpp> -#include <com/sun/star/lang/XServiceInfo.hpp> -/** === end UNO includes === **/ -#include <osl/interlck.h> -#include <cppuhelper/compbase1.hxx> -#include <cppuhelper/implbase1.hxx> -#include <comphelper/uno3.hxx> - -#include <memory> -#include <vector> - -namespace com { namespace sun { namespace star { - namespace inspection { - struct LineDescriptor; - class XPropertyControlFactory; - } -} } } - -class Window; -//........................................................................ -namespace pcr -{ -//........................................................................ - - typedef sal_Int32 PropertyId; - - //==================================================================== - //= PropertyHandler - //==================================================================== - class OPropertyInfoService; - typedef ::cppu::WeakComponentImplHelper1 < ::com::sun::star::inspection::XPropertyHandler - > PropertyHandler_Base; - /** the base class for property handlers - */ - class PropertyHandler : public PropertyHandler_Base - { - private: - /// cache for getSupportedProperties - mutable StlSyntaxSequence< ::com::sun::star::beans::Property > - m_aSupportedProperties; - mutable bool m_bSupportedPropertiesAreKnown; - - /// helper which ensures that we can access resources as long as the instance lives - PcrClient m_aEnsureResAccess; - - private: - /// the property listener which has been registered - PropertyChangeListeners m_aPropertyListeners; - - protected: - mutable ::osl::Mutex m_aMutex; - /// the context in which the instance was created - ComponentContext m_aContext; - /// the component we're inspecting - ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xComponent; - /// info about our component's properties - ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > m_xComponentPropertyInfo; - /// type converter, needed on various occasions - ::com::sun::star::uno::Reference< ::com::sun::star::script::XTypeConverter > m_xTypeConverter; - /// access to property meta data - ::std::auto_ptr< OPropertyInfoService > m_pInfoService; - - protected: - PropertyHandler( - const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& _rxContext - ); - ~PropertyHandler(); - - // default implementations for XPropertyHandler - virtual void SAL_CALL inspect( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxIntrospectee ) throw (::com::sun::star::uno::RuntimeException, ::com::sun::star::lang::NullPointerException); - virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::Property > SAL_CALL getSupportedProperties() throw (::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupersededProperties( ) throw (::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getActuatingProperties( ) throw (::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Any SAL_CALL convertToPropertyValue( const ::rtl::OUString& _rPropertyName, const ::com::sun::star::uno::Any& _rControlValue ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Any SAL_CALL convertToControlValue( const ::rtl::OUString& _rPropertyName, const ::com::sun::star::uno::Any& _rPropertyValue, const ::com::sun::star::uno::Type& _rControlValueType ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::beans::PropertyState SAL_CALL getPropertyState( const ::rtl::OUString& _rPropertyName ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::inspection::LineDescriptor SAL_CALL describePropertyLine( const ::rtl::OUString& _rPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::inspection::XPropertyControlFactory >& _rxControlFactory ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::NullPointerException, ::com::sun::star::uno::RuntimeException); - virtual ::sal_Bool SAL_CALL isComposable( const ::rtl::OUString& _rPropertyName ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::inspection::InteractiveSelectionResult SAL_CALL onInteractivePropertySelection( const ::rtl::OUString& _rPropertyName, sal_Bool _bPrimary, ::com::sun::star::uno::Any& _rData, const ::com::sun::star::uno::Reference< ::com::sun::star::inspection::XObjectInspectorUI >& _rxInspectorUI ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::NullPointerException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL actuatingPropertyChanged( const ::rtl::OUString& _rActuatingPropertyName, const ::com::sun::star::uno::Any& _rNewValue, const ::com::sun::star::uno::Any& _rOldValue, const ::com::sun::star::uno::Reference< ::com::sun::star::inspection::XObjectInspectorUI >& _rxInspectorUI, sal_Bool _bFirstTimeInit ) throw (::com::sun::star::lang::NullPointerException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL addPropertyChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& _rxListener ) throw (::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL removePropertyChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& _rxListener ) throw (::com::sun::star::uno::RuntimeException); - virtual sal_Bool SAL_CALL suspend( sal_Bool _bSuspend ) throw (::com::sun::star::uno::RuntimeException); - - // XComponent - DECLARE_XCOMPONENT() - virtual void SAL_CALL disposing(); - - // own overridables - virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::Property > - SAL_CALL doDescribeSupportedProperties() const = 0; - - /// called when XPropertyHandler::inspect has been called, and we thus have a new component to inspect - virtual void onNewComponent(); - - protected: - /** fires the change in a property value to our listener (if any) - @see addPropertyChangeListener - */ - void firePropertyChange( const ::rtl::OUString& _rPropName, PropertyId _nPropId, - const ::com::sun::star::uno::Any& _rOldValue, const ::com::sun::star::uno::Any& _rNewValue ) SAL_THROW(()); - - /** retrieves a window which can be used as parent for dialogs - */ - Window* impl_getDefaultDialogParent_nothrow() const; - - /** retrieves the property id for a given property name - @throw com::sun::star::beans::UnknownPropertyException - if the property name is not known to our ->m_pInfoService - */ - PropertyId impl_getPropertyId_throw( const ::rtl::OUString& _rPropertyName ) const; - - //------------------------------------------------------------------------------- - // helper for implementing doDescribeSupportedProperties - /** adds a description for the given string property to the given property vector - Most probably to be called from within getSupportedProperties - */ - inline void addStringPropertyDescription( - ::std::vector< ::com::sun::star::beans::Property >& _rProperties, - const ::rtl::OUString& _rPropertyName, - sal_Int16 _nAttribs = 0 - ) const; - - /** adds a description for the given int32 property to the given property vector - */ - inline void addInt32PropertyDescription( - ::std::vector< ::com::sun::star::beans::Property >& _rProperties, - const ::rtl::OUString& _rPropertyName, - sal_Int16 _nAttribs = 0 - ) const; - - /** adds a description for the given int16 property to the given property vector - */ - inline void addInt16PropertyDescription( - ::std::vector< ::com::sun::star::beans::Property >& _rProperties, - const ::rtl::OUString& _rPropertyName, - sal_Int16 _nAttribs = 0 - ) const; - - /** adds a description for the given double property to the given property vector - */ - inline void addDoublePropertyDescription( - ::std::vector< ::com::sun::star::beans::Property >& _rProperties, - const ::rtl::OUString& _rPropertyName, - sal_Int16 _nAttribs = 0 - ) const; - - /** adds a description for the given date property to the given property vector - */ - inline void addDatePropertyDescription( - ::std::vector< ::com::sun::star::beans::Property >& _rProperties, - const ::rtl::OUString& _rPropertyName, - sal_Int16 _nAttribs = 0 - ) const; - - /** adds a description for the given time property to the given property vector - */ - inline void addTimePropertyDescription( - ::std::vector< ::com::sun::star::beans::Property >& _rProperties, - const ::rtl::OUString& _rPropertyName, - sal_Int16 _nAttribs = 0 - ) const; - - /** adds a description for the given DateTime property to the given property vector - */ - inline void addDateTimePropertyDescription( - ::std::vector< ::com::sun::star::beans::Property >& _rProperties, - const ::rtl::OUString& _rPropertyName, - sal_Int16 _nAttribs = 0 - ) const; - - /// adds a Property, given by name only, to a given vector of Properties - void implAddPropertyDescription( - ::std::vector< ::com::sun::star::beans::Property >& _rProperties, - const ::rtl::OUString& _rPropertyName, - const ::com::sun::star::uno::Type& _rType, - sal_Int16 _nAttribs = 0 - ) const; - - //------------------------------------------------------------------------------- - // helper for accessing and maintaining meta data about our supported properties - - /** retrieves a property given by handle - - @return - a pointer to the descriptor for the given properties, if it is one of our - supported properties, <NULL/> else. - - @see doDescribeSupportedProperties - @see impl_getPropertyFromId_throw - */ - const ::com::sun::star::beans::Property* - impl_getPropertyFromId_nothrow( PropertyId _nPropId ) const; - - /** retrieves a property given by handle - - @throws UnknownPropertyException - if the handler does not support a property with the given handle - - @seealso doDescribeSupportedProperties - @see impl_getPropertyFromId_nothrow - */ - const ::com::sun::star::beans::Property& - impl_getPropertyFromId_throw( PropertyId _nPropId ) const; - - /** determines whether a given property id is part of our supported properties - @see getSupportedProperties - @see doDescribeSupportedProperties - */ - inline bool impl_isSupportedProperty_nothrow( PropertyId _nPropId ) const - { - return impl_getPropertyFromId_nothrow( _nPropId ) != NULL; - } - - /** retrieves a property given by name - - @throws UnknownPropertyException - if the handler does not support a property with the given name - - @seealso doDescribeSupportedProperties - */ - const ::com::sun::star::beans::Property& - impl_getPropertyFromName_throw( const ::rtl::OUString& _rPropertyName ) const; - - /** get the name of a property given by handle - */ - inline ::rtl::OUString - impl_getPropertyNameFromId_nothrow( PropertyId _nPropId ) const; - - /** returns the value of the ContextDocument property in the ComponentContext which was used to create - this handler. - */ - inline ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > - impl_getContextDocument_nothrow() const - { - return ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >( - m_aContext.getContextValueByAsciiName( "ContextDocument" ), ::com::sun::star::uno::UNO_QUERY ); - } - - /** marks the context document as modified - - @see impl_getContextDocument_nothrow - */ - void impl_setContextDocumentModified_nothrow() const; - - /// determines whether our component has a given property - bool impl_componentHasProperty_throw( const ::rtl::OUString& _rPropName ) const; - - /** determines the default measure unit for the document in which our component lives - */ - sal_Int16 impl_getDocumentMeasurementUnit_throw() const; - - private: - PropertyHandler(); // never implemented - PropertyHandler( const PropertyHandler& ); // never implemented - PropertyHandler& operator=( const PropertyHandler& ); // never implemented - }; - - //-------------------------------------------------------------------- - inline void PropertyHandler::addStringPropertyDescription( ::std::vector< ::com::sun::star::beans::Property >& _rProperties, const ::rtl::OUString& _rPropertyName, sal_Int16 _nAttribs ) const - { - implAddPropertyDescription( _rProperties, _rPropertyName, ::getCppuType( static_cast< ::rtl::OUString* >( NULL ) ), _nAttribs ); - } - - inline void PropertyHandler::addInt32PropertyDescription( ::std::vector< ::com::sun::star::beans::Property >& _rProperties, const ::rtl::OUString& _rPropertyName, sal_Int16 _nAttribs ) const - { - implAddPropertyDescription( _rProperties, _rPropertyName, ::getCppuType( static_cast< sal_Int32* >( NULL ) ), _nAttribs ); - } - - inline void PropertyHandler::addInt16PropertyDescription( ::std::vector< ::com::sun::star::beans::Property >& _rProperties, const ::rtl::OUString& _rPropertyName, sal_Int16 _nAttribs ) const - { - implAddPropertyDescription( _rProperties, _rPropertyName, ::getCppuType( static_cast< sal_Int16* >( NULL ) ), _nAttribs ); - } - - inline void PropertyHandler::addDoublePropertyDescription( ::std::vector< ::com::sun::star::beans::Property >& _rProperties, const ::rtl::OUString& _rPropertyName, sal_Int16 _nAttribs ) const - { - implAddPropertyDescription( _rProperties, _rPropertyName, ::getCppuType( static_cast< double* >( NULL ) ), _nAttribs ); - } - - inline void PropertyHandler::addDatePropertyDescription( ::std::vector< ::com::sun::star::beans::Property >& _rProperties, const ::rtl::OUString& _rPropertyName, sal_Int16 _nAttribs ) const - { - implAddPropertyDescription( _rProperties, _rPropertyName, ::getCppuType( static_cast< com::sun::star::util::Date* >( NULL ) ), _nAttribs ); - } - - inline void PropertyHandler::addTimePropertyDescription( ::std::vector< ::com::sun::star::beans::Property >& _rProperties, const ::rtl::OUString& _rPropertyName, sal_Int16 _nAttribs ) const - { - implAddPropertyDescription( _rProperties, _rPropertyName, ::getCppuType( static_cast< com::sun::star::util::Time* >( NULL ) ), _nAttribs ); - } - - inline void PropertyHandler::addDateTimePropertyDescription( ::std::vector< ::com::sun::star::beans::Property >& _rProperties, const ::rtl::OUString& _rPropertyName, sal_Int16 _nAttribs ) const - { - implAddPropertyDescription( _rProperties, _rPropertyName, ::getCppuType( static_cast< com::sun::star::util::DateTime* >( NULL ) ), _nAttribs ); - } - - inline ::rtl::OUString PropertyHandler::impl_getPropertyNameFromId_nothrow( PropertyId _nPropId ) const - { - const ::com::sun::star::beans::Property* pProp = impl_getPropertyFromId_nothrow( _nPropId ); - return pProp ? pProp->Name : ::rtl::OUString(); - } - - //==================================================================== - //= PropertyHandlerComponent - //==================================================================== - typedef ::cppu::ImplHelper1 < ::com::sun::star::lang::XServiceInfo - > PropertyHandlerComponent_Base; - /** PropertyHandler implementation which additionally supports XServiceInfo - */ - class PropertyHandlerComponent :public PropertyHandler - ,public PropertyHandlerComponent_Base - { - protected: - PropertyHandlerComponent( - const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& _rxContext - ); - - DECLARE_XINTERFACE() - DECLARE_XTYPEPROVIDER() - - // XServiceInfo - virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw (::com::sun::star::uno::RuntimeException) = 0; - virtual ::sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw (::com::sun::star::uno::RuntimeException) = 0; - }; - - //==================================================================== - //= HandlerComponentBase - //==================================================================== - /** a PropertyHandlerComponent implementation which routes XServiceInfo::getImplementationName and - XServiceInfo::getSupportedServiceNames to static versions of those methods, which are part of - the derived class. - - Additionally, a method <member>Create</member> is provided which takes a component context, and returns a new - instance of the derived class. This <member>Create</member> is used to register the implementation - of the derived class at the <type>PcrModule</type>. - - Well, every time we're talking about derived class, we in fact mean the template argument of - <type>HandlerComponentBase</type>. But usually this equals your derived class: - <pre> - class MyHandler; - typedef HandlerComponentBase< MyHandler > MyHandler_Base; - class MyHandler : MyHandler_Base - { - ... - public: - static ::rtl::OUString SAL_CALL getImplementationName_static( ) throw (::com::sun::star::uno::RuntimeException); - static ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames_static( ) throw (::com::sun::star::uno::RuntimeException); - }; - </pre> - */ - template < class HANDLER > - class HandlerComponentBase : public PropertyHandlerComponent - { - protected: - HandlerComponentBase( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& _rxContext ) - :PropertyHandlerComponent( _rxContext ) - { - } - - protected: - // XServiceInfo - virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw (::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw (::com::sun::star::uno::RuntimeException); - static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL Create( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& _rxContext ); - - public: - /** registers the implementation of HANDLER at the <type>PcrModule</type> - */ - static void registerImplementation(); - }; - - //-------------------------------------------------------------------- - template < class HANDLER > - ::rtl::OUString SAL_CALL HandlerComponentBase< HANDLER >::getImplementationName( ) throw (::com::sun::star::uno::RuntimeException) - { - return HANDLER::getImplementationName_static(); - } - - //-------------------------------------------------------------------- - template < class HANDLER > - ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL HandlerComponentBase< HANDLER >::getSupportedServiceNames( ) throw (::com::sun::star::uno::RuntimeException) - { - return HANDLER::getSupportedServiceNames_static(); - } - - //-------------------------------------------------------------------- - template < class HANDLER > - void HandlerComponentBase< HANDLER >::registerImplementation() - { - PcrModule::getInstance().registerImplementation( - HANDLER::getImplementationName_static(), - HANDLER::getSupportedServiceNames_static(), - HANDLER::Create - ); - } - - //-------------------------------------------------------------------- - template < class HANDLER > - ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL HandlerComponentBase< HANDLER >::Create( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& _rxContext ) - { - return *( new HANDLER( _rxContext ) ); - } - -//........................................................................ -} // namespace pcr -//........................................................................ - -#endif // EXTENSIONS_SOURCE_PROPCTRLR_PROPERTYHANDLER_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |