Version 6.1.0.2, tag libreoffice-6.1.0.2
[LibreOffice.git] / xmlscript / source / xmldlg_imexp / xmldlg_impmodels.cxx
blobd78e9a55579e25fb1cf192d87c13541bd4e105ed
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #include "imp_share.hxx"
21 #include <com/sun/star/form/binding/XBindableValue.hpp>
22 #include <com/sun/star/form/binding/XValueBinding.hpp>
23 #include <com/sun/star/form/binding/XListEntrySink.hpp>
24 #include <com/sun/star/beans/NamedValue.hpp>
25 #include <com/sun/star/table/CellAddress.hpp>
26 #include <com/sun/star/table/CellRangeAddress.hpp>
27 #include <com/sun/star/beans/XPropertySet.hpp>
28 #include <com/sun/star/beans/XPropertyState.hpp>
29 #include <com/sun/star/document/XStorageBasedDocument.hpp>
30 #include <com/sun/star/xml/sax/SAXException.hpp>
32 #include <sal/log.hxx>
33 #include <i18nlangtag/languagetag.hxx>
35 using namespace ::com::sun::star;
36 using namespace ::com::sun::star::uno;
38 namespace xmlscript
41 Reference< xml::input::XElement > Frame::startChildElement(
42 sal_Int32 nUid, OUString const & rLocalName,
43 Reference< xml::input::XAttributes > const & xAttributes )
45 if ( !m_xContainer.is() )
46 m_xContainer.set( m_xImport->_xDialogModelFactory->createInstance( "com.sun.star.awt.UnoFrameModel" ), UNO_QUERY );
47 // event
48 if (m_xImport->isEventElement( nUid, rLocalName ))
50 return new EventElement( nUid, rLocalName, xAttributes, this, m_xImport.get() );
52 else if ( rLocalName == "bulletinboard" )
54 // Create new DialogImport for this container
55 DialogImport* pFrameImport = new DialogImport( *m_xImport );
56 pFrameImport->_xDialogModel = m_xContainer;
57 return new BulletinBoardElement( rLocalName, xAttributes, this, pFrameImport );
59 else if ( rLocalName == "title" )
61 getStringAttr( &_label, "value", xAttributes, m_xImport->XMLNS_DIALOGS_UID );
63 return new ElementBase( m_xImport->XMLNS_DIALOGS_UID, rLocalName, xAttributes, this, m_xImport.get() );
65 else
67 SAL_INFO("xmlscript.xmldlg","****** ARGGGGG!!!! **********");
68 throw xml::sax::SAXException("expected event element!", Reference< XInterface >(), Any() );
72 void Frame::endElement()
74 if ( !m_xContainer.is() )
75 m_xContainer.set( m_xImport->_xDialogModelFactory->createInstance( "com.sun.star.awt.UnoFrameModel" ), UNO_QUERY );
76 Reference< beans::XPropertySet > xProps( m_xContainer, UNO_QUERY_THROW );
77 // m_xImport is what we need to add to ( e.g. the dialog in this case )
78 ControlImportContext ctx( m_xImport.get(), xProps, getControlId( _xAttributes ) );
80 Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
82 Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
83 if (xStyle.is())
85 StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
86 pStyle->importTextColorStyle( xControlModel );
87 pStyle->importTextLineColorStyle( xControlModel );
88 pStyle->importFontStyle( xControlModel );
91 ctx.importDefaults( 0, 0, _xAttributes ); // inherited from BulletinBoardElement
92 if (!_label.isEmpty())
94 xControlModel->setPropertyValue( "Label" , makeAny( _label ) );
96 ctx.importEvents( _events );
97 // avoid ring-reference:
98 // vector< event elements > holding event elements holding this (via _pParent)
99 _events.clear();
101 ctx.finish();
105 Reference< xml::input::XElement > MultiPage::startChildElement(
106 sal_Int32 nUid, OUString const & rLocalName,
107 Reference< xml::input::XAttributes > const & xAttributes )
109 // event
110 if (m_xImport->isEventElement( nUid, rLocalName ))
112 return new EventElement(
113 nUid, rLocalName, xAttributes, this, m_xImport.get() );
115 else if ( rLocalName == "bulletinboard" )
117 // Create new DialogImport for this container
119 DialogImport* pMultiPageImport = new DialogImport( *m_xImport );
120 pMultiPageImport->_xDialogModel = m_xContainer;
121 return new BulletinBoardElement( rLocalName, xAttributes, this, pMultiPageImport );
123 else
126 throw xml::sax::SAXException( "expected event element!", Reference< XInterface >(), Any() );
130 void MultiPage::endElement()
132 Reference< beans::XPropertySet > xProps( m_xContainer, UNO_QUERY_THROW );
133 // m_xImport is what we need to add to ( e.g. the dialog in this case )
134 ControlImportContext ctx( m_xImport.get(), xProps, getControlId( _xAttributes ));
136 Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
138 Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
139 if (xStyle.is())
141 StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
142 pStyle->importTextColorStyle( xControlModel );
143 pStyle->importTextLineColorStyle( xControlModel );
144 pStyle->importFontStyle( xControlModel );
145 pStyle->importBackgroundColorStyle( xControlModel );
148 ctx.importDefaults( 0, 0, _xAttributes ); // inherited from BulletinBoardElement
149 ctx.importLongProperty("MultiPageValue" , "value", _xAttributes );
150 ctx.importBooleanProperty( "Decoration", "withtabs", _xAttributes) ;
151 ctx.importEvents( _events );
152 // avoid ring-reference:
153 // vector< event elements > holding event elements holding this (via _pParent)
154 _events.clear();
156 ctx.finish();
159 Reference< xml::input::XElement > Page::startChildElement(
160 sal_Int32 nUid, OUString const & rLocalName,
161 Reference< xml::input::XAttributes > const & xAttributes )
163 // event
164 if (m_xImport->isEventElement( nUid, rLocalName ))
166 return new EventElement(
167 nUid, rLocalName, xAttributes, this, m_xImport.get() );
169 else if ( rLocalName == "bulletinboard" )
172 DialogImport* pPageImport = new DialogImport( *m_xImport );
173 pPageImport->_xDialogModel = m_xContainer;
174 return new BulletinBoardElement( rLocalName, xAttributes, this, pPageImport );
176 else
179 throw xml::sax::SAXException("expected event element!", Reference< XInterface >(), Any() );
183 void Page::endElement()
185 Reference< beans::XPropertySet > xProps( m_xContainer, UNO_QUERY_THROW );
187 ControlImportContext ctx( m_xImport.get(), xProps, getControlId( _xAttributes ));
189 Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
191 Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
192 if (xStyle.is())
194 StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
195 pStyle->importTextColorStyle( xControlModel );
196 pStyle->importTextLineColorStyle( xControlModel );
197 pStyle->importFontStyle( xControlModel );
198 pStyle->importBackgroundColorStyle( xControlModel );
201 ctx.importDefaults( 0, 0, _xAttributes ); // inherited from BulletinBoardElement
202 ctx.importStringProperty( "Title", "title", _xAttributes );
203 ctx.importEvents( _events );
204 // avoid ring-reference:
205 // vector< event elements > holding event elements holding this (via _pParent)
206 _events.clear();
208 ctx.finish();
211 // progressmeter
212 Reference< xml::input::XElement > ProgressBarElement::startChildElement(
213 sal_Int32 nUid, OUString const & rLocalName,
214 Reference< xml::input::XAttributes > const & xAttributes )
216 // event
217 if (!m_xImport->isEventElement( nUid, rLocalName ))
219 throw xml::sax::SAXException( "expected event element!", Reference< XInterface >(), Any() );
222 return new EventElement(
223 nUid, rLocalName, xAttributes, this, m_xImport.get() );
226 void ProgressBarElement::endElement()
228 ControlImportContext ctx( m_xImport.get(), getControlId( _xAttributes ), "com.sun.star.awt.UnoControlProgressBarModel" );
230 Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
231 if (xStyle.is())
233 StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
234 Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
235 pStyle->importBackgroundColorStyle( xControlModel );
236 pStyle->importBorderStyle( xControlModel );
237 pStyle->importFillColorStyle( xControlModel );
240 ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
241 ctx.importLongProperty( "ProgressValue", "value", _xAttributes );
242 ctx.importLongProperty( "ProgressValueMin", "value-min", _xAttributes );
243 ctx.importLongProperty( "ProgressValueMax", "value-max", _xAttributes );
244 ctx.importEvents( _events );
245 // avoid ring-reference:
246 // vector< event elements > holding event elements holding this (via _pParent)
247 _events.clear();
249 ctx.finish();
252 // scrollbar
253 Reference< xml::input::XElement > ScrollBarElement::startChildElement(
254 sal_Int32 nUid, OUString const & rLocalName,
255 Reference< xml::input::XAttributes > const & xAttributes )
257 // event
258 if (!m_xImport->isEventElement( nUid, rLocalName ))
260 throw xml::sax::SAXException("expected event element!", Reference< XInterface >(), Any() );
263 return new EventElement( nUid, rLocalName, xAttributes, this, m_xImport.get() );
266 void ScrollBarElement::endElement()
268 ControlImportContext ctx( m_xImport.get(), getControlId( _xAttributes ), getControlModelName( "com.sun.star.awt.UnoControlScrollBarModel" , _xAttributes ) );
270 Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
271 if (xStyle.is())
273 StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
274 Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
275 pStyle->importBackgroundColorStyle( xControlModel );
276 pStyle->importBorderStyle( xControlModel );
279 ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
280 ctx.importOrientationProperty( "Orientation" , "align", _xAttributes );
281 ctx.importLongProperty( "BlockIncrement" , "pageincrement" , _xAttributes );
282 ctx.importLongProperty( "LineIncrement" , "increment" , _xAttributes );
283 ctx.importLongProperty( "ScrollValue" ,"curpos", _xAttributes );
284 ctx.importLongProperty( "ScrollValueMax" , "maxpos" , _xAttributes );
285 ctx.importLongProperty( "ScrollValueMin","minpos", _xAttributes );
286 ctx.importLongProperty( "VisibleSize", "visible-size", _xAttributes );
287 ctx.importLongProperty( "RepeatDelay", "repeat", _xAttributes );
288 ctx.importBooleanProperty( "Tabstop", "tabstop" , _xAttributes );
289 ctx.importBooleanProperty( "LiveScroll", "live-scroll", _xAttributes );
290 ctx.importHexLongProperty( "SymbolColor", "symbol-color", _xAttributes );
292 ctx.importDataAwareProperty( "linked-cell" , _xAttributes );
293 ctx.importEvents( _events );
294 // avoid ring-reference:
295 // vector< event elements > holding event elements holding this (via _pParent)
296 _events.clear();
298 ctx.finish();
301 // spinbutton
302 Reference< xml::input::XElement > SpinButtonElement::startChildElement(
303 sal_Int32 nUid, OUString const & rLocalName,
304 Reference< xml::input::XAttributes > const & xAttributes )
306 // event
307 if (!m_xImport->isEventElement( nUid, rLocalName ))
309 throw xml::sax::SAXException("expected event element!", Reference< XInterface >(), Any() );
312 return new EventElement( nUid, rLocalName, xAttributes, this, m_xImport.get() );
315 void SpinButtonElement::endElement()
317 ControlImportContext ctx( m_xImport.get(), getControlId( _xAttributes ), getControlModelName( "com.sun.star.awt.UnoControlSpinButtonModel", _xAttributes ) );
319 Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
320 if (xStyle.is())
322 StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
323 Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
324 pStyle->importBackgroundColorStyle( xControlModel );
325 pStyle->importBorderStyle( xControlModel );
328 ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
329 ctx.importOrientationProperty( "Orientation", "align", _xAttributes );
330 ctx.importLongProperty("SpinIncrement", "increment", _xAttributes );
331 ctx.importLongProperty("SpinValue", "curval" ,_xAttributes );
332 ctx.importLongProperty("SpinValueMax", "maxval", _xAttributes );
333 ctx.importLongProperty( "SpinValueMin","minval",_xAttributes );
334 ctx.importLongProperty( "Repeat", "repeat", _xAttributes );
335 ctx.importLongProperty( "RepeatDelay", "repeat-delay",_xAttributes );
336 ctx.importBooleanProperty( "Tabstop", "tabstop", _xAttributes );
337 ctx.importHexLongProperty( "SymbolColor", "symbol-color" , _xAttributes );
338 ctx.importDataAwareProperty( "linked-cell" , _xAttributes );
339 ctx.importEvents( _events );
340 // avoid ring-reference:
341 // vector< event elements > holding event elements holding this (via _pParent)
342 _events.clear();
344 ctx.finish();
347 // fixedline
348 Reference< xml::input::XElement > FixedLineElement::startChildElement(
349 sal_Int32 nUid, OUString const & rLocalName,
350 Reference< xml::input::XAttributes > const & xAttributes )
352 // event
353 if (!m_xImport->isEventElement( nUid, rLocalName ))
355 throw xml::sax::SAXException("expected event element!", Reference< XInterface >(), Any() );
358 return new EventElement( nUid, rLocalName, xAttributes, this, m_xImport.get() );
361 void FixedLineElement::endElement()
363 ControlImportContext ctx(m_xImport.get(), getControlId( _xAttributes ), "com.sun.star.awt.UnoControlFixedLineModel" );
365 Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
366 if (xStyle.is())
368 StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
369 Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
370 pStyle->importTextColorStyle( xControlModel );
371 pStyle->importTextLineColorStyle( xControlModel );
372 pStyle->importFontStyle( xControlModel );
375 ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
376 ctx.importStringProperty( "Label", "value", _xAttributes );
377 ctx.importOrientationProperty( "Orientation", "align", _xAttributes );
378 ctx.importEvents( _events );
379 // avoid ring-reference:
380 // vector< event elements > holding event elements holding this (via _pParent)
381 _events.clear();
383 ctx.finish();
386 // patternfield
387 Reference< xml::input::XElement > PatternFieldElement::startChildElement(
388 sal_Int32 nUid, OUString const & rLocalName,
389 Reference< xml::input::XAttributes > const & xAttributes )
391 // event
392 if (!m_xImport->isEventElement( nUid, rLocalName ))
394 throw xml::sax::SAXException("expected event element!", Reference< XInterface >(), Any() );
397 return new EventElement( nUid, rLocalName, xAttributes, this, m_xImport.get() );
400 void PatternFieldElement::endElement()
402 ControlImportContext ctx( m_xImport.get(), getControlId( _xAttributes ), "com.sun.star.awt.UnoControlPatternFieldModel" );
404 Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
405 if (xStyle.is())
407 StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
408 Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
409 pStyle->importBackgroundColorStyle( xControlModel );
410 pStyle->importTextColorStyle( xControlModel );
411 pStyle->importTextLineColorStyle( xControlModel );
412 pStyle->importBorderStyle( xControlModel );
413 pStyle->importFontStyle( xControlModel );
416 ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
417 ctx.importBooleanProperty( "Tabstop", "tabstop", _xAttributes );
418 ctx.importBooleanProperty( "ReadOnly", "readonly" , _xAttributes );
419 ctx.importBooleanProperty( "StrictFormat", "strict-format", _xAttributes );
420 ctx.importBooleanProperty( "HideInactiveSelection", "hide-inactive-selection", _xAttributes );
421 ctx.importStringProperty( "Text", "value", _xAttributes );
422 ctx.importShortProperty( "MaxTextLen", "maxlength", _xAttributes );
423 ctx.importStringProperty( "EditMask", "edit-mask", _xAttributes );
424 ctx.importStringProperty( "LiteralMask", "literal-mask", _xAttributes );
425 ctx.importEvents( _events );
426 // avoid ring-reference:
427 // vector< event elements > holding event elements holding this (via _pParent)
428 _events.clear();
430 ctx.finish();
433 // formattedfield
434 Reference< xml::input::XElement > FormattedFieldElement::startChildElement(
435 sal_Int32 nUid, OUString const & rLocalName,
436 Reference< xml::input::XAttributes > const & xAttributes )
438 // event
439 if (!m_xImport->isEventElement( nUid, rLocalName ))
441 throw xml::sax::SAXException("expected event element!", Reference< XInterface >(), Any() );
444 return new EventElement( nUid, rLocalName, xAttributes, this, m_xImport.get() );
447 void FormattedFieldElement::endElement()
449 ControlImportContext ctx( m_xImport.get(), getControlId( _xAttributes ), "com.sun.star.awt.UnoControlFormattedFieldModel" );
451 Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
452 if (xStyle.is())
454 StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
455 Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
456 pStyle->importBackgroundColorStyle( xControlModel );
457 pStyle->importTextColorStyle( xControlModel );
458 pStyle->importTextLineColorStyle( xControlModel );
459 pStyle->importBorderStyle( xControlModel );
460 pStyle->importFontStyle( xControlModel );
463 ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
464 ctx.importBooleanProperty( "Tabstop", "tabstop", _xAttributes );
465 ctx.importBooleanProperty( "ReadOnly", "readonly" , _xAttributes );
466 ctx.importBooleanProperty( "StrictFormat", "strict-format" , _xAttributes );
467 ctx.importBooleanProperty( "HideInactiveSelection", "hide-inactive-selection", _xAttributes );
468 ctx.importAlignProperty( "Align" , "align" , _xAttributes );
469 ctx.importDoubleProperty( "EffectiveMin", "value-min" , _xAttributes );
470 ctx.importDoubleProperty( "EffectiveMax", "value-max", _xAttributes);
471 ctx.importDoubleProperty( "EffectiveValue", "value", _xAttributes );
472 ctx.importStringProperty( "Text", "text", _xAttributes );
473 ctx.importShortProperty( "MaxTextLen", "maxlength", _xAttributes );
474 ctx.importBooleanProperty( "Spin", "spin", _xAttributes );
475 if (ctx.importLongProperty( "RepeatDelay", "repeat", _xAttributes ))
476 ctx.getControlModel()->setPropertyValue( "Repeat" , makeAny(true) );
478 OUString sDefault(_xAttributes->getValueByUidName(m_xImport->XMLNS_DIALOGS_UID, "value-default") );
479 if (!sDefault.isEmpty())
481 double d = sDefault.toDouble();
482 if (d != 0.0 || sDefault == "0" || sDefault == "0.0" )
484 ctx.getControlModel()->setPropertyValue( "EffectiveDefault", makeAny( d ) );
486 else // treat as string
488 ctx.getControlModel()->setPropertyValue( "EffectiveDefault", makeAny( sDefault ) );
492 // format spec
493 ctx.getControlModel()->setPropertyValue("FormatsSupplier", makeAny( m_xImport->getNumberFormatsSupplier() ) );
495 OUString sFormat( _xAttributes->getValueByUidName(m_xImport->XMLNS_DIALOGS_UID, "format-code" ) );
496 if (!sFormat.isEmpty())
498 lang::Locale locale;
500 OUString sLocale( _xAttributes->getValueByUidName( m_xImport->XMLNS_DIALOGS_UID, "format-locale" ) );
501 if (!sLocale.isEmpty())
503 // split locale
504 // Don't know what may have written what we read here, so parse all
505 // old style including the trailing ";Variant" if present.
506 sal_Int32 semi0 = sLocale.indexOf( ';' );
507 if (semi0 < 0) // no semi at all, try new BCP47 or just language
509 locale = LanguageTag::convertToLocale( sLocale, false);
511 else
513 sal_Int32 semi1 = sLocale.indexOf( ';', semi0 +1 );
514 if (semi1 > semi0) // language;country;variant
516 SAL_WARN( "xmlscript.xmldlg", "format-locale with variant that is ignored: " << sLocale);
517 locale.Language = sLocale.copy( 0, semi0 );
518 locale.Country = sLocale.copy( semi0 +1, semi1 - semi0 -1 );
519 // Ignore Variant that no one knows what it would be.
521 else // language;country
523 locale.Language = sLocale.copy( 0, semi0 );
524 locale.Country = sLocale.copy( semi0 +1 );
531 Reference< util::XNumberFormats > xFormats(
532 m_xImport->getNumberFormatsSupplier()->getNumberFormats() );
533 sal_Int32 nKey = xFormats->queryKey( sFormat, locale, true );
534 if (-1 == nKey)
536 nKey = xFormats->addNew( sFormat, locale );
538 ctx.getControlModel()->setPropertyValue("FormatKey", makeAny( nKey ) );
540 catch (const util::MalformedNumberFormatException & exc)
542 SAL_WARN( "xmlscript.xmldlg", "### util::MalformedNumberFormatException occurred!" );
543 // rethrow
544 throw xml::sax::SAXException( exc.Message, Reference< XInterface >(), Any() );
547 ctx.importBooleanProperty("TreatAsNumber", "treat-as-number" , _xAttributes );
548 ctx.importBooleanProperty("EnforceFormat", "enforce-format", _xAttributes );
550 ctx.importDataAwareProperty( "linked-cell" , _xAttributes );
551 ctx.importEvents( _events );
552 // avoid ring-reference:
553 // vector< event elements > holding event elements holding this (via _pParent)
554 _events.clear();
556 ctx.finish();
559 // timefield
560 Reference< xml::input::XElement > TimeFieldElement::startChildElement(
561 sal_Int32 nUid, OUString const & rLocalName,
562 Reference< xml::input::XAttributes > const & xAttributes )
564 // event
565 if (!m_xImport->isEventElement( nUid, rLocalName ))
567 throw xml::sax::SAXException("expected event element!", Reference< XInterface >(), Any() );
570 return new EventElement( nUid, rLocalName, xAttributes, this, m_xImport.get() );
573 void TimeFieldElement::endElement()
575 ControlImportContext ctx( m_xImport.get(), getControlId( _xAttributes ), "com.sun.star.awt.UnoControlTimeFieldModel" );
577 Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
578 if (xStyle.is())
580 StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
581 Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
582 pStyle->importBackgroundColorStyle( xControlModel );
583 pStyle->importTextColorStyle( xControlModel );
584 pStyle->importTextLineColorStyle( xControlModel );
585 pStyle->importBorderStyle( xControlModel );
586 pStyle->importFontStyle( xControlModel );
589 ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
590 ctx.importBooleanProperty("Tabstop", "tabstop", _xAttributes );
591 ctx.importBooleanProperty("ReadOnly", "readonly", _xAttributes );
592 ctx.importBooleanProperty( "StrictFormat", "strict-format", _xAttributes );
593 ctx.importBooleanProperty("HideInactiveSelection","hide-inactive-selection", _xAttributes );
594 ctx.importTimeFormatProperty( "TimeFormat", "time-format", _xAttributes );
595 ctx.importTimeProperty( "Time", "value", _xAttributes );
596 ctx.importTimeProperty( "TimeMin", "value-min", _xAttributes );
597 ctx.importTimeProperty( "TimeMax", "value-max", _xAttributes );
598 ctx.importBooleanProperty( "Spin", "spin", _xAttributes );
599 if (ctx.importLongProperty( "RepeatDelay", "repeat", _xAttributes ))
600 ctx.getControlModel()->setPropertyValue("Repeat", makeAny(true) );
601 ctx.importStringProperty( "Text", "text" , _xAttributes );
602 ctx.importBooleanProperty( "EnforceFormat", "enforce-format" , _xAttributes );
604 ctx.importEvents( _events );
605 // avoid ring-reference:
606 // vector< event elements > holding event elements holding this (via _pParent)
607 _events.clear();
609 ctx.finish();
612 // numericfield
613 Reference< xml::input::XElement > NumericFieldElement::startChildElement(
614 sal_Int32 nUid, OUString const & rLocalName,
615 Reference< xml::input::XAttributes > const & xAttributes )
617 // event
618 if (!m_xImport->isEventElement( nUid, rLocalName ))
620 throw xml::sax::SAXException( "expected event element!", Reference< XInterface >(), Any() );
623 return new EventElement( nUid, rLocalName, xAttributes, this, m_xImport.get() );
626 void NumericFieldElement::endElement()
628 ControlImportContext ctx( m_xImport.get(), getControlId( _xAttributes ), "com.sun.star.awt.UnoControlNumericFieldModel" );
630 Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
631 if (xStyle.is())
633 StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
634 Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
635 pStyle->importBackgroundColorStyle( xControlModel );
636 pStyle->importTextColorStyle( xControlModel );
637 pStyle->importTextLineColorStyle( xControlModel );
638 pStyle->importBorderStyle( xControlModel );
639 pStyle->importFontStyle( xControlModel );
642 ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
643 ctx.importAlignProperty( "Align", "align", _xAttributes );
644 ctx.importVerticalAlignProperty( "VerticalAlign", "valign", _xAttributes );
645 ctx.importBooleanProperty( "Tabstop","tabstop",_xAttributes );
646 ctx.importBooleanProperty( "ReadOnly", "readonly",_xAttributes );
647 ctx.importBooleanProperty( "StrictFormat", "strict-format", _xAttributes );
648 ctx.importBooleanProperty( "HideInactiveSelection", "hide-inactive-selection", _xAttributes );
649 ctx.importShortProperty( "DecimalAccuracy", "decimal-accuracy", _xAttributes );
650 ctx.importBooleanProperty( "ShowThousandsSeparator", "thousands-separator", _xAttributes );
651 ctx.importDoubleProperty( "Value", "value", _xAttributes );
652 ctx.importDoubleProperty( "ValueMin", "value-min", _xAttributes );
653 ctx.importDoubleProperty( "ValueMax", "value-max", _xAttributes );
654 ctx.importDoubleProperty( "ValueStep", "value-step", _xAttributes );
655 ctx.importBooleanProperty( "Spin", "spin", _xAttributes );
656 if (ctx.importLongProperty( "RepeatDelay", "repeat", _xAttributes ))
657 ctx.getControlModel()->setPropertyValue("Repeat", makeAny(true) );
658 ctx.importBooleanProperty( "EnforceFormat", "enforce-format", _xAttributes );
659 ctx.importEvents( _events );
660 // avoid ring-reference:
661 // vector< event elements > holding event elements holding this (via _pParent)
662 _events.clear();
664 ctx.finish();
667 // datefield
668 Reference< xml::input::XElement > DateFieldElement::startChildElement(
669 sal_Int32 nUid, OUString const & rLocalName,
670 Reference< xml::input::XAttributes > const & xAttributes )
672 // event
673 if (!m_xImport->isEventElement( nUid, rLocalName ))
675 throw xml::sax::SAXException("expected event element!", Reference< XInterface >(), Any() );
678 return new EventElement( nUid, rLocalName, xAttributes, this, m_xImport.get() );
681 void DateFieldElement::endElement()
683 ControlImportContext ctx( m_xImport.get(), getControlId( _xAttributes ), "com.sun.star.awt.UnoControlDateFieldModel" );
685 Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
686 if (xStyle.is())
688 StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
689 Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
690 pStyle->importBackgroundColorStyle( xControlModel );
691 pStyle->importTextColorStyle( xControlModel );
692 pStyle->importTextLineColorStyle( xControlModel );
693 pStyle->importBorderStyle( xControlModel );
694 pStyle->importFontStyle( xControlModel );
697 ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
698 ctx.importBooleanProperty( "Tabstop", "tabstop", _xAttributes );
699 ctx.importBooleanProperty( "ReadOnly", "readonly", _xAttributes );
700 ctx.importBooleanProperty( "StrictFormat", "strict-format", _xAttributes );
701 ctx.importBooleanProperty( "HideInactiveSelection", "hide-inactive-selection", _xAttributes );
702 ctx.importDateFormatProperty( "DateFormat", "date-format", _xAttributes );
703 ctx.importBooleanProperty( "DateShowCentury", "show-century", _xAttributes );
704 ctx.importDateProperty( "Date", "value", _xAttributes );
705 ctx.importDateProperty( "DateMin", "value-min", _xAttributes );
706 ctx.importDateProperty( "DateMax", "value-max", _xAttributes );
707 ctx.importBooleanProperty( "Spin", "spin", _xAttributes );
708 if (ctx.importLongProperty( "RepeatDelay", "repeat", _xAttributes ))
709 ctx.getControlModel()->setPropertyValue( "Repeat", makeAny(true) );
710 ctx.importBooleanProperty( "Dropdown", "dropdown", _xAttributes );
711 ctx.importStringProperty( "Text", "text", _xAttributes );
712 ctx.importBooleanProperty( "EnforceFormat", "enforce-format", _xAttributes );
713 ctx.importEvents( _events );
714 // avoid ring-reference:
715 // vector< event elements > holding event elements holding this (via _pParent)
716 _events.clear();
718 ctx.finish();
721 // currencyfield
722 Reference< xml::input::XElement > CurrencyFieldElement::startChildElement(
723 sal_Int32 nUid, OUString const & rLocalName,
724 Reference< xml::input::XAttributes > const & xAttributes )
726 // event
727 if (!m_xImport->isEventElement( nUid, rLocalName ))
729 throw xml::sax::SAXException( "expected event element!" , Reference< XInterface >(), Any() );
732 return new EventElement( nUid, rLocalName, xAttributes, this, m_xImport.get() );
735 void CurrencyFieldElement::endElement()
737 ControlImportContext ctx( m_xImport.get(), getControlId( _xAttributes ), "com.sun.star.awt.UnoControlCurrencyFieldModel" );
739 Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
740 if (xStyle.is())
742 StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
743 Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
744 pStyle->importBackgroundColorStyle( xControlModel );
745 pStyle->importTextColorStyle( xControlModel );
746 pStyle->importTextLineColorStyle( xControlModel );
747 pStyle->importBorderStyle( xControlModel );
748 pStyle->importFontStyle( xControlModel );
751 ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
752 ctx.importBooleanProperty("Tabstop", "tabstop", _xAttributes );
753 ctx.importBooleanProperty( "ReadOnly", "readonly" , _xAttributes );
754 ctx.importBooleanProperty( "StrictFormat", "strict-format", _xAttributes );
755 ctx.importBooleanProperty( "HideInactiveSelection", "hide-inactive-selection", _xAttributes );
756 ctx.importStringProperty( "CurrencySymbol", "currency-symbol", _xAttributes );
757 ctx.importShortProperty( "DecimalAccuracy", "decimal-accuracy", _xAttributes );
758 ctx.importBooleanProperty( "ShowThousandsSeparator", "thousands-separator", _xAttributes );
759 ctx.importDoubleProperty( "Value", "value", _xAttributes );
760 ctx.importDoubleProperty( "ValueMin", "value-min", _xAttributes );
761 ctx.importDoubleProperty( "ValueMax", "value-max", _xAttributes );
762 ctx.importDoubleProperty( "ValueStep", "value-step", _xAttributes );
763 ctx.importBooleanProperty( "Spin", "spin", _xAttributes );
764 if (ctx.importLongProperty( "RepeatDelay", "repeat", _xAttributes ))
765 ctx.getControlModel()->setPropertyValue( "Repeat", makeAny(true) );
766 ctx.importBooleanProperty( "PrependCurrencySymbol", "prepend-symbol", _xAttributes );
767 ctx.importBooleanProperty( "EnforceFormat", "enforce-format", _xAttributes );
768 ctx.importEvents( _events );
769 // avoid ring-reference:
770 // vector< event elements > holding event elements holding this (via _pParent)
771 _events.clear();
773 ctx.finish();
776 // filecontrol
777 Reference< xml::input::XElement > FileControlElement::startChildElement(
778 sal_Int32 nUid, OUString const & rLocalName,
779 Reference< xml::input::XAttributes > const & xAttributes )
781 // event
782 if (!m_xImport->isEventElement( nUid, rLocalName ))
784 throw xml::sax::SAXException( "expected event element!", Reference< XInterface >(), Any() );
787 return new EventElement( nUid, rLocalName, xAttributes, this, m_xImport.get() );
790 void FileControlElement::endElement()
792 ControlImportContext ctx( m_xImport.get(), getControlId( _xAttributes ), "com.sun.star.awt.UnoControlFileControlModel" );
794 Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
795 if (xStyle.is())
797 StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
798 Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
799 pStyle->importBackgroundColorStyle( xControlModel );
800 pStyle->importTextColorStyle( xControlModel );
801 pStyle->importTextLineColorStyle( xControlModel );
802 pStyle->importBorderStyle( xControlModel );
803 pStyle->importFontStyle( xControlModel );
806 ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
807 ctx.importBooleanProperty( "Tabstop", "tabstop", _xAttributes );
808 ctx.importBooleanProperty("HideInactiveSelection","hide-inactive-selection", _xAttributes );
809 ctx.importStringProperty( "Text", "value", _xAttributes );
810 ctx.importBooleanProperty( "ReadOnly", "readonly", _xAttributes );
811 ctx.importEvents( _events );
812 // avoid ring-reference:
813 // vector< event elements > holding event elements holding this (via _pParent)
814 _events.clear();
816 ctx.finish();
819 // treecontrol
820 Reference< xml::input::XElement > TreeControlElement::startChildElement(
821 sal_Int32 nUid, OUString const & rLocalName,
822 Reference< xml::input::XAttributes > const & xAttributes )
824 // event
825 if (!m_xImport->isEventElement( nUid, rLocalName ))
827 throw xml::sax::SAXException( "expected event element!", Reference< XInterface >(), Any() );
830 return new EventElement( nUid, rLocalName, xAttributes, this, m_xImport.get() );
833 void TreeControlElement::endElement()
835 ControlImportContext ctx( m_xImport.get(), getControlId( _xAttributes ), "com.sun.star.awt.tree.TreeControlModel" );
837 Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
838 if (xStyle.is())
840 StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
841 Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
842 pStyle->importBackgroundColorStyle( xControlModel );
843 pStyle->importBorderStyle( xControlModel );
846 ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
847 ctx.importBooleanProperty( "Tabstop", "tabstop", _xAttributes );
848 ctx.importSelectionTypeProperty( "SelectionType", "selectiontype", _xAttributes );
849 ctx.importBooleanProperty( "RootDisplayed", "rootdisplayed", _xAttributes );
850 ctx.importBooleanProperty( "ShowsHandles", "showshandles", _xAttributes );
851 ctx.importBooleanProperty( "ShowsRootHandles", "showsroothandles" ,_xAttributes );
852 ctx.importBooleanProperty( "Editable", "editable", _xAttributes );
853 ctx.importBooleanProperty( "RowHeight", "readonly", _xAttributes );
854 ctx.importBooleanProperty( "InvokesStopNodeEditing", "invokesstopnodeediting", _xAttributes );
856 ctx.importEvents( _events );
857 // avoid ring-reference:
858 // vector< event elements > holding event elements holding this (via _pParent)
859 _events.clear();
861 ctx.finish();
864 // imagecontrol
865 Reference< xml::input::XElement > ImageControlElement::startChildElement(
866 sal_Int32 nUid, OUString const & rLocalName,
867 Reference< xml::input::XAttributes > const & xAttributes )
869 // event
870 if (!m_xImport->isEventElement( nUid, rLocalName ))
872 throw xml::sax::SAXException( "expected event element!" , Reference< XInterface >(), Any() );
875 return new EventElement( nUid, rLocalName, xAttributes, this, m_xImport.get() );
878 void ImageControlElement::endElement()
880 ControlImportContext ctx( m_xImport.get(), getControlId( _xAttributes ), "com.sun.star.awt.UnoControlImageControlModel" );
882 Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
883 if (xStyle.is())
885 StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
886 Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
887 pStyle->importBackgroundColorStyle( xControlModel );
888 pStyle->importBorderStyle( xControlModel );
891 ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
892 ctx.importBooleanProperty( "ScaleImage", "scale-image", _xAttributes );
893 ctx.importImageScaleModeProperty( "ScaleMode" , "scale-mode" , _xAttributes );
894 ctx.importGraphicOrImageProperty("src" , _xAttributes);
895 ctx.importBooleanProperty( "Tabstop", "tabstop", _xAttributes );
896 ctx.importEvents( _events );
897 // avoid ring-reference:
898 // vector< event elements > holding event elements holding this (via _pParent)
899 _events.clear();
901 ctx.finish();
904 // textfield
905 Reference< xml::input::XElement > TextElement::startChildElement(
906 sal_Int32 nUid, OUString const & rLocalName,
907 Reference< xml::input::XAttributes > const & xAttributes )
909 // event
910 if (!m_xImport->isEventElement( nUid, rLocalName ))
912 throw xml::sax::SAXException( "expected event element!", Reference< XInterface >(), Any() );
915 return new EventElement( nUid, rLocalName, xAttributes, this, m_xImport.get() );
918 void TextElement::endElement()
920 ControlImportContext ctx( m_xImport.get(), getControlId( _xAttributes ), "com.sun.star.awt.UnoControlFixedTextModel" );
922 Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
923 if (xStyle.is())
925 StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
926 Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
927 pStyle->importBackgroundColorStyle( xControlModel );
928 pStyle->importTextColorStyle( xControlModel );
929 pStyle->importTextLineColorStyle( xControlModel );
930 pStyle->importBorderStyle( xControlModel );
931 pStyle->importFontStyle( xControlModel );
934 ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
935 ctx.importStringProperty( "Label", "value", _xAttributes );
936 ctx.importAlignProperty( "Align", "align", _xAttributes );
937 ctx.importVerticalAlignProperty( "VerticalAlign", "valign", _xAttributes );
938 ctx.importBooleanProperty( "MultiLine", "multiline" ,_xAttributes );
939 ctx.importBooleanProperty( "Tabstop", "tabstop", _xAttributes );
940 ctx.importBooleanProperty( "NoLabel", "nolabel", _xAttributes );
941 ctx.importEvents( _events );
942 // avoid ring-reference:
943 // vector< event elements > holding event elements holding this (via _pParent)
944 _events.clear();
946 ctx.finish();
949 // FixedHyperLink
950 Reference< xml::input::XElement > FixedHyperLinkElement::startChildElement(
951 sal_Int32 nUid, OUString const & rLocalName,
952 Reference< xml::input::XAttributes > const & xAttributes )
954 // event
955 if (!m_xImport->isEventElement( nUid, rLocalName ))
957 throw xml::sax::SAXException( "expected event element!" , Reference< XInterface >(), Any() );
960 return new EventElement( nUid, rLocalName, xAttributes, this, m_xImport.get() );
963 void FixedHyperLinkElement::endElement()
965 ControlImportContext ctx( m_xImport.get(), getControlId( _xAttributes ), "com.sun.star.awt.UnoControlFixedHyperlinkModel" );
967 Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
968 if (xStyle.is())
970 StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
971 Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
972 pStyle->importBackgroundColorStyle( xControlModel );
973 pStyle->importTextColorStyle( xControlModel );
974 pStyle->importTextLineColorStyle( xControlModel );
975 pStyle->importBorderStyle( xControlModel );
976 pStyle->importFontStyle( xControlModel );
979 ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
980 ctx.importStringProperty( "Label", "value", _xAttributes );
981 ctx.importStringProperty( "URL", "url", _xAttributes );
982 ctx.importStringProperty( "Description", "description", _xAttributes );
984 ctx.importAlignProperty( "Align", "align" ,_xAttributes );
985 ctx.importVerticalAlignProperty( "VerticalAlign", "valign", _xAttributes );
986 ctx.importBooleanProperty( "MultiLine", "multiline", _xAttributes );
987 ctx.importBooleanProperty( "Tabstop", "tabstop", _xAttributes );
988 ctx.importBooleanProperty( "NoLabel", "nolabel", _xAttributes );
989 ctx.importEvents( _events );
990 // avoid ring-reference:
991 // vector< event elements > holding event elements holding this (via _pParent)
992 _events.clear();
994 ctx.finish();
997 // edit
998 Reference< xml::input::XElement > TextFieldElement::startChildElement(
999 sal_Int32 nUid, OUString const & rLocalName,
1000 Reference< xml::input::XAttributes > const & xAttributes )
1002 // event
1003 if (!m_xImport->isEventElement( nUid, rLocalName ))
1005 throw xml::sax::SAXException( "expected event element!", Reference< XInterface >(), Any() );
1008 return new EventElement( nUid, rLocalName, xAttributes, this, m_xImport.get() );
1011 void TextFieldElement::endElement()
1013 ControlImportContext ctx( m_xImport.get(), getControlId( _xAttributes ), "com.sun.star.awt.UnoControlEditModel" );
1014 Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
1016 Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
1017 if (xStyle.is())
1019 StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
1020 pStyle->importBackgroundColorStyle( xControlModel );
1021 pStyle->importTextColorStyle( xControlModel );
1022 pStyle->importTextLineColorStyle( xControlModel );
1023 pStyle->importBorderStyle( xControlModel );
1024 pStyle->importFontStyle( xControlModel );
1027 ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
1028 ctx.importBooleanProperty("Tabstop", "tabstop", _xAttributes );
1029 ctx.importAlignProperty( "Align", "align", _xAttributes );
1030 ctx.importVerticalAlignProperty( "VerticalAlign", "valign", _xAttributes );
1031 ctx.importBooleanProperty( "HardLineBreaks", "hard-linebreaks", _xAttributes );
1032 ctx.importBooleanProperty( "HScroll", "hscroll" ,_xAttributes );
1033 ctx.importBooleanProperty( "VScroll", "vscroll", _xAttributes );
1034 ctx.importBooleanProperty("HideInactiveSelection", "hide-inactive-selection", _xAttributes );
1035 ctx.importShortProperty( "MaxTextLen", "maxlength", _xAttributes );
1036 ctx.importBooleanProperty( "MultiLine", "multiline", _xAttributes );
1037 ctx.importBooleanProperty( "ReadOnly", "readonly", _xAttributes );
1038 ctx.importStringProperty( "Text", "value", _xAttributes );
1039 ctx.importLineEndFormatProperty( "LineEndFormat", "lineend-format", _xAttributes );
1040 OUString aValue;
1041 if (getStringAttr( &aValue, "echochar", _xAttributes, m_xImport->XMLNS_DIALOGS_UID ) && !aValue.isEmpty() )
1043 SAL_WARN_IF( aValue.getLength() != 1, "xmlscript.xmldlg", "### more than one character given for echochar!" );
1044 sal_Int16 nChar = 0;
1045 if(!aValue.isEmpty())
1047 nChar = static_cast<sal_Int16>(aValue[ 0 ]);
1049 xControlModel->setPropertyValue( "EchoChar", makeAny( nChar ) );
1052 ctx.importEvents( _events );
1053 // avoid ring-reference:
1054 // vector< event elements > holding event elements holding this (via _pParent)
1055 _events.clear();
1057 ctx.finish();
1060 // titledbox
1061 Reference< xml::input::XElement > TitledBoxElement::startChildElement(
1062 sal_Int32 nUid, OUString const & rLocalName,
1063 Reference< xml::input::XAttributes > const & xAttributes )
1065 // event
1066 if (m_xImport->isEventElement( nUid, rLocalName ))
1068 return new EventElement( nUid, rLocalName, xAttributes, this, m_xImport.get() );
1070 else if (m_xImport->XMLNS_DIALOGS_UID != nUid)
1072 throw xml::sax::SAXException( "illegal namespace!", Reference< XInterface >(), Any() );
1074 // title
1075 else if ( rLocalName == "title" )
1077 getStringAttr( &_label, "value", xAttributes, m_xImport->XMLNS_DIALOGS_UID );
1079 return new ElementBase( m_xImport->XMLNS_DIALOGS_UID, rLocalName, xAttributes, this, m_xImport.get() );
1081 // radio
1082 else if ( rLocalName == "radio" )
1084 // don't create radios here, => titledbox must be inserted first due to radio grouping,
1085 // possible predecessors!
1086 Reference< xml::input::XElement > xRet(
1087 new RadioElement( rLocalName, xAttributes, this, m_xImport.get() ) );
1088 _radios.push_back( xRet );
1089 return xRet;
1091 else
1093 return BulletinBoardElement::startChildElement( nUid, rLocalName, xAttributes );
1097 void TitledBoxElement::endElement()
1100 ControlImportContext ctx(m_xImport.get(), getControlId( _xAttributes ), "com.sun.star.awt.UnoControlGroupBoxModel" );
1101 Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
1103 Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
1104 if (xStyle.is())
1106 StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
1107 pStyle->importTextColorStyle( xControlModel );
1108 pStyle->importTextLineColorStyle( xControlModel );
1109 pStyle->importFontStyle( xControlModel );
1112 ctx.importDefaults( 0, 0, _xAttributes ); // inherited from BulletinBoardElement
1114 if (!_label.isEmpty())
1116 xControlModel->setPropertyValue( "Label", makeAny( _label ) );
1119 ctx.importEvents( _events );
1120 // avoid ring-reference:
1121 // vector< event elements > holding event elements holding this (via _pParent)
1122 _events.clear();
1124 ctx.finish();
1127 // create radios AFTER group box!
1128 for (Reference<XElement>& xRadio : _radios)
1130 Reference< xml::input::XAttributes > xAttributes( xRadio->getAttributes() );
1132 ControlImportContext ctx( m_xImport.get(), getControlId( xAttributes ), getControlModelName( "com.sun.star.awt.UnoControlRadioButtonModel", xAttributes ) );
1133 Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
1135 Reference< xml::input::XElement > xStyle( getStyle( xAttributes ) );
1136 if (xStyle.is())
1138 StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
1139 pStyle->importBackgroundColorStyle( xControlModel );
1140 pStyle->importTextColorStyle( xControlModel );
1141 pStyle->importTextLineColorStyle( xControlModel );
1142 pStyle->importFontStyle( xControlModel );
1143 pStyle->importVisualEffectStyle( xControlModel );
1146 ctx.importDefaults( _nBasePosX, _nBasePosY, xAttributes );
1147 ctx.importBooleanProperty( "Tabstop", "tabstop", xAttributes );
1148 ctx.importStringProperty( "Label", "value", xAttributes );
1149 ctx.importAlignProperty( "Align", "align", xAttributes );
1150 ctx.importVerticalAlignProperty( "VerticalAlign", "valign", xAttributes );
1151 ctx.importGraphicOrImageProperty("image-src" , _xAttributes);
1152 ctx.importImagePositionProperty( "ImagePosition", "image-position", xAttributes );
1153 ctx.importBooleanProperty( "MultiLine", "multiline", xAttributes );
1154 ctx.importStringProperty( "GroupName", "group-name", xAttributes );
1156 sal_Int16 nVal = 0;
1157 sal_Bool bChecked = false;
1158 if (getBoolAttr( &bChecked, "checked", xAttributes, m_xImport->XMLNS_DIALOGS_UID ) && bChecked)
1160 nVal = 1;
1162 xControlModel->setPropertyValue( "State", makeAny( nVal ) );
1163 ctx.importDataAwareProperty( "linked-cell" , xAttributes );
1164 ::std::vector< Reference< xml::input::XElement > > & radioEvents =
1165 static_cast< RadioElement * >( xRadio.get() )->getEvents();
1166 ctx.importEvents( radioEvents );
1167 // avoid ring-reference:
1168 // vector< event elements > holding event elements holding this (via _pParent)
1169 radioEvents.clear();
1171 ctx.finish();
1173 // avoid ring-reference:
1174 // vector< radio elements > holding radio elements holding this (via _pParent)
1175 _radios.clear();
1178 // radio
1179 Reference< xml::input::XElement > RadioElement::startChildElement(
1180 sal_Int32 nUid, OUString const & rLocalName,
1181 Reference< xml::input::XAttributes > const & xAttributes )
1183 // event
1184 if (!m_xImport->isEventElement( nUid, rLocalName ))
1186 throw xml::sax::SAXException("expected event element!", Reference< XInterface >(), Any() );
1189 return new EventElement( nUid, rLocalName, xAttributes, this, m_xImport.get() );
1192 // radiogroup
1193 Reference< xml::input::XElement > RadioGroupElement::startChildElement(
1194 sal_Int32 nUid, OUString const & rLocalName,
1195 Reference< xml::input::XAttributes > const & xAttributes )
1197 if (m_xImport->XMLNS_DIALOGS_UID != nUid)
1199 throw xml::sax::SAXException( "illegal namespace!", Reference< XInterface >(), Any() );
1201 // radio
1202 else if ( rLocalName == "radio" )
1204 // don't create radios here, => titledbox must be inserted first due to radio grouping,
1205 // possible predecessors!
1206 Reference< xml::input::XElement > xRet(
1207 new RadioElement( rLocalName, xAttributes, this, m_xImport.get() ) );
1208 _radios.push_back( xRet );
1209 return xRet;
1211 else
1213 throw xml::sax::SAXException( "expected radio element!", Reference< XInterface >(), Any() );
1216 void RadioGroupElement::endElement()
1218 for (Reference<XElement>& xRadio : _radios)
1220 Reference< xml::input::XAttributes > xAttributes(
1221 xRadio->getAttributes() );
1223 ControlImportContext ctx( m_xImport.get(), getControlId( xAttributes ), getControlModelName( "com.sun.star.awt.UnoControlRadioButtonModel", xAttributes ) );
1224 Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
1226 Reference< xml::input::XElement > xStyle( getStyle( xAttributes ) );
1227 if (xStyle.is())
1229 StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
1230 pStyle->importBackgroundColorStyle( xControlModel );
1231 pStyle->importTextColorStyle( xControlModel );
1232 pStyle->importTextLineColorStyle( xControlModel );
1233 pStyle->importFontStyle( xControlModel );
1234 pStyle->importVisualEffectStyle( xControlModel );
1237 ctx.importDefaults( _nBasePosX, _nBasePosY, xAttributes );
1238 ctx.importBooleanProperty("Tabstop", "tabstop", xAttributes );
1239 ctx.importStringProperty( "Label", "value", xAttributes );
1240 ctx.importAlignProperty( "Align", "align", xAttributes );
1241 ctx.importVerticalAlignProperty( "VerticalAlign", "valign", xAttributes );
1242 ctx.importGraphicOrImageProperty("image-src" , _xAttributes);
1243 ctx.importImagePositionProperty( "ImagePosition", "image-position", xAttributes );
1244 ctx.importBooleanProperty( "MultiLine", "multiline", xAttributes );
1245 ctx.importStringProperty( "GroupName", "group-name", xAttributes );
1246 sal_Int16 nVal = 0;
1247 sal_Bool bChecked = false;
1248 if (getBoolAttr( &bChecked, "checked", xAttributes, m_xImport->XMLNS_DIALOGS_UID ) && bChecked)
1250 nVal = 1;
1252 xControlModel->setPropertyValue( "State", makeAny( nVal ) );
1254 ctx.importDataAwareProperty( "linked-cell", xAttributes );
1256 ::std::vector< Reference< xml::input::XElement > > & radioEvents =
1257 static_cast< RadioElement * >( xRadio.get() )->getEvents();
1258 ctx.importEvents( radioEvents );
1259 // avoid ring-reference:
1260 // vector< event elements > holding event elements holding this (via _pParent)
1261 radioEvents.clear();
1263 ctx.finish();
1265 // avoid ring-reference:
1266 // vector< radio elements > holding radio elements holding this (via _pParent)
1267 _radios.clear();
1270 // menupopup
1271 Reference< xml::input::XElement > MenuPopupElement::startChildElement(
1272 sal_Int32 nUid, OUString const & rLocalName,
1273 Reference< xml::input::XAttributes > const & xAttributes )
1275 if (m_xImport->XMLNS_DIALOGS_UID != nUid)
1277 throw xml::sax::SAXException( "illegal namespace!", Reference< XInterface >(), Any() );
1279 // menuitem
1280 else if ( rLocalName == "menuitem" )
1282 OUString aValue( xAttributes->getValueByUidName( m_xImport->XMLNS_DIALOGS_UID,"value" ) );
1283 SAL_WARN_IF( aValue.isEmpty(), "xmlscript.xmldlg", "### menuitem has no value?" );
1284 if (!aValue.isEmpty())
1286 _itemValues.push_back( aValue );
1288 OUString aSel( xAttributes->getValueByUidName( m_xImport->XMLNS_DIALOGS_UID, "selected" ) );
1289 if (!aSel.isEmpty() && aSel == "true")
1291 _itemSelected.push_back( static_cast<sal_Int16>(_itemValues.size()) -1 );
1294 return new ElementBase( m_xImport->XMLNS_DIALOGS_UID, rLocalName, xAttributes, this, m_xImport.get() );
1296 else
1298 throw xml::sax::SAXException("expected menuitem!" , Reference< XInterface >(), Any() );
1301 Sequence< OUString > MenuPopupElement::getItemValues()
1303 Sequence< OUString > aRet( _itemValues.size() );
1304 OUString * pRet = aRet.getArray();
1305 for ( size_t nPos = _itemValues.size(); nPos--; )
1307 pRet[ nPos ] = _itemValues[ nPos ];
1309 return aRet;
1311 Sequence< sal_Int16 > MenuPopupElement::getSelectedItems()
1313 Sequence< sal_Int16 > aRet( _itemSelected.size() );
1314 sal_Int16 * pRet = aRet.getArray();
1315 for ( size_t nPos = _itemSelected.size(); nPos--; )
1317 pRet[ nPos ] = _itemSelected[ nPos ];
1319 return aRet;
1322 // menulist
1323 Reference< xml::input::XElement > MenuListElement::startChildElement(
1324 sal_Int32 nUid, OUString const & rLocalName,
1325 Reference< xml::input::XAttributes > const & xAttributes )
1327 // event
1328 if (m_xImport->isEventElement( nUid, rLocalName ))
1330 return new EventElement( nUid, rLocalName, xAttributes, this, m_xImport.get() );
1332 else if (m_xImport->XMLNS_DIALOGS_UID != nUid)
1334 throw xml::sax::SAXException( "illegal namespace!", Reference< XInterface >(), Any() );
1336 // menupopup
1337 else if ( rLocalName == "menupopup" )
1339 _popup = new MenuPopupElement( rLocalName, xAttributes, this, m_xImport.get() );
1340 return _popup;
1342 else
1344 throw xml::sax::SAXException( "expected event or menupopup element!", Reference< XInterface >(), Any() );
1348 void MenuListElement::endElement()
1350 ControlImportContext ctx( m_xImport.get(), getControlId( _xAttributes ), getControlModelName( "com.sun.star.awt.UnoControlListBoxModel", _xAttributes ) );
1351 Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
1353 Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
1354 if (xStyle.is())
1356 StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
1357 pStyle->importBackgroundColorStyle( xControlModel );
1358 pStyle->importTextColorStyle( xControlModel );
1359 pStyle->importTextLineColorStyle( xControlModel );
1360 pStyle->importBorderStyle( xControlModel );
1361 pStyle->importFontStyle( xControlModel );
1364 ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
1365 ctx.importBooleanProperty( "Tabstop", "tabstop", _xAttributes );
1366 ctx.importBooleanProperty( "MultiSelection", "multiselection", _xAttributes );
1367 ctx.importBooleanProperty( "ReadOnly", "readonly", _xAttributes );
1368 ctx.importBooleanProperty( "Dropdown", "spin", _xAttributes );
1369 ctx.importShortProperty( "LineCount", "linecount", _xAttributes );
1370 ctx.importAlignProperty( "Align", "align", _xAttributes );
1371 bool bHasLinkedCell = ctx.importDataAwareProperty( "linked-cell" , _xAttributes );
1372 bool bHasSrcRange = ctx.importDataAwareProperty( "source-cell-range" , _xAttributes );
1373 if (_popup.is())
1375 MenuPopupElement * p = static_cast< MenuPopupElement * >( _popup.get() );
1376 if ( !bHasSrcRange )
1377 xControlModel->setPropertyValue( "StringItemList", makeAny( p->getItemValues() ) );
1378 if ( !bHasLinkedCell )
1379 xControlModel->setPropertyValue( "SelectedItems", makeAny( p->getSelectedItems() ) );
1382 ctx.importEvents( _events );
1383 // avoid ring-reference:
1384 // vector< event elements > holding event elements holding this (via _pParent)
1385 _events.clear();
1387 ctx.finish();
1390 // combobox
1391 Reference< xml::input::XElement > ComboBoxElement::startChildElement(
1392 sal_Int32 nUid, OUString const & rLocalName,
1393 Reference< xml::input::XAttributes > const & xAttributes )
1395 // event
1396 if (m_xImport->isEventElement( nUid, rLocalName ))
1398 return new EventElement( nUid, rLocalName, xAttributes, this, m_xImport.get() );
1400 else if (m_xImport->XMLNS_DIALOGS_UID != nUid)
1402 throw xml::sax::SAXException( "illegal namespace!", Reference< XInterface >(), Any() );
1404 // menupopup
1405 else if ( rLocalName == "menupopup" )
1407 _popup = new MenuPopupElement( rLocalName, xAttributes, this, m_xImport.get() );
1408 return _popup;
1410 else
1412 throw xml::sax::SAXException( "expected event or menupopup element!", Reference< XInterface >(), Any() );
1415 void ComboBoxElement::endElement()
1417 ControlImportContext ctx( m_xImport.get(), getControlId( _xAttributes ), getControlModelName( "com.sun.star.awt.UnoControlComboBoxModel", _xAttributes ) );
1418 Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
1420 Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
1421 if (xStyle.is())
1423 StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
1424 pStyle->importBackgroundColorStyle( xControlModel );
1425 pStyle->importTextColorStyle( xControlModel );
1426 pStyle->importTextLineColorStyle( xControlModel );
1427 pStyle->importBorderStyle( xControlModel );
1428 pStyle->importFontStyle( xControlModel );
1431 ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
1432 ctx.importBooleanProperty( "Tabstop", "tabstop", _xAttributes );
1433 ctx.importBooleanProperty( "ReadOnly", "readonly", _xAttributes );
1434 ctx.importBooleanProperty( "Autocomplete", "autocomplete", _xAttributes );
1435 ctx.importBooleanProperty( "Dropdown", "spin", _xAttributes );
1436 ctx.importBooleanProperty( "HideInactiveSelection", "hide-inactive-selection", _xAttributes );
1437 ctx.importShortProperty( "MaxTextLen", "maxlength" ,_xAttributes );
1438 ctx.importShortProperty( "LineCount", "linecount" ,_xAttributes );
1439 ctx.importStringProperty( "Text", "value", _xAttributes );
1440 ctx.importAlignProperty( "Align", "align", _xAttributes );
1441 ctx.importDataAwareProperty( "linked-cell" , _xAttributes );
1442 bool bHasSrcRange = ctx.importDataAwareProperty( "source-cell-range" , _xAttributes );
1443 if (_popup.is() && !bHasSrcRange )
1445 MenuPopupElement * p = static_cast< MenuPopupElement * >( _popup.get() );
1446 xControlModel->setPropertyValue( "StringItemList", makeAny( p->getItemValues() ) );
1449 ctx.importEvents( _events );
1450 // avoid ring-reference:
1451 // vector< event elements > holding event elements holding this (via _pParent)
1452 _events.clear();
1454 ctx.finish();
1457 // checkbox
1458 Reference< xml::input::XElement > CheckBoxElement::startChildElement(
1459 sal_Int32 nUid, OUString const & rLocalName,
1460 Reference< xml::input::XAttributes > const & xAttributes )
1462 // event
1463 if (!m_xImport->isEventElement( nUid, rLocalName ))
1465 throw xml::sax::SAXException( "expected event element!", Reference< XInterface >(), Any() );
1468 return new EventElement( nUid, rLocalName, xAttributes, this, m_xImport.get() );
1471 void CheckBoxElement::endElement()
1473 ControlImportContext ctx( m_xImport.get(), getControlId( _xAttributes ), "com.sun.star.awt.UnoControlCheckBoxModel" );
1474 Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
1476 Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
1477 if (xStyle.is())
1479 StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
1480 pStyle->importBackgroundColorStyle( xControlModel );
1481 pStyle->importTextColorStyle( xControlModel );
1482 pStyle->importTextLineColorStyle( xControlModel );
1483 pStyle->importFontStyle( xControlModel );
1484 pStyle->importVisualEffectStyle( xControlModel );
1487 ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
1488 ctx.importBooleanProperty( "Tabstop", "tabstop", _xAttributes );
1489 ctx.importStringProperty( "Label", "value", _xAttributes );
1490 ctx.importAlignProperty( "Align", "align", _xAttributes );
1491 ctx.importVerticalAlignProperty( "VerticalAlign", "valign", _xAttributes );
1492 ctx.importGraphicOrImageProperty("image-src" , _xAttributes);
1493 ctx.importImagePositionProperty( "ImagePosition", "image-position", _xAttributes );
1494 ctx.importBooleanProperty( "MultiLine", "multiline", _xAttributes );
1496 sal_Bool bTriState = false;
1497 if (getBoolAttr( &bTriState, "tristate", _xAttributes, m_xImport->XMLNS_DIALOGS_UID ))
1499 xControlModel->setPropertyValue( "TriState", makeAny( bTriState ) );
1501 sal_Bool bChecked = false;
1502 if (getBoolAttr( &bChecked, "checked", _xAttributes, m_xImport->XMLNS_DIALOGS_UID ))
1504 // has "checked" attribute
1505 sal_Int16 nVal = (bChecked ? 1 : 0);
1506 xControlModel->setPropertyValue( "State", makeAny( nVal ) );
1508 else
1510 sal_Int16 nVal = (bTriState ? 2 : 0); // if tristate set, but checked omitted => don't know!
1511 xControlModel->setPropertyValue( "State", makeAny( nVal ) );
1514 ctx.importEvents( _events );
1515 // avoid ring-reference:
1516 // vector< event elements > holding event elements holding this (via _pParent)
1517 _events.clear();
1519 ctx.finish();
1522 // button
1523 Reference< xml::input::XElement > ButtonElement::startChildElement(
1524 sal_Int32 nUid, OUString const & rLocalName,
1525 Reference< xml::input::XAttributes > const & xAttributes )
1527 // event
1528 if (!m_xImport->isEventElement( nUid, rLocalName ))
1530 throw xml::sax::SAXException( "expected event element!", Reference< XInterface >(), Any() );
1533 return new EventElement( nUid, rLocalName, xAttributes, this, m_xImport.get() );
1536 void ButtonElement::endElement()
1538 ControlImportContext ctx( m_xImport.get(), getControlId( _xAttributes ), "com.sun.star.awt.UnoControlButtonModel" );
1540 Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
1541 if (xStyle.is())
1543 StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
1544 Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() );
1545 pStyle->importBackgroundColorStyle( xControlModel );
1546 pStyle->importTextColorStyle( xControlModel );
1547 pStyle->importTextLineColorStyle( xControlModel );
1548 pStyle->importFontStyle( xControlModel );
1551 ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
1552 ctx.importBooleanProperty( "Tabstop", "tabstop", _xAttributes );
1553 ctx.importStringProperty( "Label", "value", _xAttributes );
1554 ctx.importAlignProperty( "Align", "align", _xAttributes );
1555 ctx.importVerticalAlignProperty( "VerticalAlign", "valign", _xAttributes );
1556 ctx.importBooleanProperty( "DefaultButton", "default", _xAttributes );
1557 ctx.importButtonTypeProperty( "PushButtonType", "button-type", _xAttributes );
1558 ctx.importGraphicOrImageProperty("image-src" , _xAttributes);
1559 ctx.importImagePositionProperty( "ImagePosition", "image-position", _xAttributes );
1560 ctx.importImageAlignProperty( "ImageAlign", "image-align", _xAttributes );
1561 if (ctx.importLongProperty( "RepeatDelay", "repeat", _xAttributes ))
1562 ctx.getControlModel()->setPropertyValue( "Repeat", makeAny(true) );
1563 sal_Int32 toggled = 0;
1564 if (getLongAttr( &toggled, "toggled", _xAttributes, m_xImport->XMLNS_DIALOGS_UID ) && toggled == 1)
1565 ctx.getControlModel()->setPropertyValue( "Toggle" , makeAny(true));
1566 ctx.importBooleanProperty( "FocusOnClick", "grab-focus", _xAttributes );
1567 ctx.importBooleanProperty( "MultiLine", "multiline", _xAttributes );
1568 // State
1569 sal_Bool bChecked = false;
1570 if (getBoolAttr( &bChecked, "checked", _xAttributes, m_xImport->XMLNS_DIALOGS_UID ) && bChecked)
1572 ctx.getControlModel()->setPropertyValue( "State" , makeAny( sal_Int16(1) ) );
1575 ctx.importEvents( _events );
1576 // avoid ring-reference:
1577 // vector< event elements > holding event elements holding this (via _pParent)
1578 _events.clear();
1580 ctx.finish();
1583 // bulletinboard
1584 Reference< xml::input::XElement > BulletinBoardElement::startChildElement(
1585 sal_Int32 nUid, OUString const & rLocalName,
1586 Reference< xml::input::XAttributes > const & xAttributes )
1588 if (m_xImport->XMLNS_DIALOGS_UID != nUid)
1590 throw xml::sax::SAXException("illegal namespace!", Reference< XInterface >(), Any() );
1592 // button
1593 else if ( rLocalName == "button" )
1595 return new ButtonElement( rLocalName, xAttributes, this, m_xImport.get() );
1597 // checkbox
1598 else if ( rLocalName == "checkbox" )
1600 return new CheckBoxElement( rLocalName, xAttributes, this, m_xImport.get() );
1602 // combobox
1603 else if ( rLocalName == "combobox" )
1605 return new ComboBoxElement( rLocalName, xAttributes, this, m_xImport.get() );
1607 // listbox
1608 else if ( rLocalName == "menulist" )
1610 return new MenuListElement( rLocalName, xAttributes, this, m_xImport.get() );
1612 // radiogroup
1613 else if ( rLocalName == "radiogroup" )
1615 return new RadioGroupElement( rLocalName, xAttributes, this, m_xImport.get() );
1617 // titledbox
1618 else if ( rLocalName == "titledbox" )
1620 return new TitledBoxElement( rLocalName, xAttributes, this, m_xImport.get() );
1622 // text
1623 else if ( rLocalName == "text" )
1625 return new TextElement( rLocalName, xAttributes, this, m_xImport.get() );
1627 else if ( rLocalName == "linklabel" )
1629 return new FixedHyperLinkElement( rLocalName, xAttributes, this, m_xImport.get() );
1631 // textfield
1632 else if ( rLocalName == "textfield" )
1634 return new TextFieldElement( rLocalName, xAttributes, this, m_xImport.get() );
1636 // img
1637 else if ( rLocalName == "img" )
1639 return new ImageControlElement( rLocalName, xAttributes, this, m_xImport.get() );
1641 // filecontrol
1642 else if ( rLocalName == "filecontrol" )
1644 return new FileControlElement( rLocalName, xAttributes, this, m_xImport.get() );
1646 // treecontrol
1647 else if ( rLocalName == "treecontrol" )
1649 return new TreeControlElement( rLocalName, xAttributes, this, m_xImport.get() );
1651 // currencyfield
1652 else if ( rLocalName == "currencyfield" )
1654 return new CurrencyFieldElement( rLocalName, xAttributes, this, m_xImport.get() );
1656 // datefield
1657 else if ( rLocalName == "datefield" )
1659 return new DateFieldElement( rLocalName, xAttributes, this, m_xImport.get() );
1661 // datefield
1662 else if ( rLocalName == "numericfield" )
1664 return new NumericFieldElement( rLocalName, xAttributes, this, m_xImport.get() );
1666 // timefield
1667 else if ( rLocalName == "timefield" )
1669 return new TimeFieldElement( rLocalName, xAttributes, this, m_xImport.get() );
1671 // patternfield
1672 else if ( rLocalName == "patternfield" )
1674 return new PatternFieldElement( rLocalName, xAttributes, this, m_xImport.get() );
1676 // formattedfield
1677 else if ( rLocalName == "formattedfield" )
1679 return new FormattedFieldElement( rLocalName, xAttributes, this, m_xImport.get() );
1681 // fixedline
1682 else if ( rLocalName == "fixedline" )
1684 return new FixedLineElement( rLocalName, xAttributes, this, m_xImport.get() );
1686 // scrollbar
1687 else if ( rLocalName == "scrollbar" )
1689 return new ScrollBarElement( rLocalName, xAttributes, this, m_xImport.get() );
1691 // spinbutton
1692 else if ( rLocalName == "spinbutton" )
1694 return new SpinButtonElement( rLocalName, xAttributes, this, m_xImport.get() );
1696 // progressmeter
1697 else if ( rLocalName == "progressmeter" )
1699 return new ProgressBarElement( rLocalName, xAttributes, this, m_xImport.get() );
1701 else if ( rLocalName == "multipage" )
1703 return new MultiPage( rLocalName, xAttributes, this, m_xImport.get() );
1705 else if ( rLocalName == "frame" )
1707 return new Frame( rLocalName, xAttributes, this, m_xImport.get() );
1709 else if ( rLocalName == "page" )
1711 return new Page( rLocalName, xAttributes, this, m_xImport.get() );
1713 // bulletinboard
1714 else if ( rLocalName == "bulletinboard" )
1716 return new BulletinBoardElement( rLocalName, xAttributes, this, m_xImport.get() );
1718 else
1720 throw xml::sax::SAXException( "expected styles, bulletinboard or bulletinboard element, not: " + rLocalName, Reference< XInterface >(), Any() );
1724 BulletinBoardElement::BulletinBoardElement(
1725 OUString const & rLocalName,
1726 Reference< xml::input::XAttributes > const & xAttributes,
1727 ElementBase * pParent, DialogImport * pImport )
1728 : ControlElement( rLocalName, xAttributes, pParent, pImport )
1730 OUString aValue( _xAttributes->getValueByUidName( m_xImport->XMLNS_DIALOGS_UID, "left" ) );
1731 if (!aValue.isEmpty())
1733 _nBasePosX += toInt32( aValue );
1735 aValue = _xAttributes->getValueByUidName( m_xImport->XMLNS_DIALOGS_UID, "top" );
1736 if (!aValue.isEmpty())
1738 _nBasePosY += toInt32( aValue );
1742 // style
1743 Reference< xml::input::XElement > StyleElement::startChildElement(
1744 sal_Int32 /*nUid*/, OUString const & /*rLocalName*/,
1745 Reference< xml::input::XAttributes > const & /*xAttributes*/ )
1747 throw xml::sax::SAXException( "unexpected sub elements of style!", Reference< XInterface >(), Any() );
1750 void StyleElement::endElement()
1752 OUString aStyleId( _xAttributes->getValueByUidName( m_xImport->XMLNS_DIALOGS_UID, "style-id" ) );
1753 if (aStyleId.isEmpty())
1755 throw xml::sax::SAXException( "missing style-id attribute!", Reference< XInterface >(), Any() );
1758 m_xImport->addStyle( aStyleId, this );
1761 // styles
1762 Reference< xml::input::XElement > StylesElement::startChildElement(
1763 sal_Int32 nUid, OUString const & rLocalName,
1764 Reference< xml::input::XAttributes > const & xAttributes )
1766 if (m_xImport->XMLNS_DIALOGS_UID != nUid)
1768 throw xml::sax::SAXException( "illegal namespace!", Reference< XInterface >(), Any() );
1770 // style
1771 else if ( rLocalName == "style" )
1773 return new StyleElement( rLocalName, xAttributes, this, m_xImport.get() );
1775 else
1777 throw xml::sax::SAXException( "expected style element!", Reference< XInterface >(), Any() );
1781 // window
1782 Reference< xml::input::XElement > WindowElement::startChildElement(
1783 sal_Int32 nUid, OUString const & rLocalName,
1784 Reference< xml::input::XAttributes > const & xAttributes )
1786 // event
1787 if (m_xImport->isEventElement( nUid, rLocalName ))
1789 return new EventElement( nUid, rLocalName, xAttributes, this, m_xImport.get() );
1791 else if (m_xImport->XMLNS_DIALOGS_UID != nUid)
1793 throw xml::sax::SAXException( "illegal namespace!", Reference< XInterface >(), Any() );
1795 // styles
1796 else if ( rLocalName == "styles" )
1798 return new StylesElement( rLocalName, xAttributes, this, m_xImport.get() );
1800 // bulletinboard
1801 else if ( rLocalName == "bulletinboard" )
1803 return new BulletinBoardElement( rLocalName, xAttributes, this, m_xImport.get() );
1805 else
1807 throw xml::sax::SAXException( "expected styles or bulletinboard element!", Reference< XInterface >(), Any() );
1811 void WindowElement::endElement()
1813 Reference< beans::XPropertySet > xProps(
1814 m_xImport->_xDialogModel, UNO_QUERY_THROW );
1815 ImportContext ctx( m_xImport.get(), xProps, getControlId( _xAttributes ) );
1817 Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) );
1818 if (xStyle.is())
1820 StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () );
1821 pStyle->importBackgroundColorStyle( xProps );
1822 pStyle->importTextColorStyle( xProps );
1823 pStyle->importTextLineColorStyle( xProps );
1824 pStyle->importFontStyle( xProps );
1827 ctx.importDefaults( 0, 0, _xAttributes, false );
1828 ctx.importBooleanProperty( "Closeable", "closeable", _xAttributes );
1829 ctx.importBooleanProperty( "Moveable", "moveable", _xAttributes );
1830 ctx.importBooleanProperty("Sizeable", "resizeable", _xAttributes );
1831 ctx.importStringProperty("Title", "title", _xAttributes );
1832 ctx.importBooleanProperty("Decoration", "withtitlebar", _xAttributes );
1833 ctx.importGraphicOrImageProperty("image-src" , _xAttributes);
1834 ctx.importScollableSettings( _xAttributes );
1835 ctx.importEvents( _events );
1836 // avoid ring-reference:
1837 // vector< event elements > holding event elements holding this (via _pParent)
1838 _events.clear();
1843 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */