xref: /AOO41X/main/xmlscript/source/xmldlg_imexp/xmldlg_impmodels.cxx (revision e1d5bd03a6ea7ac2b26b792c9e2a94e9f347a43b)
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 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_xmlscript.hxx"
26 #include "imp_share.hxx"
27 
28 #include <com/sun/star/beans/XPropertySet.hpp>
29 #include <com/sun/star/beans/XPropertyState.hpp>
30 
31 
32 using namespace ::com::sun::star;
33 using namespace ::com::sun::star::uno;
34 using ::rtl::OUString;
35 
36 namespace xmlscript
37 {
38 
39 // progessmeter
40 //__________________________________________________________________________________________________
startChildElement(sal_Int32 nUid,OUString const & rLocalName,Reference<xml::input::XAttributes> const & xAttributes)41 Reference< xml::input::XElement > ProgressBarElement::startChildElement(
42     sal_Int32 nUid, OUString const & rLocalName,
43     Reference< xml::input::XAttributes > const & xAttributes )
44     throw (xml::sax::SAXException, RuntimeException)
45 {
46     // event
47     if (_pImport->isEventElement( nUid, rLocalName ))
48     {
49         return new EventElement(
50             nUid, rLocalName, xAttributes, this, _pImport );
51     }
52     else
53     {
54         throw xml::sax::SAXException(
55             OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ),
56             Reference< XInterface >(), Any() );
57     }
58 }
59 //__________________________________________________________________________________________________
endElement()60 void ProgressBarElement::endElement()
61     throw (xml::sax::SAXException, RuntimeException)
62 {
63     ControlImportContext ctx(
64         _pImport, getControlId( _xAttributes ),
65         OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlProgressBarModel") ) );
66 
67     Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
68     if (xStyle.is())
69     {
70         StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
71         Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
72         pStyle->importBackgroundColorStyle( xControlModel );
73         pStyle->importBorderStyle( xControlModel );
74         pStyle->importFillColorStyle( xControlModel );
75     }
76 
77     ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
78     ctx.importLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ProgressValue") ),
79                             OUString( RTL_CONSTASCII_USTRINGPARAM("value") ),
80                             _xAttributes );
81     ctx.importLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ProgressValueMin") ),
82                             OUString( RTL_CONSTASCII_USTRINGPARAM("value-min") ),
83                             _xAttributes );
84     ctx.importLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ProgressValueMax") ),
85                             OUString( RTL_CONSTASCII_USTRINGPARAM("value-max") ),
86                             _xAttributes );
87     ctx.importEvents( _events );
88     // avoid ring-reference:
89     // vector< event elements > holding event elements holding this (via _pParent)
90     _events.clear();
91 }
92 
93 //##################################################################################################
94 
95 // scrollbar
96 //__________________________________________________________________________________________________
startChildElement(sal_Int32 nUid,OUString const & rLocalName,Reference<xml::input::XAttributes> const & xAttributes)97 Reference< xml::input::XElement > ScrollBarElement::startChildElement(
98     sal_Int32 nUid, OUString const & rLocalName,
99     Reference< xml::input::XAttributes > const & xAttributes )
100     throw (xml::sax::SAXException, RuntimeException)
101 {
102     // event
103     if (_pImport->isEventElement( nUid, rLocalName ))
104     {
105         return new EventElement( nUid, rLocalName, xAttributes, this, _pImport );
106     }
107     else
108     {
109         throw xml::sax::SAXException(
110             OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ),
111             Reference< XInterface >(), Any() );
112     }
113 }
114 //__________________________________________________________________________________________________
endElement()115 void ScrollBarElement::endElement()
116     throw (xml::sax::SAXException, RuntimeException)
117 {
118     ControlImportContext ctx(
119         _pImport, getControlId( _xAttributes ),
120         OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlScrollBarModel") ) );
121 
122     Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
123     if (xStyle.is())
124     {
125         StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
126         Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
127         pStyle->importBackgroundColorStyle( xControlModel );
128         pStyle->importBorderStyle( xControlModel );
129     }
130 
131     ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
132     ctx.importOrientationProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Orientation") ),
133                                    OUString( RTL_CONSTASCII_USTRINGPARAM("align") ),
134                                    _xAttributes );
135     ctx.importLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("BlockIncrement") ),
136                             OUString( RTL_CONSTASCII_USTRINGPARAM("pageincrement") ),
137                             _xAttributes );
138     ctx.importLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("LineIncrement") ),
139                             OUString( RTL_CONSTASCII_USTRINGPARAM("increment") ),
140                             _xAttributes );
141     ctx.importLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ScrollValue") ),
142                             OUString( RTL_CONSTASCII_USTRINGPARAM("curpos") ),
143                             _xAttributes );
144     ctx.importLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ScrollValueMax") ),
145                             OUString( RTL_CONSTASCII_USTRINGPARAM("maxpos") ),
146                             _xAttributes );
147     ctx.importLongProperty( OUSTR("ScrollValueMin"), OUSTR("minpos"),
148                             _xAttributes );
149     ctx.importLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("VisibleSize") ),
150                             OUString( RTL_CONSTASCII_USTRINGPARAM("visible-size") ),
151                             _xAttributes );
152     ctx.importLongProperty( OUSTR("RepeatDelay"), OUSTR("repeat"),
153                             _xAttributes );
154     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ),
155                                OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ),
156                                _xAttributes );
157     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("LiveScroll") ),
158                                OUString( RTL_CONSTASCII_USTRINGPARAM("live-scroll") ),
159                                _xAttributes );
160     ctx.importHexLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("SymbolColor") ),
161                                OUString( RTL_CONSTASCII_USTRINGPARAM("symbol-color") ),
162                                _xAttributes );
163 
164     ctx.importEvents( _events );
165     // avoid ring-reference:
166     // vector< event elements > holding event elements holding this (via _pParent)
167     _events.clear();
168 }
169 
170 //##################################################################################################
171 
172 // fixedline
173 //__________________________________________________________________________________________________
startChildElement(sal_Int32 nUid,OUString const & rLocalName,Reference<xml::input::XAttributes> const & xAttributes)174 Reference< xml::input::XElement > FixedLineElement::startChildElement(
175     sal_Int32 nUid, OUString const & rLocalName,
176     Reference< xml::input::XAttributes > const & xAttributes )
177     throw (xml::sax::SAXException, RuntimeException)
178 {
179     // event
180     if (_pImport->isEventElement( nUid, rLocalName ))
181     {
182         return new EventElement( nUid, rLocalName, xAttributes, this, _pImport );
183     }
184     else
185     {
186         throw xml::sax::SAXException(
187             OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ),
188             Reference< XInterface >(), Any() );
189     }
190 }
191 //__________________________________________________________________________________________________
endElement()192 void FixedLineElement::endElement()
193     throw (xml::sax::SAXException, RuntimeException)
194 {
195     ControlImportContext ctx(
196         _pImport, getControlId( _xAttributes ),
197         OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlFixedLineModel") ) );
198 
199     Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
200     if (xStyle.is())
201     {
202         StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
203         Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
204         pStyle->importTextColorStyle( xControlModel );
205         pStyle->importTextLineColorStyle( xControlModel );
206         pStyle->importFontStyle( xControlModel );
207     }
208 
209     ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
210     ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Label") ),
211                               OUString( RTL_CONSTASCII_USTRINGPARAM("value") ),
212                               _xAttributes );
213     ctx.importOrientationProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Orientation") ),
214                                    OUString( RTL_CONSTASCII_USTRINGPARAM("align") ),
215                                    _xAttributes );
216     ctx.importEvents( _events );
217     // avoid ring-reference:
218     // vector< event elements > holding event elements holding this (via _pParent)
219     _events.clear();
220 }
221 
222 //##################################################################################################
223 
224 // patternfield
225 //__________________________________________________________________________________________________
startChildElement(sal_Int32 nUid,OUString const & rLocalName,Reference<xml::input::XAttributes> const & xAttributes)226 Reference< xml::input::XElement > PatternFieldElement::startChildElement(
227     sal_Int32 nUid, OUString const & rLocalName,
228     Reference< xml::input::XAttributes > const & xAttributes )
229     throw (xml::sax::SAXException, RuntimeException)
230 {
231     // event
232     if (_pImport->isEventElement( nUid, rLocalName ))
233     {
234         return new EventElement( nUid, rLocalName, xAttributes, this, _pImport );
235     }
236     else
237     {
238         throw xml::sax::SAXException(
239             OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ),
240             Reference< XInterface >(), Any() );
241     }
242 }
243 //__________________________________________________________________________________________________
endElement()244 void PatternFieldElement::endElement()
245     throw (xml::sax::SAXException, RuntimeException)
246 {
247     ControlImportContext ctx(
248         _pImport, getControlId( _xAttributes ),
249         OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlPatternFieldModel") ) );
250 
251     Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
252     if (xStyle.is())
253     {
254         StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
255         Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
256         pStyle->importBackgroundColorStyle( xControlModel );
257         pStyle->importTextColorStyle( xControlModel );
258         pStyle->importTextLineColorStyle( xControlModel );
259         pStyle->importBorderStyle( xControlModel );
260         pStyle->importFontStyle( xControlModel );
261     }
262 
263     ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
264     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ),
265                                OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ),
266                                _xAttributes );
267     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ReadOnly") ),
268                                OUString( RTL_CONSTASCII_USTRINGPARAM("readonly") ),
269                                _xAttributes );
270     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("StrictFormat") ),
271                                OUString( RTL_CONSTASCII_USTRINGPARAM("strict-format") ),
272                                _xAttributes );
273     ctx.importBooleanProperty(
274         OUSTR("HideInactiveSelection"), OUSTR("hide-inactive-selection"),
275         _xAttributes );
276     ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Text") ),
277                               OUString( RTL_CONSTASCII_USTRINGPARAM("value") ),
278                               _xAttributes );
279     ctx.importShortProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("MaxTextLen") ),
280                              OUString( RTL_CONSTASCII_USTRINGPARAM("maxlength") ),
281                              _xAttributes );
282     ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("EditMask") ),
283                               OUString( RTL_CONSTASCII_USTRINGPARAM("edit-mask") ),
284                               _xAttributes );
285     ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("LiteralMask") ),
286                               OUString( RTL_CONSTASCII_USTRINGPARAM("literal-mask") ),
287                               _xAttributes );
288     ctx.importEvents( _events );
289     // avoid ring-reference:
290     // vector< event elements > holding event elements holding this (via _pParent)
291     _events.clear();
292 }
293 
294 //##################################################################################################
295 
296 // formattedfield
297 //__________________________________________________________________________________________________
startChildElement(sal_Int32 nUid,OUString const & rLocalName,Reference<xml::input::XAttributes> const & xAttributes)298 Reference< xml::input::XElement > FormattedFieldElement::startChildElement(
299     sal_Int32 nUid, OUString const & rLocalName,
300     Reference< xml::input::XAttributes > const & xAttributes )
301     throw (xml::sax::SAXException, RuntimeException)
302 {
303     // event
304     if (_pImport->isEventElement( nUid, rLocalName ))
305     {
306         return new EventElement( nUid, rLocalName, xAttributes, this, _pImport );
307     }
308     else
309     {
310         throw xml::sax::SAXException(
311             OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ),
312             Reference< XInterface >(), Any() );
313     }
314 }
315 //__________________________________________________________________________________________________
endElement()316 void FormattedFieldElement::endElement()
317     throw (xml::sax::SAXException, RuntimeException)
318 {
319     ControlImportContext ctx(
320         _pImport, getControlId( _xAttributes ),
321         OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlFormattedFieldModel") ) );
322 
323     Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
324     if (xStyle.is())
325     {
326         StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
327         Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
328         pStyle->importBackgroundColorStyle( xControlModel );
329         pStyle->importTextColorStyle( xControlModel );
330         pStyle->importTextLineColorStyle( xControlModel );
331         pStyle->importBorderStyle( xControlModel );
332         pStyle->importFontStyle( xControlModel );
333     }
334 
335     ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
336     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ),
337                                OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ),
338                                _xAttributes );
339     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ReadOnly") ),
340                                OUString( RTL_CONSTASCII_USTRINGPARAM("readonly") ),
341                                _xAttributes );
342     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("StrictFormat") ),
343                                OUString( RTL_CONSTASCII_USTRINGPARAM("strict-format") ),
344                                _xAttributes );
345     ctx.importBooleanProperty(
346         OUSTR("HideInactiveSelection"), OUSTR("hide-inactive-selection"),
347         _xAttributes );
348     ctx.importAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Align") ),
349                              OUString( RTL_CONSTASCII_USTRINGPARAM("align") ),
350                              _xAttributes );
351     ctx.importDoubleProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("EffectiveMin") ),
352                               OUString( RTL_CONSTASCII_USTRINGPARAM("value-min") ),
353                               _xAttributes );
354     ctx.importDoubleProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("EffectiveMax") ),
355                               OUString( RTL_CONSTASCII_USTRINGPARAM("value-max") ),
356                               _xAttributes );
357     ctx.importDoubleProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("EffectiveValue") ),
358                               OUString( RTL_CONSTASCII_USTRINGPARAM("value") ),
359                               _xAttributes );
360     ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Text") ),
361                               OUString( RTL_CONSTASCII_USTRINGPARAM("text") ),
362                               _xAttributes );
363     ctx.importShortProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("MaxTextLen") ),
364                              OUString( RTL_CONSTASCII_USTRINGPARAM("maxlength") ),
365                              _xAttributes );
366     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Spin") ),
367                                OUString( RTL_CONSTASCII_USTRINGPARAM("spin") ),
368                                _xAttributes );
369     if (ctx.importLongProperty( OUSTR("RepeatDelay"), OUSTR("repeat"),
370                                 _xAttributes ))
371         ctx.getControlModel()->setPropertyValue(
372             OUSTR("Repeat"), makeAny(true) );
373 
374     OUString sDefault(
375         _xAttributes->getValueByUidName(
376             _pImport->XMLNS_DIALOGS_UID,
377             OUString( RTL_CONSTASCII_USTRINGPARAM("value-default") ) ) );
378     if (sDefault.getLength())
379     {
380         double d = sDefault.toDouble();
381         if (d != 0.0 ||
382             sDefault.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("0") ) ||
383             sDefault.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("0.0") ))
384         {
385             ctx.getControlModel()->setPropertyValue(
386                 OUString( RTL_CONSTASCII_USTRINGPARAM("EffectiveDefault") ),
387                 makeAny( d ) );
388         }
389         else // treat as string
390         {
391             ctx.getControlModel()->setPropertyValue(
392                 OUString( RTL_CONSTASCII_USTRINGPARAM("EffectiveDefault") ),
393                 makeAny( sDefault ) );
394         }
395     }
396 
397     // format spec
398     ctx.getControlModel()->setPropertyValue(
399         OUString( RTL_CONSTASCII_USTRINGPARAM("FormatsSupplier") ),
400         makeAny( _pImport->getNumberFormatsSupplier() ) );
401 
402     OUString sFormat(
403         _xAttributes->getValueByUidName(
404             _pImport->XMLNS_DIALOGS_UID,
405             OUString( RTL_CONSTASCII_USTRINGPARAM("format-code") ) ) );
406     if (sFormat.getLength())
407     {
408         lang::Locale locale;
409 
410         OUString sLocale(
411             _xAttributes->getValueByUidName(
412                 _pImport->XMLNS_DIALOGS_UID,
413                 OUString( RTL_CONSTASCII_USTRINGPARAM("format-locale") ) ) );
414         if (sLocale.getLength())
415         {
416             // split locale
417             sal_Int32 semi0 = sLocale.indexOf( ';' );
418             if (semi0 < 0) // no semi at all, just try language
419             {
420                 locale.Language = sLocale;
421             }
422             else
423             {
424                 sal_Int32 semi1 = sLocale.indexOf( ';', semi0 +1 );
425                 if (semi1 > semi0) // language;country;variant
426                 {
427                     locale.Language = sLocale.copy( 0, semi0 );
428                     locale.Country = sLocale.copy( semi0 +1, semi1 - semi0 -1 );
429                     locale.Variant = sLocale.copy( semi1 +1 );
430                 }
431                 else // try language;country
432                 {
433                     locale.Language = sLocale.copy( 0, semi0 );
434                     locale.Country = sLocale.copy( semi0 +1 );
435                 }
436             }
437         }
438 
439         try
440         {
441             Reference< util::XNumberFormats > xFormats(
442                 _pImport->getNumberFormatsSupplier()->getNumberFormats() );
443             sal_Int32 nKey = xFormats->queryKey( sFormat, locale, sal_True );
444             if (-1 == nKey)
445             {
446                 nKey = xFormats->addNew( sFormat, locale );
447             }
448             ctx.getControlModel()->setPropertyValue(
449                 OUString( RTL_CONSTASCII_USTRINGPARAM("FormatKey") ), makeAny( nKey ) );
450         }
451         catch (util::MalformedNumberFormatException & exc)
452         {
453             OSL_ENSURE( 0, "### util::MalformedNumberFormatException occured!" );
454             // rethrow
455             throw xml::sax::SAXException( exc.Message, Reference< XInterface >(), Any() );
456         }
457     }
458     ctx.importBooleanProperty(
459         OUString( RTL_CONSTASCII_USTRINGPARAM("TreatAsNumber") ),
460         OUString( RTL_CONSTASCII_USTRINGPARAM("treat-as-number") ),
461         _xAttributes );
462     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("EnforceFormat") ),
463                                OUString( RTL_CONSTASCII_USTRINGPARAM("enforce-format") ),
464                                _xAttributes );
465 
466     ctx.importEvents( _events );
467     // avoid ring-reference:
468     // vector< event elements > holding event elements holding this (via _pParent)
469     _events.clear();
470 }
471 
472 //##################################################################################################
473 
474 // timefield
475 //__________________________________________________________________________________________________
startChildElement(sal_Int32 nUid,OUString const & rLocalName,Reference<xml::input::XAttributes> const & xAttributes)476 Reference< xml::input::XElement > TimeFieldElement::startChildElement(
477     sal_Int32 nUid, OUString const & rLocalName,
478     Reference< xml::input::XAttributes > const & xAttributes )
479     throw (xml::sax::SAXException, RuntimeException)
480 {
481     // event
482     if (_pImport->isEventElement( nUid, rLocalName ))
483     {
484         return new EventElement( nUid, rLocalName, xAttributes, this, _pImport );
485     }
486     else
487     {
488         throw xml::sax::SAXException(
489             OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ),
490             Reference< XInterface >(), Any() );
491     }
492 }
493 //__________________________________________________________________________________________________
endElement()494 void TimeFieldElement::endElement()
495     throw (xml::sax::SAXException, RuntimeException)
496 {
497     ControlImportContext ctx(
498         _pImport, getControlId( _xAttributes ),
499         OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlTimeFieldModel") ) );
500 
501     Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
502     if (xStyle.is())
503     {
504         StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
505         Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
506         pStyle->importBackgroundColorStyle( xControlModel );
507         pStyle->importTextColorStyle( xControlModel );
508         pStyle->importTextLineColorStyle( xControlModel );
509         pStyle->importBorderStyle( xControlModel );
510         pStyle->importFontStyle( xControlModel );
511     }
512 
513     ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
514     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ),
515                                OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ),
516                                _xAttributes );
517     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ReadOnly") ),
518                                OUString( RTL_CONSTASCII_USTRINGPARAM("readonly") ),
519                                _xAttributes );
520     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("StrictFormat") ),
521                                OUString( RTL_CONSTASCII_USTRINGPARAM("strict-format") ),
522                                _xAttributes );
523     ctx.importBooleanProperty(
524         OUSTR("HideInactiveSelection"), OUSTR("hide-inactive-selection"),
525         _xAttributes );
526     ctx.importTimeFormatProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("TimeFormat") ),
527                                   OUString( RTL_CONSTASCII_USTRINGPARAM("time-format") ),
528                                   _xAttributes );
529     ctx.importLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Time") ),
530                             OUString( RTL_CONSTASCII_USTRINGPARAM("value") ),
531                             _xAttributes );
532     ctx.importLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("TimeMin") ),
533                             OUString( RTL_CONSTASCII_USTRINGPARAM("value-min") ),
534                             _xAttributes );
535     ctx.importLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("TimeMax") ),
536                             OUString( RTL_CONSTASCII_USTRINGPARAM("value-max") ),
537                             _xAttributes );
538     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Spin") ),
539                                OUString( RTL_CONSTASCII_USTRINGPARAM("spin") ),
540                                _xAttributes );
541     if (ctx.importLongProperty( OUSTR("RepeatDelay"), OUSTR("repeat"),
542                                 _xAttributes ))
543         ctx.getControlModel()->setPropertyValue(
544             OUSTR("Repeat"), makeAny(true) );
545     ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Text") ),
546                               OUString( RTL_CONSTASCII_USTRINGPARAM("text") ),
547                               _xAttributes );
548     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("EnforceFormat") ),
549                                OUString( RTL_CONSTASCII_USTRINGPARAM("enforce-format") ),
550                                _xAttributes );
551 
552     ctx.importEvents( _events );
553     // avoid ring-reference:
554     // vector< event elements > holding event elements holding this (via _pParent)
555     _events.clear();
556 }
557 
558 //##################################################################################################
559 
560 // numericfield
561 //__________________________________________________________________________________________________
startChildElement(sal_Int32 nUid,OUString const & rLocalName,Reference<xml::input::XAttributes> const & xAttributes)562 Reference< xml::input::XElement > NumericFieldElement::startChildElement(
563     sal_Int32 nUid, OUString const & rLocalName,
564     Reference< xml::input::XAttributes > const & xAttributes )
565     throw (xml::sax::SAXException, RuntimeException)
566 {
567     // event
568     if (_pImport->isEventElement( nUid, rLocalName ))
569     {
570         return new EventElement( nUid, rLocalName, xAttributes, this, _pImport );
571     }
572     else
573     {
574         throw xml::sax::SAXException(
575             OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ),
576             Reference< XInterface >(), Any() );
577     }
578 }
579 //__________________________________________________________________________________________________
endElement()580 void NumericFieldElement::endElement()
581     throw (xml::sax::SAXException, RuntimeException)
582 {
583     ControlImportContext ctx(
584         _pImport, getControlId( _xAttributes ),
585         OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlNumericFieldModel") ) );
586 
587     Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
588     if (xStyle.is())
589     {
590         StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
591         Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
592         pStyle->importBackgroundColorStyle( xControlModel );
593         pStyle->importTextColorStyle( xControlModel );
594         pStyle->importTextLineColorStyle( xControlModel );
595         pStyle->importBorderStyle( xControlModel );
596         pStyle->importFontStyle( xControlModel );
597     }
598 
599     ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
600     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ),
601                                OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ),
602                                _xAttributes );
603     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ReadOnly") ),
604                                OUString( RTL_CONSTASCII_USTRINGPARAM("readonly") ),
605                                _xAttributes );
606     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("StrictFormat") ),
607                                OUString( RTL_CONSTASCII_USTRINGPARAM("strict-format") ),
608                                _xAttributes );
609     ctx.importBooleanProperty(
610         OUSTR("HideInactiveSelection"), OUSTR("hide-inactive-selection"),
611         _xAttributes );
612     ctx.importShortProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("DecimalAccuracy") ),
613                                OUString( RTL_CONSTASCII_USTRINGPARAM("decimal-accuracy") ),
614                                _xAttributes );
615     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ShowThousandsSeparator") ),
616                                OUString( RTL_CONSTASCII_USTRINGPARAM("thousands-separator") ),
617                                _xAttributes );
618     ctx.importDoubleProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Value") ),
619                               OUString( RTL_CONSTASCII_USTRINGPARAM("value") ),
620                               _xAttributes );
621     ctx.importDoubleProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ValueMin") ),
622                               OUString( RTL_CONSTASCII_USTRINGPARAM("value-min") ),
623                               _xAttributes );
624     ctx.importDoubleProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ValueMax") ),
625                               OUString( RTL_CONSTASCII_USTRINGPARAM("value-max") ),
626                               _xAttributes );
627     ctx.importDoubleProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ValueStep") ),
628                               OUString( RTL_CONSTASCII_USTRINGPARAM("value-step") ),
629                               _xAttributes );
630     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Spin") ),
631                                OUString( RTL_CONSTASCII_USTRINGPARAM("spin") ),
632                                _xAttributes );
633     if (ctx.importLongProperty( OUSTR("RepeatDelay"), OUSTR("repeat"),
634                                 _xAttributes ))
635         ctx.getControlModel()->setPropertyValue(
636             OUSTR("Repeat"), makeAny(true) );
637     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("EnforceFormat") ),
638                                OUString( RTL_CONSTASCII_USTRINGPARAM("enforce-format") ),
639                                _xAttributes );
640     ctx.importEvents( _events );
641     // avoid ring-reference:
642     // vector< event elements > holding event elements holding this (via _pParent)
643     _events.clear();
644 }
645 
646 //##################################################################################################
647 
648 // datefield
649 //__________________________________________________________________________________________________
startChildElement(sal_Int32 nUid,OUString const & rLocalName,Reference<xml::input::XAttributes> const & xAttributes)650 Reference< xml::input::XElement > DateFieldElement::startChildElement(
651     sal_Int32 nUid, OUString const & rLocalName,
652     Reference< xml::input::XAttributes > const & xAttributes )
653     throw (xml::sax::SAXException, RuntimeException)
654 {
655     // event
656     if (_pImport->isEventElement( nUid, rLocalName ))
657     {
658         return new EventElement( nUid, rLocalName, xAttributes, this, _pImport );
659     }
660     else
661     {
662         throw xml::sax::SAXException(
663             OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ),
664             Reference< XInterface >(), Any() );
665     }
666 }
667 //__________________________________________________________________________________________________
endElement()668 void DateFieldElement::endElement()
669     throw (xml::sax::SAXException, RuntimeException)
670 {
671     ControlImportContext ctx(
672         _pImport, getControlId( _xAttributes ),
673         OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlDateFieldModel") ) );
674 
675     Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
676     if (xStyle.is())
677     {
678         StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
679         Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
680         pStyle->importBackgroundColorStyle( xControlModel );
681         pStyle->importTextColorStyle( xControlModel );
682         pStyle->importTextLineColorStyle( xControlModel );
683         pStyle->importBorderStyle( xControlModel );
684         pStyle->importFontStyle( xControlModel );
685     }
686 
687     ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
688     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ),
689                                OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ),
690                                _xAttributes );
691     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ReadOnly") ),
692                                OUString( RTL_CONSTASCII_USTRINGPARAM("readonly") ),
693                                _xAttributes );
694     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("StrictFormat") ),
695                                OUString( RTL_CONSTASCII_USTRINGPARAM("strict-format") ),
696                                _xAttributes );
697     ctx.importBooleanProperty(
698         OUSTR("HideInactiveSelection"), OUSTR("hide-inactive-selection"),
699         _xAttributes );
700     ctx.importDateFormatProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("DateFormat") ),
701                                   OUString( RTL_CONSTASCII_USTRINGPARAM("date-format") ),
702                                   _xAttributes );
703     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("DateShowCentury") ),
704                                OUString( RTL_CONSTASCII_USTRINGPARAM("show-century") ),
705                                _xAttributes );
706     ctx.importLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Date") ),
707                             OUString( RTL_CONSTASCII_USTRINGPARAM("value") ),
708                             _xAttributes );
709     ctx.importLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("DateMin") ),
710                             OUString( RTL_CONSTASCII_USTRINGPARAM("value-min") ),
711                             _xAttributes );
712     ctx.importLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("DateMax") ),
713                             OUString( RTL_CONSTASCII_USTRINGPARAM("value-max") ),
714                             _xAttributes );
715     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Spin") ),
716                                OUString( RTL_CONSTASCII_USTRINGPARAM("spin") ),
717                                _xAttributes );
718     if (ctx.importLongProperty( OUSTR("RepeatDelay"), OUSTR("repeat"),
719                                 _xAttributes ))
720         ctx.getControlModel()->setPropertyValue(
721             OUSTR("Repeat"), makeAny(true) );
722     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Dropdown") ),
723                                OUString( RTL_CONSTASCII_USTRINGPARAM("dropdown") ),
724                                _xAttributes );
725     ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Text") ),
726                               OUString( RTL_CONSTASCII_USTRINGPARAM("text") ),
727                               _xAttributes );
728     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("EnforceFormat") ),
729                                OUString( RTL_CONSTASCII_USTRINGPARAM("enforce-format") ),
730                                _xAttributes );
731     ctx.importEvents( _events );
732     // avoid ring-reference:
733     // vector< event elements > holding event elements holding this (via _pParent)
734     _events.clear();
735 }
736 
737 //##################################################################################################
738 
739 // currencyfield
740 //__________________________________________________________________________________________________
startChildElement(sal_Int32 nUid,OUString const & rLocalName,Reference<xml::input::XAttributes> const & xAttributes)741 Reference< xml::input::XElement > CurrencyFieldElement::startChildElement(
742     sal_Int32 nUid, OUString const & rLocalName,
743     Reference< xml::input::XAttributes > const & xAttributes )
744     throw (xml::sax::SAXException, RuntimeException)
745 {
746     // event
747     if (_pImport->isEventElement( nUid, rLocalName ))
748     {
749         return new EventElement( nUid, rLocalName, xAttributes, this, _pImport );
750     }
751     else
752     {
753         throw xml::sax::SAXException(
754             OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ),
755             Reference< XInterface >(), Any() );
756     }
757 }
758 //__________________________________________________________________________________________________
endElement()759 void CurrencyFieldElement::endElement()
760     throw (xml::sax::SAXException, RuntimeException)
761 {
762     ControlImportContext ctx(
763         _pImport, getControlId( _xAttributes ),
764         OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlCurrencyFieldModel") ) );
765 
766     Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
767     if (xStyle.is())
768     {
769         StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
770         Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
771         pStyle->importBackgroundColorStyle( xControlModel );
772         pStyle->importTextColorStyle( xControlModel );
773         pStyle->importTextLineColorStyle( xControlModel );
774         pStyle->importBorderStyle( xControlModel );
775         pStyle->importFontStyle( xControlModel );
776     }
777 
778     ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
779     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ),
780                                OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ),
781                                _xAttributes );
782     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ReadOnly") ),
783                                OUString( RTL_CONSTASCII_USTRINGPARAM("readonly") ),
784                                _xAttributes );
785     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("StrictFormat") ),
786                                OUString( RTL_CONSTASCII_USTRINGPARAM("strict-format") ),
787                                _xAttributes );
788     ctx.importBooleanProperty(
789         OUSTR("HideInactiveSelection"), OUSTR("hide-inactive-selection"),
790         _xAttributes );
791     ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("CurrencySymbol") ),
792                               OUString( RTL_CONSTASCII_USTRINGPARAM("currency-symbol") ),
793                               _xAttributes );
794     ctx.importShortProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("DecimalAccuracy") ),
795                                OUString( RTL_CONSTASCII_USTRINGPARAM("decimal-accuracy") ),
796                                _xAttributes );
797     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ShowThousandsSeparator") ),
798                                OUString( RTL_CONSTASCII_USTRINGPARAM("thousands-separator") ),
799                                _xAttributes );
800     ctx.importDoubleProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Value") ),
801                               OUString( RTL_CONSTASCII_USTRINGPARAM("value") ),
802                               _xAttributes );
803     ctx.importDoubleProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ValueMin") ),
804                               OUString( RTL_CONSTASCII_USTRINGPARAM("value-min") ),
805                               _xAttributes );
806     ctx.importDoubleProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ValueMax") ),
807                               OUString( RTL_CONSTASCII_USTRINGPARAM("value-max") ),
808                               _xAttributes );
809     ctx.importDoubleProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ValueStep") ),
810                               OUString( RTL_CONSTASCII_USTRINGPARAM("value-step") ),
811                               _xAttributes );
812     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Spin") ),
813                                OUString( RTL_CONSTASCII_USTRINGPARAM("spin") ),
814                                _xAttributes );
815     if (ctx.importLongProperty( OUSTR("RepeatDelay"), OUSTR("repeat"),
816                                 _xAttributes ))
817         ctx.getControlModel()->setPropertyValue(
818             OUSTR("Repeat"), makeAny(true) );
819     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("PrependCurrencySymbol") ),
820                                OUString( RTL_CONSTASCII_USTRINGPARAM("prepend-symbol") ),
821                                _xAttributes );
822     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("EnforceFormat") ),
823                                OUString( RTL_CONSTASCII_USTRINGPARAM("enforce-format") ),
824                                _xAttributes );
825     ctx.importEvents( _events );
826     // avoid ring-reference:
827     // vector< event elements > holding event elements holding this (via _pParent)
828     _events.clear();
829 }
830 
831 //##################################################################################################
832 
833 // filecontrol
834 //__________________________________________________________________________________________________
startChildElement(sal_Int32 nUid,OUString const & rLocalName,Reference<xml::input::XAttributes> const & xAttributes)835 Reference< xml::input::XElement > FileControlElement::startChildElement(
836     sal_Int32 nUid, OUString const & rLocalName,
837     Reference< xml::input::XAttributes > const & xAttributes )
838     throw (xml::sax::SAXException, RuntimeException)
839 {
840     // event
841     if (_pImport->isEventElement( nUid, rLocalName ))
842     {
843         return new EventElement( nUid, rLocalName, xAttributes, this, _pImport );
844     }
845     else
846     {
847         throw xml::sax::SAXException(
848             OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ),
849             Reference< XInterface >(), Any() );
850     }
851 }
852 //__________________________________________________________________________________________________
endElement()853 void FileControlElement::endElement()
854     throw (xml::sax::SAXException, RuntimeException)
855 {
856     ControlImportContext ctx(
857         _pImport, getControlId( _xAttributes ),
858         OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlFileControlModel") ) );
859 
860     Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
861     if (xStyle.is())
862     {
863         StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
864         Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
865         pStyle->importBackgroundColorStyle( xControlModel );
866         pStyle->importTextColorStyle( xControlModel );
867         pStyle->importTextLineColorStyle( xControlModel );
868         pStyle->importBorderStyle( xControlModel );
869         pStyle->importFontStyle( xControlModel );
870     }
871 
872     ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
873     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ),
874                                OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ),
875                                _xAttributes );
876     ctx.importBooleanProperty(
877         OUSTR("HideInactiveSelection"), OUSTR("hide-inactive-selection"),
878         _xAttributes );
879     ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Text") ),
880                               OUString( RTL_CONSTASCII_USTRINGPARAM("value") ),
881                               _xAttributes );
882     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ReadOnly") ),
883                                OUString( RTL_CONSTASCII_USTRINGPARAM("readonly") ),
884                                _xAttributes );
885     ctx.importEvents( _events );
886     // avoid ring-reference:
887     // vector< event elements > holding event elements holding this (via _pParent)
888     _events.clear();
889 }
890 //##################################################################################################
891 
892 // treecontrol
893 //__________________________________________________________________________________________________
startChildElement(sal_Int32 nUid,OUString const & rLocalName,Reference<xml::input::XAttributes> const & xAttributes)894 Reference< xml::input::XElement > TreeControlElement::startChildElement(
895     sal_Int32 nUid, OUString const & rLocalName,
896     Reference< xml::input::XAttributes > const & xAttributes )
897     throw (xml::sax::SAXException, RuntimeException)
898 {
899     // event
900     if (_pImport->isEventElement( nUid, rLocalName ))
901     {
902         return new EventElement( nUid, rLocalName, xAttributes, this, _pImport );
903     }
904     else
905     {
906         throw xml::sax::SAXException(
907             OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ),
908             Reference< XInterface >(), Any() );
909     }
910 }
911 //__________________________________________________________________________________________________
endElement()912 void TreeControlElement::endElement()
913     throw (xml::sax::SAXException, RuntimeException)
914 {
915     ControlImportContext ctx(
916         _pImport, getControlId( _xAttributes ),
917         OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.tree.TreeControlModel") ) );
918 
919     Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
920     if (xStyle.is())
921     {
922         StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
923         Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
924         pStyle->importBackgroundColorStyle( xControlModel );
925         pStyle->importBorderStyle( xControlModel );
926     }
927 
928     ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
929     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ),
930                                OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ),
931                                _xAttributes );
932     ctx.importSelectionTypeProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("SelectionType") ),
933                               OUString( RTL_CONSTASCII_USTRINGPARAM("selectiontype") ),
934                               _xAttributes );
935     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("RootDisplayed") ),
936                                OUString( RTL_CONSTASCII_USTRINGPARAM("rootdisplayed") ),
937                                _xAttributes );
938     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ShowsHandles") ),
939                                OUString( RTL_CONSTASCII_USTRINGPARAM("showshandles") ),
940                                _xAttributes );
941     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ShowsRootHandles") ),
942                                OUString( RTL_CONSTASCII_USTRINGPARAM("showsroothandles") ),
943                                _xAttributes );
944     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Editable") ),
945                                OUString( RTL_CONSTASCII_USTRINGPARAM("editable") ),
946                                _xAttributes );
947     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("RowHeight") ),
948                                OUString( RTL_CONSTASCII_USTRINGPARAM("readonly") ),
949                                _xAttributes );
950     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("InvokesStopNodeEditing") ),
951                              OUString( RTL_CONSTASCII_USTRINGPARAM("invokesstopnodeediting") ),
952                              _xAttributes );
953 
954     ctx.importEvents( _events );
955     // avoid ring-reference:
956     // vector< event elements > holding event elements holding this (via _pParent)
957     _events.clear();
958 }
959 
960 //##################################################################################################
961 
962 // imagecontrol
963 //__________________________________________________________________________________________________
startChildElement(sal_Int32 nUid,OUString const & rLocalName,Reference<xml::input::XAttributes> const & xAttributes)964 Reference< xml::input::XElement > ImageControlElement::startChildElement(
965     sal_Int32 nUid, OUString const & rLocalName,
966     Reference< xml::input::XAttributes > const & xAttributes )
967     throw (xml::sax::SAXException, RuntimeException)
968 {
969     // event
970     if (_pImport->isEventElement( nUid, rLocalName ))
971     {
972         return new EventElement( nUid, rLocalName, xAttributes, this, _pImport );
973     }
974     else
975     {
976         throw xml::sax::SAXException(
977             OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ),
978             Reference< XInterface >(), Any() );
979     }
980 }
981 //__________________________________________________________________________________________________
endElement()982 void ImageControlElement::endElement()
983     throw (xml::sax::SAXException, RuntimeException)
984 {
985     ControlImportContext ctx(
986         _pImport, getControlId( _xAttributes ),
987         OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlImageControlModel") ) );
988 
989     Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
990     if (xStyle.is())
991     {
992         StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
993         Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
994         pStyle->importBackgroundColorStyle( xControlModel );
995         pStyle->importBorderStyle( xControlModel );
996     }
997 
998     ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
999     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ScaleImage") ),
1000                                OUString( RTL_CONSTASCII_USTRINGPARAM("scale-image") ),
1001                                _xAttributes );
1002     ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ImageURL") ),
1003                               OUString( RTL_CONSTASCII_USTRINGPARAM("src") ),
1004                               _xAttributes );
1005     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ),
1006                                OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ),
1007                                _xAttributes );
1008     ctx.importEvents( _events );
1009     // avoid ring-reference:
1010     // vector< event elements > holding event elements holding this (via _pParent)
1011     _events.clear();
1012 }
1013 
1014 //##################################################################################################
1015 
1016 // textfield
1017 //__________________________________________________________________________________________________
startChildElement(sal_Int32 nUid,OUString const & rLocalName,Reference<xml::input::XAttributes> const & xAttributes)1018 Reference< xml::input::XElement > TextElement::startChildElement(
1019     sal_Int32 nUid, OUString const & rLocalName,
1020     Reference< xml::input::XAttributes > const & xAttributes )
1021     throw (xml::sax::SAXException, RuntimeException)
1022 {
1023     // event
1024     if (_pImport->isEventElement( nUid, rLocalName ))
1025     {
1026         return new EventElement( nUid, rLocalName, xAttributes, this, _pImport );
1027     }
1028     else
1029     {
1030         throw xml::sax::SAXException(
1031             OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ),
1032             Reference< XInterface >(), Any() );
1033     }
1034 }
1035 //__________________________________________________________________________________________________
endElement()1036 void TextElement::endElement()
1037     throw (xml::sax::SAXException, RuntimeException)
1038 {
1039     ControlImportContext ctx(
1040         _pImport, getControlId( _xAttributes ),
1041         OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlFixedTextModel") ) );
1042 
1043     Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
1044     if (xStyle.is())
1045     {
1046         StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
1047         Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
1048         pStyle->importBackgroundColorStyle( xControlModel );
1049         pStyle->importTextColorStyle( xControlModel );
1050         pStyle->importTextLineColorStyle( xControlModel );
1051         pStyle->importBorderStyle( xControlModel );
1052         pStyle->importFontStyle( xControlModel );
1053     }
1054 
1055     ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
1056     ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Label") ),
1057                               OUString( RTL_CONSTASCII_USTRINGPARAM("value") ),
1058                               _xAttributes );
1059     ctx.importAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Align") ),
1060                              OUString( RTL_CONSTASCII_USTRINGPARAM("align") ),
1061                              _xAttributes );
1062     ctx.importVerticalAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("VerticalAlign") ),
1063                                      OUString( RTL_CONSTASCII_USTRINGPARAM("valign") ),
1064                                      _xAttributes );
1065     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("MultiLine") ),
1066                                OUString( RTL_CONSTASCII_USTRINGPARAM("multiline") ),
1067                                _xAttributes );
1068     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ),
1069                                OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ),
1070                                _xAttributes );
1071     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("NoLabel") ),
1072                                OUString( RTL_CONSTASCII_USTRINGPARAM("nolabel") ),
1073                                _xAttributes );
1074     ctx.importEvents( _events );
1075     // avoid ring-reference:
1076     // vector< event elements > holding event elements holding this (via _pParent)
1077     _events.clear();
1078 }
1079 
1080 //##################################################################################################
1081 // FixedHyperLink
1082 //__________________________________________________________________________________________________
startChildElement(sal_Int32 nUid,OUString const & rLocalName,Reference<xml::input::XAttributes> const & xAttributes)1083 Reference< xml::input::XElement > FixedHyperLinkElement::startChildElement(
1084     sal_Int32 nUid, OUString const & rLocalName,
1085     Reference< xml::input::XAttributes > const & xAttributes )
1086     throw (xml::sax::SAXException, RuntimeException)
1087 {
1088     // event
1089     if (_pImport->isEventElement( nUid, rLocalName ))
1090     {
1091         return new EventElement( nUid, rLocalName, xAttributes, this, _pImport );
1092     }
1093     else
1094     {
1095         throw xml::sax::SAXException(
1096             OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ),
1097             Reference< XInterface >(), Any() );
1098     }
1099 }
1100 //__________________________________________________________________________________________________
endElement()1101 void FixedHyperLinkElement::endElement()
1102     throw (xml::sax::SAXException, RuntimeException)
1103 {
1104     ControlImportContext ctx(
1105         _pImport, getControlId( _xAttributes ),
1106         OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlFixedHyperlinkModel") ) );
1107 
1108     Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
1109     if (xStyle.is())
1110     {
1111         StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
1112         Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
1113         pStyle->importBackgroundColorStyle( xControlModel );
1114         pStyle->importTextColorStyle( xControlModel );
1115         pStyle->importTextLineColorStyle( xControlModel );
1116         pStyle->importBorderStyle( xControlModel );
1117         pStyle->importFontStyle( xControlModel );
1118     }
1119 
1120     ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
1121     ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Label") ),
1122                               OUString( RTL_CONSTASCII_USTRINGPARAM("value") ),
1123                               _xAttributes );
1124     ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("URL") ),
1125                               OUString( RTL_CONSTASCII_USTRINGPARAM("url") ),
1126                               _xAttributes );
1127     ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Description") ),
1128                               OUString( RTL_CONSTASCII_USTRINGPARAM("description") ),
1129                               _xAttributes );
1130 
1131     ctx.importAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Align") ),
1132                              OUString( RTL_CONSTASCII_USTRINGPARAM("align") ),
1133                              _xAttributes );
1134     ctx.importVerticalAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("VerticalAlign") ),
1135                                      OUString( RTL_CONSTASCII_USTRINGPARAM("valign") ),
1136                                      _xAttributes );
1137     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("MultiLine") ),
1138                                OUString( RTL_CONSTASCII_USTRINGPARAM("multiline") ),
1139                                _xAttributes );
1140     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ),
1141                                OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ),
1142                                _xAttributes );
1143     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("NoLabel") ),
1144                                OUString( RTL_CONSTASCII_USTRINGPARAM("nolabel") ),
1145                                _xAttributes );
1146     ctx.importEvents( _events );
1147     // avoid ring-reference:
1148     // vector< event elements > holding event elements holding this (via _pParent)
1149     _events.clear();
1150 }
1151 
1152 //##################################################################################################
1153 
1154 // edit
1155 //__________________________________________________________________________________________________
startChildElement(sal_Int32 nUid,OUString const & rLocalName,Reference<xml::input::XAttributes> const & xAttributes)1156 Reference< xml::input::XElement > TextFieldElement::startChildElement(
1157     sal_Int32 nUid, OUString const & rLocalName,
1158     Reference< xml::input::XAttributes > const & xAttributes )
1159     throw (xml::sax::SAXException, RuntimeException)
1160 {
1161     // event
1162     if (_pImport->isEventElement( nUid, rLocalName ))
1163     {
1164         return new EventElement( nUid, rLocalName, xAttributes, this, _pImport );
1165     }
1166     else
1167     {
1168         throw xml::sax::SAXException(
1169             OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ),
1170             Reference< XInterface >(), Any() );
1171     }
1172 }
1173 //__________________________________________________________________________________________________
endElement()1174 void TextFieldElement::endElement()
1175     throw (xml::sax::SAXException, RuntimeException)
1176 {
1177     ControlImportContext ctx(
1178         _pImport, getControlId( _xAttributes ),
1179         OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlEditModel") ) );
1180     Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
1181 
1182     Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
1183     if (xStyle.is())
1184     {
1185         StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
1186         pStyle->importBackgroundColorStyle( xControlModel );
1187         pStyle->importTextColorStyle( xControlModel );
1188         pStyle->importTextLineColorStyle( xControlModel );
1189         pStyle->importBorderStyle( xControlModel );
1190         pStyle->importFontStyle( xControlModel );
1191     }
1192 
1193     ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
1194     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ),
1195                                OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ),
1196                                _xAttributes );
1197     ctx.importAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Align") ),
1198                              OUString( RTL_CONSTASCII_USTRINGPARAM("align") ),
1199                              _xAttributes );
1200     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("HardLineBreaks") ),
1201                                OUString( RTL_CONSTASCII_USTRINGPARAM("hard-linebreaks") ),
1202                                _xAttributes );
1203     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("HScroll") ),
1204                                OUString( RTL_CONSTASCII_USTRINGPARAM("hscroll") ),
1205                                _xAttributes );
1206     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("VScroll") ),
1207                                OUString( RTL_CONSTASCII_USTRINGPARAM("vscroll") ),
1208                                _xAttributes );
1209     ctx.importBooleanProperty(
1210         OUSTR("HideInactiveSelection"), OUSTR("hide-inactive-selection"),
1211         _xAttributes );
1212     ctx.importShortProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("MaxTextLen") ),
1213                              OUString( RTL_CONSTASCII_USTRINGPARAM("maxlength") ),
1214                              _xAttributes );
1215     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("MultiLine") ),
1216                                OUString( RTL_CONSTASCII_USTRINGPARAM("multiline") ),
1217                                _xAttributes );
1218     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ReadOnly") ),
1219                                OUString( RTL_CONSTASCII_USTRINGPARAM("readonly") ),
1220                                _xAttributes );
1221     ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Text") ),
1222                                   OUString( RTL_CONSTASCII_USTRINGPARAM("value") ),
1223                                   _xAttributes );
1224     ctx.importLineEndFormatProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("LineEndFormat") ),
1225                                      OUString( RTL_CONSTASCII_USTRINGPARAM("lineend-format") ),
1226                                      _xAttributes );
1227     OUString aValue;
1228     if (getStringAttr( &aValue,
1229                        OUString( RTL_CONSTASCII_USTRINGPARAM("echochar") ),
1230                        _xAttributes,
1231                        _pImport->XMLNS_DIALOGS_UID ) &&
1232         aValue.getLength() > 0)
1233     {
1234         OSL_ENSURE( aValue.getLength() == 1, "### more than one character given for echochar!" );
1235         sal_Int16 nChar = (sal_Int16)aValue[ 0 ];
1236         xControlModel->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM("EchoChar") ),
1237                                          makeAny( nChar ) );
1238     }
1239 
1240     ctx.importEvents( _events );
1241     // avoid ring-reference:
1242     // vector< event elements > holding event elements holding this (via _pParent)
1243     _events.clear();
1244 }
1245 
1246 //##################################################################################################
1247 
1248 // titledbox
1249 //__________________________________________________________________________________________________
startChildElement(sal_Int32 nUid,OUString const & rLocalName,Reference<xml::input::XAttributes> const & xAttributes)1250 Reference< xml::input::XElement > TitledBoxElement::startChildElement(
1251     sal_Int32 nUid, OUString const & rLocalName,
1252     Reference< xml::input::XAttributes > const & xAttributes )
1253     throw (xml::sax::SAXException, RuntimeException)
1254 {
1255     // event
1256     if (_pImport->isEventElement( nUid, rLocalName ))
1257     {
1258         return new EventElement( nUid, rLocalName, xAttributes, this, _pImport );
1259     }
1260     else if (_pImport->XMLNS_DIALOGS_UID != nUid)
1261     {
1262         throw xml::sax::SAXException(
1263             OUString( RTL_CONSTASCII_USTRINGPARAM("illegal namespace!") ),
1264             Reference< XInterface >(), Any() );
1265     }
1266     // title
1267     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("title") ))
1268     {
1269         getStringAttr( &_label,
1270                        OUString( RTL_CONSTASCII_USTRINGPARAM("value") ),
1271                        xAttributes,
1272                        _pImport->XMLNS_DIALOGS_UID );
1273 
1274         return new ElementBase(
1275             _pImport->XMLNS_DIALOGS_UID,
1276             rLocalName, xAttributes, this, _pImport );
1277     }
1278     // radio
1279     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("radio") ))
1280     {
1281         // dont create radios here, => titledbox must be inserted first due to radio grouping,
1282         // possible predecessors!
1283         Reference< xml::input::XElement > xRet(
1284             new RadioElement( rLocalName, xAttributes, this, _pImport ) );
1285         _radios.push_back( xRet );
1286         return xRet;
1287     }
1288     // event
1289     else if (_pImport->isEventElement( nUid, rLocalName ))
1290     {
1291         return new EventElement( nUid, rLocalName, xAttributes, this, _pImport );
1292     }
1293     else
1294     {
1295         return BulletinBoardElement::startChildElement( nUid, rLocalName, xAttributes );
1296     }
1297 }
1298 //__________________________________________________________________________________________________
endElement()1299 void TitledBoxElement::endElement()
1300     throw (xml::sax::SAXException, RuntimeException)
1301 {
1302     {
1303     ControlImportContext ctx(
1304         _pImport, getControlId( _xAttributes ),
1305         OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlGroupBoxModel") ) );
1306     Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
1307 
1308     Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
1309     if (xStyle.is())
1310     {
1311         StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
1312         pStyle->importTextColorStyle( xControlModel );
1313         pStyle->importTextLineColorStyle( xControlModel );
1314         pStyle->importFontStyle( xControlModel );
1315     }
1316 
1317     ctx.importDefaults( 0, 0, _xAttributes ); // inherited from BulletinBoardElement
1318 
1319     if (_label.getLength())
1320     {
1321         xControlModel->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM("Label") ),
1322                                          makeAny( _label ) );
1323     }
1324 
1325     ctx.importEvents( _events );
1326     // avoid ring-reference:
1327     // vector< event elements > holding event elements holding this (via _pParent)
1328     _events.clear();
1329     }
1330 
1331     // create radios AFTER group box!
1332     for ( size_t nPos = 0; nPos < _radios.size(); ++nPos )
1333     {
1334         Reference< xml::input::XElement > xRadio( _radios[ nPos ] );
1335         Reference< xml::input::XAttributes > xAttributes(
1336             xRadio->getAttributes() );
1337 
1338         ControlImportContext ctx(
1339             _pImport, getControlId( xAttributes ),
1340             OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlRadioButtonModel") ) );
1341         Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
1342 
1343         Reference< xml::input::XElement > xStyle( getStyle( xAttributes ) );
1344         if (xStyle.is())
1345         {
1346             StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
1347             pStyle->importBackgroundColorStyle( xControlModel );
1348             pStyle->importTextColorStyle( xControlModel );
1349             pStyle->importTextLineColorStyle( xControlModel );
1350             pStyle->importFontStyle( xControlModel );
1351             pStyle->importVisualEffectStyle( xControlModel );
1352         }
1353 
1354         ctx.importDefaults( _nBasePosX, _nBasePosY, xAttributes );
1355         ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ),
1356                                    OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ),
1357                                    xAttributes );
1358         ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Label") ),
1359                                   OUString( RTL_CONSTASCII_USTRINGPARAM("value") ),
1360                                   xAttributes );
1361         ctx.importAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Align") ),
1362                                  OUString( RTL_CONSTASCII_USTRINGPARAM("align") ),
1363                                  xAttributes );
1364         ctx.importVerticalAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("VerticalAlign") ),
1365                                          OUString( RTL_CONSTASCII_USTRINGPARAM("valign") ),
1366                                          xAttributes );
1367         ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ImageURL") ),
1368                                   OUString( RTL_CONSTASCII_USTRINGPARAM("image-src") ),
1369                                   xAttributes );
1370         ctx.importImagePositionProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ImagePosition") ),
1371                                          OUString( RTL_CONSTASCII_USTRINGPARAM("image-position") ),
1372                                          xAttributes );
1373         ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("MultiLine") ),
1374                                    OUString( RTL_CONSTASCII_USTRINGPARAM("multiline") ),
1375                                    xAttributes );
1376 
1377         sal_Int16 nVal = 0;
1378         sal_Bool bChecked = sal_False;
1379         if (getBoolAttr( &bChecked,
1380                          OUString( RTL_CONSTASCII_USTRINGPARAM("checked") ),
1381                          xAttributes,
1382                          _pImport->XMLNS_DIALOGS_UID ) &&
1383             bChecked)
1384         {
1385             nVal = 1;
1386         }
1387         xControlModel->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM("State") ),
1388                                          makeAny( nVal ) );
1389 
1390         ::std::vector< Reference< xml::input::XElement > > * radioEvents =
1391             static_cast< RadioElement * >( xRadio.get() )->getEvents();
1392         ctx.importEvents( *radioEvents );
1393         // avoid ring-reference:
1394         // vector< event elements > holding event elements holding this (via _pParent)
1395         radioEvents->clear();
1396     }
1397     // avoid ring-reference:
1398     // vector< radio elements > holding radio elements holding this (via _pParent)
1399     _radios.clear();
1400 }
1401 
1402 //##################################################################################################
1403 
1404 // radio
1405 //__________________________________________________________________________________________________
startChildElement(sal_Int32 nUid,OUString const & rLocalName,Reference<xml::input::XAttributes> const & xAttributes)1406 Reference< xml::input::XElement > RadioElement::startChildElement(
1407     sal_Int32 nUid, OUString const & rLocalName,
1408     Reference< xml::input::XAttributes > const & xAttributes )
1409     throw (xml::sax::SAXException, RuntimeException)
1410 {
1411     // event
1412     if (_pImport->isEventElement( nUid, rLocalName ))
1413     {
1414         return new EventElement( nUid, rLocalName, xAttributes, this, _pImport );
1415     }
1416     else
1417     {
1418         throw xml::sax::SAXException(
1419             OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ),
1420             Reference< XInterface >(), Any() );
1421     }
1422 }
1423 
1424 //##################################################################################################
1425 
1426 // radiogroup
1427 //__________________________________________________________________________________________________
startChildElement(sal_Int32 nUid,OUString const & rLocalName,Reference<xml::input::XAttributes> const & xAttributes)1428 Reference< xml::input::XElement > RadioGroupElement::startChildElement(
1429     sal_Int32 nUid, OUString const & rLocalName,
1430     Reference< xml::input::XAttributes > const & xAttributes )
1431     throw (xml::sax::SAXException, RuntimeException)
1432 {
1433     if (_pImport->XMLNS_DIALOGS_UID != nUid)
1434     {
1435         throw xml::sax::SAXException(
1436             OUString( RTL_CONSTASCII_USTRINGPARAM("illegal namespace!") ),
1437             Reference< XInterface >(), Any() );
1438     }
1439     // radio
1440     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("radio") ))
1441     {
1442         // dont create radios here, => titledbox must be inserted first due to radio grouping,
1443         // possible predecessors!
1444         Reference< xml::input::XElement > xRet(
1445             new RadioElement( rLocalName, xAttributes, this, _pImport ) );
1446         _radios.push_back( xRet );
1447         return xRet;
1448     }
1449     else
1450     {
1451         throw xml::sax::SAXException(
1452             OUString( RTL_CONSTASCII_USTRINGPARAM("expected radio element!") ),
1453             Reference< XInterface >(), Any() );
1454     }
1455 }
1456 //__________________________________________________________________________________________________
endElement()1457 void RadioGroupElement::endElement()
1458     throw (xml::sax::SAXException, RuntimeException)
1459 {
1460     for ( size_t nPos = 0; nPos < _radios.size(); ++nPos )
1461     {
1462         Reference< xml::input::XElement > xRadio( _radios[ nPos ] );
1463         Reference< xml::input::XAttributes > xAttributes(
1464             xRadio->getAttributes() );
1465 
1466         ControlImportContext ctx(
1467             _pImport, getControlId( xAttributes ),
1468             OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlRadioButtonModel") ) );
1469         Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
1470 
1471         Reference< xml::input::XElement > xStyle( getStyle( xAttributes ) );
1472         if (xStyle.is())
1473         {
1474             StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
1475             pStyle->importBackgroundColorStyle( xControlModel );
1476             pStyle->importTextColorStyle( xControlModel );
1477             pStyle->importTextLineColorStyle( xControlModel );
1478             pStyle->importFontStyle( xControlModel );
1479             pStyle->importVisualEffectStyle( xControlModel );
1480         }
1481 
1482         ctx.importDefaults( _nBasePosX, _nBasePosY, xAttributes );
1483         ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ),
1484                                    OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ),
1485                                    xAttributes );
1486         ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Label") ),
1487                                   OUString( RTL_CONSTASCII_USTRINGPARAM("value") ),
1488                                   xAttributes );
1489         ctx.importAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Align") ),
1490                                  OUString( RTL_CONSTASCII_USTRINGPARAM("align") ),
1491                                  xAttributes );
1492         ctx.importVerticalAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("VerticalAlign") ),
1493                                          OUString( RTL_CONSTASCII_USTRINGPARAM("valign") ),
1494                                          xAttributes );
1495         ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ImageURL") ),
1496                                   OUString( RTL_CONSTASCII_USTRINGPARAM("image-src") ),
1497                                   xAttributes );
1498         ctx.importImagePositionProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ImagePosition") ),
1499                                          OUString( RTL_CONSTASCII_USTRINGPARAM("image-position") ),
1500                                          xAttributes );
1501         ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("MultiLine") ),
1502                                    OUString( RTL_CONSTASCII_USTRINGPARAM("multiline") ),
1503                                    xAttributes );
1504         sal_Int16 nVal = 0;
1505         sal_Bool bChecked = sal_False;
1506         if (getBoolAttr( &bChecked,
1507                          OUString( RTL_CONSTASCII_USTRINGPARAM("checked") ),
1508                          xAttributes,
1509                          _pImport->XMLNS_DIALOGS_UID ) &&
1510             bChecked)
1511         {
1512             nVal = 1;
1513         }
1514         xControlModel->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM("State") ),
1515                                          makeAny( nVal ) );
1516 
1517         ::std::vector< Reference< xml::input::XElement > > * radioEvents =
1518             static_cast< RadioElement * >( xRadio.get() )->getEvents();
1519         ctx.importEvents( *radioEvents );
1520         // avoid ring-reference:
1521         // vector< event elements > holding event elements holding this (via _pParent)
1522         radioEvents->clear();
1523     }
1524     // avoid ring-reference:
1525     // vector< radio elements > holding radio elements holding this (via _pParent)
1526     _radios.clear();
1527 }
1528 
1529 //##################################################################################################
1530 
1531 // menupopup
1532 //__________________________________________________________________________________________________
startChildElement(sal_Int32 nUid,OUString const & rLocalName,Reference<xml::input::XAttributes> const & xAttributes)1533 Reference< xml::input::XElement > MenuPopupElement::startChildElement(
1534     sal_Int32 nUid, OUString const & rLocalName,
1535     Reference< xml::input::XAttributes > const & xAttributes )
1536     throw (xml::sax::SAXException, RuntimeException)
1537 {
1538     if (_pImport->XMLNS_DIALOGS_UID != nUid)
1539     {
1540         throw xml::sax::SAXException(
1541             OUString( RTL_CONSTASCII_USTRINGPARAM("illegal namespace!") ),
1542             Reference< XInterface >(), Any() );
1543     }
1544     // menuitem
1545     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("menuitem") ))
1546     {
1547         OUString aValue(
1548             xAttributes->getValueByUidName(
1549                 _pImport->XMLNS_DIALOGS_UID,
1550                 OUString( RTL_CONSTASCII_USTRINGPARAM("value") ) ) );
1551         OSL_ENSURE( aValue.getLength(), "### menuitem has no value?" );
1552         if (aValue.getLength())
1553         {
1554             _itemValues.push_back( aValue );
1555 
1556             OUString aSel(
1557                 xAttributes->getValueByUidName(
1558                     _pImport->XMLNS_DIALOGS_UID,
1559                     OUString( RTL_CONSTASCII_USTRINGPARAM("selected") ) ) );
1560             if (aSel.getLength() && aSel.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("true") ))
1561             {
1562                 _itemSelected.push_back(
1563                     static_cast<sal_Int16>(_itemValues.size()) -1 );
1564             }
1565         }
1566         return new ElementBase(
1567             _pImport->XMLNS_DIALOGS_UID,
1568             rLocalName, xAttributes, this, _pImport );
1569     }
1570     else
1571     {
1572         throw xml::sax::SAXException(
1573             OUString( RTL_CONSTASCII_USTRINGPARAM("expected menuitem!") ),
1574             Reference< XInterface >(), Any() );
1575     }
1576 }
1577 //__________________________________________________________________________________________________
getItemValues()1578 Sequence< OUString > MenuPopupElement::getItemValues()
1579 {
1580     Sequence< OUString > aRet( _itemValues.size() );
1581     OUString * pRet = aRet.getArray();
1582     for ( size_t nPos = _itemValues.size(); nPos--; )
1583     {
1584         pRet[ nPos ] = _itemValues[ nPos ];
1585     }
1586     return aRet;
1587 }
1588 //__________________________________________________________________________________________________
getSelectedItems()1589 Sequence< sal_Int16 > MenuPopupElement::getSelectedItems()
1590 {
1591     Sequence< sal_Int16 > aRet( _itemSelected.size() );
1592     sal_Int16 * pRet = aRet.getArray();
1593     for ( size_t nPos = _itemSelected.size(); nPos--; )
1594     {
1595         pRet[ nPos ] = _itemSelected[ nPos ];
1596     }
1597     return aRet;
1598 }
1599 
1600 //##################################################################################################
1601 
1602 // menulist
1603 //__________________________________________________________________________________________________
startChildElement(sal_Int32 nUid,OUString const & rLocalName,Reference<xml::input::XAttributes> const & xAttributes)1604 Reference< xml::input::XElement > MenuListElement::startChildElement(
1605     sal_Int32 nUid, OUString const & rLocalName,
1606     Reference< xml::input::XAttributes > const & xAttributes )
1607     throw (xml::sax::SAXException, RuntimeException)
1608 {
1609     // event
1610     if (_pImport->isEventElement( nUid, rLocalName ))
1611     {
1612         return new EventElement( nUid, rLocalName, xAttributes, this, _pImport );
1613     }
1614     else if (_pImport->XMLNS_DIALOGS_UID != nUid)
1615     {
1616         throw xml::sax::SAXException(
1617             OUString( RTL_CONSTASCII_USTRINGPARAM("illegal namespace!") ),
1618             Reference< XInterface >(), Any() );
1619     }
1620     // menupopup
1621     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("menupopup") ))
1622     {
1623         _popup = new MenuPopupElement( rLocalName, xAttributes, this, _pImport );
1624         return _popup;
1625     }
1626     else
1627     {
1628         throw xml::sax::SAXException(
1629             OUString( RTL_CONSTASCII_USTRINGPARAM("expected event or menupopup element!") ),
1630             Reference< XInterface >(), Any() );
1631     }
1632 }
1633 //__________________________________________________________________________________________________
endElement()1634 void MenuListElement::endElement()
1635     throw (xml::sax::SAXException, RuntimeException)
1636 {
1637     ControlImportContext ctx(
1638         _pImport, getControlId( _xAttributes ),
1639         OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlListBoxModel") ) );
1640     Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
1641 
1642     Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
1643     if (xStyle.is())
1644     {
1645         StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
1646         pStyle->importBackgroundColorStyle( xControlModel );
1647         pStyle->importTextColorStyle( xControlModel );
1648         pStyle->importTextLineColorStyle( xControlModel );
1649         pStyle->importBorderStyle( xControlModel );
1650         pStyle->importFontStyle( xControlModel );
1651     }
1652 
1653     ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
1654     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ),
1655                                OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ),
1656                                _xAttributes );
1657     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("MultiSelection") ),
1658                                OUString( RTL_CONSTASCII_USTRINGPARAM("multiselection") ),
1659                                _xAttributes );
1660     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ReadOnly") ),
1661                                OUString( RTL_CONSTASCII_USTRINGPARAM("readonly") ),
1662                                _xAttributes );
1663     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Dropdown") ),
1664                                OUString( RTL_CONSTASCII_USTRINGPARAM("spin") ),
1665                                _xAttributes );
1666     ctx.importShortProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("LineCount") ),
1667                              OUString( RTL_CONSTASCII_USTRINGPARAM("linecount") ),
1668                              _xAttributes );
1669     ctx.importAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Align") ),
1670                              OUString( RTL_CONSTASCII_USTRINGPARAM("align") ),
1671                              _xAttributes );
1672 
1673     if (_popup.is())
1674     {
1675         MenuPopupElement * p = static_cast< MenuPopupElement * >( _popup.get() );
1676         xControlModel->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM("StringItemList") ),
1677                                          makeAny( p->getItemValues() ) );
1678         xControlModel->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM("SelectedItems") ),
1679                                          makeAny( p->getSelectedItems() ) );
1680     }
1681     ctx.importEvents( _events );
1682     // avoid ring-reference:
1683     // vector< event elements > holding event elements holding this (via _pParent)
1684     _events.clear();
1685 }
1686 
1687 //##################################################################################################
1688 
1689 // combobox
1690 //__________________________________________________________________________________________________
startChildElement(sal_Int32 nUid,OUString const & rLocalName,Reference<xml::input::XAttributes> const & xAttributes)1691 Reference< xml::input::XElement > ComboBoxElement::startChildElement(
1692     sal_Int32 nUid, OUString const & rLocalName,
1693     Reference< xml::input::XAttributes > const & xAttributes )
1694     throw (xml::sax::SAXException, RuntimeException)
1695 {
1696     // event
1697     if (_pImport->isEventElement( nUid, rLocalName ))
1698     {
1699         return new EventElement( nUid, rLocalName, xAttributes, this, _pImport );
1700     }
1701     else if (_pImport->XMLNS_DIALOGS_UID != nUid)
1702     {
1703         throw xml::sax::SAXException(
1704             OUString( RTL_CONSTASCII_USTRINGPARAM("illegal namespace!") ),
1705             Reference< XInterface >(), Any() );
1706     }
1707     // menupopup
1708     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("menupopup") ))
1709     {
1710         _popup = new MenuPopupElement( rLocalName, xAttributes, this, _pImport );
1711         return _popup;
1712     }
1713     else
1714     {
1715         throw xml::sax::SAXException(
1716             OUString( RTL_CONSTASCII_USTRINGPARAM("expected event or menupopup element!") ),
1717             Reference< XInterface >(), Any() );
1718     }
1719 }
1720 //__________________________________________________________________________________________________
endElement()1721 void ComboBoxElement::endElement()
1722     throw (xml::sax::SAXException, RuntimeException)
1723 {
1724     ControlImportContext ctx(
1725         _pImport, getControlId( _xAttributes ),
1726         OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlComboBoxModel") ) );
1727     Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
1728 
1729     Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
1730     if (xStyle.is())
1731     {
1732         StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
1733         pStyle->importBackgroundColorStyle( xControlModel );
1734         pStyle->importTextColorStyle( xControlModel );
1735         pStyle->importTextLineColorStyle( xControlModel );
1736         pStyle->importBorderStyle( xControlModel );
1737         pStyle->importFontStyle( xControlModel );
1738     }
1739 
1740     ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
1741     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ),
1742                                OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ),
1743                                _xAttributes );
1744     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ReadOnly") ),
1745                                OUString( RTL_CONSTASCII_USTRINGPARAM("readonly") ),
1746                                _xAttributes );
1747     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Autocomplete") ),
1748                                OUString( RTL_CONSTASCII_USTRINGPARAM("autocomplete") ),
1749                                _xAttributes );
1750     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Dropdown") ),
1751                                OUString( RTL_CONSTASCII_USTRINGPARAM("spin") ),
1752                                _xAttributes );
1753     ctx.importBooleanProperty(
1754         OUSTR("HideInactiveSelection"), OUSTR("hide-inactive-selection"),
1755         _xAttributes );
1756     ctx.importShortProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("MaxTextLen") ),
1757                              OUString( RTL_CONSTASCII_USTRINGPARAM("maxlength") ),
1758                              _xAttributes );
1759     ctx.importShortProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("LineCount") ),
1760                              OUString( RTL_CONSTASCII_USTRINGPARAM("linecount") ),
1761                              _xAttributes );
1762     ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Text") ),
1763                               OUString( RTL_CONSTASCII_USTRINGPARAM("value") ),
1764                               _xAttributes );
1765     ctx.importAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Align") ),
1766                              OUString( RTL_CONSTASCII_USTRINGPARAM("align") ),
1767                              _xAttributes );
1768 
1769     if (_popup.is())
1770     {
1771         MenuPopupElement * p = static_cast< MenuPopupElement * >( _popup.get() );
1772         xControlModel->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM("StringItemList") ),
1773                                          makeAny( p->getItemValues() ) );
1774     }
1775 
1776     ctx.importEvents( _events );
1777     // avoid ring-reference:
1778     // vector< event elements > holding event elements holding this (via _pParent)
1779     _events.clear();
1780 }
1781 
1782 //##################################################################################################
1783 
1784 // checkbox
1785 //__________________________________________________________________________________________________
startChildElement(sal_Int32 nUid,OUString const & rLocalName,Reference<xml::input::XAttributes> const & xAttributes)1786 Reference< xml::input::XElement > CheckBoxElement::startChildElement(
1787     sal_Int32 nUid, OUString const & rLocalName,
1788     Reference< xml::input::XAttributes > const & xAttributes )
1789     throw (xml::sax::SAXException, RuntimeException)
1790 {
1791     // event
1792     if (_pImport->isEventElement( nUid, rLocalName ))
1793     {
1794         return new EventElement( nUid, rLocalName, xAttributes, this, _pImport );
1795     }
1796     else
1797     {
1798         throw xml::sax::SAXException(
1799             OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ),
1800             Reference< XInterface >(), Any() );
1801     }
1802 }
1803 //__________________________________________________________________________________________________
endElement()1804 void CheckBoxElement::endElement()
1805     throw (xml::sax::SAXException, RuntimeException)
1806 {
1807     ControlImportContext ctx(
1808         _pImport, getControlId( _xAttributes ),
1809         OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlCheckBoxModel") ) );
1810     Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
1811 
1812     Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
1813     if (xStyle.is())
1814     {
1815         StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
1816         pStyle->importBackgroundColorStyle( xControlModel );
1817         pStyle->importTextColorStyle( xControlModel );
1818         pStyle->importTextLineColorStyle( xControlModel );
1819         pStyle->importFontStyle( xControlModel );
1820         pStyle->importVisualEffectStyle( xControlModel );
1821     }
1822 
1823     ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
1824     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ),
1825                                OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ),
1826                                _xAttributes );
1827     ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Label") ),
1828                               OUString( RTL_CONSTASCII_USTRINGPARAM("value") ),
1829                               _xAttributes );
1830     ctx.importAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Align") ),
1831                              OUString( RTL_CONSTASCII_USTRINGPARAM("align") ),
1832                              _xAttributes );
1833     ctx.importVerticalAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("VerticalAlign") ),
1834                                      OUString( RTL_CONSTASCII_USTRINGPARAM("valign") ),
1835                                      _xAttributes );
1836     ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ImageURL") ),
1837                               OUString( RTL_CONSTASCII_USTRINGPARAM("image-src") ),
1838                               _xAttributes );
1839     ctx.importImagePositionProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ImagePosition") ),
1840                                      OUString( RTL_CONSTASCII_USTRINGPARAM("image-position") ),
1841                                      _xAttributes );
1842     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("MultiLine") ),
1843                                OUString( RTL_CONSTASCII_USTRINGPARAM("multiline") ),
1844                                _xAttributes );
1845 
1846 
1847     sal_Bool bTriState = sal_False;
1848     if (getBoolAttr( &bTriState,
1849                      OUString( RTL_CONSTASCII_USTRINGPARAM("tristate") ),
1850                      _xAttributes,
1851                      _pImport->XMLNS_DIALOGS_UID ))
1852     {
1853         xControlModel->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM("TriState") ),
1854                                          makeAny( bTriState ) );
1855     }
1856     sal_Bool bChecked = sal_False;
1857     if (getBoolAttr( &bChecked,
1858                      OUString( RTL_CONSTASCII_USTRINGPARAM("checked") ),
1859                      _xAttributes,
1860                      _pImport->XMLNS_DIALOGS_UID ))
1861     {
1862         // has "checked" attribute
1863         sal_Int16 nVal = (bChecked ? 1 : 0);
1864         xControlModel->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM("State") ),
1865                                          makeAny( nVal ) );
1866     }
1867     else
1868     {
1869         sal_Int16 nVal = (bTriState ? 2 : 0); // if tristate set, but checked omitted => dont know!
1870         xControlModel->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM("State") ),
1871                                          makeAny( nVal ) );
1872     }
1873 
1874     ctx.importEvents( _events );
1875     // avoid ring-reference:
1876     // vector< event elements > holding event elements holding this (via _pParent)
1877     _events.clear();
1878 }
1879 
1880 //##################################################################################################
1881 
1882 // button
1883 //__________________________________________________________________________________________________
startChildElement(sal_Int32 nUid,OUString const & rLocalName,Reference<xml::input::XAttributes> const & xAttributes)1884 Reference< xml::input::XElement > ButtonElement::startChildElement(
1885     sal_Int32 nUid, OUString const & rLocalName,
1886     Reference< xml::input::XAttributes > const & xAttributes )
1887     throw (xml::sax::SAXException, RuntimeException)
1888 {
1889     // event
1890     if (_pImport->isEventElement( nUid, rLocalName ))
1891     {
1892         return new EventElement( nUid, rLocalName, xAttributes, this, _pImport );
1893     }
1894     else
1895     {
1896         throw xml::sax::SAXException(
1897             OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ),
1898             Reference< XInterface >(), Any() );
1899     }
1900 }
1901 //__________________________________________________________________________________________________
endElement()1902 void ButtonElement::endElement()
1903     throw (xml::sax::SAXException, RuntimeException)
1904 {
1905     ControlImportContext ctx(
1906         _pImport, getControlId( _xAttributes ),
1907         OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlButtonModel") ) );
1908 
1909     Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
1910     if (xStyle.is())
1911     {
1912         StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
1913         Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
1914         pStyle->importBackgroundColorStyle( xControlModel );
1915         pStyle->importTextColorStyle( xControlModel );
1916         pStyle->importTextLineColorStyle( xControlModel );
1917         pStyle->importFontStyle( xControlModel );
1918     }
1919 
1920     ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
1921     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ),
1922                                OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ),
1923                                _xAttributes );
1924     ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Label") ),
1925                               OUString( RTL_CONSTASCII_USTRINGPARAM("value") ),
1926                               _xAttributes );
1927     ctx.importAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Align") ),
1928                              OUString( RTL_CONSTASCII_USTRINGPARAM("align") ),
1929                              _xAttributes );
1930     ctx.importVerticalAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("VerticalAlign") ),
1931                                      OUString( RTL_CONSTASCII_USTRINGPARAM("valign") ),
1932                                      _xAttributes );
1933     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("DefaultButton") ),
1934                                OUString( RTL_CONSTASCII_USTRINGPARAM("default") ),
1935                                _xAttributes );
1936     ctx.importButtonTypeProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("PushButtonType") ),
1937                                   OUString( RTL_CONSTASCII_USTRINGPARAM("button-type") ),
1938                                   _xAttributes );
1939     ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ImageURL") ),
1940                               OUString( RTL_CONSTASCII_USTRINGPARAM("image-src") ),
1941                               _xAttributes );
1942     ctx.importImagePositionProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ImagePosition") ),
1943                                      OUString( RTL_CONSTASCII_USTRINGPARAM("image-position") ),
1944                                      _xAttributes );
1945     ctx.importImageAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ImageAlign") ),
1946                                   OUString( RTL_CONSTASCII_USTRINGPARAM("image-align") ),
1947                                   _xAttributes );
1948     if (ctx.importLongProperty( OUSTR("RepeatDelay"), OUSTR("repeat"),
1949                                 _xAttributes ))
1950         ctx.getControlModel()->setPropertyValue(
1951             OUSTR("Repeat"), makeAny(true) );
1952     sal_Int32 toggled = 0;
1953     if (getLongAttr( &toggled, OUSTR("toggled"), _xAttributes,
1954                      _pImport->XMLNS_DIALOGS_UID ) && toggled == 1)
1955         ctx.getControlModel()->setPropertyValue(OUSTR("Toggle"), makeAny(true));
1956     ctx.importBooleanProperty( OUSTR("FocusOnClick"), OUSTR("grab-focus"),
1957                                _xAttributes );
1958     ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("MultiLine") ),
1959                                OUString( RTL_CONSTASCII_USTRINGPARAM("multiline") ),
1960                                _xAttributes );
1961     // State
1962     sal_Bool bChecked = sal_False;
1963     if (getBoolAttr(
1964             &bChecked,
1965             OUString( RTL_CONSTASCII_USTRINGPARAM("checked") ),
1966             _xAttributes,
1967             _pImport->XMLNS_DIALOGS_UID ) &&
1968         bChecked)
1969     {
1970         sal_Int16 nVal = 1;
1971         ctx.getControlModel()->setPropertyValue(
1972             OUString( RTL_CONSTASCII_USTRINGPARAM("State") ), makeAny( nVal ) );
1973     }
1974 
1975     ctx.importEvents( _events );
1976     // avoid ring-reference:
1977     // vector< event elements > holding event elements holding this (via _pParent)
1978     _events.clear();
1979 }
1980 
1981 //##################################################################################################
1982 
1983 // bulletinboard
1984 //__________________________________________________________________________________________________
startChildElement(sal_Int32 nUid,OUString const & rLocalName,Reference<xml::input::XAttributes> const & xAttributes)1985 Reference< xml::input::XElement > BulletinBoardElement::startChildElement(
1986     sal_Int32 nUid, OUString const & rLocalName,
1987     Reference< xml::input::XAttributes > const & xAttributes )
1988     throw (xml::sax::SAXException, RuntimeException)
1989 {
1990     if (_pImport->XMLNS_DIALOGS_UID != nUid)
1991     {
1992         throw xml::sax::SAXException(
1993             OUString( RTL_CONSTASCII_USTRINGPARAM("illegal namespace!") ),
1994             Reference< XInterface >(), Any() );
1995     }
1996     // button
1997     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("button") ))
1998     {
1999         return new ButtonElement( rLocalName, xAttributes, this, _pImport );
2000     }
2001     // checkbox
2002     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("checkbox") ))
2003     {
2004         return new CheckBoxElement( rLocalName, xAttributes, this, _pImport );
2005     }
2006     // combobox
2007     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("combobox") ))
2008     {
2009         return new ComboBoxElement( rLocalName, xAttributes, this, _pImport );
2010     }
2011     // listbox
2012     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("menulist") ))
2013     {
2014         return new MenuListElement( rLocalName, xAttributes, this, _pImport );
2015     }
2016     // radiogroup
2017     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("radiogroup") ))
2018     {
2019         return new RadioGroupElement( rLocalName, xAttributes, this, _pImport );
2020     }
2021     // titledbox
2022     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("titledbox") ))
2023     {
2024         return new TitledBoxElement( rLocalName, xAttributes, this, _pImport );
2025     }
2026     // text
2027     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("text") ))
2028     {
2029         return new TextElement( rLocalName, xAttributes, this, _pImport );
2030     }
2031     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("linklabel") ))
2032     {
2033         return new FixedHyperLinkElement( rLocalName, xAttributes, this, _pImport );
2034     }
2035     // textfield
2036     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("textfield") ))
2037     {
2038         return new TextFieldElement( rLocalName, xAttributes, this, _pImport );
2039     }
2040     // img
2041     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("img") ))
2042     {
2043         return new ImageControlElement( rLocalName, xAttributes, this, _pImport );
2044     }
2045     // filecontrol
2046     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("filecontrol") ))
2047     {
2048         return new FileControlElement( rLocalName, xAttributes, this, _pImport );
2049     }
2050     // treecontrol
2051     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("treecontrol") ))
2052     {
2053         return new TreeControlElement( rLocalName, xAttributes, this, _pImport );
2054     }
2055     // currencyfield
2056     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("currencyfield") ))
2057     {
2058         return new CurrencyFieldElement( rLocalName, xAttributes, this, _pImport );
2059     }
2060     // datefield
2061     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("datefield") ))
2062     {
2063         return new DateFieldElement( rLocalName, xAttributes, this, _pImport );
2064     }
2065     // datefield
2066     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("numericfield") ))
2067     {
2068         return new NumericFieldElement( rLocalName, xAttributes, this, _pImport );
2069     }
2070     // timefield
2071     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("timefield") ))
2072     {
2073         return new TimeFieldElement( rLocalName, xAttributes, this, _pImport );
2074     }
2075     // patternfield
2076     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("patternfield") ))
2077     {
2078         return new PatternFieldElement( rLocalName, xAttributes, this, _pImport );
2079     }
2080     // formattedfield
2081     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("formattedfield") ))
2082     {
2083         return new FormattedFieldElement( rLocalName, xAttributes, this, _pImport );
2084     }
2085     // fixedline
2086     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("fixedline") ))
2087     {
2088         return new FixedLineElement( rLocalName, xAttributes, this, _pImport );
2089     }
2090     // scrollbar
2091     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("scrollbar") ))
2092     {
2093         return new ScrollBarElement( rLocalName, xAttributes, this, _pImport );
2094     }
2095     // progressmeter
2096     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("progressmeter") ))
2097     {
2098         return new ProgressBarElement( rLocalName, xAttributes, this, _pImport );
2099     }
2100     // bulletinboard
2101     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("bulletinboard") ))
2102     {
2103         return new BulletinBoardElement( rLocalName, xAttributes, this, _pImport );
2104     }
2105     else
2106     {
2107         throw xml::sax::SAXException(
2108             OUString( RTL_CONSTASCII_USTRINGPARAM("expected styles, bulletinboard or bulletinboard element, not: ") ) + rLocalName,
2109             Reference< XInterface >(), Any() );
2110     }
2111 }
2112 //__________________________________________________________________________________________________
BulletinBoardElement(OUString const & rLocalName,Reference<xml::input::XAttributes> const & xAttributes,ElementBase * pParent,DialogImport * pImport)2113 BulletinBoardElement::BulletinBoardElement(
2114     OUString const & rLocalName,
2115     Reference< xml::input::XAttributes > const & xAttributes,
2116     ElementBase * pParent, DialogImport * pImport )
2117     SAL_THROW( () )
2118     : ControlElement( rLocalName, xAttributes, pParent, pImport )
2119 {
2120     OUString aValue(
2121         _xAttributes->getValueByUidName(
2122             _pImport->XMLNS_DIALOGS_UID,
2123             OUString( RTL_CONSTASCII_USTRINGPARAM("left") ) ) );
2124     if (aValue.getLength())
2125     {
2126         _nBasePosX += toInt32( aValue );
2127     }
2128     aValue = _xAttributes->getValueByUidName(
2129         _pImport->XMLNS_DIALOGS_UID,
2130         OUString( RTL_CONSTASCII_USTRINGPARAM("top") ) );
2131     if (aValue.getLength())
2132     {
2133         _nBasePosY += toInt32( aValue );
2134     }
2135 }
2136 
2137 //##################################################################################################
2138 
2139 // style
2140 //__________________________________________________________________________________________________
startChildElement(sal_Int32,OUString const &,Reference<xml::input::XAttributes> const &)2141 Reference< xml::input::XElement > StyleElement::startChildElement(
2142     sal_Int32 /*nUid*/, OUString const & /*rLocalName*/,
2143     Reference< xml::input::XAttributes > const & /*xAttributes*/ )
2144     throw (xml::sax::SAXException, RuntimeException)
2145 {
2146     throw xml::sax::SAXException(
2147         OUString( RTL_CONSTASCII_USTRINGPARAM("unexpected sub elements of style!") ),
2148         Reference< XInterface >(), Any() );
2149 }
2150 //__________________________________________________________________________________________________
endElement()2151 void StyleElement::endElement()
2152     throw (xml::sax::SAXException, RuntimeException)
2153 {
2154     Reference< xml::input::XAttributes > xStyle;
2155     OUString aStyleId(
2156         _xAttributes->getValueByUidName(
2157             _pImport->XMLNS_DIALOGS_UID,
2158             OUString( RTL_CONSTASCII_USTRINGPARAM("style-id") ) ) );
2159     if (aStyleId.getLength())
2160     {
2161         _pImport->addStyle( aStyleId, this );
2162     }
2163     else
2164     {
2165         throw xml::sax::SAXException(
2166             OUString( RTL_CONSTASCII_USTRINGPARAM("missing style-id attribute!") ),
2167             Reference< XInterface >(), Any() );
2168     }
2169 }
2170 
2171 //##################################################################################################
2172 
2173 // styles
2174 //__________________________________________________________________________________________________
startChildElement(sal_Int32 nUid,OUString const & rLocalName,Reference<xml::input::XAttributes> const & xAttributes)2175 Reference< xml::input::XElement > StylesElement::startChildElement(
2176     sal_Int32 nUid, OUString const & rLocalName,
2177     Reference< xml::input::XAttributes > const & xAttributes )
2178     throw (xml::sax::SAXException, RuntimeException)
2179 {
2180     if (_pImport->XMLNS_DIALOGS_UID != nUid)
2181     {
2182         throw xml::sax::SAXException(
2183             OUString( RTL_CONSTASCII_USTRINGPARAM("illegal namespace!") ),
2184             Reference< XInterface >(), Any() );
2185     }
2186     // style
2187     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("style") ))
2188     {
2189         return new StyleElement( rLocalName, xAttributes, this, _pImport );
2190     }
2191     else
2192     {
2193         throw xml::sax::SAXException(
2194             OUString( RTL_CONSTASCII_USTRINGPARAM("expected style element!") ),
2195             Reference< XInterface >(), Any() );
2196     }
2197 }
2198 
2199 //##################################################################################################
2200 
2201 // window
2202 //__________________________________________________________________________________________________
startChildElement(sal_Int32 nUid,OUString const & rLocalName,Reference<xml::input::XAttributes> const & xAttributes)2203 Reference< xml::input::XElement > WindowElement::startChildElement(
2204     sal_Int32 nUid, OUString const & rLocalName,
2205     Reference< xml::input::XAttributes > const & xAttributes )
2206     throw (xml::sax::SAXException, RuntimeException)
2207 {
2208     // event
2209     if (_pImport->isEventElement( nUid, rLocalName ))
2210     {
2211         return new EventElement( nUid, rLocalName, xAttributes, this, _pImport );
2212     }
2213     else if (_pImport->XMLNS_DIALOGS_UID != nUid)
2214     {
2215         throw xml::sax::SAXException(
2216             OUString( RTL_CONSTASCII_USTRINGPARAM("illegal namespace!") ),
2217             Reference< XInterface >(), Any() );
2218     }
2219     // styles
2220     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("styles") ))
2221     {
2222         return new StylesElement( rLocalName, xAttributes, this, _pImport );
2223     }
2224     // bulletinboard
2225     else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("bulletinboard") ))
2226     {
2227         return new BulletinBoardElement( rLocalName, xAttributes, this, _pImport );
2228     }
2229     else
2230     {
2231         throw xml::sax::SAXException(
2232             OUString( RTL_CONSTASCII_USTRINGPARAM("expected styles ot bulletinboard element!") ),
2233             Reference< XInterface >(), Any() );
2234     }
2235 }
2236 //__________________________________________________________________________________________________
endElement()2237 void WindowElement::endElement()
2238     throw (xml::sax::SAXException, RuntimeException)
2239 {
2240     Reference< beans::XPropertySet > xProps(
2241         _pImport->_xDialogModel, UNO_QUERY_THROW );
2242     ImportContext ctx( _pImport, xProps, getControlId( _xAttributes ) );
2243 
2244     Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
2245     if (xStyle.is())
2246     {
2247         StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
2248         pStyle->importBackgroundColorStyle( xProps );
2249         pStyle->importTextColorStyle( xProps );
2250         pStyle->importTextLineColorStyle( xProps );
2251         pStyle->importFontStyle( xProps );
2252     }
2253 
2254     ctx.importDefaults( 0, 0, _xAttributes, false );
2255     ctx.importBooleanProperty(
2256         OUString( RTL_CONSTASCII_USTRINGPARAM("Closeable") ),
2257         OUString( RTL_CONSTASCII_USTRINGPARAM("closeable") ),
2258         _xAttributes );
2259     ctx.importBooleanProperty(
2260         OUString( RTL_CONSTASCII_USTRINGPARAM("Moveable") ),
2261         OUString( RTL_CONSTASCII_USTRINGPARAM("moveable") ),
2262         _xAttributes );
2263     ctx.importBooleanProperty(
2264         OUString( RTL_CONSTASCII_USTRINGPARAM("Sizeable") ),
2265         OUString( RTL_CONSTASCII_USTRINGPARAM("resizeable") ),
2266         _xAttributes );
2267     ctx.importStringProperty(
2268         OUString( RTL_CONSTASCII_USTRINGPARAM("Title") ),
2269         OUString( RTL_CONSTASCII_USTRINGPARAM("title") ),
2270         _xAttributes );
2271     ctx.importBooleanProperty(
2272         OUString( RTL_CONSTASCII_USTRINGPARAM("Decoration") ),
2273         OUString( RTL_CONSTASCII_USTRINGPARAM("withtitlebar") ),
2274         _xAttributes );
2275     ctx.importStringProperty(
2276         OUString( RTL_CONSTASCII_USTRINGPARAM("ImageURL") ),
2277         OUString( RTL_CONSTASCII_USTRINGPARAM("image-src") ),
2278         _xAttributes );
2279     ctx.importEvents( _events );
2280     // avoid ring-reference:
2281     // vector< event elements > holding event elements holding this (via _pParent)
2282     _events.clear();
2283 }
2284 
2285 }
2286