xref: /AOO41X/main/dbaccess/source/ui/browser/formadapter.cxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
29*cdf0e10cSrcweir #include "precompiled_dbaccess.hxx"
30*cdf0e10cSrcweir 
31*cdf0e10cSrcweir #ifndef _SBA_FORMADAPTER_HXX
32*cdf0e10cSrcweir #include "formadapter.hxx"
33*cdf0e10cSrcweir #endif
34*cdf0e10cSrcweir #ifndef _TOOLS_DEBUG_HXX //autogen
35*cdf0e10cSrcweir #include <tools/debug.hxx>
36*cdf0e10cSrcweir #endif
37*cdf0e10cSrcweir #ifndef _COMPHELPER_TYPES_HXX_
38*cdf0e10cSrcweir #include <comphelper/types.hxx>
39*cdf0e10cSrcweir #endif
40*cdf0e10cSrcweir #ifndef _COMPHELPER_ENUMHELPER_HXX_
41*cdf0e10cSrcweir #include <comphelper/enumhelper.hxx>
42*cdf0e10cSrcweir #endif
43*cdf0e10cSrcweir #ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_
44*cdf0e10cSrcweir #include <com/sun/star/lang/XMultiServiceFactory.hpp>
45*cdf0e10cSrcweir #endif
46*cdf0e10cSrcweir #ifndef _STRING_HXX
47*cdf0e10cSrcweir #include <tools/string.hxx>
48*cdf0e10cSrcweir #endif
49*cdf0e10cSrcweir #ifndef _DBU_BRW_HRC_
50*cdf0e10cSrcweir #include "dbu_brw.hrc"
51*cdf0e10cSrcweir #endif
52*cdf0e10cSrcweir #ifndef DBACCESS_SHARED_DBUSTRINGS_HRC
53*cdf0e10cSrcweir #include "dbustrings.hrc"
54*cdf0e10cSrcweir #endif
55*cdf0e10cSrcweir #ifndef _CPPUHELPER_TYPEPROVIDER_HXX_
56*cdf0e10cSrcweir #include <cppuhelper/typeprovider.hxx>
57*cdf0e10cSrcweir #endif
58*cdf0e10cSrcweir #ifndef _COMPHELPER_SEQUENCE_HXX_
59*cdf0e10cSrcweir #include <comphelper/sequence.hxx>
60*cdf0e10cSrcweir #endif
61*cdf0e10cSrcweir 
62*cdf0e10cSrcweir using namespace dbaui;
63*cdf0e10cSrcweir using namespace ::com::sun::star::uno;
64*cdf0e10cSrcweir using namespace ::com::sun::star::sdb;
65*cdf0e10cSrcweir using namespace ::com::sun::star::sdbcx;
66*cdf0e10cSrcweir using namespace ::com::sun::star::beans;
67*cdf0e10cSrcweir using namespace ::com::sun::star::container;
68*cdf0e10cSrcweir 
69*cdf0e10cSrcweir //==================================================================
70*cdf0e10cSrcweir // SbaXFormAdapter
71*cdf0e10cSrcweir //==================================================================
72*cdf0e10cSrcweir 
73*cdf0e10cSrcweir DBG_NAME(SbaXFormAdapter)
74*cdf0e10cSrcweir // -------------------------------------------------------------------------
75*cdf0e10cSrcweir SbaXFormAdapter::SbaXFormAdapter()
76*cdf0e10cSrcweir 			:m_aLoadListeners(*this, m_aMutex)
77*cdf0e10cSrcweir 			,m_aRowSetListeners(*this, m_aMutex)
78*cdf0e10cSrcweir 			,m_aRowSetApproveListeners(*this, m_aMutex)
79*cdf0e10cSrcweir 			,m_aErrorListeners(*this, m_aMutex)
80*cdf0e10cSrcweir 			,m_aParameterListeners(*this, m_aMutex)
81*cdf0e10cSrcweir 			,m_aSubmitListeners(*this, m_aMutex)
82*cdf0e10cSrcweir 			,m_aResetListeners(*this, m_aMutex)
83*cdf0e10cSrcweir 			,m_aPropertyChangeListeners(*this, m_aMutex)
84*cdf0e10cSrcweir 			,m_aVetoablePropertyChangeListeners(*this, m_aMutex)
85*cdf0e10cSrcweir             ,m_aPropertiesChangeListeners(*this, m_aMutex)
86*cdf0e10cSrcweir 			,m_aDisposeListeners(m_aMutex)
87*cdf0e10cSrcweir 			,m_aContainerListeners(m_aMutex)
88*cdf0e10cSrcweir 			,m_nNamePropHandle(-1)
89*cdf0e10cSrcweir {
90*cdf0e10cSrcweir     DBG_CTOR(SbaXFormAdapter,NULL);
91*cdf0e10cSrcweir 
92*cdf0e10cSrcweir }
93*cdf0e10cSrcweir 
94*cdf0e10cSrcweir // -------------------------------------------------------------------------
95*cdf0e10cSrcweir SbaXFormAdapter::~SbaXFormAdapter()
96*cdf0e10cSrcweir {
97*cdf0e10cSrcweir 
98*cdf0e10cSrcweir     DBG_DTOR(SbaXFormAdapter,NULL);
99*cdf0e10cSrcweir }
100*cdf0e10cSrcweir 
101*cdf0e10cSrcweir // -------------------------------------------------------------------------
102*cdf0e10cSrcweir Sequence< Type > SAL_CALL SbaXFormAdapter::getTypes(  ) throw (RuntimeException)
103*cdf0e10cSrcweir {
104*cdf0e10cSrcweir 	return ::comphelper::concatSequences(
105*cdf0e10cSrcweir 		SbaXFormAdapter_BASE1::getTypes(),
106*cdf0e10cSrcweir 		SbaXFormAdapter_BASE2::getTypes(),
107*cdf0e10cSrcweir 		SbaXFormAdapter_BASE3::getTypes()
108*cdf0e10cSrcweir 	);
109*cdf0e10cSrcweir }
110*cdf0e10cSrcweir 
111*cdf0e10cSrcweir // -------------------------------------------------------------------------
112*cdf0e10cSrcweir Sequence< sal_Int8 > SAL_CALL SbaXFormAdapter::getImplementationId(  ) throw (RuntimeException)
113*cdf0e10cSrcweir {
114*cdf0e10cSrcweir 	static ::cppu::OImplementationId * pId = 0;
115*cdf0e10cSrcweir 	if (! pId)
116*cdf0e10cSrcweir 	{
117*cdf0e10cSrcweir 		::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
118*cdf0e10cSrcweir 		if (! pId)
119*cdf0e10cSrcweir 		{
120*cdf0e10cSrcweir 			static ::cppu::OImplementationId aId;
121*cdf0e10cSrcweir 			pId = &aId;
122*cdf0e10cSrcweir 		}
123*cdf0e10cSrcweir 	}
124*cdf0e10cSrcweir 	return pId->getImplementationId();
125*cdf0e10cSrcweir }
126*cdf0e10cSrcweir 
127*cdf0e10cSrcweir // -------------------------------------------------------------------------
128*cdf0e10cSrcweir Any SAL_CALL SbaXFormAdapter::queryInterface(const Type& _rType) throw (RuntimeException)
129*cdf0e10cSrcweir {
130*cdf0e10cSrcweir 	Any aReturn = SbaXFormAdapter_BASE1::queryInterface( _rType );
131*cdf0e10cSrcweir 
132*cdf0e10cSrcweir 	if (!aReturn.hasValue())
133*cdf0e10cSrcweir 		aReturn = SbaXFormAdapter_BASE2::queryInterface( _rType );
134*cdf0e10cSrcweir 
135*cdf0e10cSrcweir 	if (!aReturn.hasValue())
136*cdf0e10cSrcweir 		aReturn = SbaXFormAdapter_BASE3::queryInterface( _rType );
137*cdf0e10cSrcweir 
138*cdf0e10cSrcweir 	return aReturn;
139*cdf0e10cSrcweir }
140*cdf0e10cSrcweir 
141*cdf0e10cSrcweir // -------------------------------------------------------------------------
142*cdf0e10cSrcweir void SbaXFormAdapter::StopListening()
143*cdf0e10cSrcweir {
144*cdf0e10cSrcweir 	// log off all our multiplexers
145*cdf0e10cSrcweir 	STOP_MULTIPLEXER_LISTENING(LoadListener, m_aLoadListeners, ::com::sun::star::form::XLoadable, m_xMainForm);
146*cdf0e10cSrcweir 	STOP_MULTIPLEXER_LISTENING(RowSetListener, m_aRowSetListeners, ::com::sun::star::sdbc::XRowSet, m_xMainForm);
147*cdf0e10cSrcweir 	STOP_MULTIPLEXER_LISTENING(RowSetApproveListener, m_aRowSetApproveListeners, ::com::sun::star::sdb::XRowSetApproveBroadcaster, m_xMainForm);
148*cdf0e10cSrcweir 	STOP_MULTIPLEXER_LISTENING(SQLErrorListener, m_aErrorListeners, ::com::sun::star::sdb::XSQLErrorBroadcaster, m_xMainForm);
149*cdf0e10cSrcweir 	STOP_MULTIPLEXER_LISTENING(SubmitListener, m_aSubmitListeners, ::com::sun::star::form::XSubmit, m_xMainForm);
150*cdf0e10cSrcweir 	STOP_MULTIPLEXER_LISTENING(ResetListener, m_aResetListeners, ::com::sun::star::form::XReset, m_xMainForm);
151*cdf0e10cSrcweir 
152*cdf0e10cSrcweir 	if (m_aParameterListeners.getLength())
153*cdf0e10cSrcweir 	{
154*cdf0e10cSrcweir 		Reference< ::com::sun::star::form::XDatabaseParameterBroadcaster >  xBroadcaster(m_xMainForm, UNO_QUERY);
155*cdf0e10cSrcweir 		if (xBroadcaster.is())
156*cdf0e10cSrcweir 			xBroadcaster->removeParameterListener(&m_aParameterListeners);
157*cdf0e10cSrcweir 	}
158*cdf0e10cSrcweir 
159*cdf0e10cSrcweir 	STOP_PROPERTY_MULTIPLEXER_LISTENING(PropertyChangeListener, m_aPropertyChangeListeners, ::com::sun::star::beans::XPropertySet, m_xMainForm);
160*cdf0e10cSrcweir 	STOP_PROPERTY_MULTIPLEXER_LISTENING(VetoableChangeListener, m_aVetoablePropertyChangeListeners, ::com::sun::star::beans::XPropertySet, m_xMainForm);
161*cdf0e10cSrcweir 	if (m_aPropertiesChangeListeners.getLength())
162*cdf0e10cSrcweir 	{
163*cdf0e10cSrcweir 		Reference< ::com::sun::star::beans::XMultiPropertySet >  xBroadcaster(m_xMainForm, UNO_QUERY);
164*cdf0e10cSrcweir 		if (xBroadcaster.is())
165*cdf0e10cSrcweir 			xBroadcaster->removePropertiesChangeListener(&m_aPropertiesChangeListeners);
166*cdf0e10cSrcweir 	}
167*cdf0e10cSrcweir 
168*cdf0e10cSrcweir 	// log off ourself
169*cdf0e10cSrcweir 	Reference< ::com::sun::star::lang::XComponent >  xComp(m_xMainForm, UNO_QUERY);
170*cdf0e10cSrcweir 	if (xComp.is())
171*cdf0e10cSrcweir 		xComp->removeEventListener((::com::sun::star::lang::XEventListener*)(::com::sun::star::beans::XPropertyChangeListener*)this);
172*cdf0e10cSrcweir }
173*cdf0e10cSrcweir 
174*cdf0e10cSrcweir // -------------------------------------------------------------------------
175*cdf0e10cSrcweir void SbaXFormAdapter::StartListening()
176*cdf0e10cSrcweir {
177*cdf0e10cSrcweir 	// log off all our multiplexers
178*cdf0e10cSrcweir 	START_MULTIPLEXER_LISTENING(LoadListener, m_aLoadListeners, ::com::sun::star::form::XLoadable, m_xMainForm);
179*cdf0e10cSrcweir 	START_MULTIPLEXER_LISTENING(RowSetListener, m_aRowSetListeners, ::com::sun::star::sdbc::XRowSet, m_xMainForm);
180*cdf0e10cSrcweir 	START_MULTIPLEXER_LISTENING(RowSetApproveListener, m_aRowSetApproveListeners, ::com::sun::star::sdb::XRowSetApproveBroadcaster, m_xMainForm);
181*cdf0e10cSrcweir 	START_MULTIPLEXER_LISTENING(SQLErrorListener, m_aErrorListeners, ::com::sun::star::sdb::XSQLErrorBroadcaster, m_xMainForm);
182*cdf0e10cSrcweir 	START_MULTIPLEXER_LISTENING(SubmitListener, m_aSubmitListeners, ::com::sun::star::form::XSubmit, m_xMainForm);
183*cdf0e10cSrcweir 	START_MULTIPLEXER_LISTENING(ResetListener, m_aResetListeners, ::com::sun::star::form::XReset, m_xMainForm);
184*cdf0e10cSrcweir 
185*cdf0e10cSrcweir 	if (m_aParameterListeners.getLength())
186*cdf0e10cSrcweir 	{
187*cdf0e10cSrcweir 		Reference< ::com::sun::star::form::XDatabaseParameterBroadcaster >  xBroadcaster(m_xMainForm, UNO_QUERY);
188*cdf0e10cSrcweir 		if (xBroadcaster.is())
189*cdf0e10cSrcweir 			xBroadcaster->addParameterListener(&m_aParameterListeners);
190*cdf0e10cSrcweir 	}
191*cdf0e10cSrcweir 
192*cdf0e10cSrcweir 	START_PROPERTY_MULTIPLEXER_LISTENING(PropertyChangeListener, m_aPropertyChangeListeners, ::com::sun::star::beans::XPropertySet, m_xMainForm);
193*cdf0e10cSrcweir 	START_PROPERTY_MULTIPLEXER_LISTENING(VetoableChangeListener, m_aVetoablePropertyChangeListeners, ::com::sun::star::beans::XPropertySet, m_xMainForm);
194*cdf0e10cSrcweir 	if (m_aPropertiesChangeListeners.getLength())
195*cdf0e10cSrcweir 	{
196*cdf0e10cSrcweir 		Reference< ::com::sun::star::beans::XMultiPropertySet >  xBroadcaster(m_xMainForm, UNO_QUERY);
197*cdf0e10cSrcweir 		::rtl::OUString sEmpty;
198*cdf0e10cSrcweir 		if (xBroadcaster.is())
199*cdf0e10cSrcweir 			xBroadcaster->addPropertiesChangeListener(::comphelper::StringSequence(&sEmpty, 1), &m_aPropertiesChangeListeners);
200*cdf0e10cSrcweir 	}
201*cdf0e10cSrcweir 
202*cdf0e10cSrcweir 	// log off ourself
203*cdf0e10cSrcweir 	Reference< ::com::sun::star::lang::XComponent >  xComp(m_xMainForm, UNO_QUERY);
204*cdf0e10cSrcweir 	if (xComp.is())
205*cdf0e10cSrcweir 		xComp->addEventListener((::com::sun::star::lang::XEventListener*)(::com::sun::star::beans::XPropertyChangeListener*)this);
206*cdf0e10cSrcweir }
207*cdf0e10cSrcweir 
208*cdf0e10cSrcweir // -------------------------------------------------------------------------
209*cdf0e10cSrcweir void SbaXFormAdapter::AttachForm(const Reference< ::com::sun::star::sdbc::XRowSet >& xNewMaster)
210*cdf0e10cSrcweir {
211*cdf0e10cSrcweir 	if (xNewMaster == m_xMainForm)
212*cdf0e10cSrcweir 		return;
213*cdf0e10cSrcweir 
214*cdf0e10cSrcweir 	DBG_ASSERT(xNewMaster.get() != static_cast< ::com::sun::star::sdbc::XRowSet* >(this), "SbaXFormAdapter::AttachForm : invalid argument !");
215*cdf0e10cSrcweir 
216*cdf0e10cSrcweir 	if (m_xMainForm.is())
217*cdf0e10cSrcweir 	{
218*cdf0e10cSrcweir 		StopListening();
219*cdf0e10cSrcweir 
220*cdf0e10cSrcweir 		// if our old master is loaded we have to send an 'unloaded' event
221*cdf0e10cSrcweir 		Reference< ::com::sun::star::form::XLoadable >  xLoadable(m_xMainForm, UNO_QUERY);
222*cdf0e10cSrcweir 		if (xLoadable->isLoaded())
223*cdf0e10cSrcweir 		{
224*cdf0e10cSrcweir 			::com::sun::star::lang::EventObject aEvt(*this);
225*cdf0e10cSrcweir 			::cppu::OInterfaceIteratorHelper aIt(m_aLoadListeners);
226*cdf0e10cSrcweir 			while (aIt.hasMoreElements())
227*cdf0e10cSrcweir 				((::com::sun::star::form::XLoadListener*)aIt.next())->unloaded(aEvt);
228*cdf0e10cSrcweir 		}
229*cdf0e10cSrcweir 	}
230*cdf0e10cSrcweir 
231*cdf0e10cSrcweir 	m_xMainForm = xNewMaster;
232*cdf0e10cSrcweir 
233*cdf0e10cSrcweir 	if (m_xMainForm.is())
234*cdf0e10cSrcweir 	{
235*cdf0e10cSrcweir 		StartListening();
236*cdf0e10cSrcweir 
237*cdf0e10cSrcweir 		// if our new master is loaded we have to send an 'loaded' event
238*cdf0e10cSrcweir 		Reference< ::com::sun::star::form::XLoadable >  xLoadable(m_xMainForm, UNO_QUERY);
239*cdf0e10cSrcweir 		if (xLoadable->isLoaded())
240*cdf0e10cSrcweir 		{
241*cdf0e10cSrcweir 			::com::sun::star::lang::EventObject aEvt(*this);
242*cdf0e10cSrcweir 			::cppu::OInterfaceIteratorHelper aIt(m_aLoadListeners);
243*cdf0e10cSrcweir 			while (aIt.hasMoreElements())
244*cdf0e10cSrcweir 				((::com::sun::star::form::XLoadListener*)aIt.next())->loaded(aEvt);
245*cdf0e10cSrcweir 		}
246*cdf0e10cSrcweir 	}
247*cdf0e10cSrcweir 
248*cdf0e10cSrcweir 	// TODO : perhaps _all_ of our listeners should be notified about our new state
249*cdf0e10cSrcweir 	// (nearly every aspect of us may have changed with new master form)
250*cdf0e10cSrcweir }
251*cdf0e10cSrcweir 
252*cdf0e10cSrcweir // ::com::sun::star::sdbc::XCloseable
253*cdf0e10cSrcweir // -------------------------------------------------------------------------
254*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::close() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
255*cdf0e10cSrcweir {
256*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XCloseable >  xIface(m_xMainForm, UNO_QUERY);
257*cdf0e10cSrcweir 	if (xIface.is())
258*cdf0e10cSrcweir 		xIface->close();
259*cdf0e10cSrcweir }
260*cdf0e10cSrcweir 
261*cdf0e10cSrcweir // ::com::sun::star::sdbc::XResultSetMetaDataSupplier
262*cdf0e10cSrcweir // -------------------------------------------------------------------------
263*cdf0e10cSrcweir Reference< ::com::sun::star::sdbc::XResultSetMetaData > SAL_CALL SbaXFormAdapter::getMetaData() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
264*cdf0e10cSrcweir {
265*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XResultSetMetaDataSupplier >  xIface(m_xMainForm, UNO_QUERY);
266*cdf0e10cSrcweir 	if (xIface.is())
267*cdf0e10cSrcweir 		return xIface->getMetaData();
268*cdf0e10cSrcweir 	return Reference< ::com::sun::star::sdbc::XResultSetMetaData > ();
269*cdf0e10cSrcweir }
270*cdf0e10cSrcweir 
271*cdf0e10cSrcweir // ::com::sun::star::sdbc::XColumnLocate
272*cdf0e10cSrcweir // -------------------------------------------------------------------------
273*cdf0e10cSrcweir sal_Int32 SAL_CALL SbaXFormAdapter::findColumn(const ::rtl::OUString& columnName) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
274*cdf0e10cSrcweir {
275*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XColumnLocate >  xIface(m_xMainForm, UNO_QUERY);
276*cdf0e10cSrcweir 	if (xIface.is())
277*cdf0e10cSrcweir 		return xIface->findColumn(columnName);
278*cdf0e10cSrcweir 	return 0;
279*cdf0e10cSrcweir }
280*cdf0e10cSrcweir 
281*cdf0e10cSrcweir // ::com::sun::star::sdbcx::XColumnsSupplier
282*cdf0e10cSrcweir // -------------------------------------------------------------------------
283*cdf0e10cSrcweir Reference< ::com::sun::star::container::XNameAccess > SAL_CALL SbaXFormAdapter::getColumns() throw( RuntimeException )
284*cdf0e10cSrcweir {
285*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbcx::XColumnsSupplier >  xIface(m_xMainForm, UNO_QUERY);
286*cdf0e10cSrcweir 	if (xIface.is())
287*cdf0e10cSrcweir 		return xIface->getColumns();
288*cdf0e10cSrcweir 	return Reference< ::com::sun::star::container::XNameAccess > ();
289*cdf0e10cSrcweir }
290*cdf0e10cSrcweir 
291*cdf0e10cSrcweir // ::com::sun::star::sdbc::XRow
292*cdf0e10cSrcweir // -------------------------------------------------------------------------
293*cdf0e10cSrcweir sal_Bool SAL_CALL SbaXFormAdapter::wasNull() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
294*cdf0e10cSrcweir {
295*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRow >  xIface(m_xMainForm, UNO_QUERY);
296*cdf0e10cSrcweir 	if (xIface.is())
297*cdf0e10cSrcweir 		return xIface->wasNull();
298*cdf0e10cSrcweir 	return sal_True;
299*cdf0e10cSrcweir }
300*cdf0e10cSrcweir // -------------------------------------------------------------------------
301*cdf0e10cSrcweir ::rtl::OUString SAL_CALL SbaXFormAdapter::getString(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
302*cdf0e10cSrcweir {
303*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRow >  xIface(m_xMainForm, UNO_QUERY);
304*cdf0e10cSrcweir 	if (xIface.is())
305*cdf0e10cSrcweir 		return xIface->getString(columnIndex);
306*cdf0e10cSrcweir 	return ::rtl::OUString();
307*cdf0e10cSrcweir }
308*cdf0e10cSrcweir // -------------------------------------------------------------------------
309*cdf0e10cSrcweir sal_Bool SAL_CALL SbaXFormAdapter::getBoolean(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
310*cdf0e10cSrcweir {
311*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRow >  xIface(m_xMainForm, UNO_QUERY);
312*cdf0e10cSrcweir 	if (xIface.is())
313*cdf0e10cSrcweir 		return xIface->getBoolean(columnIndex);
314*cdf0e10cSrcweir 	return sal_False;
315*cdf0e10cSrcweir }
316*cdf0e10cSrcweir // -------------------------------------------------------------------------
317*cdf0e10cSrcweir sal_Int8 SAL_CALL SbaXFormAdapter::getByte(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
318*cdf0e10cSrcweir {
319*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRow >  xIface(m_xMainForm, UNO_QUERY);
320*cdf0e10cSrcweir 	if (xIface.is())
321*cdf0e10cSrcweir 		return xIface->getByte(columnIndex);
322*cdf0e10cSrcweir 	return 0;
323*cdf0e10cSrcweir }
324*cdf0e10cSrcweir // -------------------------------------------------------------------------
325*cdf0e10cSrcweir sal_Int16 SAL_CALL SbaXFormAdapter::getShort(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
326*cdf0e10cSrcweir {
327*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRow >  xIface(m_xMainForm, UNO_QUERY);
328*cdf0e10cSrcweir 	if (xIface.is())
329*cdf0e10cSrcweir 		return xIface->getShort(columnIndex);
330*cdf0e10cSrcweir 	return 0;
331*cdf0e10cSrcweir }
332*cdf0e10cSrcweir // -------------------------------------------------------------------------
333*cdf0e10cSrcweir sal_Int32 SAL_CALL SbaXFormAdapter::getInt(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
334*cdf0e10cSrcweir {
335*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRow >  xIface(m_xMainForm, UNO_QUERY);
336*cdf0e10cSrcweir 	if (xIface.is())
337*cdf0e10cSrcweir 		return xIface->getInt(columnIndex);
338*cdf0e10cSrcweir 	return 0;
339*cdf0e10cSrcweir }
340*cdf0e10cSrcweir // -------------------------------------------------------------------------
341*cdf0e10cSrcweir sal_Int64 SAL_CALL SbaXFormAdapter::getLong(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
342*cdf0e10cSrcweir {
343*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRow >  xIface(m_xMainForm, UNO_QUERY);
344*cdf0e10cSrcweir 	if (xIface.is())
345*cdf0e10cSrcweir 		return xIface->getLong(columnIndex);
346*cdf0e10cSrcweir 	return 0;
347*cdf0e10cSrcweir }
348*cdf0e10cSrcweir // -------------------------------------------------------------------------
349*cdf0e10cSrcweir float SAL_CALL SbaXFormAdapter::getFloat(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
350*cdf0e10cSrcweir {
351*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRow >  xIface(m_xMainForm, UNO_QUERY);
352*cdf0e10cSrcweir 	if (xIface.is())
353*cdf0e10cSrcweir 		return xIface->getFloat(columnIndex);
354*cdf0e10cSrcweir 	return 0.0;
355*cdf0e10cSrcweir }
356*cdf0e10cSrcweir // -------------------------------------------------------------------------
357*cdf0e10cSrcweir double SAL_CALL SbaXFormAdapter::getDouble(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
358*cdf0e10cSrcweir {
359*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRow >  xIface(m_xMainForm, UNO_QUERY);
360*cdf0e10cSrcweir 	if (xIface.is())
361*cdf0e10cSrcweir 		return xIface->getDouble(columnIndex);
362*cdf0e10cSrcweir 	return 0.0;
363*cdf0e10cSrcweir }
364*cdf0e10cSrcweir // -------------------------------------------------------------------------
365*cdf0e10cSrcweir Sequence< sal_Int8 > SAL_CALL SbaXFormAdapter::getBytes(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
366*cdf0e10cSrcweir {
367*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRow >  xIface(m_xMainForm, UNO_QUERY);
368*cdf0e10cSrcweir 	if (xIface.is())
369*cdf0e10cSrcweir 		return xIface->getBytes(columnIndex);
370*cdf0e10cSrcweir 	return Sequence <sal_Int8> ();
371*cdf0e10cSrcweir }
372*cdf0e10cSrcweir // -------------------------------------------------------------------------
373*cdf0e10cSrcweir ::com::sun::star::util::Date SAL_CALL SbaXFormAdapter::getDate(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
374*cdf0e10cSrcweir {
375*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRow >  xIface(m_xMainForm, UNO_QUERY);
376*cdf0e10cSrcweir 	if (xIface.is())
377*cdf0e10cSrcweir 		return xIface->getDate(columnIndex);
378*cdf0e10cSrcweir 	return ::com::sun::star::util::Date();
379*cdf0e10cSrcweir }
380*cdf0e10cSrcweir // -------------------------------------------------------------------------
381*cdf0e10cSrcweir ::com::sun::star::util::Time SAL_CALL SbaXFormAdapter::getTime(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
382*cdf0e10cSrcweir {
383*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRow >  xIface(m_xMainForm, UNO_QUERY);
384*cdf0e10cSrcweir 	if (xIface.is())
385*cdf0e10cSrcweir 		return xIface->getTime(columnIndex);
386*cdf0e10cSrcweir 	return ::com::sun::star::util::Time();
387*cdf0e10cSrcweir }
388*cdf0e10cSrcweir // -------------------------------------------------------------------------
389*cdf0e10cSrcweir ::com::sun::star::util::DateTime SAL_CALL SbaXFormAdapter::getTimestamp(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
390*cdf0e10cSrcweir {
391*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRow >  xIface(m_xMainForm, UNO_QUERY);
392*cdf0e10cSrcweir 	if (xIface.is())
393*cdf0e10cSrcweir 		return xIface->getTimestamp(columnIndex);
394*cdf0e10cSrcweir 	return ::com::sun::star::util::DateTime();
395*cdf0e10cSrcweir }
396*cdf0e10cSrcweir // -------------------------------------------------------------------------
397*cdf0e10cSrcweir Reference< ::com::sun::star::io::XInputStream > SAL_CALL SbaXFormAdapter::getBinaryStream(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
398*cdf0e10cSrcweir {
399*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRow >  xIface(m_xMainForm, UNO_QUERY);
400*cdf0e10cSrcweir 	if (xIface.is())
401*cdf0e10cSrcweir 		return xIface->getBinaryStream(columnIndex);
402*cdf0e10cSrcweir 	return Reference< ::com::sun::star::io::XInputStream > ();
403*cdf0e10cSrcweir }
404*cdf0e10cSrcweir // -------------------------------------------------------------------------
405*cdf0e10cSrcweir Reference< ::com::sun::star::io::XInputStream > SAL_CALL SbaXFormAdapter::getCharacterStream(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
406*cdf0e10cSrcweir {
407*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRow >  xIface(m_xMainForm, UNO_QUERY);
408*cdf0e10cSrcweir 	if (xIface.is())
409*cdf0e10cSrcweir 		return xIface->getCharacterStream(columnIndex);
410*cdf0e10cSrcweir 	return Reference< ::com::sun::star::io::XInputStream > ();
411*cdf0e10cSrcweir }
412*cdf0e10cSrcweir // -------------------------------------------------------------------------
413*cdf0e10cSrcweir Any SAL_CALL SbaXFormAdapter::getObject(sal_Int32 columnIndex, const Reference< ::com::sun::star::container::XNameAccess >& typeMap) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
414*cdf0e10cSrcweir {
415*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRow >  xIface(m_xMainForm, UNO_QUERY);
416*cdf0e10cSrcweir 	if (xIface.is())
417*cdf0e10cSrcweir 		return xIface->getObject(columnIndex, typeMap);
418*cdf0e10cSrcweir 	return Any();
419*cdf0e10cSrcweir }
420*cdf0e10cSrcweir // -------------------------------------------------------------------------
421*cdf0e10cSrcweir Reference< ::com::sun::star::sdbc::XRef > SAL_CALL SbaXFormAdapter::getRef(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
422*cdf0e10cSrcweir {
423*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRow >  xIface(m_xMainForm, UNO_QUERY);
424*cdf0e10cSrcweir 	if (xIface.is())
425*cdf0e10cSrcweir 		return xIface->getRef(columnIndex);
426*cdf0e10cSrcweir 	return Reference< ::com::sun::star::sdbc::XRef > ();
427*cdf0e10cSrcweir }
428*cdf0e10cSrcweir // -------------------------------------------------------------------------
429*cdf0e10cSrcweir Reference< ::com::sun::star::sdbc::XBlob > SAL_CALL SbaXFormAdapter::getBlob(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
430*cdf0e10cSrcweir {
431*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRow >  xIface(m_xMainForm, UNO_QUERY);
432*cdf0e10cSrcweir 	if (xIface.is())
433*cdf0e10cSrcweir 		return xIface->getBlob(columnIndex);
434*cdf0e10cSrcweir 	return Reference< ::com::sun::star::sdbc::XBlob > ();
435*cdf0e10cSrcweir }
436*cdf0e10cSrcweir // -------------------------------------------------------------------------
437*cdf0e10cSrcweir Reference< ::com::sun::star::sdbc::XClob > SAL_CALL SbaXFormAdapter::getClob(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
438*cdf0e10cSrcweir {
439*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRow >  xIface(m_xMainForm, UNO_QUERY);
440*cdf0e10cSrcweir 	if (xIface.is())
441*cdf0e10cSrcweir 		return xIface->getClob(columnIndex);
442*cdf0e10cSrcweir 	return Reference< ::com::sun::star::sdbc::XClob > ();
443*cdf0e10cSrcweir }
444*cdf0e10cSrcweir // -------------------------------------------------------------------------
445*cdf0e10cSrcweir Reference< ::com::sun::star::sdbc::XArray > SAL_CALL SbaXFormAdapter::getArray(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
446*cdf0e10cSrcweir {
447*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRow >  xIface(m_xMainForm, UNO_QUERY);
448*cdf0e10cSrcweir 	if (xIface.is())
449*cdf0e10cSrcweir 		return xIface->getArray(columnIndex);
450*cdf0e10cSrcweir 	return Reference< ::com::sun::star::sdbc::XArray > ();
451*cdf0e10cSrcweir }
452*cdf0e10cSrcweir 
453*cdf0e10cSrcweir // ::com::sun::star::sdbcx::XRowLocate
454*cdf0e10cSrcweir // -------------------------------------------------------------------------
455*cdf0e10cSrcweir Any SAL_CALL SbaXFormAdapter::getBookmark() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
456*cdf0e10cSrcweir {
457*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbcx::XRowLocate >  xIface(m_xMainForm, UNO_QUERY);
458*cdf0e10cSrcweir 	if (xIface.is())
459*cdf0e10cSrcweir 		return xIface->getBookmark();
460*cdf0e10cSrcweir 	return Any();
461*cdf0e10cSrcweir }
462*cdf0e10cSrcweir // -------------------------------------------------------------------------
463*cdf0e10cSrcweir sal_Bool SAL_CALL SbaXFormAdapter::moveToBookmark(const Any& bookmark) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
464*cdf0e10cSrcweir {
465*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbcx::XRowLocate >  xIface(m_xMainForm, UNO_QUERY);
466*cdf0e10cSrcweir 	if (xIface.is())
467*cdf0e10cSrcweir 		return xIface->moveToBookmark(bookmark);
468*cdf0e10cSrcweir 	return sal_False;
469*cdf0e10cSrcweir }
470*cdf0e10cSrcweir // -------------------------------------------------------------------------
471*cdf0e10cSrcweir sal_Bool SAL_CALL SbaXFormAdapter::moveRelativeToBookmark(const Any& bookmark, sal_Int32 rows) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
472*cdf0e10cSrcweir {
473*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbcx::XRowLocate >  xIface(m_xMainForm, UNO_QUERY);
474*cdf0e10cSrcweir 	if (xIface.is())
475*cdf0e10cSrcweir 		return xIface->moveRelativeToBookmark(bookmark,rows);
476*cdf0e10cSrcweir 	return sal_False;
477*cdf0e10cSrcweir }
478*cdf0e10cSrcweir // -------------------------------------------------------------------------
479*cdf0e10cSrcweir sal_Int32 SAL_CALL SbaXFormAdapter::compareBookmarks(const Any& _first, const Any& _second) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
480*cdf0e10cSrcweir {
481*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbcx::XRowLocate >  xIface(m_xMainForm, UNO_QUERY);
482*cdf0e10cSrcweir 	if (xIface.is())
483*cdf0e10cSrcweir 		return xIface->compareBookmarks(_first, _second);
484*cdf0e10cSrcweir 	return 0;
485*cdf0e10cSrcweir }
486*cdf0e10cSrcweir 
487*cdf0e10cSrcweir // -------------------------------------------------------------------------
488*cdf0e10cSrcweir sal_Bool SAL_CALL SbaXFormAdapter::hasOrderedBookmarks() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
489*cdf0e10cSrcweir {
490*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbcx::XRowLocate >  xIface(m_xMainForm, UNO_QUERY);
491*cdf0e10cSrcweir 	if (xIface.is())
492*cdf0e10cSrcweir 		return xIface->hasOrderedBookmarks();
493*cdf0e10cSrcweir 	return sal_False;
494*cdf0e10cSrcweir }
495*cdf0e10cSrcweir 
496*cdf0e10cSrcweir // -------------------------------------------------------------------------
497*cdf0e10cSrcweir sal_Int32 SAL_CALL SbaXFormAdapter::hashBookmark(const Any& bookmark) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
498*cdf0e10cSrcweir {
499*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbcx::XRowLocate >  xIface(m_xMainForm, UNO_QUERY);
500*cdf0e10cSrcweir 	if (xIface.is())
501*cdf0e10cSrcweir 		return xIface->hashBookmark(bookmark);
502*cdf0e10cSrcweir 	return 0;
503*cdf0e10cSrcweir }
504*cdf0e10cSrcweir 
505*cdf0e10cSrcweir // ::com::sun::star::sdbc::XRowUpdate
506*cdf0e10cSrcweir // -------------------------------------------------------------------------
507*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::updateNull(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
508*cdf0e10cSrcweir {
509*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRowUpdate >  xIface(m_xMainForm, UNO_QUERY);
510*cdf0e10cSrcweir 	if (xIface.is())
511*cdf0e10cSrcweir 		xIface->updateNull(columnIndex);
512*cdf0e10cSrcweir }
513*cdf0e10cSrcweir // -------------------------------------------------------------------------
514*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::updateBoolean(sal_Int32 columnIndex, sal_Bool x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
515*cdf0e10cSrcweir {
516*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRowUpdate >  xIface(m_xMainForm, UNO_QUERY);
517*cdf0e10cSrcweir 	if (xIface.is())
518*cdf0e10cSrcweir 		xIface->updateBoolean(columnIndex, x);
519*cdf0e10cSrcweir }
520*cdf0e10cSrcweir // -------------------------------------------------------------------------
521*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::updateByte(sal_Int32 columnIndex, sal_Int8 x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
522*cdf0e10cSrcweir {
523*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRowUpdate >  xIface(m_xMainForm, UNO_QUERY);
524*cdf0e10cSrcweir 	if (xIface.is())
525*cdf0e10cSrcweir 		xIface->updateByte(columnIndex, x);
526*cdf0e10cSrcweir }
527*cdf0e10cSrcweir // -------------------------------------------------------------------------
528*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::updateShort(sal_Int32 columnIndex, sal_Int16 x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
529*cdf0e10cSrcweir {
530*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRowUpdate >  xIface(m_xMainForm, UNO_QUERY);
531*cdf0e10cSrcweir 	if (xIface.is())
532*cdf0e10cSrcweir 		xIface->updateShort(columnIndex, x);
533*cdf0e10cSrcweir }
534*cdf0e10cSrcweir // -------------------------------------------------------------------------
535*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::updateInt(sal_Int32 columnIndex, sal_Int32 x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
536*cdf0e10cSrcweir {
537*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRowUpdate >  xIface(m_xMainForm, UNO_QUERY);
538*cdf0e10cSrcweir 	if (xIface.is())
539*cdf0e10cSrcweir 		xIface->updateInt(columnIndex, x);
540*cdf0e10cSrcweir }
541*cdf0e10cSrcweir // -------------------------------------------------------------------------
542*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::updateLong(sal_Int32 columnIndex, sal_Int64 x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
543*cdf0e10cSrcweir {
544*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRowUpdate >  xIface(m_xMainForm, UNO_QUERY);
545*cdf0e10cSrcweir 	if (xIface.is())
546*cdf0e10cSrcweir 		xIface->updateLong(columnIndex, x);
547*cdf0e10cSrcweir }
548*cdf0e10cSrcweir // -------------------------------------------------------------------------
549*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::updateFloat(sal_Int32 columnIndex, float x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
550*cdf0e10cSrcweir {
551*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRowUpdate >  xIface(m_xMainForm, UNO_QUERY);
552*cdf0e10cSrcweir 	if (xIface.is())
553*cdf0e10cSrcweir 		xIface->updateFloat(columnIndex, x);
554*cdf0e10cSrcweir }
555*cdf0e10cSrcweir // -------------------------------------------------------------------------
556*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::updateDouble(sal_Int32 columnIndex, double x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
557*cdf0e10cSrcweir {
558*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRowUpdate >  xIface(m_xMainForm, UNO_QUERY);
559*cdf0e10cSrcweir 	if (xIface.is())
560*cdf0e10cSrcweir 		xIface->updateDouble(columnIndex, x);
561*cdf0e10cSrcweir }
562*cdf0e10cSrcweir // -------------------------------------------------------------------------
563*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::updateString(sal_Int32 columnIndex, const ::rtl::OUString& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
564*cdf0e10cSrcweir {
565*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRowUpdate >  xIface(m_xMainForm, UNO_QUERY);
566*cdf0e10cSrcweir 	if (xIface.is())
567*cdf0e10cSrcweir 		xIface->updateString(columnIndex, x);
568*cdf0e10cSrcweir }
569*cdf0e10cSrcweir // -------------------------------------------------------------------------
570*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::updateBytes(sal_Int32 columnIndex, const Sequence< sal_Int8 >& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
571*cdf0e10cSrcweir {
572*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRowUpdate >  xIface(m_xMainForm, UNO_QUERY);
573*cdf0e10cSrcweir 	if (xIface.is())
574*cdf0e10cSrcweir 		xIface->updateBytes(columnIndex, x);
575*cdf0e10cSrcweir }
576*cdf0e10cSrcweir // -------------------------------------------------------------------------
577*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::updateDate(sal_Int32 columnIndex, const ::com::sun::star::util::Date& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
578*cdf0e10cSrcweir {
579*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRowUpdate >  xIface(m_xMainForm, UNO_QUERY);
580*cdf0e10cSrcweir 	if (xIface.is())
581*cdf0e10cSrcweir 		xIface->updateDate(columnIndex, x);
582*cdf0e10cSrcweir }
583*cdf0e10cSrcweir // -------------------------------------------------------------------------
584*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::updateTime(sal_Int32 columnIndex, const ::com::sun::star::util::Time& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
585*cdf0e10cSrcweir {
586*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRowUpdate >  xIface(m_xMainForm, UNO_QUERY);
587*cdf0e10cSrcweir 	if (xIface.is())
588*cdf0e10cSrcweir 		xIface->updateTime(columnIndex, x);
589*cdf0e10cSrcweir }
590*cdf0e10cSrcweir // -------------------------------------------------------------------------
591*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::updateTimestamp(sal_Int32 columnIndex, const ::com::sun::star::util::DateTime& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
592*cdf0e10cSrcweir {
593*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRowUpdate >  xIface(m_xMainForm, UNO_QUERY);
594*cdf0e10cSrcweir 	if (xIface.is())
595*cdf0e10cSrcweir 		xIface->updateTimestamp(columnIndex, x);
596*cdf0e10cSrcweir }
597*cdf0e10cSrcweir // -------------------------------------------------------------------------
598*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::updateBinaryStream(sal_Int32 columnIndex, const Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
599*cdf0e10cSrcweir {
600*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRowUpdate >  xIface(m_xMainForm, UNO_QUERY);
601*cdf0e10cSrcweir 	if (xIface.is())
602*cdf0e10cSrcweir 		xIface->updateBinaryStream(columnIndex, x, length);
603*cdf0e10cSrcweir }
604*cdf0e10cSrcweir // -------------------------------------------------------------------------
605*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::updateCharacterStream(sal_Int32 columnIndex, const Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
606*cdf0e10cSrcweir {
607*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRowUpdate >  xIface(m_xMainForm, UNO_QUERY);
608*cdf0e10cSrcweir 	if (xIface.is())
609*cdf0e10cSrcweir 		xIface->updateCharacterStream(columnIndex, x, length);
610*cdf0e10cSrcweir }
611*cdf0e10cSrcweir // -------------------------------------------------------------------------
612*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::updateObject(sal_Int32 columnIndex, const Any& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
613*cdf0e10cSrcweir {
614*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRowUpdate >  xIface(m_xMainForm, UNO_QUERY);
615*cdf0e10cSrcweir 	if (xIface.is())
616*cdf0e10cSrcweir 		xIface->updateObject(columnIndex, x);
617*cdf0e10cSrcweir }
618*cdf0e10cSrcweir // -------------------------------------------------------------------------
619*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::updateNumericObject(sal_Int32 columnIndex, const Any& x, sal_Int32 scale) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
620*cdf0e10cSrcweir {
621*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XRowUpdate >  xIface(m_xMainForm, UNO_QUERY);
622*cdf0e10cSrcweir 	if (xIface.is())
623*cdf0e10cSrcweir 		xIface->updateNumericObject(columnIndex, x, scale);
624*cdf0e10cSrcweir }
625*cdf0e10cSrcweir 
626*cdf0e10cSrcweir // ::com::sun::star::sdbc::XResultSet
627*cdf0e10cSrcweir // -------------------------------------------------------------------------
628*cdf0e10cSrcweir sal_Bool SAL_CALL SbaXFormAdapter::next() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
629*cdf0e10cSrcweir {
630*cdf0e10cSrcweir 	if (m_xMainForm.is())
631*cdf0e10cSrcweir 		return m_xMainForm->next();
632*cdf0e10cSrcweir 	return sal_False;
633*cdf0e10cSrcweir }
634*cdf0e10cSrcweir // -------------------------------------------------------------------------
635*cdf0e10cSrcweir sal_Bool SAL_CALL SbaXFormAdapter::isBeforeFirst() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
636*cdf0e10cSrcweir {
637*cdf0e10cSrcweir 	if (m_xMainForm.is())
638*cdf0e10cSrcweir 		return m_xMainForm->isBeforeFirst();
639*cdf0e10cSrcweir 	return sal_False;
640*cdf0e10cSrcweir }
641*cdf0e10cSrcweir // -------------------------------------------------------------------------
642*cdf0e10cSrcweir sal_Bool SAL_CALL SbaXFormAdapter::isAfterLast() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
643*cdf0e10cSrcweir {
644*cdf0e10cSrcweir 	if (m_xMainForm.is())
645*cdf0e10cSrcweir 		return m_xMainForm->isAfterLast();
646*cdf0e10cSrcweir 	return sal_False;
647*cdf0e10cSrcweir }
648*cdf0e10cSrcweir // -------------------------------------------------------------------------
649*cdf0e10cSrcweir sal_Bool SAL_CALL SbaXFormAdapter::isFirst() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
650*cdf0e10cSrcweir {
651*cdf0e10cSrcweir 	if (m_xMainForm.is())
652*cdf0e10cSrcweir 		return m_xMainForm->isFirst();
653*cdf0e10cSrcweir 	return sal_False;
654*cdf0e10cSrcweir }
655*cdf0e10cSrcweir // -------------------------------------------------------------------------
656*cdf0e10cSrcweir sal_Bool SAL_CALL SbaXFormAdapter::isLast() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
657*cdf0e10cSrcweir {
658*cdf0e10cSrcweir 	if (m_xMainForm.is())
659*cdf0e10cSrcweir 		return m_xMainForm->isLast();
660*cdf0e10cSrcweir 	return sal_False;
661*cdf0e10cSrcweir }
662*cdf0e10cSrcweir // -------------------------------------------------------------------------
663*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::beforeFirst() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
664*cdf0e10cSrcweir {
665*cdf0e10cSrcweir 	if (m_xMainForm.is())
666*cdf0e10cSrcweir 		m_xMainForm->beforeFirst();
667*cdf0e10cSrcweir }
668*cdf0e10cSrcweir // -------------------------------------------------------------------------
669*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::afterLast() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
670*cdf0e10cSrcweir {
671*cdf0e10cSrcweir 	if (m_xMainForm.is())
672*cdf0e10cSrcweir 		m_xMainForm->afterLast();
673*cdf0e10cSrcweir }
674*cdf0e10cSrcweir // -------------------------------------------------------------------------
675*cdf0e10cSrcweir sal_Bool SAL_CALL SbaXFormAdapter::first() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
676*cdf0e10cSrcweir {
677*cdf0e10cSrcweir 	if (m_xMainForm.is())
678*cdf0e10cSrcweir 		return m_xMainForm->first();
679*cdf0e10cSrcweir 	return sal_False;
680*cdf0e10cSrcweir }
681*cdf0e10cSrcweir // -------------------------------------------------------------------------
682*cdf0e10cSrcweir sal_Bool SAL_CALL SbaXFormAdapter::last() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
683*cdf0e10cSrcweir {
684*cdf0e10cSrcweir 	if (m_xMainForm.is())
685*cdf0e10cSrcweir 		return m_xMainForm->last();
686*cdf0e10cSrcweir 	return sal_False;
687*cdf0e10cSrcweir }
688*cdf0e10cSrcweir // -------------------------------------------------------------------------
689*cdf0e10cSrcweir sal_Int32 SAL_CALL SbaXFormAdapter::getRow() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
690*cdf0e10cSrcweir {
691*cdf0e10cSrcweir 	if (m_xMainForm.is())
692*cdf0e10cSrcweir 		return m_xMainForm->getRow();
693*cdf0e10cSrcweir 	return sal_False;
694*cdf0e10cSrcweir }
695*cdf0e10cSrcweir // -------------------------------------------------------------------------
696*cdf0e10cSrcweir sal_Bool SAL_CALL SbaXFormAdapter::absolute(sal_Int32 row) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
697*cdf0e10cSrcweir {
698*cdf0e10cSrcweir 	if (m_xMainForm.is())
699*cdf0e10cSrcweir 		return m_xMainForm->absolute(row);
700*cdf0e10cSrcweir 	return sal_False;
701*cdf0e10cSrcweir }
702*cdf0e10cSrcweir // -------------------------------------------------------------------------
703*cdf0e10cSrcweir sal_Bool SAL_CALL SbaXFormAdapter::relative(sal_Int32 rows) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
704*cdf0e10cSrcweir {
705*cdf0e10cSrcweir 	if (m_xMainForm.is())
706*cdf0e10cSrcweir 		return m_xMainForm->relative(rows);
707*cdf0e10cSrcweir 	return sal_False;
708*cdf0e10cSrcweir }
709*cdf0e10cSrcweir // -------------------------------------------------------------------------
710*cdf0e10cSrcweir sal_Bool SAL_CALL SbaXFormAdapter::previous() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
711*cdf0e10cSrcweir {
712*cdf0e10cSrcweir 	if (m_xMainForm.is())
713*cdf0e10cSrcweir 		return m_xMainForm->previous();
714*cdf0e10cSrcweir 	return sal_False;
715*cdf0e10cSrcweir }
716*cdf0e10cSrcweir // -------------------------------------------------------------------------
717*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::refreshRow() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
718*cdf0e10cSrcweir {
719*cdf0e10cSrcweir 	if (m_xMainForm.is())
720*cdf0e10cSrcweir 		m_xMainForm->refreshRow();
721*cdf0e10cSrcweir }
722*cdf0e10cSrcweir 
723*cdf0e10cSrcweir // -------------------------------------------------------------------------
724*cdf0e10cSrcweir sal_Bool SAL_CALL SbaXFormAdapter::rowUpdated() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
725*cdf0e10cSrcweir {
726*cdf0e10cSrcweir 	if (m_xMainForm.is())
727*cdf0e10cSrcweir 		return m_xMainForm->rowUpdated();
728*cdf0e10cSrcweir 	return sal_False;
729*cdf0e10cSrcweir }
730*cdf0e10cSrcweir // -------------------------------------------------------------------------
731*cdf0e10cSrcweir sal_Bool SAL_CALL SbaXFormAdapter::rowInserted() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
732*cdf0e10cSrcweir {
733*cdf0e10cSrcweir 	if (m_xMainForm.is())
734*cdf0e10cSrcweir 		return m_xMainForm->rowInserted();
735*cdf0e10cSrcweir 	return sal_False;
736*cdf0e10cSrcweir }
737*cdf0e10cSrcweir // -------------------------------------------------------------------------
738*cdf0e10cSrcweir sal_Bool SAL_CALL SbaXFormAdapter::rowDeleted() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
739*cdf0e10cSrcweir {
740*cdf0e10cSrcweir 	if (m_xMainForm.is())
741*cdf0e10cSrcweir 		return m_xMainForm->rowDeleted();
742*cdf0e10cSrcweir 	return sal_False;
743*cdf0e10cSrcweir }
744*cdf0e10cSrcweir // -------------------------------------------------------------------------
745*cdf0e10cSrcweir Reference< XInterface > SAL_CALL SbaXFormAdapter::getStatement() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
746*cdf0e10cSrcweir {
747*cdf0e10cSrcweir 	if (m_xMainForm.is())
748*cdf0e10cSrcweir 		return m_xMainForm->getStatement();
749*cdf0e10cSrcweir 	return NULL;
750*cdf0e10cSrcweir }
751*cdf0e10cSrcweir 
752*cdf0e10cSrcweir // ::com::sun::star::sdbc::XResultSetUpdate
753*cdf0e10cSrcweir // -------------------------------------------------------------------------
754*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::insertRow() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
755*cdf0e10cSrcweir {
756*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XResultSetUpdate >  xIface(m_xMainForm, UNO_QUERY);
757*cdf0e10cSrcweir 	if (xIface.is())
758*cdf0e10cSrcweir 		xIface->insertRow();
759*cdf0e10cSrcweir }
760*cdf0e10cSrcweir // -------------------------------------------------------------------------
761*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::updateRow() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
762*cdf0e10cSrcweir {
763*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XResultSetUpdate >  xIface(m_xMainForm, UNO_QUERY);
764*cdf0e10cSrcweir 	if (xIface.is())
765*cdf0e10cSrcweir 		xIface->updateRow();
766*cdf0e10cSrcweir }
767*cdf0e10cSrcweir // -------------------------------------------------------------------------
768*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::deleteRow() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
769*cdf0e10cSrcweir {
770*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XResultSetUpdate >  xIface(m_xMainForm, UNO_QUERY);
771*cdf0e10cSrcweir 	if (xIface.is())
772*cdf0e10cSrcweir 		xIface->deleteRow();
773*cdf0e10cSrcweir }
774*cdf0e10cSrcweir // -------------------------------------------------------------------------
775*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::cancelRowUpdates() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
776*cdf0e10cSrcweir {
777*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XResultSetUpdate >  xIface(m_xMainForm, UNO_QUERY);
778*cdf0e10cSrcweir 	if (xIface.is())
779*cdf0e10cSrcweir 		xIface->cancelRowUpdates();
780*cdf0e10cSrcweir }
781*cdf0e10cSrcweir // -------------------------------------------------------------------------
782*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::moveToInsertRow() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
783*cdf0e10cSrcweir {
784*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XResultSetUpdate >  xIface(m_xMainForm, UNO_QUERY);
785*cdf0e10cSrcweir 	if (xIface.is())
786*cdf0e10cSrcweir 		xIface->moveToInsertRow();
787*cdf0e10cSrcweir }
788*cdf0e10cSrcweir // -------------------------------------------------------------------------
789*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::moveToCurrentRow() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
790*cdf0e10cSrcweir {
791*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XResultSetUpdate >  xIface(m_xMainForm, UNO_QUERY);
792*cdf0e10cSrcweir 	if (xIface.is())
793*cdf0e10cSrcweir 		xIface->moveToCurrentRow();
794*cdf0e10cSrcweir }
795*cdf0e10cSrcweir 
796*cdf0e10cSrcweir // ::com::sun::star::sdbc::XRowSet
797*cdf0e10cSrcweir // -------------------------------------------------------------------------
798*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::execute() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
799*cdf0e10cSrcweir {
800*cdf0e10cSrcweir 	if (m_xMainForm.is())
801*cdf0e10cSrcweir 		m_xMainForm->execute();
802*cdf0e10cSrcweir }
803*cdf0e10cSrcweir // -------------------------------------------------------------------------
804*cdf0e10cSrcweir IMPLEMENT_LISTENER_ADMINISTRATION(SbaXFormAdapter, sdbc, RowSetListener, m_aRowSetListeners, ::com::sun::star::sdbc::XRowSet, m_xMainForm)
805*cdf0e10cSrcweir 
806*cdf0e10cSrcweir // ::com::sun::star::sdbcx::XDeleteRows
807*cdf0e10cSrcweir // -------------------------------------------------------------------------
808*cdf0e10cSrcweir Sequence<sal_Int32> SAL_CALL SbaXFormAdapter::deleteRows(const Sequence< Any >& rows) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
809*cdf0e10cSrcweir {
810*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbcx::XDeleteRows >  xIface(m_xMainForm, UNO_QUERY);
811*cdf0e10cSrcweir 	if (xIface.is())
812*cdf0e10cSrcweir 		return xIface->deleteRows(rows);
813*cdf0e10cSrcweir 	return Sequence<sal_Int32>();
814*cdf0e10cSrcweir }
815*cdf0e10cSrcweir 
816*cdf0e10cSrcweir // ::com::sun::star::sdbc::XWarningsSupplier
817*cdf0e10cSrcweir // -------------------------------------------------------------------------
818*cdf0e10cSrcweir Any SAL_CALL SbaXFormAdapter::getWarnings() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
819*cdf0e10cSrcweir {
820*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XWarningsSupplier >  xIface(m_xMainForm, UNO_QUERY);
821*cdf0e10cSrcweir 	if (xIface.is())
822*cdf0e10cSrcweir 		return xIface->getWarnings();
823*cdf0e10cSrcweir 	return Any();
824*cdf0e10cSrcweir }
825*cdf0e10cSrcweir // -------------------------------------------------------------------------
826*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::clearWarnings() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
827*cdf0e10cSrcweir {
828*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XWarningsSupplier >  xIface(m_xMainForm, UNO_QUERY);
829*cdf0e10cSrcweir 	if (xIface.is())
830*cdf0e10cSrcweir 		xIface->clearWarnings();
831*cdf0e10cSrcweir }
832*cdf0e10cSrcweir 
833*cdf0e10cSrcweir // ::com::sun::star::sdb::XRowSetApproveBroadcaster
834*cdf0e10cSrcweir // -------------------------------------------------------------------------
835*cdf0e10cSrcweir IMPLEMENT_LISTENER_ADMINISTRATION(SbaXFormAdapter, sdb, RowSetApproveListener, m_aRowSetApproveListeners, ::com::sun::star::sdb::XRowSetApproveBroadcaster, m_xMainForm)
836*cdf0e10cSrcweir 
837*cdf0e10cSrcweir // com::sun::star::sdbc::XSQLErrorBroadcaster
838*cdf0e10cSrcweir // -------------------------------------------------------------------------
839*cdf0e10cSrcweir IMPLEMENT_LISTENER_ADMINISTRATION(SbaXFormAdapter, sdb, SQLErrorListener, m_aErrorListeners, ::com::sun::star::sdb::XSQLErrorBroadcaster, m_xMainForm)
840*cdf0e10cSrcweir 
841*cdf0e10cSrcweir // ::com::sun::star::sdb::XResultSetAccess
842*cdf0e10cSrcweir // -------------------------------------------------------------------------
843*cdf0e10cSrcweir Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL SbaXFormAdapter::createResultSet() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
844*cdf0e10cSrcweir {
845*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdb::XResultSetAccess >  xIface(m_xMainForm, UNO_QUERY);
846*cdf0e10cSrcweir 	if (xIface.is())
847*cdf0e10cSrcweir 		return xIface->createResultSet();
848*cdf0e10cSrcweir 	return Reference< ::com::sun::star::sdbc::XResultSet > ();
849*cdf0e10cSrcweir }
850*cdf0e10cSrcweir 
851*cdf0e10cSrcweir // com::sun::star::form::XLoadable
852*cdf0e10cSrcweir // -------------------------------------------------------------------------
853*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::load() throw( RuntimeException )
854*cdf0e10cSrcweir {
855*cdf0e10cSrcweir 	Reference< ::com::sun::star::form::XLoadable >  xIface(m_xMainForm, UNO_QUERY);
856*cdf0e10cSrcweir 	if (xIface.is())
857*cdf0e10cSrcweir 		xIface->load();
858*cdf0e10cSrcweir }
859*cdf0e10cSrcweir // -------------------------------------------------------------------------
860*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::unload() throw( RuntimeException )
861*cdf0e10cSrcweir {
862*cdf0e10cSrcweir 	Reference< ::com::sun::star::form::XLoadable >  xIface(m_xMainForm, UNO_QUERY);
863*cdf0e10cSrcweir 	if (xIface.is())
864*cdf0e10cSrcweir 		xIface->unload();
865*cdf0e10cSrcweir }
866*cdf0e10cSrcweir // -------------------------------------------------------------------------
867*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::reload() throw( RuntimeException )
868*cdf0e10cSrcweir {
869*cdf0e10cSrcweir 	Reference< ::com::sun::star::form::XLoadable >  xIface(m_xMainForm, UNO_QUERY);
870*cdf0e10cSrcweir 	if (xIface.is())
871*cdf0e10cSrcweir 		xIface->reload();
872*cdf0e10cSrcweir }
873*cdf0e10cSrcweir // -------------------------------------------------------------------------
874*cdf0e10cSrcweir sal_Bool SAL_CALL SbaXFormAdapter::isLoaded() throw( RuntimeException )
875*cdf0e10cSrcweir {
876*cdf0e10cSrcweir 	Reference< ::com::sun::star::form::XLoadable >  xIface(m_xMainForm, UNO_QUERY);
877*cdf0e10cSrcweir 	if (xIface.is())
878*cdf0e10cSrcweir 		return xIface->isLoaded();
879*cdf0e10cSrcweir 	return sal_False;
880*cdf0e10cSrcweir }
881*cdf0e10cSrcweir // -------------------------------------------------------------------------
882*cdf0e10cSrcweir IMPLEMENT_LISTENER_ADMINISTRATION(SbaXFormAdapter, form, LoadListener, m_aLoadListeners, ::com::sun::star::form::XLoadable, m_xMainForm)
883*cdf0e10cSrcweir 
884*cdf0e10cSrcweir // ::com::sun::star::sdbc::XParameters
885*cdf0e10cSrcweir // -------------------------------------------------------------------------
886*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setNull(sal_Int32 parameterIndex, sal_Int32 sqlType) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
887*cdf0e10cSrcweir {
888*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XParameters >  xIface(m_xMainForm, UNO_QUERY);
889*cdf0e10cSrcweir 	if (xIface.is())
890*cdf0e10cSrcweir 		xIface->setNull(parameterIndex, sqlType);
891*cdf0e10cSrcweir }
892*cdf0e10cSrcweir // -------------------------------------------------------------------------
893*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setObjectNull(sal_Int32 parameterIndex, sal_Int32 sqlType, const ::rtl::OUString& typeName) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
894*cdf0e10cSrcweir {
895*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XParameters >  xIface(m_xMainForm, UNO_QUERY);
896*cdf0e10cSrcweir 	if (xIface.is())
897*cdf0e10cSrcweir 		xIface->setObjectNull(parameterIndex, sqlType, typeName);
898*cdf0e10cSrcweir }
899*cdf0e10cSrcweir // -------------------------------------------------------------------------
900*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setBoolean(sal_Int32 parameterIndex, sal_Bool x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
901*cdf0e10cSrcweir {
902*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XParameters >  xIface(m_xMainForm, UNO_QUERY);
903*cdf0e10cSrcweir 	if (xIface.is())
904*cdf0e10cSrcweir 		xIface->setBoolean(parameterIndex, x);
905*cdf0e10cSrcweir }
906*cdf0e10cSrcweir // -------------------------------------------------------------------------
907*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setByte(sal_Int32 parameterIndex, sal_Int8 x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
908*cdf0e10cSrcweir {
909*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XParameters >  xIface(m_xMainForm, UNO_QUERY);
910*cdf0e10cSrcweir 	if (xIface.is())
911*cdf0e10cSrcweir 		xIface->setByte(parameterIndex, x);
912*cdf0e10cSrcweir }
913*cdf0e10cSrcweir // -------------------------------------------------------------------------
914*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setShort(sal_Int32 parameterIndex, sal_Int16 x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
915*cdf0e10cSrcweir {
916*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XParameters >  xIface(m_xMainForm, UNO_QUERY);
917*cdf0e10cSrcweir 	if (xIface.is())
918*cdf0e10cSrcweir 		xIface->setShort(parameterIndex, x);
919*cdf0e10cSrcweir }
920*cdf0e10cSrcweir // -------------------------------------------------------------------------
921*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setInt(sal_Int32 parameterIndex, sal_Int32 x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
922*cdf0e10cSrcweir {
923*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XParameters >  xIface(m_xMainForm, UNO_QUERY);
924*cdf0e10cSrcweir 	if (xIface.is())
925*cdf0e10cSrcweir 		xIface->setInt(parameterIndex, x);
926*cdf0e10cSrcweir }
927*cdf0e10cSrcweir // -------------------------------------------------------------------------
928*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setLong(sal_Int32 parameterIndex, sal_Int64 x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
929*cdf0e10cSrcweir {
930*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XParameters >  xIface(m_xMainForm, UNO_QUERY);
931*cdf0e10cSrcweir 	if (xIface.is())
932*cdf0e10cSrcweir 		xIface->setLong(parameterIndex, x);
933*cdf0e10cSrcweir }
934*cdf0e10cSrcweir // -------------------------------------------------------------------------
935*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setFloat(sal_Int32 parameterIndex, float x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
936*cdf0e10cSrcweir {
937*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XParameters >  xIface(m_xMainForm, UNO_QUERY);
938*cdf0e10cSrcweir 	if (xIface.is())
939*cdf0e10cSrcweir 		xIface->setFloat(parameterIndex, x);
940*cdf0e10cSrcweir }
941*cdf0e10cSrcweir // -------------------------------------------------------------------------
942*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setDouble(sal_Int32 parameterIndex, double x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
943*cdf0e10cSrcweir {
944*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XParameters >  xIface(m_xMainForm, UNO_QUERY);
945*cdf0e10cSrcweir 	if (xIface.is())
946*cdf0e10cSrcweir 		xIface->setDouble(parameterIndex, x);
947*cdf0e10cSrcweir }
948*cdf0e10cSrcweir // -------------------------------------------------------------------------
949*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setString(sal_Int32 parameterIndex, const ::rtl::OUString& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
950*cdf0e10cSrcweir {
951*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XParameters >  xIface(m_xMainForm, UNO_QUERY);
952*cdf0e10cSrcweir 	if (xIface.is())
953*cdf0e10cSrcweir 		xIface->setString(parameterIndex, x);
954*cdf0e10cSrcweir }
955*cdf0e10cSrcweir // -------------------------------------------------------------------------
956*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setBytes(sal_Int32 parameterIndex, const Sequence< sal_Int8 >& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
957*cdf0e10cSrcweir {
958*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XParameters >  xIface(m_xMainForm, UNO_QUERY);
959*cdf0e10cSrcweir 	if (xIface.is())
960*cdf0e10cSrcweir 		xIface->setBytes(parameterIndex, x);
961*cdf0e10cSrcweir }
962*cdf0e10cSrcweir // -------------------------------------------------------------------------
963*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setDate(sal_Int32 parameterIndex, const ::com::sun::star::util::Date& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
964*cdf0e10cSrcweir {
965*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XParameters >  xIface(m_xMainForm, UNO_QUERY);
966*cdf0e10cSrcweir 	if (xIface.is())
967*cdf0e10cSrcweir 		xIface->setDate(parameterIndex, x);
968*cdf0e10cSrcweir }
969*cdf0e10cSrcweir // -------------------------------------------------------------------------
970*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setTime(sal_Int32 parameterIndex, const ::com::sun::star::util::Time& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
971*cdf0e10cSrcweir {
972*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XParameters >  xIface(m_xMainForm, UNO_QUERY);
973*cdf0e10cSrcweir 	if (xIface.is())
974*cdf0e10cSrcweir 		xIface->setTime(parameterIndex, x);
975*cdf0e10cSrcweir }
976*cdf0e10cSrcweir // -------------------------------------------------------------------------
977*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setTimestamp(sal_Int32 parameterIndex, const ::com::sun::star::util::DateTime& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
978*cdf0e10cSrcweir {
979*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XParameters >  xIface(m_xMainForm, UNO_QUERY);
980*cdf0e10cSrcweir 	if (xIface.is())
981*cdf0e10cSrcweir 		xIface->setTimestamp(parameterIndex, x);
982*cdf0e10cSrcweir }
983*cdf0e10cSrcweir // -------------------------------------------------------------------------
984*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setBinaryStream(sal_Int32 parameterIndex, const Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
985*cdf0e10cSrcweir {
986*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XParameters >  xIface(m_xMainForm, UNO_QUERY);
987*cdf0e10cSrcweir 	if (xIface.is())
988*cdf0e10cSrcweir 		xIface->setBinaryStream(parameterIndex, x, length);
989*cdf0e10cSrcweir }
990*cdf0e10cSrcweir // -------------------------------------------------------------------------
991*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setCharacterStream(sal_Int32 parameterIndex, const Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
992*cdf0e10cSrcweir {
993*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XParameters >  xIface(m_xMainForm, UNO_QUERY);
994*cdf0e10cSrcweir 	if (xIface.is())
995*cdf0e10cSrcweir 		xIface->setCharacterStream(parameterIndex, x, length);
996*cdf0e10cSrcweir }
997*cdf0e10cSrcweir // -------------------------------------------------------------------------
998*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setObject(sal_Int32 parameterIndex, const Any& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
999*cdf0e10cSrcweir {
1000*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XParameters >  xIface(m_xMainForm, UNO_QUERY);
1001*cdf0e10cSrcweir 	if (xIface.is())
1002*cdf0e10cSrcweir 		xIface->setObject(parameterIndex, x);
1003*cdf0e10cSrcweir }
1004*cdf0e10cSrcweir // -------------------------------------------------------------------------
1005*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setObjectWithInfo(sal_Int32 parameterIndex, const Any& x, sal_Int32 targetSqlType, sal_Int32 scale) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
1006*cdf0e10cSrcweir {
1007*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XParameters >  xIface(m_xMainForm, UNO_QUERY);
1008*cdf0e10cSrcweir 	if (xIface.is())
1009*cdf0e10cSrcweir 		xIface->setObjectWithInfo(parameterIndex, x, targetSqlType, scale);
1010*cdf0e10cSrcweir }
1011*cdf0e10cSrcweir // -------------------------------------------------------------------------
1012*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setRef(sal_Int32 parameterIndex, const Reference< ::com::sun::star::sdbc::XRef >& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
1013*cdf0e10cSrcweir {
1014*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XParameters >  xIface(m_xMainForm, UNO_QUERY);
1015*cdf0e10cSrcweir 	if (xIface.is())
1016*cdf0e10cSrcweir 		xIface->setRef(parameterIndex, x);
1017*cdf0e10cSrcweir }
1018*cdf0e10cSrcweir // -------------------------------------------------------------------------
1019*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setBlob(sal_Int32 parameterIndex, const Reference< ::com::sun::star::sdbc::XBlob >& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
1020*cdf0e10cSrcweir {
1021*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XParameters >  xIface(m_xMainForm, UNO_QUERY);
1022*cdf0e10cSrcweir 	if (xIface.is())
1023*cdf0e10cSrcweir 		xIface->setBlob(parameterIndex, x);
1024*cdf0e10cSrcweir }
1025*cdf0e10cSrcweir // -------------------------------------------------------------------------
1026*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setClob(sal_Int32 parameterIndex, const Reference< ::com::sun::star::sdbc::XClob >& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
1027*cdf0e10cSrcweir {
1028*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XParameters >  xIface(m_xMainForm, UNO_QUERY);
1029*cdf0e10cSrcweir 	if (xIface.is())
1030*cdf0e10cSrcweir 		xIface->setClob(parameterIndex, x);
1031*cdf0e10cSrcweir }
1032*cdf0e10cSrcweir // -------------------------------------------------------------------------
1033*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setArray(sal_Int32 parameterIndex, const Reference< ::com::sun::star::sdbc::XArray >& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
1034*cdf0e10cSrcweir {
1035*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XParameters >  xIface(m_xMainForm, UNO_QUERY);
1036*cdf0e10cSrcweir 	if (xIface.is())
1037*cdf0e10cSrcweir 		xIface->setArray(parameterIndex, x);
1038*cdf0e10cSrcweir }
1039*cdf0e10cSrcweir // -------------------------------------------------------------------------
1040*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::clearParameters() throw( ::com::sun::star::sdbc::SQLException, RuntimeException )
1041*cdf0e10cSrcweir {
1042*cdf0e10cSrcweir 	Reference< ::com::sun::star::sdbc::XParameters >  xIface(m_xMainForm, UNO_QUERY);
1043*cdf0e10cSrcweir 	if (xIface.is())
1044*cdf0e10cSrcweir 		xIface->clearParameters();
1045*cdf0e10cSrcweir }
1046*cdf0e10cSrcweir 
1047*cdf0e10cSrcweir // ::com::sun::star::form::XDatabaseParameterBroadcaster
1048*cdf0e10cSrcweir // -------------------------------------------------------------------------
1049*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::addParameterListener(const Reference< ::com::sun::star::form::XDatabaseParameterListener >& aListener) throw( RuntimeException )
1050*cdf0e10cSrcweir {
1051*cdf0e10cSrcweir 	m_aParameterListeners.addInterface(aListener);
1052*cdf0e10cSrcweir 	if (m_aParameterListeners.getLength() == 1)
1053*cdf0e10cSrcweir 	{
1054*cdf0e10cSrcweir 		Reference< ::com::sun::star::form::XDatabaseParameterBroadcaster >  xBroadcaster(m_xMainForm, UNO_QUERY);
1055*cdf0e10cSrcweir 		if (xBroadcaster.is())
1056*cdf0e10cSrcweir 			xBroadcaster->addParameterListener(&m_aParameterListeners);
1057*cdf0e10cSrcweir 	}
1058*cdf0e10cSrcweir }
1059*cdf0e10cSrcweir 
1060*cdf0e10cSrcweir // -------------------------------------------------------------------------
1061*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::removeParameterListener(const Reference< ::com::sun::star::form::XDatabaseParameterListener >& aListener) throw( RuntimeException )
1062*cdf0e10cSrcweir {
1063*cdf0e10cSrcweir 	if (m_aParameterListeners.getLength() == 1)
1064*cdf0e10cSrcweir 	{
1065*cdf0e10cSrcweir 		Reference< ::com::sun::star::form::XDatabaseParameterBroadcaster >  xBroadcaster(m_xMainForm, UNO_QUERY);
1066*cdf0e10cSrcweir 		if (xBroadcaster.is())
1067*cdf0e10cSrcweir 			xBroadcaster->removeParameterListener(&m_aParameterListeners);
1068*cdf0e10cSrcweir 	}
1069*cdf0e10cSrcweir 	m_aParameterListeners.removeInterface(aListener);
1070*cdf0e10cSrcweir }
1071*cdf0e10cSrcweir 
1072*cdf0e10cSrcweir // ::com::sun::star::container::XChild
1073*cdf0e10cSrcweir // -------------------------------------------------------------------------
1074*cdf0e10cSrcweir Reference< XInterface > SAL_CALL SbaXFormAdapter::getParent() throw( RuntimeException )
1075*cdf0e10cSrcweir {
1076*cdf0e10cSrcweir 	return m_xParent;
1077*cdf0e10cSrcweir }
1078*cdf0e10cSrcweir 
1079*cdf0e10cSrcweir // -------------------------------------------------------------------------
1080*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setParent(const Reference< XInterface >& Parent) throw( ::com::sun::star::lang::NoSupportException, RuntimeException )
1081*cdf0e10cSrcweir {
1082*cdf0e10cSrcweir 	m_xParent = Parent;
1083*cdf0e10cSrcweir }
1084*cdf0e10cSrcweir 
1085*cdf0e10cSrcweir // ::com::sun::star::form::XSubmit
1086*cdf0e10cSrcweir // -------------------------------------------------------------------------
1087*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::submit(const Reference< ::com::sun::star::awt::XControl >& aControl, const ::com::sun::star::awt::MouseEvent& aMouseEvt) throw( RuntimeException )
1088*cdf0e10cSrcweir {
1089*cdf0e10cSrcweir 	Reference< ::com::sun::star::form::XSubmit >  xSubmit(m_xMainForm, UNO_QUERY);
1090*cdf0e10cSrcweir 	if (xSubmit.is())
1091*cdf0e10cSrcweir 		xSubmit->submit(aControl, aMouseEvt);
1092*cdf0e10cSrcweir }
1093*cdf0e10cSrcweir 
1094*cdf0e10cSrcweir IMPLEMENT_LISTENER_ADMINISTRATION(SbaXFormAdapter, form, SubmitListener, m_aSubmitListeners, ::com::sun::star::form::XSubmit, m_xMainForm)
1095*cdf0e10cSrcweir 
1096*cdf0e10cSrcweir // ::com::sun::star::awt::XTabControllerModel
1097*cdf0e10cSrcweir // -------------------------------------------------------------------------
1098*cdf0e10cSrcweir sal_Bool SAL_CALL SbaXFormAdapter::getGroupControl() throw( RuntimeException )
1099*cdf0e10cSrcweir {
1100*cdf0e10cSrcweir 	DBG_ERROR("SAL_CALL SbaXFormAdapter::getGroupControl : not supported !");
1101*cdf0e10cSrcweir 	return sal_False;
1102*cdf0e10cSrcweir }
1103*cdf0e10cSrcweir 
1104*cdf0e10cSrcweir // -------------------------------------------------------------------------
1105*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setGroupControl(sal_Bool /*GroupControl*/) throw( RuntimeException )
1106*cdf0e10cSrcweir {
1107*cdf0e10cSrcweir 	DBG_ERROR("SAL_CALL SbaXFormAdapter::setGroupControl : not supported !");
1108*cdf0e10cSrcweir }
1109*cdf0e10cSrcweir 
1110*cdf0e10cSrcweir // -------------------------------------------------------------------------
1111*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setControlModels(const Sequence< Reference< ::com::sun::star::awt::XControlModel >  >& /*Controls*/) throw( RuntimeException )
1112*cdf0e10cSrcweir {
1113*cdf0e10cSrcweir 	DBG_ERROR("SAL_CALL SbaXFormAdapter::setControlModels : not supported !");
1114*cdf0e10cSrcweir }
1115*cdf0e10cSrcweir 
1116*cdf0e10cSrcweir // -------------------------------------------------------------------------
1117*cdf0e10cSrcweir Sequence< Reference< ::com::sun::star::awt::XControlModel > > SAL_CALL SbaXFormAdapter::getControlModels() throw( RuntimeException )
1118*cdf0e10cSrcweir {
1119*cdf0e10cSrcweir 	DBG_ERROR("SAL_CALL SbaXFormAdapter::getControlModels : not supported !");
1120*cdf0e10cSrcweir 	return Sequence< Reference< ::com::sun::star::awt::XControlModel > >();
1121*cdf0e10cSrcweir }
1122*cdf0e10cSrcweir 
1123*cdf0e10cSrcweir // -------------------------------------------------------------------------
1124*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setGroup(const Sequence< Reference< ::com::sun::star::awt::XControlModel >  >& /*_rGroup*/, const ::rtl::OUString& /*GroupName*/) throw( RuntimeException )
1125*cdf0e10cSrcweir {
1126*cdf0e10cSrcweir 	DBG_ERROR("SAL_CALL SbaXFormAdapter::setGroup : not supported !");
1127*cdf0e10cSrcweir }
1128*cdf0e10cSrcweir 
1129*cdf0e10cSrcweir // -------------------------------------------------------------------------
1130*cdf0e10cSrcweir sal_Int32 SAL_CALL SbaXFormAdapter::getGroupCount() throw( RuntimeException )
1131*cdf0e10cSrcweir {
1132*cdf0e10cSrcweir 	DBG_ERROR("SAL_CALL SbaXFormAdapter::getGroupCount : not supported !");
1133*cdf0e10cSrcweir 	return 0;
1134*cdf0e10cSrcweir }
1135*cdf0e10cSrcweir 
1136*cdf0e10cSrcweir // -------------------------------------------------------------------------
1137*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::getGroup(sal_Int32 /*nGroup*/, Sequence< Reference< ::com::sun::star::awt::XControlModel >  >& /*_rGroup*/, ::rtl::OUString& /*Name*/) throw( RuntimeException )
1138*cdf0e10cSrcweir {
1139*cdf0e10cSrcweir 	DBG_ERROR("SAL_CALL SbaXFormAdapter::getGroup : not supported !");
1140*cdf0e10cSrcweir }
1141*cdf0e10cSrcweir 
1142*cdf0e10cSrcweir // -------------------------------------------------------------------------
1143*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::getGroupByName(const ::rtl::OUString& /*Name*/, Sequence< Reference< ::com::sun::star::awt::XControlModel >  >& /*_rGroup*/) throw( RuntimeException )
1144*cdf0e10cSrcweir {
1145*cdf0e10cSrcweir 	DBG_ERROR("SAL_CALL SbaXFormAdapter::getGroupByName : not supported !");
1146*cdf0e10cSrcweir }
1147*cdf0e10cSrcweir 
1148*cdf0e10cSrcweir // ::com::sun::star::lang::XComponent
1149*cdf0e10cSrcweir // -------------------------------------------------------------------------
1150*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::dispose() throw( RuntimeException )
1151*cdf0e10cSrcweir {
1152*cdf0e10cSrcweir 	// log off all multiplexers
1153*cdf0e10cSrcweir 	if (m_xMainForm.is())
1154*cdf0e10cSrcweir 		StopListening();
1155*cdf0e10cSrcweir 
1156*cdf0e10cSrcweir 	::com::sun::star::lang::EventObject aEvt(*this);
1157*cdf0e10cSrcweir 	m_aLoadListeners.disposeAndClear(aEvt);
1158*cdf0e10cSrcweir 	m_aRowSetListeners.disposeAndClear(aEvt);
1159*cdf0e10cSrcweir 	m_aRowSetApproveListeners.disposeAndClear(aEvt);
1160*cdf0e10cSrcweir 	m_aErrorListeners.disposeAndClear(aEvt);
1161*cdf0e10cSrcweir 	m_aParameterListeners.disposeAndClear(aEvt);
1162*cdf0e10cSrcweir 	m_aSubmitListeners.disposeAndClear(aEvt);
1163*cdf0e10cSrcweir 	m_aResetListeners.disposeAndClear(aEvt);
1164*cdf0e10cSrcweir 
1165*cdf0e10cSrcweir 	m_aVetoablePropertyChangeListeners.disposeAndClear();
1166*cdf0e10cSrcweir 	m_aPropertyChangeListeners.disposeAndClear();
1167*cdf0e10cSrcweir 	m_aPropertiesChangeListeners.disposeAndClear(aEvt);
1168*cdf0e10cSrcweir 
1169*cdf0e10cSrcweir 	m_aDisposeListeners.disposeAndClear(aEvt);
1170*cdf0e10cSrcweir 	m_aContainerListeners.disposeAndClear(aEvt);
1171*cdf0e10cSrcweir 
1172*cdf0e10cSrcweir 	// dispose all childs
1173*cdf0e10cSrcweir 	for (	::std::vector< Reference< ::com::sun::star::form::XFormComponent > >::iterator aIter = m_aChildren.begin();
1174*cdf0e10cSrcweir 			aIter != m_aChildren.end();
1175*cdf0e10cSrcweir 			++aIter
1176*cdf0e10cSrcweir 		)
1177*cdf0e10cSrcweir 	{
1178*cdf0e10cSrcweir 		Reference< ::com::sun::star::beans::XPropertySet >  xSet(*aIter, UNO_QUERY);
1179*cdf0e10cSrcweir 		if (xSet.is())
1180*cdf0e10cSrcweir 			xSet->removePropertyChangeListener(PROPERTY_NAME, (::com::sun::star::beans::XPropertyChangeListener*)this);
1181*cdf0e10cSrcweir 
1182*cdf0e10cSrcweir 		Reference< ::com::sun::star::container::XChild >  xChild(*aIter, UNO_QUERY);
1183*cdf0e10cSrcweir 		if (xChild.is())
1184*cdf0e10cSrcweir 			xChild->setParent(Reference< XInterface > ());
1185*cdf0e10cSrcweir 
1186*cdf0e10cSrcweir 		Reference< ::com::sun::star::lang::XComponent >  xComp(*aIter, UNO_QUERY);
1187*cdf0e10cSrcweir 		if (xComp.is())
1188*cdf0e10cSrcweir 			xComp->dispose();
1189*cdf0e10cSrcweir 	}
1190*cdf0e10cSrcweir 	m_aChildren.clear();
1191*cdf0e10cSrcweir }
1192*cdf0e10cSrcweir 
1193*cdf0e10cSrcweir // -------------------------------------------------------------------------
1194*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::addEventListener(const Reference< ::com::sun::star::lang::XEventListener >& xListener) throw( RuntimeException )
1195*cdf0e10cSrcweir {
1196*cdf0e10cSrcweir 	m_aDisposeListeners.addInterface(xListener);
1197*cdf0e10cSrcweir }
1198*cdf0e10cSrcweir 
1199*cdf0e10cSrcweir // -------------------------------------------------------------------------
1200*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::removeEventListener(const Reference< ::com::sun::star::lang::XEventListener >& aListener) throw( RuntimeException )
1201*cdf0e10cSrcweir {
1202*cdf0e10cSrcweir 	m_aDisposeListeners.removeInterface(aListener);
1203*cdf0e10cSrcweir }
1204*cdf0e10cSrcweir 
1205*cdf0e10cSrcweir // ::com::sun::star::beans::XFastPropertySet
1206*cdf0e10cSrcweir // -------------------------------------------------------------------------
1207*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setFastPropertyValue(sal_Int32 nHandle, const Any& aValue) throw( ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, RuntimeException )
1208*cdf0e10cSrcweir {
1209*cdf0e10cSrcweir 	Reference< ::com::sun::star::beans::XFastPropertySet >  xSet(m_xMainForm, UNO_QUERY);
1210*cdf0e10cSrcweir 	DBG_ASSERT(xSet.is(), "SAL_CALL SbaXFormAdapter::setFastPropertyValue : have no master form !");
1211*cdf0e10cSrcweir 
1212*cdf0e10cSrcweir 	if (m_nNamePropHandle == nHandle)
1213*cdf0e10cSrcweir 	{
1214*cdf0e10cSrcweir 		if (aValue.getValueType().getTypeClass() != TypeClass_STRING)
1215*cdf0e10cSrcweir 		{
1216*cdf0e10cSrcweir 			throw ::com::sun::star::lang::IllegalArgumentException();
1217*cdf0e10cSrcweir 		}
1218*cdf0e10cSrcweir 
1219*cdf0e10cSrcweir 		// for notifying property listeners
1220*cdf0e10cSrcweir 		::com::sun::star::beans::PropertyChangeEvent aEvt;
1221*cdf0e10cSrcweir 		aEvt.Source = *this;
1222*cdf0e10cSrcweir 		aEvt.PropertyName = PROPERTY_NAME;
1223*cdf0e10cSrcweir 		aEvt.PropertyHandle = m_nNamePropHandle;
1224*cdf0e10cSrcweir 		aEvt.OldValue <<= m_sName;
1225*cdf0e10cSrcweir 		aEvt.NewValue = aValue;
1226*cdf0e10cSrcweir 
1227*cdf0e10cSrcweir 		aValue >>= m_sName;
1228*cdf0e10cSrcweir 
1229*cdf0e10cSrcweir 		::cppu::OInterfaceIteratorHelper aIt(*m_aPropertyChangeListeners.getContainer(PROPERTY_NAME));
1230*cdf0e10cSrcweir 		while (aIt.hasMoreElements())
1231*cdf0e10cSrcweir 			((::com::sun::star::beans::XPropertyChangeListener*)aIt.next())->propertyChange(aEvt);
1232*cdf0e10cSrcweir 
1233*cdf0e10cSrcweir 		return;
1234*cdf0e10cSrcweir 	}
1235*cdf0e10cSrcweir 
1236*cdf0e10cSrcweir 	xSet->setFastPropertyValue(nHandle, aValue);
1237*cdf0e10cSrcweir }
1238*cdf0e10cSrcweir 
1239*cdf0e10cSrcweir // -------------------------------------------------------------------------
1240*cdf0e10cSrcweir Any SAL_CALL SbaXFormAdapter::getFastPropertyValue(sal_Int32 nHandle) throw( ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, RuntimeException )
1241*cdf0e10cSrcweir {
1242*cdf0e10cSrcweir 	Reference< ::com::sun::star::beans::XFastPropertySet >  xSet(m_xMainForm, UNO_QUERY);
1243*cdf0e10cSrcweir 	DBG_ASSERT(xSet.is(), "SAL_CALL SbaXFormAdapter::getFastPropertyValue : have no master form !");
1244*cdf0e10cSrcweir 
1245*cdf0e10cSrcweir 	if (m_nNamePropHandle == nHandle)
1246*cdf0e10cSrcweir 		return makeAny(m_sName);
1247*cdf0e10cSrcweir 
1248*cdf0e10cSrcweir 	return xSet->getFastPropertyValue(nHandle);
1249*cdf0e10cSrcweir }
1250*cdf0e10cSrcweir 
1251*cdf0e10cSrcweir // ::com::sun::star::container::XNamed
1252*cdf0e10cSrcweir // -------------------------------------------------------------------------
1253*cdf0e10cSrcweir ::rtl::OUString SAL_CALL SbaXFormAdapter::getName() throw( RuntimeException )
1254*cdf0e10cSrcweir {
1255*cdf0e10cSrcweir 	return ::comphelper::getString(getPropertyValue(PROPERTY_NAME));
1256*cdf0e10cSrcweir }
1257*cdf0e10cSrcweir 
1258*cdf0e10cSrcweir // -------------------------------------------------------------------------
1259*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setName(const ::rtl::OUString& aName) throw( RuntimeException )
1260*cdf0e10cSrcweir {
1261*cdf0e10cSrcweir 	setPropertyValue(PROPERTY_NAME, makeAny(aName));
1262*cdf0e10cSrcweir }
1263*cdf0e10cSrcweir 
1264*cdf0e10cSrcweir // ::com::sun::star::io::XPersistObject
1265*cdf0e10cSrcweir // -------------------------------------------------------------------------
1266*cdf0e10cSrcweir ::rtl::OUString SAL_CALL SbaXFormAdapter::getServiceName() throw( RuntimeException )
1267*cdf0e10cSrcweir {
1268*cdf0e10cSrcweir 	Reference< ::com::sun::star::io::XPersistObject >  xPersist(m_xMainForm, UNO_QUERY);
1269*cdf0e10cSrcweir 	if (xPersist.is())
1270*cdf0e10cSrcweir 		return xPersist->getServiceName();
1271*cdf0e10cSrcweir 	return ::rtl::OUString();
1272*cdf0e10cSrcweir }
1273*cdf0e10cSrcweir 
1274*cdf0e10cSrcweir // -------------------------------------------------------------------------
1275*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::write(const Reference< ::com::sun::star::io::XObjectOutputStream >& _rxOutStream) throw( ::com::sun::star::io::IOException, RuntimeException )
1276*cdf0e10cSrcweir {
1277*cdf0e10cSrcweir 	Reference< ::com::sun::star::io::XPersistObject >  xPersist(m_xMainForm, UNO_QUERY);
1278*cdf0e10cSrcweir 	if (xPersist.is())
1279*cdf0e10cSrcweir 		xPersist->write(_rxOutStream);
1280*cdf0e10cSrcweir }
1281*cdf0e10cSrcweir 
1282*cdf0e10cSrcweir // -------------------------------------------------------------------------
1283*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::read(const Reference< ::com::sun::star::io::XObjectInputStream >& _rxInStream) throw( ::com::sun::star::io::IOException, RuntimeException )
1284*cdf0e10cSrcweir {
1285*cdf0e10cSrcweir 	Reference< ::com::sun::star::io::XPersistObject >  xPersist(m_xMainForm, UNO_QUERY);
1286*cdf0e10cSrcweir 	if (xPersist.is())
1287*cdf0e10cSrcweir 		xPersist->read(_rxInStream);
1288*cdf0e10cSrcweir }
1289*cdf0e10cSrcweir 
1290*cdf0e10cSrcweir // ::com::sun::star::beans::XMultiPropertySet
1291*cdf0e10cSrcweir // -------------------------------------------------------------------------
1292*cdf0e10cSrcweir Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL SbaXFormAdapter::getPropertySetInfo() throw( RuntimeException )
1293*cdf0e10cSrcweir {
1294*cdf0e10cSrcweir 	Reference< ::com::sun::star::beans::XMultiPropertySet >  xSet(m_xMainForm, UNO_QUERY);
1295*cdf0e10cSrcweir 	if (!xSet.is())
1296*cdf0e10cSrcweir 		return Reference< ::com::sun::star::beans::XPropertySetInfo > ();
1297*cdf0e10cSrcweir 
1298*cdf0e10cSrcweir 	Reference< ::com::sun::star::beans::XPropertySetInfo >  xReturn = xSet->getPropertySetInfo();
1299*cdf0e10cSrcweir 	if (-1 == m_nNamePropHandle)
1300*cdf0e10cSrcweir 	{
1301*cdf0e10cSrcweir 		// we need to determine the handle for the NAME property
1302*cdf0e10cSrcweir  Sequence< ::com::sun::star::beans::Property> aProps = xReturn->getProperties();
1303*cdf0e10cSrcweir 		const ::com::sun::star::beans::Property* pProps = aProps.getConstArray();
1304*cdf0e10cSrcweir 
1305*cdf0e10cSrcweir 		for (sal_Int32 i=0; i<aProps.getLength(); ++i, ++pProps)
1306*cdf0e10cSrcweir 		{
1307*cdf0e10cSrcweir 			if (pProps->Name.equals(PROPERTY_NAME))
1308*cdf0e10cSrcweir 			{
1309*cdf0e10cSrcweir 				((SbaXFormAdapter*)this)->m_nNamePropHandle = pProps->Handle;
1310*cdf0e10cSrcweir 				break;
1311*cdf0e10cSrcweir 			}
1312*cdf0e10cSrcweir 		}
1313*cdf0e10cSrcweir 	}
1314*cdf0e10cSrcweir 	return xReturn;
1315*cdf0e10cSrcweir }
1316*cdf0e10cSrcweir 
1317*cdf0e10cSrcweir // -------------------------------------------------------------------------
1318*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setPropertyValues(const Sequence< ::rtl::OUString >& PropertyNames, const Sequence< Any >& Values) throw( ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, RuntimeException )
1319*cdf0e10cSrcweir {
1320*cdf0e10cSrcweir 	Reference< ::com::sun::star::beans::XMultiPropertySet >  xSet(m_xMainForm, UNO_QUERY);
1321*cdf0e10cSrcweir 	if (xSet.is())
1322*cdf0e10cSrcweir 		xSet->setPropertyValues(PropertyNames, Values);
1323*cdf0e10cSrcweir }
1324*cdf0e10cSrcweir 
1325*cdf0e10cSrcweir // -------------------------------------------------------------------------
1326*cdf0e10cSrcweir Sequence< Any > SAL_CALL SbaXFormAdapter::getPropertyValues(const Sequence< ::rtl::OUString >& aPropertyNames) throw( RuntimeException )
1327*cdf0e10cSrcweir {
1328*cdf0e10cSrcweir 	Reference< ::com::sun::star::beans::XMultiPropertySet >  xSet(m_xMainForm, UNO_QUERY);
1329*cdf0e10cSrcweir 	if (!xSet.is())
1330*cdf0e10cSrcweir 		return Sequence< Any>(aPropertyNames.getLength());
1331*cdf0e10cSrcweir 
1332*cdf0e10cSrcweir  Sequence< Any> aReturn = xSet->getPropertyValues(aPropertyNames);
1333*cdf0e10cSrcweir 
1334*cdf0e10cSrcweir 	// search for (and fake) the NAME property
1335*cdf0e10cSrcweir 	const ::rtl::OUString* pNames = aPropertyNames.getConstArray();
1336*cdf0e10cSrcweir 	Any* pValues = aReturn.getArray();
1337*cdf0e10cSrcweir 	DBG_ASSERT(aReturn.getLength() == aPropertyNames.getLength(), "SAL_CALL SbaXFormAdapter::getPropertyValues : the main form returned an invalid-length sequence !");
1338*cdf0e10cSrcweir 	for (sal_Int32 i=0; i<aPropertyNames.getLength(); ++i, ++pNames, ++pValues)
1339*cdf0e10cSrcweir 		if (pNames->equals(PROPERTY_NAME))
1340*cdf0e10cSrcweir 		{
1341*cdf0e10cSrcweir 			(*pValues) <<= m_sName;
1342*cdf0e10cSrcweir 			break;
1343*cdf0e10cSrcweir 		}
1344*cdf0e10cSrcweir 
1345*cdf0e10cSrcweir 	return aReturn;
1346*cdf0e10cSrcweir }
1347*cdf0e10cSrcweir 
1348*cdf0e10cSrcweir // -------------------------------------------------------------------------
1349*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::addPropertiesChangeListener(const Sequence< ::rtl::OUString>& /*aPropertyNames*/, const Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener) throw( RuntimeException )
1350*cdf0e10cSrcweir {
1351*cdf0e10cSrcweir 	// we completely ignore the property names, _all_ changes of _all_ properties will be forwarded to _all_ listeners
1352*cdf0e10cSrcweir 	m_aPropertiesChangeListeners.addInterface(xListener);
1353*cdf0e10cSrcweir 	if (m_aPropertiesChangeListeners.getLength() == 1)
1354*cdf0e10cSrcweir 	{
1355*cdf0e10cSrcweir 		Reference< ::com::sun::star::beans::XMultiPropertySet >  xBroadcaster(m_xMainForm, UNO_QUERY);
1356*cdf0e10cSrcweir 		::rtl::OUString sEmpty;
1357*cdf0e10cSrcweir 		if (xBroadcaster.is())
1358*cdf0e10cSrcweir 			xBroadcaster->addPropertiesChangeListener(Sequence< ::rtl::OUString>(&sEmpty, 1), &m_aPropertiesChangeListeners);
1359*cdf0e10cSrcweir 	}
1360*cdf0e10cSrcweir }
1361*cdf0e10cSrcweir 
1362*cdf0e10cSrcweir // -------------------------------------------------------------------------
1363*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::removePropertiesChangeListener(const Reference< ::com::sun::star::beans::XPropertiesChangeListener >& Listener) throw( RuntimeException )
1364*cdf0e10cSrcweir {
1365*cdf0e10cSrcweir 	if (m_aPropertiesChangeListeners.getLength() == 1)
1366*cdf0e10cSrcweir 	{
1367*cdf0e10cSrcweir 		Reference< ::com::sun::star::beans::XMultiPropertySet >  xBroadcaster(m_xMainForm, UNO_QUERY);
1368*cdf0e10cSrcweir 		if (xBroadcaster.is())
1369*cdf0e10cSrcweir 			xBroadcaster->removePropertiesChangeListener(&m_aPropertiesChangeListeners);
1370*cdf0e10cSrcweir 	}
1371*cdf0e10cSrcweir 	m_aPropertiesChangeListeners.removeInterface(Listener);
1372*cdf0e10cSrcweir }
1373*cdf0e10cSrcweir 
1374*cdf0e10cSrcweir // -------------------------------------------------------------------------
1375*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::firePropertiesChangeEvent(const Sequence< ::rtl::OUString >& aPropertyNames, const Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener) throw( RuntimeException )
1376*cdf0e10cSrcweir {
1377*cdf0e10cSrcweir 	Reference< ::com::sun::star::beans::XMultiPropertySet >  xSet(m_xMainForm, UNO_QUERY);
1378*cdf0e10cSrcweir 	if (xSet.is())
1379*cdf0e10cSrcweir 		xSet->firePropertiesChangeEvent(aPropertyNames, xListener);
1380*cdf0e10cSrcweir }
1381*cdf0e10cSrcweir 
1382*cdf0e10cSrcweir 
1383*cdf0e10cSrcweir // ::com::sun::star::beans::XPropertySet
1384*cdf0e10cSrcweir // -------------------------------------------------------------------------
1385*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setPropertyValue(const ::rtl::OUString& aPropertyName, const Any& aValue) throw( ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, RuntimeException )
1386*cdf0e10cSrcweir {
1387*cdf0e10cSrcweir 	Reference< ::com::sun::star::beans::XPropertySet >  xSet(m_xMainForm, UNO_QUERY);
1388*cdf0e10cSrcweir 	if (!xSet.is())
1389*cdf0e10cSrcweir 		return;
1390*cdf0e10cSrcweir 
1391*cdf0e10cSrcweir 	// special handling for the "name" property
1392*cdf0e10cSrcweir 	if (aPropertyName.equals(PROPERTY_NAME))
1393*cdf0e10cSrcweir 		setFastPropertyValue(m_nNamePropHandle, aValue);
1394*cdf0e10cSrcweir 
1395*cdf0e10cSrcweir 	xSet->setPropertyValue(aPropertyName, aValue);
1396*cdf0e10cSrcweir }
1397*cdf0e10cSrcweir 
1398*cdf0e10cSrcweir // -------------------------------------------------------------------------
1399*cdf0e10cSrcweir Any SAL_CALL SbaXFormAdapter::getPropertyValue(const ::rtl::OUString& PropertyName) throw( ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, RuntimeException )
1400*cdf0e10cSrcweir {
1401*cdf0e10cSrcweir 	Reference< ::com::sun::star::beans::XPropertySet >  xSet(m_xMainForm, UNO_QUERY);
1402*cdf0e10cSrcweir 	if (!xSet.is())
1403*cdf0e10cSrcweir 		return Any();
1404*cdf0e10cSrcweir 
1405*cdf0e10cSrcweir 	// special handling for the "name" property
1406*cdf0e10cSrcweir 	if (PropertyName.equals(PROPERTY_NAME))
1407*cdf0e10cSrcweir 		return getFastPropertyValue(m_nNamePropHandle);
1408*cdf0e10cSrcweir 
1409*cdf0e10cSrcweir 	return xSet->getPropertyValue(PropertyName);
1410*cdf0e10cSrcweir }
1411*cdf0e10cSrcweir 
1412*cdf0e10cSrcweir IMPLEMENT_PROPERTY_LISTENER_ADMINISTRATION(SbaXFormAdapter, PropertyChangeListener, m_aPropertyChangeListeners, ::com::sun::star::beans::XPropertySet, m_xMainForm);
1413*cdf0e10cSrcweir IMPLEMENT_PROPERTY_LISTENER_ADMINISTRATION(SbaXFormAdapter, VetoableChangeListener, m_aVetoablePropertyChangeListeners, ::com::sun::star::beans::XPropertySet, m_xMainForm);
1414*cdf0e10cSrcweir 
1415*cdf0e10cSrcweir // ::com::sun::star::util::XCancellable
1416*cdf0e10cSrcweir // -------------------------------------------------------------------------
1417*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::cancel() throw( RuntimeException )
1418*cdf0e10cSrcweir {
1419*cdf0e10cSrcweir 	Reference< ::com::sun::star::util::XCancellable >  xCancel(m_xMainForm, UNO_QUERY);
1420*cdf0e10cSrcweir 	if (xCancel.is())
1421*cdf0e10cSrcweir 		return;
1422*cdf0e10cSrcweir 	xCancel->cancel();
1423*cdf0e10cSrcweir }
1424*cdf0e10cSrcweir 
1425*cdf0e10cSrcweir // ::com::sun::star::beans::XPropertyState
1426*cdf0e10cSrcweir // -------------------------------------------------------------------------
1427*cdf0e10cSrcweir ::com::sun::star::beans::PropertyState SAL_CALL SbaXFormAdapter::getPropertyState(const ::rtl::OUString& PropertyName) throw( ::com::sun::star::beans::UnknownPropertyException, RuntimeException )
1428*cdf0e10cSrcweir {
1429*cdf0e10cSrcweir 	Reference< ::com::sun::star::beans::XPropertyState >  xState(m_xMainForm, UNO_QUERY);
1430*cdf0e10cSrcweir 	if (xState.is())
1431*cdf0e10cSrcweir 		return xState->getPropertyState(PropertyName);
1432*cdf0e10cSrcweir 	return ::com::sun::star::beans::PropertyState_DEFAULT_VALUE;
1433*cdf0e10cSrcweir }
1434*cdf0e10cSrcweir 
1435*cdf0e10cSrcweir // -------------------------------------------------------------------------
1436*cdf0e10cSrcweir Sequence< ::com::sun::star::beans::PropertyState> SAL_CALL SbaXFormAdapter::getPropertyStates(const Sequence< ::rtl::OUString >& aPropertyName) throw( ::com::sun::star::beans::UnknownPropertyException, RuntimeException )
1437*cdf0e10cSrcweir {
1438*cdf0e10cSrcweir 	Reference< ::com::sun::star::beans::XPropertyState >  xState(m_xMainForm, UNO_QUERY);
1439*cdf0e10cSrcweir 	if (xState.is())
1440*cdf0e10cSrcweir 		return xState->getPropertyStates(aPropertyName);
1441*cdf0e10cSrcweir 
1442*cdf0e10cSrcweir 	// set them all to DEFAULT
1443*cdf0e10cSrcweir 	 Sequence< ::com::sun::star::beans::PropertyState> aReturn(aPropertyName.getLength());
1444*cdf0e10cSrcweir 	::com::sun::star::beans::PropertyState* pStates = aReturn.getArray();
1445*cdf0e10cSrcweir 	for (sal_uInt16 i=0; i<aPropertyName.getLength(); ++i, ++pStates)
1446*cdf0e10cSrcweir 		*pStates = ::com::sun::star::beans::PropertyState_DEFAULT_VALUE;
1447*cdf0e10cSrcweir 	return aReturn;
1448*cdf0e10cSrcweir }
1449*cdf0e10cSrcweir 
1450*cdf0e10cSrcweir // -------------------------------------------------------------------------
1451*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::setPropertyToDefault(const ::rtl::OUString& PropertyName) throw( ::com::sun::star::beans::UnknownPropertyException, RuntimeException )
1452*cdf0e10cSrcweir {
1453*cdf0e10cSrcweir 	Reference< ::com::sun::star::beans::XPropertyState >  xState(m_xMainForm, UNO_QUERY);
1454*cdf0e10cSrcweir 	if (xState.is())
1455*cdf0e10cSrcweir 		xState->setPropertyToDefault(PropertyName);
1456*cdf0e10cSrcweir }
1457*cdf0e10cSrcweir 
1458*cdf0e10cSrcweir // -------------------------------------------------------------------------
1459*cdf0e10cSrcweir Any SAL_CALL SbaXFormAdapter::getPropertyDefault(const ::rtl::OUString& aPropertyName) throw( ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, RuntimeException )
1460*cdf0e10cSrcweir {
1461*cdf0e10cSrcweir 	Reference< ::com::sun::star::beans::XPropertyState >  xState(m_xMainForm, UNO_QUERY);
1462*cdf0e10cSrcweir 	if (xState.is())
1463*cdf0e10cSrcweir 		return xState->getPropertyDefault(aPropertyName);
1464*cdf0e10cSrcweir 	return Any();
1465*cdf0e10cSrcweir }
1466*cdf0e10cSrcweir 
1467*cdf0e10cSrcweir // ::com::sun::star::form::XReset
1468*cdf0e10cSrcweir // -------------------------------------------------------------------------
1469*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::reset() throw( RuntimeException )
1470*cdf0e10cSrcweir {
1471*cdf0e10cSrcweir 	Reference< ::com::sun::star::form::XReset >  xReset(m_xMainForm, UNO_QUERY);
1472*cdf0e10cSrcweir 	if (xReset.is())
1473*cdf0e10cSrcweir 		xReset->reset();
1474*cdf0e10cSrcweir }
1475*cdf0e10cSrcweir 
1476*cdf0e10cSrcweir IMPLEMENT_LISTENER_ADMINISTRATION(SbaXFormAdapter, form, ResetListener, m_aResetListeners, ::com::sun::star::form::XReset, m_xMainForm)
1477*cdf0e10cSrcweir 
1478*cdf0e10cSrcweir // ::com::sun::star::container::XNameContainer
1479*cdf0e10cSrcweir // -------------------------------------------------------------------------
1480*cdf0e10cSrcweir void SbaXFormAdapter::implInsert(const Any& aElement, sal_Int32 nIndex, const ::rtl::OUString* pNewElName) throw( ::com::sun::star::lang::IllegalArgumentException )
1481*cdf0e10cSrcweir {
1482*cdf0e10cSrcweir 	// extract the form component
1483*cdf0e10cSrcweir 	if (aElement.getValueType().getTypeClass() != TypeClass_INTERFACE)
1484*cdf0e10cSrcweir 	{
1485*cdf0e10cSrcweir 		throw ::com::sun::star::lang::IllegalArgumentException();
1486*cdf0e10cSrcweir 	}
1487*cdf0e10cSrcweir 
1488*cdf0e10cSrcweir 	Reference< ::com::sun::star::form::XFormComponent >  xElement(*(Reference< XInterface > *)aElement.getValue(), UNO_QUERY);
1489*cdf0e10cSrcweir 	if (!xElement.is())
1490*cdf0e10cSrcweir 	{
1491*cdf0e10cSrcweir 		throw ::com::sun::star::lang::IllegalArgumentException();
1492*cdf0e10cSrcweir 	}
1493*cdf0e10cSrcweir 
1494*cdf0e10cSrcweir 	// for the name we need the propset
1495*cdf0e10cSrcweir 	Reference< ::com::sun::star::beans::XPropertySet >  xElementSet(xElement, UNO_QUERY);
1496*cdf0e10cSrcweir 	if (!xElementSet.is())
1497*cdf0e10cSrcweir 	{
1498*cdf0e10cSrcweir 		throw ::com::sun::star::lang::IllegalArgumentException();
1499*cdf0e10cSrcweir  	}
1500*cdf0e10cSrcweir 	::rtl::OUString sName;
1501*cdf0e10cSrcweir 	try
1502*cdf0e10cSrcweir 	{
1503*cdf0e10cSrcweir 		if (pNewElName)
1504*cdf0e10cSrcweir 			xElementSet->setPropertyValue(PROPERTY_NAME, makeAny(*pNewElName));
1505*cdf0e10cSrcweir 
1506*cdf0e10cSrcweir 		xElementSet->getPropertyValue(PROPERTY_NAME) >>= sName;
1507*cdf0e10cSrcweir 	}
1508*cdf0e10cSrcweir 	catch(Exception&)
1509*cdf0e10cSrcweir 	{
1510*cdf0e10cSrcweir 		// the set didn't support the name prop
1511*cdf0e10cSrcweir 		throw ::com::sun::star::lang::IllegalArgumentException();
1512*cdf0e10cSrcweir 	}
1513*cdf0e10cSrcweir 
1514*cdf0e10cSrcweir 	// check the index
1515*cdf0e10cSrcweir     OSL_ASSERT(nIndex >= 0);
1516*cdf0e10cSrcweir 	if (sal::static_int_cast< sal_uInt32 >(nIndex) > m_aChildren.size())
1517*cdf0e10cSrcweir 		nIndex = m_aChildren.size();
1518*cdf0e10cSrcweir 
1519*cdf0e10cSrcweir 	DBG_ASSERT(m_aChildren.size() == m_aChildNames.size(), "SAL_CALL SbaXFormAdapter::implInsert : inconsistent container state !");
1520*cdf0e10cSrcweir 	m_aChildren.insert(m_aChildren.begin() + nIndex, xElement);
1521*cdf0e10cSrcweir 	m_aChildNames.insert(m_aChildNames.begin() + nIndex, sName);
1522*cdf0e10cSrcweir 
1523*cdf0e10cSrcweir 	// listen for a changes of the name
1524*cdf0e10cSrcweir 	xElementSet->addPropertyChangeListener(PROPERTY_NAME, (::com::sun::star::beans::XPropertyChangeListener*)this);
1525*cdf0e10cSrcweir 
1526*cdf0e10cSrcweir 	// we are now the parent of the new element
1527*cdf0e10cSrcweir 	xElement->setParent((::com::sun::star::container::XContainer*)this);
1528*cdf0e10cSrcweir 
1529*cdf0e10cSrcweir 	// notify the container listeners
1530*cdf0e10cSrcweir 	::com::sun::star::container::ContainerEvent aEvt;
1531*cdf0e10cSrcweir 	aEvt.Source = *this;
1532*cdf0e10cSrcweir 	aEvt.Accessor <<= nIndex;
1533*cdf0e10cSrcweir 	aEvt.Element <<= xElement;
1534*cdf0e10cSrcweir 	::cppu::OInterfaceIteratorHelper aIt(m_aContainerListeners);
1535*cdf0e10cSrcweir 	while (aIt.hasMoreElements())
1536*cdf0e10cSrcweir 		((::com::sun::star::container::XContainerListener*)aIt.next())->elementInserted(aEvt);
1537*cdf0e10cSrcweir }
1538*cdf0e10cSrcweir 
1539*cdf0e10cSrcweir // -------------------------------------------------------------------------
1540*cdf0e10cSrcweir sal_Int32 SbaXFormAdapter::implGetPos(const ::rtl::OUString& rName)
1541*cdf0e10cSrcweir {
1542*cdf0e10cSrcweir 	::std::vector< ::rtl::OUString>::iterator aIter = ::std::find_if(	m_aChildNames.begin(),
1543*cdf0e10cSrcweir 																m_aChildNames.end(),
1544*cdf0e10cSrcweir 																::std::bind2nd(::std::equal_to< rtl::OUString>(),rName));
1545*cdf0e10cSrcweir 
1546*cdf0e10cSrcweir 	if(aIter != m_aChildNames.end())
1547*cdf0e10cSrcweir 		return aIter - m_aChildNames.begin();
1548*cdf0e10cSrcweir 
1549*cdf0e10cSrcweir 	return -1;
1550*cdf0e10cSrcweir }
1551*cdf0e10cSrcweir 
1552*cdf0e10cSrcweir // -------------------------------------------------------------------------
1553*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::insertByName(const ::rtl::OUString& aName, const Any& aElement) throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::ElementExistException, ::com::sun::star::lang::WrappedTargetException, RuntimeException )
1554*cdf0e10cSrcweir {
1555*cdf0e10cSrcweir 	implInsert(aElement, m_aChildren.size(), &aName);
1556*cdf0e10cSrcweir }
1557*cdf0e10cSrcweir 
1558*cdf0e10cSrcweir // -------------------------------------------------------------------------
1559*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::removeByName(const ::rtl::OUString& Name) throw( ::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, RuntimeException )
1560*cdf0e10cSrcweir {
1561*cdf0e10cSrcweir 	sal_Int32 nPos = implGetPos(Name);
1562*cdf0e10cSrcweir 	if (-1 == nPos)
1563*cdf0e10cSrcweir 	{
1564*cdf0e10cSrcweir 		throw ::com::sun::star::container::NoSuchElementException();
1565*cdf0e10cSrcweir 	}
1566*cdf0e10cSrcweir 	removeByIndex(nPos);
1567*cdf0e10cSrcweir }
1568*cdf0e10cSrcweir 
1569*cdf0e10cSrcweir // ::com::sun::star::container::XNameReplace
1570*cdf0e10cSrcweir // -------------------------------------------------------------------------
1571*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::replaceByName(const ::rtl::OUString& aName, const Any& aElement) throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, RuntimeException )
1572*cdf0e10cSrcweir {
1573*cdf0e10cSrcweir 	sal_Int32 nPos = implGetPos(aName);
1574*cdf0e10cSrcweir 	if (-1 == nPos)
1575*cdf0e10cSrcweir 	{
1576*cdf0e10cSrcweir 		throw ::com::sun::star::container::NoSuchElementException();
1577*cdf0e10cSrcweir 	}
1578*cdf0e10cSrcweir 	replaceByIndex(nPos, aElement);
1579*cdf0e10cSrcweir }
1580*cdf0e10cSrcweir 
1581*cdf0e10cSrcweir // ::com::sun::star::container::XNameAccess
1582*cdf0e10cSrcweir // -------------------------------------------------------------------------
1583*cdf0e10cSrcweir Any SAL_CALL SbaXFormAdapter::getByName(const ::rtl::OUString& aName) throw( ::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, RuntimeException )
1584*cdf0e10cSrcweir {
1585*cdf0e10cSrcweir 	sal_Int32 nPos = implGetPos(aName);
1586*cdf0e10cSrcweir 	if (-1 == nPos)
1587*cdf0e10cSrcweir 	{
1588*cdf0e10cSrcweir 		throw ::com::sun::star::container::NoSuchElementException();
1589*cdf0e10cSrcweir 	}
1590*cdf0e10cSrcweir 	return makeAny(m_aChildren[nPos]);
1591*cdf0e10cSrcweir }
1592*cdf0e10cSrcweir 
1593*cdf0e10cSrcweir // -------------------------------------------------------------------------
1594*cdf0e10cSrcweir Sequence< ::rtl::OUString > SAL_CALL SbaXFormAdapter::getElementNames() throw( RuntimeException )
1595*cdf0e10cSrcweir {
1596*cdf0e10cSrcweir 	::rtl::OUString *pChildNames = m_aChildNames.empty() ? 0 : &m_aChildNames[0];
1597*cdf0e10cSrcweir 	return Sequence< ::rtl::OUString >(pChildNames, m_aChildNames.size());
1598*cdf0e10cSrcweir }
1599*cdf0e10cSrcweir 
1600*cdf0e10cSrcweir // -------------------------------------------------------------------------
1601*cdf0e10cSrcweir sal_Bool SAL_CALL SbaXFormAdapter::hasByName(const ::rtl::OUString& aName) throw( RuntimeException )
1602*cdf0e10cSrcweir {
1603*cdf0e10cSrcweir 	return (-1 != implGetPos(aName));
1604*cdf0e10cSrcweir }
1605*cdf0e10cSrcweir 
1606*cdf0e10cSrcweir // ::com::sun::star::container::XElementAccess
1607*cdf0e10cSrcweir // -------------------------------------------------------------------------
1608*cdf0e10cSrcweir Type SAL_CALL SbaXFormAdapter::getElementType() throw(RuntimeException)
1609*cdf0e10cSrcweir {
1610*cdf0e10cSrcweir 	return ::getCppuType(
1611*cdf0e10cSrcweir 		static_cast< Reference< ::com::sun::star::form::XFormComponent >* >(NULL));
1612*cdf0e10cSrcweir }
1613*cdf0e10cSrcweir 
1614*cdf0e10cSrcweir // -------------------------------------------------------------------------
1615*cdf0e10cSrcweir sal_Bool SAL_CALL SbaXFormAdapter::hasElements() throw(RuntimeException)
1616*cdf0e10cSrcweir {
1617*cdf0e10cSrcweir 	return m_aChildren.size() > 0;
1618*cdf0e10cSrcweir }
1619*cdf0e10cSrcweir 
1620*cdf0e10cSrcweir 
1621*cdf0e10cSrcweir // ::com::sun::star::container::XIndexContainer
1622*cdf0e10cSrcweir // -------------------------------------------------------------------------
1623*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::insertByIndex(sal_Int32 _rIndex, const Any& Element) throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, RuntimeException )
1624*cdf0e10cSrcweir {
1625*cdf0e10cSrcweir 	if ( ( _rIndex < 0 ) || ( (size_t)_rIndex >= m_aChildren.size() ) )
1626*cdf0e10cSrcweir 		throw ::com::sun::star::lang::IndexOutOfBoundsException();
1627*cdf0e10cSrcweir 	implInsert(Element, _rIndex);
1628*cdf0e10cSrcweir }
1629*cdf0e10cSrcweir 
1630*cdf0e10cSrcweir // -------------------------------------------------------------------------
1631*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::removeByIndex(sal_Int32 _rIndex) throw( ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, RuntimeException )
1632*cdf0e10cSrcweir {
1633*cdf0e10cSrcweir 	if ( ( _rIndex < 0 ) || ( (size_t)_rIndex >= m_aChildren.size() ) )
1634*cdf0e10cSrcweir 		throw ::com::sun::star::lang::IndexOutOfBoundsException();
1635*cdf0e10cSrcweir 
1636*cdf0e10cSrcweir 	Reference< ::com::sun::star::form::XFormComponent >  xAffected = *(m_aChildren.begin() + _rIndex);
1637*cdf0e10cSrcweir 
1638*cdf0e10cSrcweir 	DBG_ASSERT(m_aChildren.size() == m_aChildNames.size(), "SAL_CALL SbaXFormAdapter::removeByIndex : inconsistent container state !");
1639*cdf0e10cSrcweir 	m_aChildren.erase(m_aChildren.begin() + _rIndex);
1640*cdf0e10cSrcweir 	m_aChildNames.erase(m_aChildNames.begin() + _rIndex);
1641*cdf0e10cSrcweir 
1642*cdf0e10cSrcweir 	// no need to listen anymore
1643*cdf0e10cSrcweir 	Reference< ::com::sun::star::beans::XPropertySet >  xAffectedSet(xAffected, UNO_QUERY);
1644*cdf0e10cSrcweir 	xAffectedSet->removePropertyChangeListener(PROPERTY_NAME, (::com::sun::star::beans::XPropertyChangeListener*)this);
1645*cdf0e10cSrcweir 
1646*cdf0e10cSrcweir 	// we are no longer the parent
1647*cdf0e10cSrcweir 	xAffected->setParent(Reference< XInterface > ());
1648*cdf0e10cSrcweir 
1649*cdf0e10cSrcweir 	// notify container listeners
1650*cdf0e10cSrcweir 	::com::sun::star::container::ContainerEvent aEvt;
1651*cdf0e10cSrcweir 	aEvt.Source = *this;
1652*cdf0e10cSrcweir 	aEvt.Element <<= xAffected;
1653*cdf0e10cSrcweir 	::cppu::OInterfaceIteratorHelper aIt(m_aContainerListeners);
1654*cdf0e10cSrcweir 	while (aIt.hasMoreElements())
1655*cdf0e10cSrcweir 		((::com::sun::star::container::XContainerListener*)aIt.next())->elementRemoved(aEvt);
1656*cdf0e10cSrcweir 
1657*cdf0e10cSrcweir }
1658*cdf0e10cSrcweir 
1659*cdf0e10cSrcweir // ::com::sun::star::container::XIndexReplace
1660*cdf0e10cSrcweir // -------------------------------------------------------------------------
1661*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::replaceByIndex(sal_Int32 _rIndex, const Any& Element) throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, RuntimeException )
1662*cdf0e10cSrcweir {
1663*cdf0e10cSrcweir 	if ( ( _rIndex < 0 ) || ( (size_t)_rIndex >= m_aChildren.size() ) )
1664*cdf0e10cSrcweir 		throw ::com::sun::star::lang::IndexOutOfBoundsException();
1665*cdf0e10cSrcweir 
1666*cdf0e10cSrcweir 	// extract the form component
1667*cdf0e10cSrcweir 	if (Element.getValueType().getTypeClass() != TypeClass_INTERFACE)
1668*cdf0e10cSrcweir 	{
1669*cdf0e10cSrcweir 		throw ::com::sun::star::lang::IllegalArgumentException();
1670*cdf0e10cSrcweir 	}
1671*cdf0e10cSrcweir 
1672*cdf0e10cSrcweir 	Reference< ::com::sun::star::form::XFormComponent >  xElement(*(Reference< XInterface > *)Element.getValue(), UNO_QUERY);
1673*cdf0e10cSrcweir 	if (!xElement.is())
1674*cdf0e10cSrcweir 	{
1675*cdf0e10cSrcweir 		throw ::com::sun::star::lang::IllegalArgumentException();
1676*cdf0e10cSrcweir 	}
1677*cdf0e10cSrcweir 
1678*cdf0e10cSrcweir 	// for the name we need the propset
1679*cdf0e10cSrcweir 	Reference< ::com::sun::star::beans::XPropertySet >  xElementSet(xElement, UNO_QUERY);
1680*cdf0e10cSrcweir 	if (!xElementSet.is())
1681*cdf0e10cSrcweir 	{
1682*cdf0e10cSrcweir 		throw ::com::sun::star::lang::IllegalArgumentException();
1683*cdf0e10cSrcweir  	}
1684*cdf0e10cSrcweir 	::rtl::OUString sName;
1685*cdf0e10cSrcweir 	try
1686*cdf0e10cSrcweir 	{
1687*cdf0e10cSrcweir 		xElementSet->getPropertyValue(PROPERTY_NAME) >>= sName;
1688*cdf0e10cSrcweir 	}
1689*cdf0e10cSrcweir 	catch(Exception&)
1690*cdf0e10cSrcweir 	{
1691*cdf0e10cSrcweir 		// the set didn't support the name prop
1692*cdf0e10cSrcweir 		throw ::com::sun::star::lang::IllegalArgumentException();
1693*cdf0e10cSrcweir 	}
1694*cdf0e10cSrcweir 
1695*cdf0e10cSrcweir 	Reference< ::com::sun::star::form::XFormComponent >  xOld = *(m_aChildren.begin() + _rIndex);
1696*cdf0e10cSrcweir 
1697*cdf0e10cSrcweir 	DBG_ASSERT(m_aChildren.size() == m_aChildNames.size(), "SAL_CALL SbaXFormAdapter::replaceByIndex : inconsistent container state !");
1698*cdf0e10cSrcweir 	*(m_aChildren.begin() + _rIndex) = xElement;
1699*cdf0e10cSrcweir 	*(m_aChildNames.begin() + _rIndex) = sName;
1700*cdf0e10cSrcweir 
1701*cdf0e10cSrcweir 	// correct property change listening
1702*cdf0e10cSrcweir 	Reference< ::com::sun::star::beans::XPropertySet >  xOldSet(xOld, UNO_QUERY);
1703*cdf0e10cSrcweir 	xOldSet->removePropertyChangeListener(PROPERTY_NAME, (::com::sun::star::beans::XPropertyChangeListener*)this);
1704*cdf0e10cSrcweir 	xElementSet->addPropertyChangeListener(PROPERTY_NAME, (::com::sun::star::beans::XPropertyChangeListener*)this);
1705*cdf0e10cSrcweir 
1706*cdf0e10cSrcweir 	// parent reset
1707*cdf0e10cSrcweir 	xOld->setParent(Reference< XInterface > ());
1708*cdf0e10cSrcweir 	xElement->setParent((::com::sun::star::container::XContainer*)this);
1709*cdf0e10cSrcweir 
1710*cdf0e10cSrcweir 	// notify container listeners
1711*cdf0e10cSrcweir 	::com::sun::star::container::ContainerEvent aEvt;
1712*cdf0e10cSrcweir 	aEvt.Source = *this;
1713*cdf0e10cSrcweir 	aEvt.Accessor <<= (sal_Int32)_rIndex;
1714*cdf0e10cSrcweir 	aEvt.Element <<= xElement;
1715*cdf0e10cSrcweir 	aEvt.ReplacedElement <<= xOld;
1716*cdf0e10cSrcweir 
1717*cdf0e10cSrcweir 	::cppu::OInterfaceIteratorHelper aIt(m_aContainerListeners);
1718*cdf0e10cSrcweir 	while (aIt.hasMoreElements())
1719*cdf0e10cSrcweir 		((::com::sun::star::container::XContainerListener*)aIt.next())->elementReplaced(aEvt);
1720*cdf0e10cSrcweir }
1721*cdf0e10cSrcweir 
1722*cdf0e10cSrcweir // ::com::sun::star::container::XIndexAccess
1723*cdf0e10cSrcweir // -------------------------------------------------------------------------
1724*cdf0e10cSrcweir sal_Int32 SAL_CALL SbaXFormAdapter::getCount() throw( RuntimeException )
1725*cdf0e10cSrcweir {
1726*cdf0e10cSrcweir 	return m_aChildren.size();
1727*cdf0e10cSrcweir }
1728*cdf0e10cSrcweir 
1729*cdf0e10cSrcweir // -------------------------------------------------------------------------
1730*cdf0e10cSrcweir Any SAL_CALL SbaXFormAdapter::getByIndex(sal_Int32 _rIndex) throw( ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, RuntimeException )
1731*cdf0e10cSrcweir {
1732*cdf0e10cSrcweir 	if ( ( _rIndex < 0 ) || ( (size_t)_rIndex >= m_aChildren.size() ) )
1733*cdf0e10cSrcweir 		throw ::com::sun::star::lang::IndexOutOfBoundsException();
1734*cdf0e10cSrcweir 
1735*cdf0e10cSrcweir     Reference< ::com::sun::star::form::XFormComponent >  xElement = *(m_aChildren.begin() + _rIndex);
1736*cdf0e10cSrcweir 	return makeAny(xElement);
1737*cdf0e10cSrcweir }
1738*cdf0e10cSrcweir 
1739*cdf0e10cSrcweir // ::com::sun::star::container::XContainer
1740*cdf0e10cSrcweir // -------------------------------------------------------------------------
1741*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::addContainerListener(const Reference< ::com::sun::star::container::XContainerListener >& xListener) throw( RuntimeException )
1742*cdf0e10cSrcweir {
1743*cdf0e10cSrcweir 	m_aContainerListeners.addInterface(xListener);
1744*cdf0e10cSrcweir }
1745*cdf0e10cSrcweir 
1746*cdf0e10cSrcweir // -------------------------------------------------------------------------
1747*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::removeContainerListener(const Reference< ::com::sun::star::container::XContainerListener >& xListener) throw( RuntimeException )
1748*cdf0e10cSrcweir {
1749*cdf0e10cSrcweir 	m_aContainerListeners.removeInterface(xListener);
1750*cdf0e10cSrcweir }
1751*cdf0e10cSrcweir 
1752*cdf0e10cSrcweir // ::com::sun::star::container::XEnumerationAccess
1753*cdf0e10cSrcweir // -------------------------------------------------------------------------
1754*cdf0e10cSrcweir Reference< ::com::sun::star::container::XEnumeration > SAL_CALL SbaXFormAdapter::createEnumeration() throw( RuntimeException )
1755*cdf0e10cSrcweir {
1756*cdf0e10cSrcweir 	return new ::comphelper::OEnumerationByName(this);
1757*cdf0e10cSrcweir }
1758*cdf0e10cSrcweir 
1759*cdf0e10cSrcweir // ::com::sun::star::beans::XPropertyChangeListener
1760*cdf0e10cSrcweir // -------------------------------------------------------------------------
1761*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::propertyChange(const ::com::sun::star::beans::PropertyChangeEvent& evt) throw( RuntimeException )
1762*cdf0e10cSrcweir {
1763*cdf0e10cSrcweir 	if (evt.PropertyName.equals(PROPERTY_NAME))
1764*cdf0e10cSrcweir 	{
1765*cdf0e10cSrcweir 		::std::vector<	::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent > >::iterator aIter = ::std::find_if(	m_aChildren.begin(),
1766*cdf0e10cSrcweir 																m_aChildren.end(),
1767*cdf0e10cSrcweir 																::std::bind2nd(::std::equal_to< ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > >(),evt.Source));
1768*cdf0e10cSrcweir 
1769*cdf0e10cSrcweir 		if(aIter != m_aChildren.end())
1770*cdf0e10cSrcweir 		{
1771*cdf0e10cSrcweir 			sal_Int32 nPos = aIter - m_aChildren.begin();
1772*cdf0e10cSrcweir 			DBG_ASSERT(*(m_aChildNames.begin() + nPos) == ::comphelper::getString(evt.OldValue), "SAL_CALL SbaXFormAdapter::propertyChange : object has a wrong name !");
1773*cdf0e10cSrcweir 			*(m_aChildNames.begin() + nPos) = ::comphelper::getString(evt.NewValue);
1774*cdf0e10cSrcweir 		}
1775*cdf0e10cSrcweir 	}
1776*cdf0e10cSrcweir }
1777*cdf0e10cSrcweir 
1778*cdf0e10cSrcweir // ::com::sun::star::lang::XEventListener
1779*cdf0e10cSrcweir // -------------------------------------------------------------------------
1780*cdf0e10cSrcweir void SAL_CALL SbaXFormAdapter::disposing(const ::com::sun::star::lang::EventObject& Source) throw( RuntimeException )
1781*cdf0e10cSrcweir {
1782*cdf0e10cSrcweir 	// was it our main form ?
1783*cdf0e10cSrcweir 	if (Source.Source == m_xMainForm)
1784*cdf0e10cSrcweir 		dispose();
1785*cdf0e10cSrcweir 
1786*cdf0e10cSrcweir 	::std::vector<	::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent > >::iterator aIter = ::std::find_if(	m_aChildren.begin(),
1787*cdf0e10cSrcweir 																m_aChildren.end(),
1788*cdf0e10cSrcweir 																::std::bind2nd(::std::equal_to< ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > >(),Source.Source));
1789*cdf0e10cSrcweir 	if(aIter != m_aChildren.end())
1790*cdf0e10cSrcweir 			removeByIndex(aIter - m_aChildren.begin());
1791*cdf0e10cSrcweir }
1792*cdf0e10cSrcweir // -----------------------------------------------------------------------------
1793*cdf0e10cSrcweir 
1794*cdf0e10cSrcweir 
1795