xref: /aoo41x/main/forms/source/xforms/model.hxx (revision cdf0e10c)
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 #ifndef _MODEL_HXX
29*cdf0e10cSrcweir #define _MODEL_HXX
30*cdf0e10cSrcweir 
31*cdf0e10cSrcweir 
32*cdf0e10cSrcweir // include for parent class(es)
33*cdf0e10cSrcweir #include <cppuhelper/implbase4.hxx>
34*cdf0e10cSrcweir #include <propertysetbase.hxx>
35*cdf0e10cSrcweir #include <com/sun/star/xforms/XModel.hpp>
36*cdf0e10cSrcweir #include <com/sun/star/xforms/XFormsUIHelper1.hpp>
37*cdf0e10cSrcweir #include <com/sun/star/util/XUpdatable.hpp>
38*cdf0e10cSrcweir #include <com/sun/star/lang/XUnoTunnel.hpp>
39*cdf0e10cSrcweir 
40*cdf0e10cSrcweir 
41*cdf0e10cSrcweir // includes for member variables
42*cdf0e10cSrcweir #include <com/sun/star/uno/Reference.hxx>
43*cdf0e10cSrcweir #include <map>
44*cdf0e10cSrcweir 
45*cdf0e10cSrcweir 
46*cdf0e10cSrcweir // forward declaractions
47*cdf0e10cSrcweir namespace com { namespace sun { namespace star
48*cdf0e10cSrcweir {
49*cdf0e10cSrcweir     namespace xml { namespace dom { class XDocument; } }
50*cdf0e10cSrcweir     namespace xml { namespace dom { class XNode; } }
51*cdf0e10cSrcweir     namespace uno { template<typename T> class Sequence; }
52*cdf0e10cSrcweir     namespace lang { class IndexOutOfBoundsException; }
53*cdf0e10cSrcweir     namespace lang { class IllegalArgumentException; }
54*cdf0e10cSrcweir     namespace beans { class XPropertySet; }
55*cdf0e10cSrcweir     namespace container { class XSet; }
56*cdf0e10cSrcweir     namespace container { class XNameContainer; }
57*cdf0e10cSrcweir     namespace frame { class XModel; }
58*cdf0e10cSrcweir } } }
59*cdf0e10cSrcweir namespace rtl { class OUString; }
60*cdf0e10cSrcweir namespace xforms
61*cdf0e10cSrcweir {
62*cdf0e10cSrcweir     class Binding;
63*cdf0e10cSrcweir     class MIP;
64*cdf0e10cSrcweir     class BindingCollection;
65*cdf0e10cSrcweir     class SubmissionCollection;
66*cdf0e10cSrcweir     class InstanceCollection;
67*cdf0e10cSrcweir     class EvaluationContext;
68*cdf0e10cSrcweir }
69*cdf0e10cSrcweir 
70*cdf0e10cSrcweir 
71*cdf0e10cSrcweir namespace xforms
72*cdf0e10cSrcweir {
73*cdf0e10cSrcweir 
74*cdf0e10cSrcweir /** An XForms Model. Contains:
75*cdf0e10cSrcweir  *  # (set of) instance data (XML DOM tree)
76*cdf0e10cSrcweir  *  # (set of) bindings
77*cdf0e10cSrcweir  *  # (set of) submissions
78*cdf0e10cSrcweir  *  # (NOT YET IMPLEMENTED) actions (set of)
79*cdf0e10cSrcweir  *
80*cdf0e10cSrcweir  * See http://www.w3.org/TR/xforms/ for more information.
81*cdf0e10cSrcweir  */
82*cdf0e10cSrcweir typedef cppu::ImplInheritanceHelper4<
83*cdf0e10cSrcweir     PropertySetBase,
84*cdf0e10cSrcweir     com::sun::star::xforms::XModel,
85*cdf0e10cSrcweir     com::sun::star::xforms::XFormsUIHelper1,
86*cdf0e10cSrcweir     com::sun::star::util::XUpdatable,
87*cdf0e10cSrcweir     com::sun::star::lang::XUnoTunnel
88*cdf0e10cSrcweir > Model_t;
89*cdf0e10cSrcweir class Model : public Model_t
90*cdf0e10cSrcweir {
91*cdf0e10cSrcweir     // a number of local typedefs, to make the remaining header readable
92*cdf0e10cSrcweir     typedef com::sun::star::uno::Reference<com::sun::star::xml::dom::XDocument> XDocument_t;
93*cdf0e10cSrcweir     typedef com::sun::star::uno::Reference<com::sun::star::xml::dom::XNode> XNode_t;
94*cdf0e10cSrcweir     typedef com::sun::star::lang::IndexOutOfBoundsException IndexOutOfBoundsException_t;
95*cdf0e10cSrcweir     typedef com::sun::star::lang::IllegalArgumentException IllegalArgumentException_t;
96*cdf0e10cSrcweir     typedef com::sun::star::uno::Reference<com::sun::star::beans::XPropertySet> XPropertySet_t;
97*cdf0e10cSrcweir     typedef com::sun::star::uno::Reference<com::sun::star::xforms::XDataTypeRepository> XDataTypeRepository_t;
98*cdf0e10cSrcweir     typedef com::sun::star::uno::Reference<com::sun::star::container::XNameContainer> XNameContainer_t;
99*cdf0e10cSrcweir     typedef com::sun::star::uno::Reference<com::sun::star::xforms::XSubmission> XSubmission_t;
100*cdf0e10cSrcweir     typedef com::sun::star::uno::Reference<com::sun::star::frame::XModel> Frame_XModel_t;
101*cdf0e10cSrcweir     typedef com::sun::star::uno::Reference<com::sun::star::xforms::XModel> XModel_t;
102*cdf0e10cSrcweir     typedef com::sun::star::uno::Reference<com::sun::star::task::XInteractionHandler> XInteractionHandler_t;
103*cdf0e10cSrcweir 
104*cdf0e10cSrcweir     typedef com::sun::star::uno::Reference<com::sun::star::container::XSet> XSet_t;
105*cdf0e10cSrcweir     typedef com::sun::star::beans::PropertyVetoException PropertyVetoException_t;
106*cdf0e10cSrcweir     typedef com::sun::star::beans::UnknownPropertyException UnknownPropertyException_t;
107*cdf0e10cSrcweir     typedef com::sun::star::util::VetoException VetoException_t;
108*cdf0e10cSrcweir     typedef com::sun::star::lang::WrappedTargetException WrappedTargetException_t;
109*cdf0e10cSrcweir     typedef com::sun::star::uno::RuntimeException RuntimeException_t;
110*cdf0e10cSrcweir     typedef com::sun::star::uno::Any Any_t;
111*cdf0e10cSrcweir     typedef com::sun::star::uno::Sequence<sal_Int8> IntSequence_t;
112*cdf0e10cSrcweir     typedef std::multimap<XNode_t,std::pair<void*,MIP> > MIPs_t;
113*cdf0e10cSrcweir 
114*cdf0e10cSrcweir 
115*cdf0e10cSrcweir private:
116*cdf0e10cSrcweir 
117*cdf0e10cSrcweir     rtl::OUString msID;                     /// the model ID
118*cdf0e10cSrcweir     BindingCollection* mpBindings;          /// the bindings
119*cdf0e10cSrcweir     SubmissionCollection* mpSubmissions;    /// the submissions
120*cdf0e10cSrcweir     InstanceCollection* mpInstances;        /// the instance(s)
121*cdf0e10cSrcweir 
122*cdf0e10cSrcweir     XDataTypeRepository_t mxDataTypes;      /// the XSD data-types used
123*cdf0e10cSrcweir     XDocument_t mxForeignSchema;            /// the XSD-schema part we cannot
124*cdf0e10cSrcweir                                             /// map onto data types
125*cdf0e10cSrcweir     rtl::OUString msSchemaRef;              /// xforms:model/@schema attribute
126*cdf0e10cSrcweir 
127*cdf0e10cSrcweir     XNameContainer_t mxNamespaces;          /// namespaces for entire model
128*cdf0e10cSrcweir 
129*cdf0e10cSrcweir 
130*cdf0e10cSrcweir     // references to mpBindings/mpSubmissions, for UNO reference counting
131*cdf0e10cSrcweir     XSet_t mxBindings;
132*cdf0e10cSrcweir     XSet_t mxSubmissions;
133*cdf0e10cSrcweir     XSet_t mxInstances;
134*cdf0e10cSrcweir 
135*cdf0e10cSrcweir     MIPs_t maMIPs;                          /// map nodes to their MIPs
136*cdf0e10cSrcweir 
137*cdf0e10cSrcweir     bool mbInitialized;                     /// has model been initialized ?
138*cdf0e10cSrcweir     bool mbExternalData;                    /// is the data of this model to be considered an ingegral part of the document?
139*cdf0e10cSrcweir 
140*cdf0e10cSrcweir     void initializePropertySet();
141*cdf0e10cSrcweir 
142*cdf0e10cSrcweir     void ensureAtLeastOneInstance();
143*cdf0e10cSrcweir 
144*cdf0e10cSrcweir 
145*cdf0e10cSrcweir public:
146*cdf0e10cSrcweir 
147*cdf0e10cSrcweir     /// create a new model with an empty, default instance
148*cdf0e10cSrcweir     Model();
149*cdf0e10cSrcweir     virtual ~Model() throw();
150*cdf0e10cSrcweir 
151*cdf0e10cSrcweir     // get Model implementation from API object
152*cdf0e10cSrcweir     static Model* getModel( const com::sun::star::uno::Reference<com::sun::star::xforms::XModel>& );
153*cdf0e10cSrcweir 
154*cdf0e10cSrcweir     xforms::EvaluationContext getEvaluationContext();
155*cdf0e10cSrcweir 
156*cdf0e10cSrcweir 
157*cdf0e10cSrcweir     static IntSequence_t getUnoTunnelID();
158*cdf0e10cSrcweir 
159*cdf0e10cSrcweir 
160*cdf0e10cSrcweir     // get/set that part of the schema, that we can't interpret as data types
161*cdf0e10cSrcweir     XDocument_t getForeignSchema() const;
162*cdf0e10cSrcweir     void setForeignSchema( const XDocument_t& );
163*cdf0e10cSrcweir 
164*cdf0e10cSrcweir     // get/set the xforms:model/@schema attribute
165*cdf0e10cSrcweir     rtl::OUString getSchemaRef() const;
166*cdf0e10cSrcweir     void setSchemaRef( const rtl::OUString& );
167*cdf0e10cSrcweir 
168*cdf0e10cSrcweir     // get/set namespaces for entire model
169*cdf0e10cSrcweir     XNameContainer_t getNamespaces() const;
170*cdf0e10cSrcweir     void setNamespaces( const XNameContainer_t& );
171*cdf0e10cSrcweir 
172*cdf0e10cSrcweir     // get/set the ExternalData property
173*cdf0e10cSrcweir     bool getExternalData() const;
174*cdf0e10cSrcweir     void setExternalData( bool _bData );
175*cdf0e10cSrcweir 
176*cdf0e10cSrcweir 
177*cdf0e10cSrcweir #if OSL_DEBUG_LEVEL > 1
178*cdf0e10cSrcweir     void dbg_assertInvariant() const;
179*cdf0e10cSrcweir #endif
180*cdf0e10cSrcweir 
181*cdf0e10cSrcweir 
182*cdf0e10cSrcweir     //
183*cdf0e10cSrcweir     // MIP (model item property) management
184*cdf0e10cSrcweir     //
185*cdf0e10cSrcweir 
186*cdf0e10cSrcweir     // register MIPs which apply to a given node; only to be called by bindings
187*cdf0e10cSrcweir     // (The pTag parameter serves only to be able to remove the MIPs
188*cdf0e10cSrcweir     // that were added using the same tag. No functions will be
189*cdf0e10cSrcweir     // performed on it; hence the void* type.)
190*cdf0e10cSrcweir     void addMIP( void* pTag, const XNode_t&, const MIP& );
191*cdf0e10cSrcweir     void removeMIPs( void* pTag );
192*cdf0e10cSrcweir 
193*cdf0e10cSrcweir     /// query which MIPs appy to the given node
194*cdf0e10cSrcweir     MIP queryMIP( const XNode_t& xNode ) const;
195*cdf0e10cSrcweir 
196*cdf0e10cSrcweir     /// re-bind all bindings
197*cdf0e10cSrcweir     void rebind();
198*cdf0e10cSrcweir 
199*cdf0e10cSrcweir     /// call defer notifications on all bindings
200*cdf0e10cSrcweir     void deferNotifications( bool );
201*cdf0e10cSrcweir 
202*cdf0e10cSrcweir     /// set a data value in the instance
203*cdf0e10cSrcweir     /// (also defers notifications)
204*cdf0e10cSrcweir     bool setSimpleContent( const XNode_t&, const rtl::OUString& );
205*cdf0e10cSrcweir 
206*cdf0e10cSrcweir     /// load instance data
207*cdf0e10cSrcweir     void loadInstance( sal_Int32 nInstance );
208*cdf0e10cSrcweir     void loadInstances();
209*cdf0e10cSrcweir 
210*cdf0e10cSrcweir     /// has model been initialized?
211*cdf0e10cSrcweir     bool isInitialized() const;
212*cdf0e10cSrcweir 
213*cdf0e10cSrcweir     /// is model currently valid (for submission)?
214*cdf0e10cSrcweir     bool isValid() const;
215*cdf0e10cSrcweir 
216*cdf0e10cSrcweir 
217*cdf0e10cSrcweir 
218*cdf0e10cSrcweir     //
219*cdf0e10cSrcweir     // XModel
220*cdf0e10cSrcweir     //    implement the xforms::XModel implementation
221*cdf0e10cSrcweir     //
222*cdf0e10cSrcweir 
223*cdf0e10cSrcweir 
224*cdf0e10cSrcweir     virtual rtl::OUString SAL_CALL getID()
225*cdf0e10cSrcweir         throw( RuntimeException_t );
226*cdf0e10cSrcweir 
227*cdf0e10cSrcweir     virtual void SAL_CALL setID( const rtl::OUString& sID )
228*cdf0e10cSrcweir         throw( RuntimeException_t );
229*cdf0e10cSrcweir 
230*cdf0e10cSrcweir     virtual void SAL_CALL initialize()
231*cdf0e10cSrcweir         throw( RuntimeException_t );
232*cdf0e10cSrcweir 
233*cdf0e10cSrcweir     virtual void SAL_CALL rebuild()
234*cdf0e10cSrcweir         throw( RuntimeException_t );
235*cdf0e10cSrcweir 
236*cdf0e10cSrcweir     virtual void SAL_CALL recalculate()
237*cdf0e10cSrcweir         throw( RuntimeException_t );
238*cdf0e10cSrcweir 
239*cdf0e10cSrcweir     virtual void SAL_CALL revalidate()
240*cdf0e10cSrcweir         throw( RuntimeException_t );
241*cdf0e10cSrcweir 
242*cdf0e10cSrcweir     virtual void SAL_CALL refresh()
243*cdf0e10cSrcweir         throw( RuntimeException_t );
244*cdf0e10cSrcweir 
245*cdf0e10cSrcweir     virtual void SAL_CALL submit( const rtl::OUString& sID )
246*cdf0e10cSrcweir         throw( VetoException_t, WrappedTargetException_t, RuntimeException_t );
247*cdf0e10cSrcweir 
248*cdf0e10cSrcweir     virtual void SAL_CALL submitWithInteraction( const ::rtl::OUString& id, const XInteractionHandler_t& _rxHandler )
249*cdf0e10cSrcweir         throw( VetoException_t, WrappedTargetException_t, RuntimeException_t );
250*cdf0e10cSrcweir 
251*cdf0e10cSrcweir     virtual XDataTypeRepository_t SAL_CALL getDataTypeRepository(  )
252*cdf0e10cSrcweir         throw( RuntimeException_t );
253*cdf0e10cSrcweir 
254*cdf0e10cSrcweir 
255*cdf0e10cSrcweir     // XModel: instance management
256*cdf0e10cSrcweir 
257*cdf0e10cSrcweir     virtual XSet_t SAL_CALL getInstances()
258*cdf0e10cSrcweir         throw( RuntimeException_t );
259*cdf0e10cSrcweir 
260*cdf0e10cSrcweir     virtual XDocument_t SAL_CALL getInstanceDocument( const rtl::OUString& )
261*cdf0e10cSrcweir         throw( RuntimeException_t );
262*cdf0e10cSrcweir 
263*cdf0e10cSrcweir     virtual XDocument_t SAL_CALL getDefaultInstance()
264*cdf0e10cSrcweir         throw( RuntimeException_t );
265*cdf0e10cSrcweir 
266*cdf0e10cSrcweir 
267*cdf0e10cSrcweir 
268*cdf0e10cSrcweir     // XModel: binding management
269*cdf0e10cSrcweir 
270*cdf0e10cSrcweir     virtual XPropertySet_t SAL_CALL createBinding()
271*cdf0e10cSrcweir         throw( RuntimeException_t );
272*cdf0e10cSrcweir 
273*cdf0e10cSrcweir     virtual XPropertySet_t SAL_CALL cloneBinding( const XPropertySet_t& )
274*cdf0e10cSrcweir         throw( RuntimeException_t );
275*cdf0e10cSrcweir 
276*cdf0e10cSrcweir     virtual XPropertySet_t SAL_CALL getBinding( const rtl::OUString& )
277*cdf0e10cSrcweir         throw( RuntimeException_t );
278*cdf0e10cSrcweir 
279*cdf0e10cSrcweir     virtual XSet_t SAL_CALL getBindings()
280*cdf0e10cSrcweir         throw( RuntimeException_t );
281*cdf0e10cSrcweir 
282*cdf0e10cSrcweir 
283*cdf0e10cSrcweir     // XModel: submission management
284*cdf0e10cSrcweir 
285*cdf0e10cSrcweir     virtual XSubmission_t SAL_CALL createSubmission()
286*cdf0e10cSrcweir         throw( RuntimeException_t );
287*cdf0e10cSrcweir 
288*cdf0e10cSrcweir     virtual XSubmission_t SAL_CALL cloneSubmission( const XPropertySet_t& )
289*cdf0e10cSrcweir         throw( RuntimeException_t );
290*cdf0e10cSrcweir 
291*cdf0e10cSrcweir     virtual XSubmission_t SAL_CALL getSubmission( const rtl::OUString& )
292*cdf0e10cSrcweir         throw( RuntimeException_t );
293*cdf0e10cSrcweir 
294*cdf0e10cSrcweir     virtual XSet_t SAL_CALL getSubmissions()
295*cdf0e10cSrcweir         throw( RuntimeException_t );
296*cdf0e10cSrcweir 
297*cdf0e10cSrcweir 
298*cdf0e10cSrcweir 
299*cdf0e10cSrcweir     //
300*cdf0e10cSrcweir     // XFormsUIHelper1 & friends:
301*cdf0e10cSrcweir     //   (implementation in model_ui.cxx)
302*cdf0e10cSrcweir     //
303*cdf0e10cSrcweir 
304*cdf0e10cSrcweir     /// determine a reasonable control service for a given node
305*cdf0e10cSrcweir     /// (based on data type MIP assigned to the node)
306*cdf0e10cSrcweir     virtual rtl::OUString SAL_CALL getDefaultServiceNameForNode( const XNode_t& xNode ) throw (RuntimeException_t);
307*cdf0e10cSrcweir 
308*cdf0e10cSrcweir     /// call getDefaultBindingExpressionForNode with default evaluation context
309*cdf0e10cSrcweir     virtual rtl::OUString SAL_CALL getDefaultBindingExpressionForNode( const XNode_t& xNode ) throw (RuntimeException_t);
310*cdf0e10cSrcweir 
311*cdf0e10cSrcweir     /// determine a reasonable default binding expression for a given node
312*cdf0e10cSrcweir     /// and a given evaluation context
313*cdf0e10cSrcweir     /// @returns expression, or empty string if no expression could be derived
314*cdf0e10cSrcweir     rtl::OUString getDefaultBindingExpressionForNode(
315*cdf0e10cSrcweir         const XNode_t&,
316*cdf0e10cSrcweir         const EvaluationContext& );
317*cdf0e10cSrcweir 
318*cdf0e10cSrcweir     virtual rtl::OUString SAL_CALL getNodeDisplayName( const XNode_t&,
319*cdf0e10cSrcweir                                                        sal_Bool bDetail )
320*cdf0e10cSrcweir         throw( RuntimeException_t );
321*cdf0e10cSrcweir 
322*cdf0e10cSrcweir     virtual rtl::OUString SAL_CALL getNodeName( const XNode_t& )
323*cdf0e10cSrcweir         throw( RuntimeException_t );
324*cdf0e10cSrcweir 
325*cdf0e10cSrcweir     virtual rtl::OUString SAL_CALL getBindingName( const XPropertySet_t&,
326*cdf0e10cSrcweir                                                    sal_Bool bDetail )
327*cdf0e10cSrcweir         throw( RuntimeException_t );
328*cdf0e10cSrcweir 
329*cdf0e10cSrcweir     virtual rtl::OUString SAL_CALL getSubmissionName( const XPropertySet_t&,
330*cdf0e10cSrcweir                                                       sal_Bool bDetail )
331*cdf0e10cSrcweir         throw( RuntimeException_t );
332*cdf0e10cSrcweir 
333*cdf0e10cSrcweir     virtual XPropertySet_t SAL_CALL cloneBindingAsGhost( const XPropertySet_t& )
334*cdf0e10cSrcweir         throw( RuntimeException_t );
335*cdf0e10cSrcweir 
336*cdf0e10cSrcweir     virtual void SAL_CALL removeBindingIfUseless( const XPropertySet_t& )
337*cdf0e10cSrcweir         throw( RuntimeException_t );
338*cdf0e10cSrcweir 
339*cdf0e10cSrcweir     virtual XDocument_t SAL_CALL newInstance( const rtl::OUString& sName,
340*cdf0e10cSrcweir                                               const rtl::OUString& sURL,
341*cdf0e10cSrcweir                                               sal_Bool bURLOnce )
342*cdf0e10cSrcweir         throw( RuntimeException_t );
343*cdf0e10cSrcweir 
344*cdf0e10cSrcweir     virtual void SAL_CALL renameInstance( const rtl::OUString& sFrom,
345*cdf0e10cSrcweir                                           const rtl::OUString& sTo,
346*cdf0e10cSrcweir                                           const rtl::OUString& sURL,
347*cdf0e10cSrcweir                                           sal_Bool bURLOnce )
348*cdf0e10cSrcweir         throw( RuntimeException_t );
349*cdf0e10cSrcweir 
350*cdf0e10cSrcweir     virtual void SAL_CALL removeInstance( const rtl::OUString& sName )
351*cdf0e10cSrcweir         throw( RuntimeException_t );
352*cdf0e10cSrcweir 
353*cdf0e10cSrcweir 
354*cdf0e10cSrcweir     virtual XModel_t SAL_CALL newModel( const Frame_XModel_t& xComponent,
355*cdf0e10cSrcweir                                         const rtl::OUString& sName )
356*cdf0e10cSrcweir         throw( RuntimeException_t );
357*cdf0e10cSrcweir     virtual void SAL_CALL renameModel( const Frame_XModel_t& xComponent,
358*cdf0e10cSrcweir                                        const rtl::OUString& sFrom,
359*cdf0e10cSrcweir                                        const rtl::OUString& sTo )
360*cdf0e10cSrcweir         throw( RuntimeException_t );
361*cdf0e10cSrcweir 
362*cdf0e10cSrcweir     virtual void SAL_CALL removeModel( const Frame_XModel_t& xComponent,
363*cdf0e10cSrcweir                                        const rtl::OUString& sName )
364*cdf0e10cSrcweir         throw( RuntimeException_t );
365*cdf0e10cSrcweir 
366*cdf0e10cSrcweir 
367*cdf0e10cSrcweir     virtual XNode_t SAL_CALL createElement( const XNode_t& xParent,
368*cdf0e10cSrcweir                                             const rtl::OUString& sName )
369*cdf0e10cSrcweir         throw( RuntimeException_t );
370*cdf0e10cSrcweir 
371*cdf0e10cSrcweir     virtual XNode_t SAL_CALL createAttribute( const XNode_t& xParent,
372*cdf0e10cSrcweir                                               const rtl::OUString& sName )
373*cdf0e10cSrcweir         throw( RuntimeException_t );
374*cdf0e10cSrcweir 
375*cdf0e10cSrcweir     virtual XNode_t SAL_CALL renameNode( const XNode_t& xNode,
376*cdf0e10cSrcweir                                          const rtl::OUString& sName )
377*cdf0e10cSrcweir         throw( RuntimeException_t );
378*cdf0e10cSrcweir 
379*cdf0e10cSrcweir     virtual XPropertySet_t SAL_CALL getBindingForNode( const XNode_t&,
380*cdf0e10cSrcweir                                                        sal_Bool bCreate )
381*cdf0e10cSrcweir         throw( RuntimeException_t );
382*cdf0e10cSrcweir 
383*cdf0e10cSrcweir     virtual void SAL_CALL removeBindingForNode( const XNode_t& )
384*cdf0e10cSrcweir         throw( RuntimeException_t );
385*cdf0e10cSrcweir 
386*cdf0e10cSrcweir     virtual rtl::OUString SAL_CALL getResultForExpression(
387*cdf0e10cSrcweir         const XPropertySet_t& xBinding,
388*cdf0e10cSrcweir         sal_Bool bIsBindingExpression,
389*cdf0e10cSrcweir         const rtl::OUString& sExpression )
390*cdf0e10cSrcweir         throw( RuntimeException_t );
391*cdf0e10cSrcweir 
392*cdf0e10cSrcweir     virtual sal_Bool SAL_CALL isValidXMLName( const rtl::OUString& sName )
393*cdf0e10cSrcweir         throw( RuntimeException_t );
394*cdf0e10cSrcweir 
395*cdf0e10cSrcweir     virtual sal_Bool SAL_CALL isValidPrefixName( const rtl::OUString& sName )
396*cdf0e10cSrcweir         throw( RuntimeException_t );
397*cdf0e10cSrcweir 
398*cdf0e10cSrcweir     virtual void SAL_CALL setNodeValue(
399*cdf0e10cSrcweir         const XNode_t& xNode,
400*cdf0e10cSrcweir         const rtl::OUString& sValue )
401*cdf0e10cSrcweir         throw( RuntimeException_t );
402*cdf0e10cSrcweir 
403*cdf0e10cSrcweir 
404*cdf0e10cSrcweir     //
405*cdf0e10cSrcweir     // XUpdatable
406*cdf0e10cSrcweir     //
407*cdf0e10cSrcweir 
408*cdf0e10cSrcweir public:
409*cdf0e10cSrcweir     virtual void SAL_CALL update()
410*cdf0e10cSrcweir         throw( RuntimeException_t );
411*cdf0e10cSrcweir 
412*cdf0e10cSrcweir     //
413*cdf0e10cSrcweir     // XUnoTunnel
414*cdf0e10cSrcweir     //
415*cdf0e10cSrcweir 
416*cdf0e10cSrcweir public:
417*cdf0e10cSrcweir     virtual sal_Int64 SAL_CALL getSomething( const IntSequence_t& )
418*cdf0e10cSrcweir         throw( RuntimeException_t );
419*cdf0e10cSrcweir 
420*cdf0e10cSrcweir     //
421*cdf0e10cSrcweir     // XTypeProvider::getImplementationId
422*cdf0e10cSrcweir     //
423*cdf0e10cSrcweir 
424*cdf0e10cSrcweir public:
425*cdf0e10cSrcweir     virtual IntSequence_t SAL_CALL getImplementationId()
426*cdf0e10cSrcweir         throw( RuntimeException_t );
427*cdf0e10cSrcweir 
428*cdf0e10cSrcweir };
429*cdf0e10cSrcweir 
430*cdf0e10cSrcweir // finally, allow 'shifting' of Model objects into/out of Any
431*cdf0e10cSrcweir void operator <<= ( com::sun::star::uno::Any&, const xforms::Model* );
432*cdf0e10cSrcweir bool operator >>= ( xforms::Model*, const com::sun::star::uno::Any&  );
433*cdf0e10cSrcweir 
434*cdf0e10cSrcweir } // namespace
435*cdf0e10cSrcweir #endif
436