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