1*46dbaceeSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*46dbaceeSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*46dbaceeSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*46dbaceeSAndrew Rist * distributed with this work for additional information 6*46dbaceeSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*46dbaceeSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*46dbaceeSAndrew Rist * "License"); you may not use this file except in compliance 9*46dbaceeSAndrew Rist * with the License. You may obtain a copy of the License at 10*46dbaceeSAndrew Rist * 11*46dbaceeSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*46dbaceeSAndrew Rist * 13*46dbaceeSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*46dbaceeSAndrew Rist * software distributed under the License is distributed on an 15*46dbaceeSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*46dbaceeSAndrew Rist * KIND, either express or implied. See the License for the 17*46dbaceeSAndrew Rist * specific language governing permissions and limitations 18*46dbaceeSAndrew Rist * under the License. 19*46dbaceeSAndrew Rist * 20*46dbaceeSAndrew Rist *************************************************************/ 21*46dbaceeSAndrew Rist 22*46dbaceeSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef EXTENSIONS_SOURCE_PROPCTRLR_CELLBINDINGHANDLER_HXX 25cdf0e10cSrcweir #define EXTENSIONS_SOURCE_PROPCTRLR_CELLBINDINGHANDLER_HXX 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include "propertyhandler.hxx" 28cdf0e10cSrcweir 29cdf0e10cSrcweir /** === begin UNO includes === **/ 30cdf0e10cSrcweir #include <com/sun/star/lang/XMultiServiceFactory.hpp> 31cdf0e10cSrcweir /** === end UNO includes === **/ 32cdf0e10cSrcweir #include <rtl/ref.hxx> 33cdf0e10cSrcweir 34cdf0e10cSrcweir #include <memory> 35cdf0e10cSrcweir 36cdf0e10cSrcweir //........................................................................ 37cdf0e10cSrcweir namespace pcr 38cdf0e10cSrcweir { 39cdf0e10cSrcweir //........................................................................ 40cdf0e10cSrcweir 41cdf0e10cSrcweir class CellBindingHelper; 42cdf0e10cSrcweir class IPropertyEnumRepresentation; 43cdf0e10cSrcweir //==================================================================== 44cdf0e10cSrcweir //= CellBindingPropertyHandler 45cdf0e10cSrcweir //==================================================================== 46cdf0e10cSrcweir class CellBindingPropertyHandler; 47cdf0e10cSrcweir typedef HandlerComponentBase< CellBindingPropertyHandler > CellBindingPropertyHandler_Base; 48cdf0e10cSrcweir class CellBindingPropertyHandler : public CellBindingPropertyHandler_Base 49cdf0e10cSrcweir { 50cdf0e10cSrcweir private: 51cdf0e10cSrcweir ::std::auto_ptr< CellBindingHelper > m_pHelper; 52cdf0e10cSrcweir ::rtl::Reference< IPropertyEnumRepresentation > m_pCellExchangeConverter; 53cdf0e10cSrcweir 54cdf0e10cSrcweir public: 55cdf0e10cSrcweir CellBindingPropertyHandler( 56cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& _rxContext 57cdf0e10cSrcweir ); 58cdf0e10cSrcweir 59cdf0e10cSrcweir static ::rtl::OUString SAL_CALL getImplementationName_static( ) throw (::com::sun::star::uno::RuntimeException); 60cdf0e10cSrcweir static ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames_static( ) throw (::com::sun::star::uno::RuntimeException); 61cdf0e10cSrcweir 62cdf0e10cSrcweir protected: 63cdf0e10cSrcweir ~CellBindingPropertyHandler(); 64cdf0e10cSrcweir 65cdf0e10cSrcweir protected: 66cdf0e10cSrcweir // XPropertyHandler overriables 67cdf0e10cSrcweir virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& _rPropertyName ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException); 68cdf0e10cSrcweir virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& _rPropertyName, const ::com::sun::star::uno::Any& _rValue ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException); 69cdf0e10cSrcweir 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); 70cdf0e10cSrcweir 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); 71cdf0e10cSrcweir virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > 72cdf0e10cSrcweir SAL_CALL getActuatingProperties( ) throw (::com::sun::star::uno::RuntimeException); 73cdf0e10cSrcweir 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); 74cdf0e10cSrcweir 75cdf0e10cSrcweir // PropertyHandler overridables 76cdf0e10cSrcweir virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::Property > 77cdf0e10cSrcweir SAL_CALL doDescribeSupportedProperties() const; 78cdf0e10cSrcweir virtual void onNewComponent(); 79cdf0e10cSrcweir 80cdf0e10cSrcweir private: 81cdf0e10cSrcweir /** updates a property (UI) whose state depends on more than one other property 82cdf0e10cSrcweir 83cdf0e10cSrcweir ->actuatingPropertyChanged is called for certain properties in whose changes 84cdf0e10cSrcweir we expressed interes (->getActuatingProperty). Now such a property change can 85cdf0e10cSrcweir result in simple UI updates, for instance another property being enabled or disabled. 86cdf0e10cSrcweir 87cdf0e10cSrcweir However, it can also result in a more complex change: The current (UI) state might 88cdf0e10cSrcweir depend on the value of more than one other property. Those dependent properties (their 89cdf0e10cSrcweir UI, more precisly) are updated in this method. 90cdf0e10cSrcweir 91cdf0e10cSrcweir @param _nPropid 92cdf0e10cSrcweir the ->PropertyId of the dependent property whose UI state is to be updated 93cdf0e10cSrcweir 94cdf0e10cSrcweir @param _rxInspectorUI 95cdf0e10cSrcweir provides access to the property browser UI. Must not be <NULL/>. 96cdf0e10cSrcweir */ 97cdf0e10cSrcweir void impl_updateDependentProperty_nothrow( PropertyId _nPropId, const ::com::sun::star::uno::Reference< ::com::sun::star::inspection::XObjectInspectorUI >& _rxInspectorUI ) const; 98cdf0e10cSrcweir }; 99cdf0e10cSrcweir 100cdf0e10cSrcweir //........................................................................ 101cdf0e10cSrcweir } // namespace pcr 102cdf0e10cSrcweir //........................................................................ 103cdf0e10cSrcweir 104cdf0e10cSrcweir #endif // EXTENSIONS_SOURCE_PROPCTRLR_CELLBINDINGHANDLER_HXX 105cdf0e10cSrcweir 106