xref: /aoo4110/main/forms/source/component/Edit.hxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski #ifndef _FORMS_EDIT_HXX_
25*b1cdbd2cSJim Jagielski #define _FORMS_EDIT_HXX_
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include "EditBase.hxx"
28*b1cdbd2cSJim Jagielski 
29*b1cdbd2cSJim Jagielski #include <cppuhelper/implbase3.hxx>
30*b1cdbd2cSJim Jagielski 
31*b1cdbd2cSJim Jagielski namespace dbtools { class FormattedColumnValue; }
32*b1cdbd2cSJim Jagielski 
33*b1cdbd2cSJim Jagielski //.........................................................................
34*b1cdbd2cSJim Jagielski namespace frm
35*b1cdbd2cSJim Jagielski {
36*b1cdbd2cSJim Jagielski 
37*b1cdbd2cSJim Jagielski //==================================================================
38*b1cdbd2cSJim Jagielski //= OEditModel
39*b1cdbd2cSJim Jagielski //==================================================================
40*b1cdbd2cSJim Jagielski class OEditModel
41*b1cdbd2cSJim Jagielski 				:public OEditBaseModel
42*b1cdbd2cSJim Jagielski {
43*b1cdbd2cSJim Jagielski     ::std::auto_ptr< ::dbtools::FormattedColumnValue >
44*b1cdbd2cSJim Jagielski                                 m_pValueFormatter;
45*b1cdbd2cSJim Jagielski 	sal_Bool					m_bMaxTextLenModified : 1;	// set to <TRUE/> when we change the MaxTextLen of the aggregate
46*b1cdbd2cSJim Jagielski 
47*b1cdbd2cSJim Jagielski 	sal_Bool					m_bWritingFormattedFake : 1;
48*b1cdbd2cSJim Jagielski 		// are we writing something which should be interpreted as formatted upon reading?
49*b1cdbd2cSJim Jagielski 
50*b1cdbd2cSJim Jagielski protected:
51*b1cdbd2cSJim Jagielski 	virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type> _getTypes();
52*b1cdbd2cSJim Jagielski 
53*b1cdbd2cSJim Jagielski 	DECLARE_DEFAULT_LEAF_XTOR( OEditModel );
54*b1cdbd2cSJim Jagielski 
enableFormattedWriteFake()55*b1cdbd2cSJim Jagielski 	void enableFormattedWriteFake() { m_bWritingFormattedFake = sal_True; }
disableFormattedWriteFake()56*b1cdbd2cSJim Jagielski 	void disableFormattedWriteFake() { m_bWritingFormattedFake = sal_False; }
lastReadWasFormattedFake() const57*b1cdbd2cSJim Jagielski 	sal_Bool lastReadWasFormattedFake() const { return (getLastReadVersion() & PF_FAKE_FORMATTED_FIELD) != 0; }
58*b1cdbd2cSJim Jagielski 
59*b1cdbd2cSJim Jagielski 	friend InterfaceRef SAL_CALL OEditModel_CreateInstance(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory>& _rxFactory);
60*b1cdbd2cSJim Jagielski 	friend class OFormattedFieldWrapper;
61*b1cdbd2cSJim Jagielski 	friend class OFormattedModel;	// temporary
62*b1cdbd2cSJim Jagielski 
63*b1cdbd2cSJim Jagielski public:
64*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL disposing();
65*b1cdbd2cSJim Jagielski 
66*b1cdbd2cSJim Jagielski 	// XPropertySet
67*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL getFastPropertyValue(::com::sun::star::uno::Any& rValue, sal_Int32 nHandle ) const;
68*b1cdbd2cSJim Jagielski 
69*b1cdbd2cSJim Jagielski     // XPersistObject
70*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL write(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XObjectOutputStream>& _rxOutStream) throw ( ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
71*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL read(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XObjectInputStream>& _rxInStream) throw ( ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
72*b1cdbd2cSJim Jagielski 	virtual ::rtl::OUString SAL_CALL getServiceName() throw ( ::com::sun::star::uno::RuntimeException);
73*b1cdbd2cSJim Jagielski 
74*b1cdbd2cSJim Jagielski     // XPropertySet
75*b1cdbd2cSJim Jagielski     using OBoundControlModel::getFastPropertyValue;
76*b1cdbd2cSJim Jagielski 
77*b1cdbd2cSJim Jagielski     // XReset
78*b1cdbd2cSJim Jagielski     virtual void SAL_CALL reset(  ) throw(::com::sun::star::uno::RuntimeException);
79*b1cdbd2cSJim Jagielski 
80*b1cdbd2cSJim Jagielski     // XServiceInfo
81*b1cdbd2cSJim Jagielski 	IMPLEMENTATION_NAME(OEditModel);
82*b1cdbd2cSJim Jagielski 	virtual StringSequence SAL_CALL getSupportedServiceNames() throw();
83*b1cdbd2cSJim Jagielski 
84*b1cdbd2cSJim Jagielski     // OControlModel's property handling
85*b1cdbd2cSJim Jagielski 	virtual void describeFixedProperties(
86*b1cdbd2cSJim Jagielski 		::com::sun::star::uno::Sequence< ::com::sun::star::beans::Property >& /* [out] */ _rProps
87*b1cdbd2cSJim Jagielski     ) const;
88*b1cdbd2cSJim Jagielski     virtual void describeAggregateProperties(
89*b1cdbd2cSJim Jagielski 		::com::sun::star::uno::Sequence< ::com::sun::star::beans::Property >& /* [out] */ _rAggregateProps
90*b1cdbd2cSJim Jagielski     ) const;
91*b1cdbd2cSJim Jagielski 
92*b1cdbd2cSJim Jagielski     // XEventListener
93*b1cdbd2cSJim Jagielski     using OBoundControlModel::disposing;
94*b1cdbd2cSJim Jagielski 
95*b1cdbd2cSJim Jagielski protected:
96*b1cdbd2cSJim Jagielski     // OControlModel overridables
97*b1cdbd2cSJim Jagielski     virtual void writeAggregate( const ::com::sun::star::uno::Reference< ::com::sun::star::io::XObjectOutputStream >& _rxOutStream ) const;
98*b1cdbd2cSJim Jagielski     virtual void readAggregate( const ::com::sun::star::uno::Reference< ::com::sun::star::io::XObjectInputStream >& _rxInStream );
99*b1cdbd2cSJim Jagielski 
100*b1cdbd2cSJim Jagielski     // OBoundControlModel overridables
101*b1cdbd2cSJim Jagielski     virtual ::com::sun::star::uno::Any
102*b1cdbd2cSJim Jagielski                             translateDbColumnToControlValue( );
103*b1cdbd2cSJim Jagielski     virtual sal_Bool        commitControlValueToDbColumn( bool _bPostReset );
104*b1cdbd2cSJim Jagielski 
105*b1cdbd2cSJim Jagielski     virtual ::com::sun::star::uno::Any
106*b1cdbd2cSJim Jagielski                             getDefaultForReset() const;
107*b1cdbd2cSJim Jagielski 
108*b1cdbd2cSJim Jagielski 	virtual void            onConnectedDbColumn( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxForm );
109*b1cdbd2cSJim Jagielski 	virtual void            onDisconnectedDbColumn();
110*b1cdbd2cSJim Jagielski 
111*b1cdbd2cSJim Jagielski 	virtual sal_Bool		approveDbColumnType( sal_Int32 _nColumnType );
112*b1cdbd2cSJim Jagielski 
113*b1cdbd2cSJim Jagielski 	virtual void            resetNoBroadcast();
114*b1cdbd2cSJim Jagielski 
115*b1cdbd2cSJim Jagielski protected:
116*b1cdbd2cSJim Jagielski 	virtual sal_uInt16 getPersistenceFlags() const;
117*b1cdbd2cSJim Jagielski 
118*b1cdbd2cSJim Jagielski 	DECLARE_XCLONEABLE();
119*b1cdbd2cSJim Jagielski 
120*b1cdbd2cSJim Jagielski private:
121*b1cdbd2cSJim Jagielski     bool    implActsAsRichText( ) const;
122*b1cdbd2cSJim Jagielski };
123*b1cdbd2cSJim Jagielski 
124*b1cdbd2cSJim Jagielski //==================================================================
125*b1cdbd2cSJim Jagielski //= OEditControl
126*b1cdbd2cSJim Jagielski //==================================================================
127*b1cdbd2cSJim Jagielski typedef ::cppu::ImplHelper3<	::com::sun::star::awt::XFocusListener,
128*b1cdbd2cSJim Jagielski 								::com::sun::star::awt::XKeyListener,
129*b1cdbd2cSJim Jagielski 								::com::sun::star::form::XChangeBroadcaster > OEditControl_BASE;
130*b1cdbd2cSJim Jagielski 
131*b1cdbd2cSJim Jagielski class OEditControl : public OBoundControl
132*b1cdbd2cSJim Jagielski 					  ,public OEditControl_BASE
133*b1cdbd2cSJim Jagielski {
134*b1cdbd2cSJim Jagielski 	::cppu::OInterfaceContainerHelper
135*b1cdbd2cSJim Jagielski 						m_aChangeListeners;
136*b1cdbd2cSJim Jagielski 
137*b1cdbd2cSJim Jagielski 	::rtl::OUString			m_aHtmlChangeValue;
138*b1cdbd2cSJim Jagielski 	sal_uInt32 				m_nKeyEvent;
139*b1cdbd2cSJim Jagielski 
140*b1cdbd2cSJim Jagielski public:
141*b1cdbd2cSJim Jagielski 	OEditControl(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory>& _rxFactory);
142*b1cdbd2cSJim Jagielski 	virtual ~OEditControl();
143*b1cdbd2cSJim Jagielski 
144*b1cdbd2cSJim Jagielski 	DECLARE_UNO3_AGG_DEFAULTS(OEditControl, OBoundControl);
145*b1cdbd2cSJim Jagielski 	virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation(const ::com::sun::star::uno::Type& _rType) throw(::com::sun::star::uno::RuntimeException);
146*b1cdbd2cSJim Jagielski 
147*b1cdbd2cSJim Jagielski 	virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type> _getTypes();
148*b1cdbd2cSJim Jagielski 
149*b1cdbd2cSJim Jagielski // OComponentHelper
150*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL disposing();
151*b1cdbd2cSJim Jagielski 
152*b1cdbd2cSJim Jagielski // ::com::sun::star::lang::XEventListener
153*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL disposing(const ::com::sun::star::lang::EventObject& _rSource) throw(::com::sun::star::uno::RuntimeException);
154*b1cdbd2cSJim Jagielski 
155*b1cdbd2cSJim Jagielski // ::com::sun::star::lang::XServiceInfo
156*b1cdbd2cSJim Jagielski 	IMPLEMENTATION_NAME(OEditControl);
157*b1cdbd2cSJim Jagielski 	virtual StringSequence SAL_CALL getSupportedServiceNames() throw();
158*b1cdbd2cSJim Jagielski 
159*b1cdbd2cSJim Jagielski // ::com::sun::star::form::XChangeBroadcaster
160*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL addChangeListener(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XChangeListener>& _rxListener) throw ( ::com::sun::star::uno::RuntimeException);
161*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL removeChangeListener(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XChangeListener>& _rxListener) throw ( ::com::sun::star::uno::RuntimeException);
162*b1cdbd2cSJim Jagielski 
163*b1cdbd2cSJim Jagielski // ::com::sun::star::awt::XFocusListener
164*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL focusGained( const ::com::sun::star::awt::FocusEvent& e ) throw ( ::com::sun::star::uno::RuntimeException);
165*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL focusLost( const ::com::sun::star::awt::FocusEvent& e ) throw ( ::com::sun::star::uno::RuntimeException);
166*b1cdbd2cSJim Jagielski 
167*b1cdbd2cSJim Jagielski // ::com::sun::star::awt::XKeyListener
168*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL keyPressed(const ::com::sun::star::awt::KeyEvent& e) throw ( ::com::sun::star::uno::RuntimeException);
169*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL keyReleased(const ::com::sun::star::awt::KeyEvent& e) throw ( ::com::sun::star::uno::RuntimeException);
170*b1cdbd2cSJim Jagielski 
171*b1cdbd2cSJim Jagielski     // XControl
172*b1cdbd2cSJim Jagielski     virtual void SAL_CALL createPeer( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XToolkit >& _rxToolkit, const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindowPeer >& _rxParent ) throw ( ::com::sun::star::uno::RuntimeException );
173*b1cdbd2cSJim Jagielski 
174*b1cdbd2cSJim Jagielski private:
175*b1cdbd2cSJim Jagielski 	DECL_LINK( OnKeyPressed, void* );
176*b1cdbd2cSJim Jagielski };
177*b1cdbd2cSJim Jagielski 
178*b1cdbd2cSJim Jagielski //.........................................................................
179*b1cdbd2cSJim Jagielski }
180*b1cdbd2cSJim Jagielski //.........................................................................
181*b1cdbd2cSJim Jagielski 
182*b1cdbd2cSJim Jagielski #endif // _FORMS_EDIT_HXX_
183*b1cdbd2cSJim Jagielski 
184