/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ #ifndef CHART_OPROPERTYSET_HXX #define CHART_OPROPERTYSET_HXX // helper classes #include #include #include // interfaces and types // #ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_ // #include // #endif #include #include #include #include #include // #ifndef _COM_SUN_STAR_BEANS_XFASTPROPERTYSTATE_HPP_ // #include // #endif #include #include "charttoolsdllapi.hxx" #include namespace property { namespace impl { class ImplOPropertySet; } class OOO_DLLPUBLIC_CHARTTOOLS OPropertySet : public ::cppu::OBroadcastHelper, // includes beans::XPropertySet, XMultiPropertySet and XFastPropertySet public ::cppu::OPropertySetHelper, // includes uno::XWeak (and XInterface, esp. ref-counting) // public virtual ::cppu::OWeakObject, // public virtual ::com::sun::star::lang::XServiceInfo, public ::com::sun::star::lang::XTypeProvider, public ::com::sun::star::beans::XPropertyState, public ::com::sun::star::beans::XMultiPropertyStates, public ::com::sun::star::style::XStyleSupplier // public ::com::sun::star::beans::XFastPropertyState { public: OPropertySet( ::osl::Mutex & rMutex ); virtual ~OPropertySet(); protected: explicit OPropertySet( const OPropertySet & rOther, ::osl::Mutex & rMutex ); void SetNewValuesExplicitlyEvenIfTheyEqualDefault(); /** implement this method to provide default values for all properties supporting defaults. If a property does not have a default value, you may throw an UnknownPropertyException. */ virtual ::com::sun::star::uno::Any GetDefaultValue( sal_Int32 nHandle ) const throw(::com::sun::star::beans::UnknownPropertyException) = 0; /** The InfoHelper table contains all property names and types of this object. @return the object that provides information for the PropertySetInfo @see ::cppu::OPropertySetHelper */ virtual ::cppu::IPropertyArrayHelper & SAL_CALL getInfoHelper() = 0; /** Try to convert the value rValue to the type required by the property associated with nHandle. Overload this method to take influence in modification of properties. If the conversion changed , is returned and the converted value is in rConvertedValue. The former value is contained in rOldValue. After this call returns successfully, the vetoable listeners are notified. @throws IllegalArgumentException, if the conversion was not successful, or if there is no corresponding property to the given handle. @param rConvertedValue the converted value. Only set if return is true. @param rOldValue the old value. Only set if return is true. @param nHandle the handle of the property. @return true, if the conversion was successful and converted value differs from the old value. @see ::cppu::OPropertySetHelper */ virtual sal_Bool SAL_CALL convertFastPropertyValue ( ::com::sun::star::uno::Any & rConvertedValue, ::com::sun::star::uno::Any & rOldValue, sal_Int32 nHandle, const ::com::sun::star::uno::Any& rValue ) throw (::com::sun::star::lang::IllegalArgumentException); /** The same as setFastProperyValue; nHandle is always valid. The changes must not be broadcasted in this method. @attention Although you are permitted to throw any UNO exception, only the following are valid for usage: -- ::com::sun::star::beans::UnknownPropertyException -- ::com::sun::star::beans::PropertyVetoException -- ::com::sun::star::lang::IllegalArgumentException -- ::com::sun::star::lang::WrappedTargetException -- ::com::sun::star::uno::RuntimeException @param nHandle handle @param rValue value @see ::cppu::OPropertySetHelper */ virtual void SAL_CALL setFastPropertyValue_NoBroadcast ( sal_Int32 nHandle, const ::com::sun::star::uno::Any& rValue ) throw (::com::sun::star::uno::Exception); /** The same as getFastProperyValue, but return the value through rValue and nHandle is always valid. @see ::cppu::OPropertySetHelper */ virtual void SAL_CALL getFastPropertyValue ( ::com::sun::star::uno::Any& rValue, sal_Int32 nHandle ) const; /// make original interface function visible again using ::com::sun::star::beans::XFastPropertySet::getFastPropertyValue; /** implement this method in derived classes to get called when properties change. */ virtual void firePropertyChangeEvent(); /// call this when a derived component is disposed virtual void disposePropertySet(); // ======================================== // Interfaces // ======================================== // ____ XInterface ____ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType ) throw (::com::sun::star::uno::RuntimeException); // virtual void SAL_CALL acquire() throw (); // virtual void SAL_CALL release() throw (); // ____ XServiceInfo ____ // virtual ::rtl::OUString SAL_CALL // getImplementationName() // throw (::com::sun::star::uno::RuntimeException); // 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); // ____ XTypeProvider ____ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() throw (::com::sun::star::uno::RuntimeException); virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (::com::sun::star::uno::RuntimeException); // ____ XPropertyState ____ virtual ::com::sun::star::beans::PropertyState SAL_CALL getPropertyState( const ::rtl::OUString& PropertyName ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException); virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyState > SAL_CALL getPropertyStates( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyName ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException); virtual void SAL_CALL setPropertyToDefault( const ::rtl::OUString& PropertyName ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException); virtual ::com::sun::star::uno::Any SAL_CALL getPropertyDefault( const ::rtl::OUString& aPropertyName ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); // ____ XMultiPropertyStates ____ // Note: getPropertyStates() is already implemented in XPropertyState with the // same signature virtual void SAL_CALL setAllPropertiesToDefault() throw (::com::sun::star::uno::RuntimeException); virtual void SAL_CALL setPropertiesToDefault( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException); virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > SAL_CALL getPropertyDefaults( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); // ____ XStyleSupplier ____ virtual ::com::sun::star::uno::Reference< ::com::sun::star::style::XStyle > SAL_CALL getStyle() throw (::com::sun::star::uno::RuntimeException); virtual void SAL_CALL setStyle( const ::com::sun::star::uno::Reference< ::com::sun::star::style::XStyle >& xStyle ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); // ____ XFastPropertyState ____ // virtual ::com::sun::star::beans::PropertyState SAL_CALL getFastPropertyState( sal_Int32 nHandle ) // throw (::com::sun::star::beans::UnknownPropertyException, // ::com::sun::star::uno::RuntimeException); // virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyState > SAL_CALL getFastPropertyStates( const ::com::sun::star::uno::Sequence< sal_Int32 >& aHandles ) // throw (::com::sun::star::beans::UnknownPropertyException, // ::com::sun::star::uno::RuntimeException); // virtual void SAL_CALL setFastPropertyToDefault( sal_Int32 nHandle ) // throw (::com::sun::star::beans::UnknownPropertyException, // ::com::sun::star::uno::RuntimeException); // virtual ::com::sun::star::uno::Any SAL_CALL getFastPropertyDefault( sal_Int32 nHandle ) // throw (::com::sun::star::beans::UnknownPropertyException, // ::com::sun::star::lang::WrappedTargetException, // ::com::sun::star::uno::RuntimeException); // ____ XMultiPropertySet ____ virtual void SAL_CALL setPropertyValues( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& PropertyNames, const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& Values ) throw(::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); // ____ XFastPropertySet ____ virtual void SAL_CALL setFastPropertyValue( sal_Int32 nHandle, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); // Note: it is assumed that the base class implements setPropertyValue by // using setFastPropertyValue private: /// reference to mutex of class deriving from here ::osl::Mutex & m_rMutex; /// pImpl idiom implementation ::std::auto_ptr< impl::ImplOPropertySet > m_pImplProperties; bool m_bSetNewValuesExplicitlyEvenIfTheyEqualDefault; }; } // namespace property // CHART_OPROPERTYSET_HXX #endif