xref: /trunk/main/xmlscript/source/xmldlg_imexp/imp_share.hxx (revision 91144cd0085a7583d2099b982122deb2184ab956)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #include "common.hxx"
25 #include "misc.hxx"
26 #include <xmlscript/xmldlg_imexp.hxx>
27 #include <xmlscript/xmllib_imexp.hxx>
28 #include <xmlscript/xmlmod_imexp.hxx>
29 #include <cppuhelper/implbase1.hxx>
30 #include <com/sun/star/uno/XComponentContext.hpp>
31 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
32 #include <com/sun/star/lang/XMultiComponentFactory.hpp>
33 #include <com/sun/star/container/XNameContainer.hpp>
34 #include <com/sun/star/beans/XPropertySet.hpp>
35 #include <com/sun/star/util/XNumberFormatsSupplier.hpp>
36 #include <com/sun/star/awt/XControlModel.hpp>
37 #include <com/sun/star/awt/FontDescriptor.hpp>
38 #include <com/sun/star/awt/FontEmphasisMark.hpp>
39 #include <com/sun/star/awt/FontRelief.hpp>
40 #include <com/sun/star/xml/input/XRoot.hpp>
41 #include <vector>
42 
43 
44 namespace css = ::com::sun::star;
45 
46 namespace xmlscript
47 {
48 
49 //
toInt32(::rtl::OUString const & rStr)50 inline sal_Int32 toInt32( ::rtl::OUString const & rStr ) SAL_THROW( () )
51 {
52     sal_Int32 nVal;
53     if (rStr.getLength() > 2 && rStr[ 0 ] == '0' && rStr[ 1 ] == 'x')
54         nVal = rStr.copy( 2 ).toInt32( 16 );
55     else
56         nVal = rStr.toInt32();
57     return nVal;
58 }
59 
getBoolAttr(sal_Bool * pRet,::rtl::OUString const & rAttrName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,sal_Int32 nUid)60 inline bool getBoolAttr(
61     sal_Bool * pRet, ::rtl::OUString const & rAttrName,
62     css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
63     sal_Int32 nUid )
64 {
65     ::rtl::OUString aValue( xAttributes->getValueByUidName( nUid, rAttrName ) );
66     if (aValue.getLength())
67     {
68         if (aValue.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("true") ))
69         {
70             *pRet = sal_True;
71             return true;
72         }
73         else if (aValue.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("false") ))
74         {
75             *pRet = sal_False;
76             return true;
77         }
78         else
79         {
80             throw css::xml::sax::SAXException(
81                 rAttrName + OUSTR(": no boolean value (true|false)!"),
82                 css::uno::Reference<css::uno::XInterface>(), css::uno::Any() );
83         }
84     }
85     return false;
86 }
87 
getStringAttr(::rtl::OUString * pRet,::rtl::OUString const & rAttrName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,sal_Int32 nUid)88 inline bool getStringAttr(
89     ::rtl::OUString * pRet, ::rtl::OUString const & rAttrName,
90     css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
91     sal_Int32 nUid )
92 {
93     *pRet = xAttributes->getValueByUidName( nUid, rAttrName );
94     return (pRet->getLength() > 0);
95 }
96 
getLongAttr(sal_Int32 * pRet,::rtl::OUString const & rAttrName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,sal_Int32 nUid)97 inline bool getLongAttr(
98     sal_Int32 * pRet, ::rtl::OUString const & rAttrName,
99     css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
100     sal_Int32 nUid )
101 {
102     ::rtl::OUString aValue( xAttributes->getValueByUidName( nUid, rAttrName ) );
103     if (aValue.getLength())
104     {
105         *pRet = toInt32( aValue );
106         return true;
107     }
108     return false;
109 }
110 
111 class ImportContext;
112 
113 //==============================================================================
114 struct DialogImport
115     : public ::cppu::WeakImplHelper1< css::xml::input::XRoot >
116 {
117     friend class ImportContext;
118 
119     css::uno::Reference< css::uno::XComponentContext > _xContext;
120     css::uno::Reference< css::util::XNumberFormatsSupplier > _xSupplier;
121 
122     ::std::vector< ::rtl::OUString > _styleNames;
123     ::std::vector< css::uno::Reference< css::xml::input::XElement > > _styles;
124 
125     css::uno::Reference< css::container::XNameContainer > _xDialogModel;
126     css::uno::Reference< css::lang::XMultiServiceFactory > _xDialogModelFactory;
127 
128     sal_Int32 XMLNS_DIALOGS_UID, XMLNS_SCRIPT_UID;
129 
130 public:
isEventElementxmlscript::DialogImport131     inline bool isEventElement(
132         sal_Int32 nUid, ::rtl::OUString const & rLocalName )
133     {
134         return ((XMLNS_SCRIPT_UID == nUid &&
135                  (rLocalName.equalsAsciiL(
136                      RTL_CONSTASCII_STRINGPARAM("event") ) ||
137                   rLocalName.equalsAsciiL(
138                       RTL_CONSTASCII_STRINGPARAM("listener-event") ))) ||
139                 (XMLNS_DIALOGS_UID == nUid &&
140                  rLocalName.equalsAsciiL(
141                      RTL_CONSTASCII_STRINGPARAM("event") )));
142     }
143 
144     void addStyle(
145         ::rtl::OUString const & rStyleId,
146         css::uno::Reference< css::xml::input::XElement > const & xStyle )
147         SAL_THROW( () );
148     css::uno::Reference< css::xml::input::XElement > getStyle(
149         ::rtl::OUString const & rStyleId ) const
150         SAL_THROW( () );
151 
152     inline css::uno::Reference< css::uno::XComponentContext >
getComponentContextxmlscript::DialogImport153     const & getComponentContext() SAL_THROW( () ) { return _xContext; }
154     css::uno::Reference< css::util::XNumberFormatsSupplier >
155     const & getNumberFormatsSupplier();
156 
DialogImportxmlscript::DialogImport157     inline DialogImport(
158         css::uno::Reference<css::uno::XComponentContext> const & xContext,
159         css::uno::Reference<css::container::XNameContainer>
160         const & xDialogModel )
161         SAL_THROW( () )
162         : _xContext( xContext )
163         , _xDialogModel( xDialogModel )
164         , _xDialogModelFactory( xDialogModel, css::uno::UNO_QUERY_THROW )
165         { OSL_ASSERT( _xDialogModel.is() && _xDialogModelFactory.is() &&
166                       _xContext.is() ); }
167     virtual ~DialogImport()
168         SAL_THROW( () );
169 
170     // XRoot
171     virtual void SAL_CALL startDocument(
172         css::uno::Reference< css::xml::input::XNamespaceMapping >
173         const & xNamespaceMapping );
174     virtual void SAL_CALL endDocument();
175     virtual void SAL_CALL processingInstruction(
176         ::rtl::OUString const & rTarget, ::rtl::OUString const & rData );
177     virtual void SAL_CALL setDocumentLocator(
178         css::uno::Reference< css::xml::sax::XLocator > const & xLocator );
179     virtual css::uno::Reference< css::xml::input::XElement >
180     SAL_CALL startRootElement(
181         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
182         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
183 };
184 
185 //==============================================================================
186 class ElementBase
187     : public ::cppu::WeakImplHelper1< css::xml::input::XElement >
188 {
189 protected:
190     DialogImport * _pImport;
191     ElementBase * _pParent;
192 
193     sal_Int32 _nUid;
194     ::rtl::OUString _aLocalName;
195     css::uno::Reference< css::xml::input::XAttributes > _xAttributes;
196 
197 public:
198     ElementBase(
199         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
200         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
201         ElementBase * pParent, DialogImport * pImport )
202         SAL_THROW( () );
203     virtual ~ElementBase()
204         SAL_THROW( () );
205 
206     // XElement
207     virtual css::uno::Reference<css::xml::input::XElement> SAL_CALL getParent();
208     virtual ::rtl::OUString SAL_CALL getLocalName();
209     virtual sal_Int32 SAL_CALL getUid();
210     virtual css::uno::Reference< css::xml::input::XAttributes >
211     SAL_CALL getAttributes();
212     virtual void SAL_CALL ignorableWhitespace(
213         ::rtl::OUString const & rWhitespaces );
214     virtual void SAL_CALL characters( ::rtl::OUString const & rChars );
215     virtual void SAL_CALL processingInstruction(
216         ::rtl::OUString const & Target, ::rtl::OUString const & Data );
217     virtual void SAL_CALL endElement();
218     virtual css::uno::Reference< css::xml::input::XElement >
219     SAL_CALL startChildElement(
220         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
221         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
222 };
223 
224 //==============================================================================
225 class StylesElement
226     : public ElementBase
227 {
228 public:
229     virtual css::uno::Reference< css::xml::input::XElement >
230     SAL_CALL startChildElement(
231         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
232         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
233 
StylesElement(::rtl::OUString const & rLocalName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,ElementBase * pParent,DialogImport * pImport)234     inline StylesElement(
235         ::rtl::OUString const & rLocalName,
236         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
237         ElementBase * pParent, DialogImport * pImport )
238         SAL_THROW( () )
239         : ElementBase( pImport->XMLNS_DIALOGS_UID,
240                        rLocalName, xAttributes, pParent, pImport )
241         {}
242 };
243 
244 //==============================================================================
245 class StyleElement
246     : public ElementBase
247 {
248     sal_Int32 _backgroundColor;
249     sal_Int32 _textColor;
250     sal_Int32 _textLineColor;
251     sal_Int16 _border;
252     sal_Int32 _borderColor;
253     css::awt::FontDescriptor _descr;
254     sal_Int16 _fontRelief;
255     sal_Int16 _fontEmphasisMark;
256     sal_Int32 _fillColor;
257     sal_Int16 _visualEffect;
258 
259     // current highest mask: 0x40
260     short _inited, _hasValue;
261 
262     void setFontProperties(
263         css::uno::Reference< css::beans::XPropertySet > const & xProps );
264 
265 public:
266     virtual css::uno::Reference< css::xml::input::XElement >
267     SAL_CALL startChildElement(
268         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
269         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
270     virtual void SAL_CALL endElement();
271 
272     bool importTextColorStyle(
273         css::uno::Reference< css::beans::XPropertySet > const & xProps );
274     bool importTextLineColorStyle(
275         css::uno::Reference< css::beans::XPropertySet > const & xProps );
276     bool importFillColorStyle(
277         css::uno::Reference< css::beans::XPropertySet > const & xProps );
278     bool importBackgroundColorStyle(
279         css::uno::Reference< css::beans::XPropertySet > const & xProps );
280     bool importFontStyle(
281         css::uno::Reference< css::beans::XPropertySet > const & xProps );
282     bool importBorderStyle(
283         css::uno::Reference< css::beans::XPropertySet > const & xProps );
284     bool importVisualEffectStyle(
285         css::uno::Reference< css::beans::XPropertySet > const & xProps );
286 
StyleElement(::rtl::OUString const & rLocalName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,ElementBase * pParent,DialogImport * pImport)287     inline StyleElement(
288         ::rtl::OUString const & rLocalName,
289         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
290         ElementBase * pParent, DialogImport * pImport )
291         SAL_THROW( () )
292         : ElementBase( pImport->XMLNS_DIALOGS_UID,
293                        rLocalName, xAttributes, pParent, pImport )
294         , _fontRelief( css::awt::FontRelief::NONE )
295         , _fontEmphasisMark( css::awt::FontEmphasisMark::NONE )
296         , _inited( 0 )
297         , _hasValue( 0 )
298         {}
299 };
300 
301 //==============================================================================
302 class MenuPopupElement
303     : public ElementBase
304 {
305     ::std::vector< ::rtl::OUString > _itemValues;
306     ::std::vector< sal_Int16 > _itemSelected;
307 public:
308     css::uno::Sequence< ::rtl::OUString > getItemValues();
309     css::uno::Sequence< sal_Int16 > getSelectedItems();
310 
311     virtual css::uno::Reference< css::xml::input::XElement >
312     SAL_CALL startChildElement(
313         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
314         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
315 
MenuPopupElement(::rtl::OUString const & rLocalName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,ElementBase * pParent,DialogImport * pImport)316     inline MenuPopupElement(
317         ::rtl::OUString const & rLocalName,
318         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
319         ElementBase * pParent, DialogImport * pImport )
320         SAL_THROW( () )
321         : ElementBase( pImport->XMLNS_DIALOGS_UID,
322                        rLocalName, xAttributes, pParent, pImport )
323         {}
324 };
325 
326 //==============================================================================
327 class ControlElement
328     : public ElementBase
329 {
330     friend class EventElement;
331 
332 protected:
333     sal_Int32 _nBasePosX, _nBasePosY;
334 
335     ::std::vector< css::uno::Reference< css::xml::input::XElement > > _events;
336 
337     ::rtl::OUString getControlId(
338         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
339     css::uno::Reference< css::xml::input::XElement > getStyle(
340         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
341 public:
getEvents()342     ::std::vector<css::uno::Reference< css::xml::input::XElement> > *getEvents()
343         SAL_THROW( () ) { return &_events; }
344 
345     ControlElement(
346         ::rtl::OUString const & rLocalName,
347         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
348         ElementBase * pParent, DialogImport * pImport )
349         SAL_THROW( () );
350 };
351 
352 //==============================================================================
353 class ImportContext
354 {
355 protected:
356     DialogImport * _pImport;
357     css::uno::Reference< css::beans::XPropertySet > _xControlModel;
358     ::rtl::OUString _aId;
359 
360 public:
ImportContext(DialogImport * pImport,css::uno::Reference<css::beans::XPropertySet> const & xControlModel_,::rtl::OUString const & id)361     inline ImportContext(
362         DialogImport * pImport,
363         css::uno::Reference< css::beans::XPropertySet > const & xControlModel_,
364         ::rtl::OUString const & id )
365         : _pImport( pImport ),
366           _xControlModel( xControlModel_ ),
367           _aId( id )
368         { OSL_ASSERT( _xControlModel.is() ); }
369 
getControlModel()370     inline css::uno::Reference< css::beans::XPropertySet > getControlModel()
371         { return _xControlModel; }
372 
373     void importDefaults(
374         sal_Int32 nBaseX, sal_Int32 nBaseY,
375         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
376         bool supportPrintable = true );
377     void importEvents(
378         ::std::vector< css::uno::Reference< css::xml::input::XElement > >
379         const & rEvents );
380 
381     bool importStringProperty(
382         ::rtl::OUString const & rPropName, ::rtl::OUString const & rAttrName,
383         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
384     bool importDoubleProperty(
385         ::rtl::OUString const & rPropName, ::rtl::OUString const & rAttrName,
386         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
387     bool importBooleanProperty(
388         ::rtl::OUString const & rPropName, ::rtl::OUString const & rAttrName,
389         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
390     bool importShortProperty(
391         ::rtl::OUString const & rPropName, ::rtl::OUString const & rAttrName,
392         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
393     bool importLongProperty(
394         ::rtl::OUString const & rPropName, ::rtl::OUString const & rAttrName,
395         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
396     bool importLongProperty(
397         sal_Int32 nOffset,
398         ::rtl::OUString const & rPropName, ::rtl::OUString const & rAttrName,
399         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
400     bool importHexLongProperty(
401         ::rtl::OUString const & rPropName, ::rtl::OUString const & rAttrName,
402         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
403     bool importAlignProperty(
404         ::rtl::OUString const & rPropName, ::rtl::OUString const & rAttrName,
405         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
406     bool importVerticalAlignProperty(
407         ::rtl::OUString const & rPropName, ::rtl::OUString const & rAttrName,
408         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
409     bool importImageAlignProperty(
410         ::rtl::OUString const & rPropName, ::rtl::OUString const & rAttrName,
411         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
412     bool importImagePositionProperty(
413         ::rtl::OUString const & rPropName, ::rtl::OUString const & rAttrName,
414         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
415     bool importDateFormatProperty(
416         ::rtl::OUString const & rPropName, ::rtl::OUString const & rAttrName,
417         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
418     bool importTimeFormatProperty(
419         ::rtl::OUString const & rPropName, ::rtl::OUString const & rAttrName,
420         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
421     bool importOrientationProperty(
422         ::rtl::OUString const & rPropName, ::rtl::OUString const & rAttrName,
423         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
424     bool importButtonTypeProperty(
425         ::rtl::OUString const & rPropName, ::rtl::OUString const & rAttrName,
426         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
427     bool importLineEndFormatProperty(
428         ::rtl::OUString const & rPropName, ::rtl::OUString const & rAttrName,
429         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
430     bool importSelectionTypeProperty(
431         ::rtl::OUString const & rPropName, ::rtl::OUString const & rAttrName,
432         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
433     bool importImageScaleModeProperty(
434         ::rtl::OUString const & rPropName, ::rtl::OUString const & rAttrName,
435         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
436 };
437 
438 //==============================================================================
439 class ControlImportContext : public ImportContext
440 {
441 public:
ControlImportContext(DialogImport * pImport,::rtl::OUString const & rId,::rtl::OUString const & rControlName)442     inline ControlImportContext(
443         DialogImport * pImport,
444         ::rtl::OUString const & rId, ::rtl::OUString const & rControlName )
445         : ImportContext(
446             pImport,
447             css::uno::Reference< css::beans::XPropertySet >(
448                 pImport->_xDialogModelFactory->createInstance( rControlName ),
449                 css::uno::UNO_QUERY_THROW ), rId )
450         {}
~ControlImportContext()451     inline ~ControlImportContext()
452     {
453         _pImport->_xDialogModel->insertByName(
454             _aId, css::uno::makeAny(
455                 css::uno::Reference<css::awt::XControlModel>::query(
456                     _xControlModel ) ) );
457     }
458 };
459 
460 //==============================================================================
461 class WindowElement
462     : public ControlElement
463 {
464 public:
465     virtual css::uno::Reference< css::xml::input::XElement >
466     SAL_CALL startChildElement(
467         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
468         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
469     virtual void SAL_CALL endElement();
470 
WindowElement(::rtl::OUString const & rLocalName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,ElementBase * pParent,DialogImport * pImport)471     inline WindowElement(
472         ::rtl::OUString const & rLocalName,
473         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
474         ElementBase * pParent, DialogImport * pImport )
475         SAL_THROW( () )
476         : ControlElement( rLocalName, xAttributes, pParent, pImport )
477         {}
478 };
479 
480 //==============================================================================
481 class EventElement
482     : public ElementBase
483 {
484 public:
485     virtual void SAL_CALL endElement();
486 
EventElement(sal_Int32 nUid,::rtl::OUString const & rLocalName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,ElementBase * pParent,DialogImport * pImport)487     inline EventElement(
488         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
489         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
490         ElementBase * pParent, DialogImport * pImport )
491         SAL_THROW( () )
492         : ElementBase( nUid, rLocalName, xAttributes, pParent, pImport )
493         {}
494 };
495 
496 //==============================================================================
497 class BulletinBoardElement
498     : public ControlElement
499 {
500 public:
501     virtual css::uno::Reference< css::xml::input::XElement >
502     SAL_CALL startChildElement(
503         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
504         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
505 
506     BulletinBoardElement(
507         ::rtl::OUString const & rLocalName,
508         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
509         ElementBase * pParent, DialogImport * pImport )
510         SAL_THROW( () );
511 };
512 
513 //==============================================================================
514 class ButtonElement
515     : public ControlElement
516 {
517 public:
518     virtual css::uno::Reference< css::xml::input::XElement >
519     SAL_CALL startChildElement(
520         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
521         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
522     virtual void SAL_CALL endElement();
523 
ButtonElement(::rtl::OUString const & rLocalName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,ElementBase * pParent,DialogImport * pImport)524     inline ButtonElement(
525         ::rtl::OUString const & rLocalName,
526         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
527         ElementBase * pParent, DialogImport * pImport )
528         SAL_THROW( () )
529         : ControlElement( rLocalName, xAttributes, pParent, pImport )
530         {}
531 };
532 
533 //==============================================================================
534 class CheckBoxElement
535     : public ControlElement
536 {
537 public:
538     virtual css::uno::Reference< css::xml::input::XElement >
539     SAL_CALL startChildElement(
540         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
541         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
542     virtual void SAL_CALL endElement();
543 
CheckBoxElement(::rtl::OUString const & rLocalName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,ElementBase * pParent,DialogImport * pImport)544     inline CheckBoxElement(
545         ::rtl::OUString const & rLocalName,
546         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
547         ElementBase * pParent, DialogImport * pImport )
548         SAL_THROW( () )
549         : ControlElement( rLocalName, xAttributes, pParent, pImport )
550         {}
551 };
552 
553 //==============================================================================
554 class ComboBoxElement
555     : public ControlElement
556 {
557     css::uno::Reference< css::xml::input::XElement > _popup;
558 public:
559     virtual css::uno::Reference< css::xml::input::XElement >
560     SAL_CALL startChildElement(
561         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
562         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
563     virtual void SAL_CALL endElement();
564 
ComboBoxElement(::rtl::OUString const & rLocalName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,ElementBase * pParent,DialogImport * pImport)565     inline ComboBoxElement(
566         ::rtl::OUString const & rLocalName,
567         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
568         ElementBase * pParent, DialogImport * pImport )
569         SAL_THROW( () )
570         : ControlElement( rLocalName, xAttributes, pParent, pImport )
571         {}
572 };
573 
574 //==============================================================================
575 class MenuListElement
576     : public ControlElement
577 {
578     css::uno::Reference< css::xml::input::XElement > _popup;
579 public:
580     virtual css::uno::Reference< css::xml::input::XElement >
581     SAL_CALL startChildElement(
582         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
583         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
584     virtual void SAL_CALL endElement();
585 
MenuListElement(::rtl::OUString const & rLocalName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,ElementBase * pParent,DialogImport * pImport)586     inline MenuListElement(
587         ::rtl::OUString const & rLocalName,
588         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
589         ElementBase * pParent, DialogImport * pImport )
590         SAL_THROW( () )
591         : ControlElement( rLocalName, xAttributes, pParent, pImport )
592         {}
593 };
594 
595 //==============================================================================
596 class RadioElement
597     : public ControlElement
598 {
599 public:
600     virtual css::uno::Reference< css::xml::input::XElement >
601     SAL_CALL startChildElement(
602         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
603         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
604 
RadioElement(::rtl::OUString const & rLocalName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,ElementBase * pParent,DialogImport * pImport)605     inline RadioElement(
606         ::rtl::OUString const & rLocalName,
607         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
608         ElementBase * pParent, DialogImport * pImport )
609         SAL_THROW( () )
610         : ControlElement( rLocalName, xAttributes, pParent, pImport )
611         {}
612 };
613 
614 //==============================================================================
615 class RadioGroupElement
616     : public ControlElement
617 {
618     ::std::vector< css::uno::Reference< css::xml::input::XElement > > _radios;
619 public:
620     virtual css::uno::Reference< css::xml::input::XElement >
621     SAL_CALL startChildElement(
622         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
623         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
624     void SAL_CALL endElement();
625 
RadioGroupElement(::rtl::OUString const & rLocalName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,ElementBase * pParent,DialogImport * pImport)626     inline RadioGroupElement(
627         ::rtl::OUString const & rLocalName,
628         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
629         ElementBase * pParent, DialogImport * pImport )
630         SAL_THROW( () )
631         : ControlElement( rLocalName, xAttributes, pParent, pImport )
632         {}
633 };
634 
635 //==============================================================================
636 class TitledBoxElement
637     : public BulletinBoardElement
638 {
639     ::rtl::OUString _label;
640     ::std::vector< css::uno::Reference< css::xml::input::XElement > > _radios;
641 public:
642     virtual css::uno::Reference< css::xml::input::XElement >
643     SAL_CALL startChildElement(
644         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
645         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
646     virtual void SAL_CALL endElement();
647 
TitledBoxElement(::rtl::OUString const & rLocalName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,ElementBase * pParent,DialogImport * pImport)648     inline TitledBoxElement(
649         ::rtl::OUString const & rLocalName,
650         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
651         ElementBase * pParent, DialogImport * pImport )
652         SAL_THROW( () )
653         : BulletinBoardElement( rLocalName, xAttributes, pParent, pImport )
654         {}
655 };
656 
657 //==============================================================================
658 class TextElement
659     : public ControlElement
660 {
661 public:
662     virtual css::uno::Reference< css::xml::input::XElement >
663     SAL_CALL startChildElement(
664         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
665         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
666     virtual void SAL_CALL endElement();
667 
TextElement(::rtl::OUString const & rLocalName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,ElementBase * pParent,DialogImport * pImport)668     inline TextElement(
669         ::rtl::OUString const & rLocalName,
670         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
671         ElementBase * pParent, DialogImport * pImport )
672         SAL_THROW( () )
673         : ControlElement( rLocalName, xAttributes, pParent, pImport )
674         {}
675 };
676 //==============================================================================
677 class FixedHyperLinkElement
678     : public ControlElement
679 {
680 public:
681     virtual css::uno::Reference< css::xml::input::XElement >
682     SAL_CALL startChildElement(
683         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
684         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
685     virtual void SAL_CALL endElement();
686 
FixedHyperLinkElement(::rtl::OUString const & rLocalName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,ElementBase * pParent,DialogImport * pImport)687     inline FixedHyperLinkElement(
688         ::rtl::OUString const & rLocalName,
689         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
690         ElementBase * pParent, DialogImport * pImport )
691         SAL_THROW( () )
692         : ControlElement( rLocalName, xAttributes, pParent, pImport )
693         {}
694 };
695 //==============================================================================
696 class TextFieldElement
697     : public ControlElement
698 {
699 public:
700     virtual css::uno::Reference< css::xml::input::XElement >
701     SAL_CALL startChildElement(
702         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
703         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
704     virtual void SAL_CALL endElement();
705 
TextFieldElement(::rtl::OUString const & rLocalName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,ElementBase * pParent,DialogImport * pImport)706     inline TextFieldElement(
707         ::rtl::OUString const & rLocalName,
708         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
709         ElementBase * pParent, DialogImport * pImport )
710         SAL_THROW( () )
711         : ControlElement( rLocalName, xAttributes, pParent, pImport )
712         {}
713 };
714 
715 //==============================================================================
716 class ImageControlElement
717     : public ControlElement
718 {
719 public:
720     virtual css::uno::Reference< css::xml::input::XElement >
721     SAL_CALL startChildElement(
722         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
723         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
724     virtual void SAL_CALL endElement();
725 
ImageControlElement(::rtl::OUString const & rLocalName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,ElementBase * pParent,DialogImport * pImport)726     inline ImageControlElement(
727         ::rtl::OUString const & rLocalName,
728         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
729         ElementBase * pParent, DialogImport * pImport )
730         SAL_THROW( () )
731         : ControlElement( rLocalName, xAttributes, pParent, pImport )
732         {}
733 };
734 
735 //==============================================================================
736 class FileControlElement
737     : public ControlElement
738 {
739 public:
740     virtual css::uno::Reference< css::xml::input::XElement >
741     SAL_CALL startChildElement(
742         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
743         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
744     virtual void SAL_CALL endElement();
745 
FileControlElement(::rtl::OUString const & rLocalName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,ElementBase * pParent,DialogImport * pImport)746     inline FileControlElement(
747         ::rtl::OUString const & rLocalName,
748         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
749         ElementBase * pParent, DialogImport * pImport )
750         SAL_THROW( () )
751         : ControlElement( rLocalName, xAttributes, pParent, pImport )
752         {}
753 };
754 
755 //==============================================================================
756 class TreeControlElement
757     : public ControlElement
758 {
759 public:
760     virtual css::uno::Reference< css::xml::input::XElement >
761     SAL_CALL startChildElement(
762         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
763         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
764     virtual void SAL_CALL endElement();
765 
TreeControlElement(::rtl::OUString const & rLocalName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,ElementBase * pParent,DialogImport * pImport)766     inline TreeControlElement(
767         ::rtl::OUString const & rLocalName,
768         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
769         ElementBase * pParent, DialogImport * pImport )
770         SAL_THROW( () )
771         : ControlElement( rLocalName, xAttributes, pParent, pImport )
772         {}
773 };
774 
775 //==============================================================================
776 class CurrencyFieldElement
777     : public ControlElement
778 {
779 public:
780     virtual css::uno::Reference< css::xml::input::XElement >
781     SAL_CALL startChildElement(
782         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
783         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
784     virtual void SAL_CALL endElement();
785 
CurrencyFieldElement(::rtl::OUString const & rLocalName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,ElementBase * pParent,DialogImport * pImport)786     inline CurrencyFieldElement(
787         ::rtl::OUString const & rLocalName,
788         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
789         ElementBase * pParent, DialogImport * pImport )
790         SAL_THROW( () )
791         : ControlElement( rLocalName, xAttributes, pParent, pImport )
792         {}
793 };
794 
795 //==============================================================================
796 class DateFieldElement
797     : public ControlElement
798 {
799 public:
800     virtual css::uno::Reference< css::xml::input::XElement >
801     SAL_CALL startChildElement(
802         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
803         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
804     virtual void SAL_CALL endElement();
805 
DateFieldElement(::rtl::OUString const & rLocalName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,ElementBase * pParent,DialogImport * pImport)806     inline DateFieldElement(
807         ::rtl::OUString const & rLocalName,
808         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
809         ElementBase * pParent, DialogImport * pImport )
810         SAL_THROW( () )
811         : ControlElement( rLocalName, xAttributes, pParent, pImport )
812         {}
813 };
814 
815 //==============================================================================
816 class NumericFieldElement
817     : public ControlElement
818 {
819 public:
820     virtual css::uno::Reference< css::xml::input::XElement >
821     SAL_CALL startChildElement(
822         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
823         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
824     virtual void SAL_CALL endElement();
825 
NumericFieldElement(::rtl::OUString const & rLocalName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,ElementBase * pParent,DialogImport * pImport)826     inline NumericFieldElement(
827         ::rtl::OUString const & rLocalName,
828         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
829         ElementBase * pParent, DialogImport * pImport )
830         SAL_THROW( () )
831         : ControlElement( rLocalName, xAttributes, pParent, pImport )
832         {}
833 };
834 
835 //==============================================================================
836 class TimeFieldElement
837     : public ControlElement
838 {
839 public:
840     virtual css::uno::Reference< css::xml::input::XElement >
841     SAL_CALL startChildElement(
842         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
843         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
844     virtual void SAL_CALL endElement();
845 
TimeFieldElement(::rtl::OUString const & rLocalName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,ElementBase * pParent,DialogImport * pImport)846     inline TimeFieldElement(
847         ::rtl::OUString const & rLocalName,
848         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
849         ElementBase * pParent, DialogImport * pImport )
850         SAL_THROW( () )
851         : ControlElement( rLocalName, xAttributes, pParent, pImport )
852         {}
853 };
854 
855 //==============================================================================
856 class PatternFieldElement
857     : public ControlElement
858 {
859 public:
860     virtual css::uno::Reference< css::xml::input::XElement >
861     SAL_CALL startChildElement(
862         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
863         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
864     virtual void SAL_CALL endElement();
865 
PatternFieldElement(::rtl::OUString const & rLocalName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,ElementBase * pParent,DialogImport * pImport)866     inline PatternFieldElement(
867         ::rtl::OUString const & rLocalName,
868         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
869         ElementBase * pParent, DialogImport * pImport )
870         SAL_THROW( () )
871         : ControlElement( rLocalName, xAttributes, pParent, pImport )
872         {}
873 };
874 
875 //==============================================================================
876 class FormattedFieldElement
877     : public ControlElement
878 {
879 public:
880     virtual css::uno::Reference< css::xml::input::XElement >
881     SAL_CALL startChildElement(
882         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
883         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
884     virtual void SAL_CALL endElement();
885 
FormattedFieldElement(::rtl::OUString const & rLocalName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,ElementBase * pParent,DialogImport * pImport)886     inline FormattedFieldElement(
887         ::rtl::OUString const & rLocalName,
888         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
889         ElementBase * pParent, DialogImport * pImport )
890         SAL_THROW( () )
891         : ControlElement( rLocalName, xAttributes, pParent, pImport )
892         {}
893 };
894 
895 //==============================================================================
896 class FixedLineElement
897     : public ControlElement
898 {
899 public:
900     virtual css::uno::Reference< css::xml::input::XElement >
901     SAL_CALL startChildElement(
902         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
903         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
904     virtual void SAL_CALL endElement();
905 
FixedLineElement(::rtl::OUString const & rLocalName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,ElementBase * pParent,DialogImport * pImport)906     inline FixedLineElement(
907         ::rtl::OUString const & rLocalName,
908         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
909         ElementBase * pParent, DialogImport * pImport )
910         SAL_THROW( () )
911         : ControlElement( rLocalName, xAttributes, pParent, pImport )
912         {}
913 };
914 
915 //==============================================================================
916 class ScrollBarElement
917     : public ControlElement
918 {
919 public:
920     virtual css::uno::Reference< css::xml::input::XElement >
921     SAL_CALL startChildElement(
922         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
923         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
924     virtual void SAL_CALL endElement();
925 
ScrollBarElement(::rtl::OUString const & rLocalName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,ElementBase * pParent,DialogImport * pImport)926     inline ScrollBarElement(
927         ::rtl::OUString const & rLocalName,
928         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
929         ElementBase * pParent, DialogImport * pImport )
930         SAL_THROW( () )
931         : ControlElement( rLocalName, xAttributes, pParent, pImport )
932         {}
933 };
934 
935 //==============================================================================
936 class ProgressBarElement
937     : public ControlElement
938 {
939 public:
940     virtual css::uno::Reference< css::xml::input::XElement >
941     SAL_CALL startChildElement(
942         sal_Int32 nUid, ::rtl::OUString const & rLocalName,
943         css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
944     virtual void SAL_CALL endElement();
945 
ProgressBarElement(::rtl::OUString const & rLocalName,css::uno::Reference<css::xml::input::XAttributes> const & xAttributes,ElementBase * pParent,DialogImport * pImport)946     inline ProgressBarElement(
947         ::rtl::OUString const & rLocalName,
948         css::uno::Reference< css::xml::input::XAttributes > const & xAttributes,
949         ElementBase * pParent, DialogImport * pImport )
950         SAL_THROW( () )
951         : ControlElement( rLocalName, xAttributes, pParent, pImport )
952         {}
953 };
954 
955 }
956