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