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