diff options
Diffstat (limited to 'xmlscript/source/xmldlg_imexp/xmldlg_impmodels.cxx')
-rw-r--r-- | xmlscript/source/xmldlg_imexp/xmldlg_impmodels.cxx | 2289 |
1 files changed, 2289 insertions, 0 deletions
diff --git a/xmlscript/source/xmldlg_imexp/xmldlg_impmodels.cxx b/xmlscript/source/xmldlg_imexp/xmldlg_impmodels.cxx new file mode 100644 index 000000000000..a0968eb007d5 --- /dev/null +++ b/xmlscript/source/xmldlg_imexp/xmldlg_impmodels.cxx @@ -0,0 +1,2289 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_xmlscript.hxx" +#include "imp_share.hxx" + +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/beans/XPropertyState.hpp> + + +using namespace ::com::sun::star; +using namespace ::com::sun::star::uno; +using ::rtl::OUString; + +namespace xmlscript +{ + +// progessmeter +//__________________________________________________________________________________________________ +Reference< xml::input::XElement > ProgressBarElement::startChildElement( + sal_Int32 nUid, OUString const & rLocalName, + Reference< xml::input::XAttributes > const & xAttributes ) + throw (xml::sax::SAXException, RuntimeException) +{ + // event + if (_pImport->isEventElement( nUid, rLocalName )) + { + return new EventElement( + nUid, rLocalName, xAttributes, this, _pImport ); + } + else + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ), + Reference< XInterface >(), Any() ); + } +} +//__________________________________________________________________________________________________ +void ProgressBarElement::endElement() + throw (xml::sax::SAXException, RuntimeException) +{ + ControlImportContext ctx( + _pImport, getControlId( _xAttributes ), + OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlProgressBarModel") ) ); + + Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) ); + if (xStyle.is()) + { + StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () ); + Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() ); + pStyle->importBackgroundColorStyle( xControlModel ); + pStyle->importBorderStyle( xControlModel ); + pStyle->importFillColorStyle( xControlModel ); + } + + ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes ); + ctx.importLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ProgressValue") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value") ), + _xAttributes ); + ctx.importLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ProgressValueMin") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value-min") ), + _xAttributes ); + ctx.importLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ProgressValueMax") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value-max") ), + _xAttributes ); + ctx.importEvents( _events ); + // avoid ring-reference: + // vector< event elements > holding event elements holding this (via _pParent) + _events.clear(); +} + +//################################################################################################## + +// scrollbar +//__________________________________________________________________________________________________ +Reference< xml::input::XElement > ScrollBarElement::startChildElement( + sal_Int32 nUid, OUString const & rLocalName, + Reference< xml::input::XAttributes > const & xAttributes ) + throw (xml::sax::SAXException, RuntimeException) +{ + // event + if (_pImport->isEventElement( nUid, rLocalName )) + { + return new EventElement( nUid, rLocalName, xAttributes, this, _pImport ); + } + else + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ), + Reference< XInterface >(), Any() ); + } +} +//__________________________________________________________________________________________________ +void ScrollBarElement::endElement() + throw (xml::sax::SAXException, RuntimeException) +{ + ControlImportContext ctx( + _pImport, getControlId( _xAttributes ), + OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlScrollBarModel") ) ); + + Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) ); + if (xStyle.is()) + { + StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () ); + Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() ); + pStyle->importBackgroundColorStyle( xControlModel ); + pStyle->importBorderStyle( xControlModel ); + } + + ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes ); + ctx.importOrientationProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Orientation") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("align") ), + _xAttributes ); + ctx.importLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("BlockIncrement") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("pageincrement") ), + _xAttributes ); + ctx.importLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("LineIncrement") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("increment") ), + _xAttributes ); + ctx.importLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ScrollValue") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("curpos") ), + _xAttributes ); + ctx.importLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ScrollValueMax") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("maxpos") ), + _xAttributes ); + ctx.importLongProperty( OUSTR("ScrollValueMin"), OUSTR("minpos"), + _xAttributes ); + ctx.importLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("VisibleSize") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("visible-size") ), + _xAttributes ); + ctx.importLongProperty( OUSTR("RepeatDelay"), OUSTR("repeat"), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("LiveScroll") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("live-scroll") ), + _xAttributes ); + ctx.importHexLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("SymbolColor") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("symbol-color") ), + _xAttributes ); + + ctx.importEvents( _events ); + // avoid ring-reference: + // vector< event elements > holding event elements holding this (via _pParent) + _events.clear(); +} + +//################################################################################################## + +// fixedline +//__________________________________________________________________________________________________ +Reference< xml::input::XElement > FixedLineElement::startChildElement( + sal_Int32 nUid, OUString const & rLocalName, + Reference< xml::input::XAttributes > const & xAttributes ) + throw (xml::sax::SAXException, RuntimeException) +{ + // event + if (_pImport->isEventElement( nUid, rLocalName )) + { + return new EventElement( nUid, rLocalName, xAttributes, this, _pImport ); + } + else + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ), + Reference< XInterface >(), Any() ); + } +} +//__________________________________________________________________________________________________ +void FixedLineElement::endElement() + throw (xml::sax::SAXException, RuntimeException) +{ + ControlImportContext ctx( + _pImport, getControlId( _xAttributes ), + OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlFixedLineModel") ) ); + + Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) ); + if (xStyle.is()) + { + StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () ); + Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() ); + pStyle->importTextColorStyle( xControlModel ); + pStyle->importTextLineColorStyle( xControlModel ); + pStyle->importFontStyle( xControlModel ); + } + + ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes ); + ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Label") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value") ), + _xAttributes ); + ctx.importOrientationProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Orientation") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("align") ), + _xAttributes ); + ctx.importEvents( _events ); + // avoid ring-reference: + // vector< event elements > holding event elements holding this (via _pParent) + _events.clear(); +} + +//################################################################################################## + +// patternfield +//__________________________________________________________________________________________________ +Reference< xml::input::XElement > PatternFieldElement::startChildElement( + sal_Int32 nUid, OUString const & rLocalName, + Reference< xml::input::XAttributes > const & xAttributes ) + throw (xml::sax::SAXException, RuntimeException) +{ + // event + if (_pImport->isEventElement( nUid, rLocalName )) + { + return new EventElement( nUid, rLocalName, xAttributes, this, _pImport ); + } + else + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ), + Reference< XInterface >(), Any() ); + } +} +//__________________________________________________________________________________________________ +void PatternFieldElement::endElement() + throw (xml::sax::SAXException, RuntimeException) +{ + ControlImportContext ctx( + _pImport, getControlId( _xAttributes ), + OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlPatternFieldModel") ) ); + + Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) ); + if (xStyle.is()) + { + StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () ); + Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() ); + pStyle->importBackgroundColorStyle( xControlModel ); + pStyle->importTextColorStyle( xControlModel ); + pStyle->importTextLineColorStyle( xControlModel ); + pStyle->importBorderStyle( xControlModel ); + pStyle->importFontStyle( xControlModel ); + } + + ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ReadOnly") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("readonly") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("StrictFormat") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("strict-format") ), + _xAttributes ); + ctx.importBooleanProperty( + OUSTR("HideInactiveSelection"), OUSTR("hide-inactive-selection"), + _xAttributes ); + ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Text") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value") ), + _xAttributes ); + ctx.importShortProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("MaxTextLen") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("maxlength") ), + _xAttributes ); + ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("EditMask") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("edit-mask") ), + _xAttributes ); + ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("LiteralMask") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("literal-mask") ), + _xAttributes ); + ctx.importEvents( _events ); + // avoid ring-reference: + // vector< event elements > holding event elements holding this (via _pParent) + _events.clear(); +} + +//################################################################################################## + +// formattedfield +//__________________________________________________________________________________________________ +Reference< xml::input::XElement > FormattedFieldElement::startChildElement( + sal_Int32 nUid, OUString const & rLocalName, + Reference< xml::input::XAttributes > const & xAttributes ) + throw (xml::sax::SAXException, RuntimeException) +{ + // event + if (_pImport->isEventElement( nUid, rLocalName )) + { + return new EventElement( nUid, rLocalName, xAttributes, this, _pImport ); + } + else + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ), + Reference< XInterface >(), Any() ); + } +} +//__________________________________________________________________________________________________ +void FormattedFieldElement::endElement() + throw (xml::sax::SAXException, RuntimeException) +{ + ControlImportContext ctx( + _pImport, getControlId( _xAttributes ), + OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlFormattedFieldModel") ) ); + + Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) ); + if (xStyle.is()) + { + StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () ); + Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() ); + pStyle->importBackgroundColorStyle( xControlModel ); + pStyle->importTextColorStyle( xControlModel ); + pStyle->importTextLineColorStyle( xControlModel ); + pStyle->importBorderStyle( xControlModel ); + pStyle->importFontStyle( xControlModel ); + } + + ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ReadOnly") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("readonly") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("StrictFormat") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("strict-format") ), + _xAttributes ); + ctx.importBooleanProperty( + OUSTR("HideInactiveSelection"), OUSTR("hide-inactive-selection"), + _xAttributes ); + ctx.importAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Align") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("align") ), + _xAttributes ); + ctx.importDoubleProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("EffectiveMin") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value-min") ), + _xAttributes ); + ctx.importDoubleProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("EffectiveMax") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value-max") ), + _xAttributes ); + ctx.importDoubleProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("EffectiveValue") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value") ), + _xAttributes ); + ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Text") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("text") ), + _xAttributes ); + ctx.importShortProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("MaxTextLen") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("maxlength") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Spin") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("spin") ), + _xAttributes ); + if (ctx.importLongProperty( OUSTR("RepeatDelay"), OUSTR("repeat"), + _xAttributes )) + ctx.getControlModel()->setPropertyValue( + OUSTR("Repeat"), makeAny(true) ); + + OUString sDefault( + _xAttributes->getValueByUidName( + _pImport->XMLNS_DIALOGS_UID, + OUString( RTL_CONSTASCII_USTRINGPARAM("value-default") ) ) ); + if (sDefault.getLength()) + { + double d = sDefault.toDouble(); + if (d != 0.0 || + sDefault.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("0") ) || + sDefault.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("0.0") )) + { + ctx.getControlModel()->setPropertyValue( + OUString( RTL_CONSTASCII_USTRINGPARAM("EffectiveDefault") ), + makeAny( d ) ); + } + else // treat as string + { + ctx.getControlModel()->setPropertyValue( + OUString( RTL_CONSTASCII_USTRINGPARAM("EffectiveDefault") ), + makeAny( sDefault ) ); + } + } + + // format spec + ctx.getControlModel()->setPropertyValue( + OUString( RTL_CONSTASCII_USTRINGPARAM("FormatsSupplier") ), + makeAny( _pImport->getNumberFormatsSupplier() ) ); + + OUString sFormat( + _xAttributes->getValueByUidName( + _pImport->XMLNS_DIALOGS_UID, + OUString( RTL_CONSTASCII_USTRINGPARAM("format-code") ) ) ); + if (sFormat.getLength()) + { + lang::Locale locale; + + OUString sLocale( + _xAttributes->getValueByUidName( + _pImport->XMLNS_DIALOGS_UID, + OUString( RTL_CONSTASCII_USTRINGPARAM("format-locale") ) ) ); + if (sLocale.getLength()) + { + // split locale + sal_Int32 semi0 = sLocale.indexOf( ';' ); + if (semi0 < 0) // no semi at all, just try language + { + locale.Language = sLocale; + } + else + { + sal_Int32 semi1 = sLocale.indexOf( ';', semi0 +1 ); + if (semi1 > semi0) // language;country;variant + { + locale.Language = sLocale.copy( 0, semi0 ); + locale.Country = sLocale.copy( semi0 +1, semi1 - semi0 -1 ); + locale.Variant = sLocale.copy( semi1 +1 ); + } + else // try language;country + { + locale.Language = sLocale.copy( 0, semi0 ); + locale.Country = sLocale.copy( semi0 +1 ); + } + } + } + + try + { + Reference< util::XNumberFormats > xFormats( + _pImport->getNumberFormatsSupplier()->getNumberFormats() ); + sal_Int32 nKey = xFormats->queryKey( sFormat, locale, sal_True ); + if (-1 == nKey) + { + nKey = xFormats->addNew( sFormat, locale ); + } + ctx.getControlModel()->setPropertyValue( + OUString( RTL_CONSTASCII_USTRINGPARAM("FormatKey") ), makeAny( nKey ) ); + } + catch (util::MalformedNumberFormatException & exc) + { + OSL_ENSURE( 0, "### util::MalformedNumberFormatException occured!" ); + // rethrow + throw xml::sax::SAXException( exc.Message, Reference< XInterface >(), Any() ); + } + } + ctx.importBooleanProperty( + OUString( RTL_CONSTASCII_USTRINGPARAM("TreatAsNumber") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("treat-as-number") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("EnforceFormat") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("enforce-format") ), + _xAttributes ); + + ctx.importEvents( _events ); + // avoid ring-reference: + // vector< event elements > holding event elements holding this (via _pParent) + _events.clear(); +} + +//################################################################################################## + +// timefield +//__________________________________________________________________________________________________ +Reference< xml::input::XElement > TimeFieldElement::startChildElement( + sal_Int32 nUid, OUString const & rLocalName, + Reference< xml::input::XAttributes > const & xAttributes ) + throw (xml::sax::SAXException, RuntimeException) +{ + // event + if (_pImport->isEventElement( nUid, rLocalName )) + { + return new EventElement( nUid, rLocalName, xAttributes, this, _pImport ); + } + else + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ), + Reference< XInterface >(), Any() ); + } +} +//__________________________________________________________________________________________________ +void TimeFieldElement::endElement() + throw (xml::sax::SAXException, RuntimeException) +{ + ControlImportContext ctx( + _pImport, getControlId( _xAttributes ), + OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlTimeFieldModel") ) ); + + Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) ); + if (xStyle.is()) + { + StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () ); + Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() ); + pStyle->importBackgroundColorStyle( xControlModel ); + pStyle->importTextColorStyle( xControlModel ); + pStyle->importTextLineColorStyle( xControlModel ); + pStyle->importBorderStyle( xControlModel ); + pStyle->importFontStyle( xControlModel ); + } + + ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ReadOnly") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("readonly") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("StrictFormat") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("strict-format") ), + _xAttributes ); + ctx.importBooleanProperty( + OUSTR("HideInactiveSelection"), OUSTR("hide-inactive-selection"), + _xAttributes ); + ctx.importTimeFormatProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("TimeFormat") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("time-format") ), + _xAttributes ); + ctx.importLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Time") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value") ), + _xAttributes ); + ctx.importLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("TimeMin") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value-min") ), + _xAttributes ); + ctx.importLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("TimeMax") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value-max") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Spin") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("spin") ), + _xAttributes ); + if (ctx.importLongProperty( OUSTR("RepeatDelay"), OUSTR("repeat"), + _xAttributes )) + ctx.getControlModel()->setPropertyValue( + OUSTR("Repeat"), makeAny(true) ); + ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Text") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("text") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("EnforceFormat") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("enforce-format") ), + _xAttributes ); + + ctx.importEvents( _events ); + // avoid ring-reference: + // vector< event elements > holding event elements holding this (via _pParent) + _events.clear(); +} + +//################################################################################################## + +// numericfield +//__________________________________________________________________________________________________ +Reference< xml::input::XElement > NumericFieldElement::startChildElement( + sal_Int32 nUid, OUString const & rLocalName, + Reference< xml::input::XAttributes > const & xAttributes ) + throw (xml::sax::SAXException, RuntimeException) +{ + // event + if (_pImport->isEventElement( nUid, rLocalName )) + { + return new EventElement( nUid, rLocalName, xAttributes, this, _pImport ); + } + else + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ), + Reference< XInterface >(), Any() ); + } +} +//__________________________________________________________________________________________________ +void NumericFieldElement::endElement() + throw (xml::sax::SAXException, RuntimeException) +{ + ControlImportContext ctx( + _pImport, getControlId( _xAttributes ), + OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlNumericFieldModel") ) ); + + Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) ); + if (xStyle.is()) + { + StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () ); + Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() ); + pStyle->importBackgroundColorStyle( xControlModel ); + pStyle->importTextColorStyle( xControlModel ); + pStyle->importTextLineColorStyle( xControlModel ); + pStyle->importBorderStyle( xControlModel ); + pStyle->importFontStyle( xControlModel ); + } + + ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ReadOnly") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("readonly") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("StrictFormat") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("strict-format") ), + _xAttributes ); + ctx.importBooleanProperty( + OUSTR("HideInactiveSelection"), OUSTR("hide-inactive-selection"), + _xAttributes ); + ctx.importShortProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("DecimalAccuracy") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("decimal-accuracy") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ShowThousandsSeparator") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("thousands-separator") ), + _xAttributes ); + ctx.importDoubleProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Value") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value") ), + _xAttributes ); + ctx.importDoubleProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ValueMin") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value-min") ), + _xAttributes ); + ctx.importDoubleProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ValueMax") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value-max") ), + _xAttributes ); + ctx.importDoubleProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ValueStep") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value-step") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Spin") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("spin") ), + _xAttributes ); + if (ctx.importLongProperty( OUSTR("RepeatDelay"), OUSTR("repeat"), + _xAttributes )) + ctx.getControlModel()->setPropertyValue( + OUSTR("Repeat"), makeAny(true) ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("EnforceFormat") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("enforce-format") ), + _xAttributes ); + ctx.importEvents( _events ); + // avoid ring-reference: + // vector< event elements > holding event elements holding this (via _pParent) + _events.clear(); +} + +//################################################################################################## + +// datefield +//__________________________________________________________________________________________________ +Reference< xml::input::XElement > DateFieldElement::startChildElement( + sal_Int32 nUid, OUString const & rLocalName, + Reference< xml::input::XAttributes > const & xAttributes ) + throw (xml::sax::SAXException, RuntimeException) +{ + // event + if (_pImport->isEventElement( nUid, rLocalName )) + { + return new EventElement( nUid, rLocalName, xAttributes, this, _pImport ); + } + else + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ), + Reference< XInterface >(), Any() ); + } +} +//__________________________________________________________________________________________________ +void DateFieldElement::endElement() + throw (xml::sax::SAXException, RuntimeException) +{ + ControlImportContext ctx( + _pImport, getControlId( _xAttributes ), + OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlDateFieldModel") ) ); + + Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) ); + if (xStyle.is()) + { + StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () ); + Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() ); + pStyle->importBackgroundColorStyle( xControlModel ); + pStyle->importTextColorStyle( xControlModel ); + pStyle->importTextLineColorStyle( xControlModel ); + pStyle->importBorderStyle( xControlModel ); + pStyle->importFontStyle( xControlModel ); + } + + ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ReadOnly") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("readonly") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("StrictFormat") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("strict-format") ), + _xAttributes ); + ctx.importBooleanProperty( + OUSTR("HideInactiveSelection"), OUSTR("hide-inactive-selection"), + _xAttributes ); + ctx.importDateFormatProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("DateFormat") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("date-format") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("DateShowCentury") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("show-century") ), + _xAttributes ); + ctx.importLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Date") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value") ), + _xAttributes ); + ctx.importLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("DateMin") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value-min") ), + _xAttributes ); + ctx.importLongProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("DateMax") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value-max") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Spin") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("spin") ), + _xAttributes ); + if (ctx.importLongProperty( OUSTR("RepeatDelay"), OUSTR("repeat"), + _xAttributes )) + ctx.getControlModel()->setPropertyValue( + OUSTR("Repeat"), makeAny(true) ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Dropdown") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("dropdown") ), + _xAttributes ); + ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Text") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("text") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("EnforceFormat") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("enforce-format") ), + _xAttributes ); + ctx.importEvents( _events ); + // avoid ring-reference: + // vector< event elements > holding event elements holding this (via _pParent) + _events.clear(); +} + +//################################################################################################## + +// currencyfield +//__________________________________________________________________________________________________ +Reference< xml::input::XElement > CurrencyFieldElement::startChildElement( + sal_Int32 nUid, OUString const & rLocalName, + Reference< xml::input::XAttributes > const & xAttributes ) + throw (xml::sax::SAXException, RuntimeException) +{ + // event + if (_pImport->isEventElement( nUid, rLocalName )) + { + return new EventElement( nUid, rLocalName, xAttributes, this, _pImport ); + } + else + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ), + Reference< XInterface >(), Any() ); + } +} +//__________________________________________________________________________________________________ +void CurrencyFieldElement::endElement() + throw (xml::sax::SAXException, RuntimeException) +{ + ControlImportContext ctx( + _pImport, getControlId( _xAttributes ), + OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlCurrencyFieldModel") ) ); + + Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) ); + if (xStyle.is()) + { + StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () ); + Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() ); + pStyle->importBackgroundColorStyle( xControlModel ); + pStyle->importTextColorStyle( xControlModel ); + pStyle->importTextLineColorStyle( xControlModel ); + pStyle->importBorderStyle( xControlModel ); + pStyle->importFontStyle( xControlModel ); + } + + ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ReadOnly") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("readonly") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("StrictFormat") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("strict-format") ), + _xAttributes ); + ctx.importBooleanProperty( + OUSTR("HideInactiveSelection"), OUSTR("hide-inactive-selection"), + _xAttributes ); + ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("CurrencySymbol") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("currency-symbol") ), + _xAttributes ); + ctx.importShortProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("DecimalAccuracy") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("decimal-accuracy") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ShowThousandsSeparator") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("thousands-separator") ), + _xAttributes ); + ctx.importDoubleProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Value") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value") ), + _xAttributes ); + ctx.importDoubleProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ValueMin") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value-min") ), + _xAttributes ); + ctx.importDoubleProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ValueMax") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value-max") ), + _xAttributes ); + ctx.importDoubleProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ValueStep") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value-step") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Spin") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("spin") ), + _xAttributes ); + if (ctx.importLongProperty( OUSTR("RepeatDelay"), OUSTR("repeat"), + _xAttributes )) + ctx.getControlModel()->setPropertyValue( + OUSTR("Repeat"), makeAny(true) ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("PrependCurrencySymbol") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("prepend-symbol") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("EnforceFormat") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("enforce-format") ), + _xAttributes ); + ctx.importEvents( _events ); + // avoid ring-reference: + // vector< event elements > holding event elements holding this (via _pParent) + _events.clear(); +} + +//################################################################################################## + +// filecontrol +//__________________________________________________________________________________________________ +Reference< xml::input::XElement > FileControlElement::startChildElement( + sal_Int32 nUid, OUString const & rLocalName, + Reference< xml::input::XAttributes > const & xAttributes ) + throw (xml::sax::SAXException, RuntimeException) +{ + // event + if (_pImport->isEventElement( nUid, rLocalName )) + { + return new EventElement( nUid, rLocalName, xAttributes, this, _pImport ); + } + else + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ), + Reference< XInterface >(), Any() ); + } +} +//__________________________________________________________________________________________________ +void FileControlElement::endElement() + throw (xml::sax::SAXException, RuntimeException) +{ + ControlImportContext ctx( + _pImport, getControlId( _xAttributes ), + OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlFileControlModel") ) ); + + Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) ); + if (xStyle.is()) + { + StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () ); + Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() ); + pStyle->importBackgroundColorStyle( xControlModel ); + pStyle->importTextColorStyle( xControlModel ); + pStyle->importTextLineColorStyle( xControlModel ); + pStyle->importBorderStyle( xControlModel ); + pStyle->importFontStyle( xControlModel ); + } + + ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ), + _xAttributes ); + ctx.importBooleanProperty( + OUSTR("HideInactiveSelection"), OUSTR("hide-inactive-selection"), + _xAttributes ); + ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Text") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ReadOnly") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("readonly") ), + _xAttributes ); + ctx.importEvents( _events ); + // avoid ring-reference: + // vector< event elements > holding event elements holding this (via _pParent) + _events.clear(); +} +//################################################################################################## + +// treecontrol +//__________________________________________________________________________________________________ +Reference< xml::input::XElement > TreeControlElement::startChildElement( + sal_Int32 nUid, OUString const & rLocalName, + Reference< xml::input::XAttributes > const & xAttributes ) + throw (xml::sax::SAXException, RuntimeException) +{ + // event + if (_pImport->isEventElement( nUid, rLocalName )) + { + return new EventElement( nUid, rLocalName, xAttributes, this, _pImport ); + } + else + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ), + Reference< XInterface >(), Any() ); + } +} +//__________________________________________________________________________________________________ +void TreeControlElement::endElement() + throw (xml::sax::SAXException, RuntimeException) +{ + ControlImportContext ctx( + _pImport, getControlId( _xAttributes ), + OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.tree.TreeControlModel") ) ); + + Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) ); + if (xStyle.is()) + { + StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () ); + Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() ); + pStyle->importBackgroundColorStyle( xControlModel ); + pStyle->importBorderStyle( xControlModel ); + } + + ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ), + _xAttributes ); + ctx.importSelectionTypeProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("SelectionType") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("selectiontype") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("RootDisplayed") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("rootdisplayed") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ShowsHandles") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("showshandles") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ShowsRootHandles") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("showsroothandles") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Editable") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("editable") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("RowHeight") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("readonly") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("InvokesStopNodeEditing") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("invokesstopnodeediting") ), + _xAttributes ); + + ctx.importEvents( _events ); + // avoid ring-reference: + // vector< event elements > holding event elements holding this (via _pParent) + _events.clear(); +} + +//################################################################################################## + +// imagecontrol +//__________________________________________________________________________________________________ +Reference< xml::input::XElement > ImageControlElement::startChildElement( + sal_Int32 nUid, OUString const & rLocalName, + Reference< xml::input::XAttributes > const & xAttributes ) + throw (xml::sax::SAXException, RuntimeException) +{ + // event + if (_pImport->isEventElement( nUid, rLocalName )) + { + return new EventElement( nUid, rLocalName, xAttributes, this, _pImport ); + } + else + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ), + Reference< XInterface >(), Any() ); + } +} +//__________________________________________________________________________________________________ +void ImageControlElement::endElement() + throw (xml::sax::SAXException, RuntimeException) +{ + ControlImportContext ctx( + _pImport, getControlId( _xAttributes ), + OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlImageControlModel") ) ); + + Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) ); + if (xStyle.is()) + { + StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () ); + Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() ); + pStyle->importBackgroundColorStyle( xControlModel ); + pStyle->importBorderStyle( xControlModel ); + } + + ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ScaleImage") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("scale-image") ), + _xAttributes ); + ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ImageURL") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("src") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ), + _xAttributes ); + ctx.importEvents( _events ); + // avoid ring-reference: + // vector< event elements > holding event elements holding this (via _pParent) + _events.clear(); +} + +//################################################################################################## + +// textfield +//__________________________________________________________________________________________________ +Reference< xml::input::XElement > TextElement::startChildElement( + sal_Int32 nUid, OUString const & rLocalName, + Reference< xml::input::XAttributes > const & xAttributes ) + throw (xml::sax::SAXException, RuntimeException) +{ + // event + if (_pImport->isEventElement( nUid, rLocalName )) + { + return new EventElement( nUid, rLocalName, xAttributes, this, _pImport ); + } + else + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ), + Reference< XInterface >(), Any() ); + } +} +//__________________________________________________________________________________________________ +void TextElement::endElement() + throw (xml::sax::SAXException, RuntimeException) +{ + ControlImportContext ctx( + _pImport, getControlId( _xAttributes ), + OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlFixedTextModel") ) ); + + Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) ); + if (xStyle.is()) + { + StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () ); + Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() ); + pStyle->importBackgroundColorStyle( xControlModel ); + pStyle->importTextColorStyle( xControlModel ); + pStyle->importTextLineColorStyle( xControlModel ); + pStyle->importBorderStyle( xControlModel ); + pStyle->importFontStyle( xControlModel ); + } + + ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes ); + ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Label") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value") ), + _xAttributes ); + ctx.importAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Align") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("align") ), + _xAttributes ); + ctx.importVerticalAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("VerticalAlign") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("valign") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("MultiLine") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("multiline") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("NoLabel") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("nolabel") ), + _xAttributes ); + ctx.importEvents( _events ); + // avoid ring-reference: + // vector< event elements > holding event elements holding this (via _pParent) + _events.clear(); +} + +//################################################################################################## +// FixedHyperLink +//__________________________________________________________________________________________________ +Reference< xml::input::XElement > FixedHyperLinkElement::startChildElement( + sal_Int32 nUid, OUString const & rLocalName, + Reference< xml::input::XAttributes > const & xAttributes ) + throw (xml::sax::SAXException, RuntimeException) +{ + // event + if (_pImport->isEventElement( nUid, rLocalName )) + { + return new EventElement( nUid, rLocalName, xAttributes, this, _pImport ); + } + else + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ), + Reference< XInterface >(), Any() ); + } +} +//__________________________________________________________________________________________________ +void FixedHyperLinkElement::endElement() + throw (xml::sax::SAXException, RuntimeException) +{ + ControlImportContext ctx( + _pImport, getControlId( _xAttributes ), + OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlFixedHyperlinkModel") ) ); + + Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) ); + if (xStyle.is()) + { + StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () ); + Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() ); + pStyle->importBackgroundColorStyle( xControlModel ); + pStyle->importTextColorStyle( xControlModel ); + pStyle->importTextLineColorStyle( xControlModel ); + pStyle->importBorderStyle( xControlModel ); + pStyle->importFontStyle( xControlModel ); + } + + ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes ); + ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Label") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value") ), + _xAttributes ); + ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("URL") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("url") ), + _xAttributes ); + ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Description") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("description") ), + _xAttributes ); + + ctx.importAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Align") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("align") ), + _xAttributes ); + ctx.importVerticalAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("VerticalAlign") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("valign") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("MultiLine") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("multiline") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("NoLabel") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("nolabel") ), + _xAttributes ); + ctx.importEvents( _events ); + // avoid ring-reference: + // vector< event elements > holding event elements holding this (via _pParent) + _events.clear(); +} + +//################################################################################################## + +// edit +//__________________________________________________________________________________________________ +Reference< xml::input::XElement > TextFieldElement::startChildElement( + sal_Int32 nUid, OUString const & rLocalName, + Reference< xml::input::XAttributes > const & xAttributes ) + throw (xml::sax::SAXException, RuntimeException) +{ + // event + if (_pImport->isEventElement( nUid, rLocalName )) + { + return new EventElement( nUid, rLocalName, xAttributes, this, _pImport ); + } + else + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ), + Reference< XInterface >(), Any() ); + } +} +//__________________________________________________________________________________________________ +void TextFieldElement::endElement() + throw (xml::sax::SAXException, RuntimeException) +{ + ControlImportContext ctx( + _pImport, getControlId( _xAttributes ), + OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlEditModel") ) ); + Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() ); + + Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) ); + if (xStyle.is()) + { + StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () ); + pStyle->importBackgroundColorStyle( xControlModel ); + pStyle->importTextColorStyle( xControlModel ); + pStyle->importTextLineColorStyle( xControlModel ); + pStyle->importBorderStyle( xControlModel ); + pStyle->importFontStyle( xControlModel ); + } + + ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ), + _xAttributes ); + ctx.importAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Align") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("align") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("HardLineBreaks") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("hard-linebreaks") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("HScroll") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("hscroll") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("VScroll") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("vscroll") ), + _xAttributes ); + ctx.importBooleanProperty( + OUSTR("HideInactiveSelection"), OUSTR("hide-inactive-selection"), + _xAttributes ); + ctx.importShortProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("MaxTextLen") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("maxlength") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("MultiLine") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("multiline") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ReadOnly") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("readonly") ), + _xAttributes ); + ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Text") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value") ), + _xAttributes ); + ctx.importLineEndFormatProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("LineEndFormat") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("lineend-format") ), + _xAttributes ); + OUString aValue; + if (getStringAttr( &aValue, + OUString( RTL_CONSTASCII_USTRINGPARAM("echochar") ), + _xAttributes, + _pImport->XMLNS_DIALOGS_UID ) && + aValue.getLength() > 0) + { + OSL_ENSURE( aValue.getLength() == 1, "### more than one character given for echochar!" ); + sal_Int16 nChar = (sal_Int16)aValue[ 0 ]; + xControlModel->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM("EchoChar") ), + makeAny( nChar ) ); + } + + ctx.importEvents( _events ); + // avoid ring-reference: + // vector< event elements > holding event elements holding this (via _pParent) + _events.clear(); +} + +//################################################################################################## + +// titledbox +//__________________________________________________________________________________________________ +Reference< xml::input::XElement > TitledBoxElement::startChildElement( + sal_Int32 nUid, OUString const & rLocalName, + Reference< xml::input::XAttributes > const & xAttributes ) + throw (xml::sax::SAXException, RuntimeException) +{ + // event + if (_pImport->isEventElement( nUid, rLocalName )) + { + return new EventElement( nUid, rLocalName, xAttributes, this, _pImport ); + } + else if (_pImport->XMLNS_DIALOGS_UID != nUid) + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("illegal namespace!") ), + Reference< XInterface >(), Any() ); + } + // title + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("title") )) + { + getStringAttr( &_label, + OUString( RTL_CONSTASCII_USTRINGPARAM("value") ), + xAttributes, + _pImport->XMLNS_DIALOGS_UID ); + + return new ElementBase( + _pImport->XMLNS_DIALOGS_UID, + rLocalName, xAttributes, this, _pImport ); + } + // radio + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("radio") )) + { + // dont create radios here, => titledbox must be inserted first due to radio grouping, + // possible predecessors! + Reference< xml::input::XElement > xRet( + new RadioElement( rLocalName, xAttributes, this, _pImport ) ); + _radios.push_back( xRet ); + return xRet; + } + // event + else if (_pImport->isEventElement( nUid, rLocalName )) + { + return new EventElement( nUid, rLocalName, xAttributes, this, _pImport ); + } + else + { + return BulletinBoardElement::startChildElement( nUid, rLocalName, xAttributes ); + } +} +//__________________________________________________________________________________________________ +void TitledBoxElement::endElement() + throw (xml::sax::SAXException, RuntimeException) +{ + { + ControlImportContext ctx( + _pImport, getControlId( _xAttributes ), + OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlGroupBoxModel") ) ); + Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() ); + + Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) ); + if (xStyle.is()) + { + StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () ); + pStyle->importTextColorStyle( xControlModel ); + pStyle->importTextLineColorStyle( xControlModel ); + pStyle->importFontStyle( xControlModel ); + } + + ctx.importDefaults( 0, 0, _xAttributes ); // inherited from BulletinBoardElement + + if (_label.getLength()) + { + xControlModel->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM("Label") ), + makeAny( _label ) ); + } + + ctx.importEvents( _events ); + // avoid ring-reference: + // vector< event elements > holding event elements holding this (via _pParent) + _events.clear(); + } + + // create radios AFTER group box! + for ( size_t nPos = 0; nPos < _radios.size(); ++nPos ) + { + Reference< xml::input::XElement > xRadio( _radios[ nPos ] ); + Reference< xml::input::XAttributes > xAttributes( + xRadio->getAttributes() ); + + ControlImportContext ctx( + _pImport, getControlId( xAttributes ), + OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlRadioButtonModel") ) ); + Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() ); + + Reference< xml::input::XElement > xStyle( getStyle( xAttributes ) ); + if (xStyle.is()) + { + StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () ); + pStyle->importBackgroundColorStyle( xControlModel ); + pStyle->importTextColorStyle( xControlModel ); + pStyle->importTextLineColorStyle( xControlModel ); + pStyle->importFontStyle( xControlModel ); + pStyle->importVisualEffectStyle( xControlModel ); + } + + ctx.importDefaults( _nBasePosX, _nBasePosY, xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ), + xAttributes ); + ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Label") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value") ), + xAttributes ); + ctx.importAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Align") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("align") ), + xAttributes ); + ctx.importVerticalAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("VerticalAlign") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("valign") ), + xAttributes ); + ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ImageURL") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("image-src") ), + xAttributes ); + ctx.importImagePositionProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ImagePosition") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("image-position") ), + xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("MultiLine") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("multiline") ), + xAttributes ); + + sal_Int16 nVal = 0; + sal_Bool bChecked = sal_False; + if (getBoolAttr( &bChecked, + OUString( RTL_CONSTASCII_USTRINGPARAM("checked") ), + xAttributes, + _pImport->XMLNS_DIALOGS_UID ) && + bChecked) + { + nVal = 1; + } + xControlModel->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM("State") ), + makeAny( nVal ) ); + + ::std::vector< Reference< xml::input::XElement > > * radioEvents = + static_cast< RadioElement * >( xRadio.get() )->getEvents(); + ctx.importEvents( *radioEvents ); + // avoid ring-reference: + // vector< event elements > holding event elements holding this (via _pParent) + radioEvents->clear(); + } + // avoid ring-reference: + // vector< radio elements > holding radio elements holding this (via _pParent) + _radios.clear(); +} + +//################################################################################################## + +// radio +//__________________________________________________________________________________________________ +Reference< xml::input::XElement > RadioElement::startChildElement( + sal_Int32 nUid, OUString const & rLocalName, + Reference< xml::input::XAttributes > const & xAttributes ) + throw (xml::sax::SAXException, RuntimeException) +{ + // event + if (_pImport->isEventElement( nUid, rLocalName )) + { + return new EventElement( nUid, rLocalName, xAttributes, this, _pImport ); + } + else + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ), + Reference< XInterface >(), Any() ); + } +} + +//################################################################################################## + +// radiogroup +//__________________________________________________________________________________________________ +Reference< xml::input::XElement > RadioGroupElement::startChildElement( + sal_Int32 nUid, OUString const & rLocalName, + Reference< xml::input::XAttributes > const & xAttributes ) + throw (xml::sax::SAXException, RuntimeException) +{ + if (_pImport->XMLNS_DIALOGS_UID != nUid) + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("illegal namespace!") ), + Reference< XInterface >(), Any() ); + } + // radio + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("radio") )) + { + // dont create radios here, => titledbox must be inserted first due to radio grouping, + // possible predecessors! + Reference< xml::input::XElement > xRet( + new RadioElement( rLocalName, xAttributes, this, _pImport ) ); + _radios.push_back( xRet ); + return xRet; + } + else + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("expected radio element!") ), + Reference< XInterface >(), Any() ); + } +} +//__________________________________________________________________________________________________ +void RadioGroupElement::endElement() + throw (xml::sax::SAXException, RuntimeException) +{ + for ( size_t nPos = 0; nPos < _radios.size(); ++nPos ) + { + Reference< xml::input::XElement > xRadio( _radios[ nPos ] ); + Reference< xml::input::XAttributes > xAttributes( + xRadio->getAttributes() ); + + ControlImportContext ctx( + _pImport, getControlId( xAttributes ), + OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlRadioButtonModel") ) ); + Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() ); + + Reference< xml::input::XElement > xStyle( getStyle( xAttributes ) ); + if (xStyle.is()) + { + StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () ); + pStyle->importBackgroundColorStyle( xControlModel ); + pStyle->importTextColorStyle( xControlModel ); + pStyle->importTextLineColorStyle( xControlModel ); + pStyle->importFontStyle( xControlModel ); + pStyle->importVisualEffectStyle( xControlModel ); + } + + ctx.importDefaults( _nBasePosX, _nBasePosY, xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ), + xAttributes ); + ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Label") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value") ), + xAttributes ); + ctx.importAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Align") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("align") ), + xAttributes ); + ctx.importVerticalAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("VerticalAlign") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("valign") ), + xAttributes ); + ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ImageURL") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("image-src") ), + xAttributes ); + ctx.importImagePositionProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ImagePosition") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("image-position") ), + xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("MultiLine") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("multiline") ), + xAttributes ); + sal_Int16 nVal = 0; + sal_Bool bChecked = sal_False; + if (getBoolAttr( &bChecked, + OUString( RTL_CONSTASCII_USTRINGPARAM("checked") ), + xAttributes, + _pImport->XMLNS_DIALOGS_UID ) && + bChecked) + { + nVal = 1; + } + xControlModel->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM("State") ), + makeAny( nVal ) ); + + ::std::vector< Reference< xml::input::XElement > > * radioEvents = + static_cast< RadioElement * >( xRadio.get() )->getEvents(); + ctx.importEvents( *radioEvents ); + // avoid ring-reference: + // vector< event elements > holding event elements holding this (via _pParent) + radioEvents->clear(); + } + // avoid ring-reference: + // vector< radio elements > holding radio elements holding this (via _pParent) + _radios.clear(); +} + +//################################################################################################## + +// menupopup +//__________________________________________________________________________________________________ +Reference< xml::input::XElement > MenuPopupElement::startChildElement( + sal_Int32 nUid, OUString const & rLocalName, + Reference< xml::input::XAttributes > const & xAttributes ) + throw (xml::sax::SAXException, RuntimeException) +{ + if (_pImport->XMLNS_DIALOGS_UID != nUid) + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("illegal namespace!") ), + Reference< XInterface >(), Any() ); + } + // menuitem + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("menuitem") )) + { + OUString aValue( + xAttributes->getValueByUidName( + _pImport->XMLNS_DIALOGS_UID, + OUString( RTL_CONSTASCII_USTRINGPARAM("value") ) ) ); + OSL_ENSURE( aValue.getLength(), "### menuitem has no value?" ); + if (aValue.getLength()) + { + _itemValues.push_back( aValue ); + + OUString aSel( + xAttributes->getValueByUidName( + _pImport->XMLNS_DIALOGS_UID, + OUString( RTL_CONSTASCII_USTRINGPARAM("selected") ) ) ); + if (aSel.getLength() && aSel.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("true") )) + { + _itemSelected.push_back( + static_cast<sal_Int16>(_itemValues.size()) -1 ); + } + } + return new ElementBase( + _pImport->XMLNS_DIALOGS_UID, + rLocalName, xAttributes, this, _pImport ); + } + else + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("expected menuitem!") ), + Reference< XInterface >(), Any() ); + } +} +//__________________________________________________________________________________________________ +Sequence< OUString > MenuPopupElement::getItemValues() +{ + Sequence< OUString > aRet( _itemValues.size() ); + OUString * pRet = aRet.getArray(); + for ( size_t nPos = _itemValues.size(); nPos--; ) + { + pRet[ nPos ] = _itemValues[ nPos ]; + } + return aRet; +} +//__________________________________________________________________________________________________ +Sequence< sal_Int16 > MenuPopupElement::getSelectedItems() +{ + Sequence< sal_Int16 > aRet( _itemSelected.size() ); + sal_Int16 * pRet = aRet.getArray(); + for ( size_t nPos = _itemSelected.size(); nPos--; ) + { + pRet[ nPos ] = _itemSelected[ nPos ]; + } + return aRet; +} + +//################################################################################################## + +// menulist +//__________________________________________________________________________________________________ +Reference< xml::input::XElement > MenuListElement::startChildElement( + sal_Int32 nUid, OUString const & rLocalName, + Reference< xml::input::XAttributes > const & xAttributes ) + throw (xml::sax::SAXException, RuntimeException) +{ + // event + if (_pImport->isEventElement( nUid, rLocalName )) + { + return new EventElement( nUid, rLocalName, xAttributes, this, _pImport ); + } + else if (_pImport->XMLNS_DIALOGS_UID != nUid) + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("illegal namespace!") ), + Reference< XInterface >(), Any() ); + } + // menupopup + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("menupopup") )) + { + _popup = new MenuPopupElement( rLocalName, xAttributes, this, _pImport ); + return _popup; + } + else + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("expected event or menupopup element!") ), + Reference< XInterface >(), Any() ); + } +} +//__________________________________________________________________________________________________ +void MenuListElement::endElement() + throw (xml::sax::SAXException, RuntimeException) +{ + ControlImportContext ctx( + _pImport, getControlId( _xAttributes ), + OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlListBoxModel") ) ); + Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() ); + + Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) ); + if (xStyle.is()) + { + StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () ); + pStyle->importBackgroundColorStyle( xControlModel ); + pStyle->importTextColorStyle( xControlModel ); + pStyle->importTextLineColorStyle( xControlModel ); + pStyle->importBorderStyle( xControlModel ); + pStyle->importFontStyle( xControlModel ); + } + + ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("MultiSelection") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("multiselection") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ReadOnly") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("readonly") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Dropdown") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("spin") ), + _xAttributes ); + ctx.importShortProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("LineCount") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("linecount") ), + _xAttributes ); + ctx.importAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Align") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("align") ), + _xAttributes ); + + if (_popup.is()) + { + MenuPopupElement * p = static_cast< MenuPopupElement * >( _popup.get() ); + xControlModel->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM("StringItemList") ), + makeAny( p->getItemValues() ) ); + xControlModel->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM("SelectedItems") ), + makeAny( p->getSelectedItems() ) ); + } + ctx.importEvents( _events ); + // avoid ring-reference: + // vector< event elements > holding event elements holding this (via _pParent) + _events.clear(); +} + +//################################################################################################## + +// combobox +//__________________________________________________________________________________________________ +Reference< xml::input::XElement > ComboBoxElement::startChildElement( + sal_Int32 nUid, OUString const & rLocalName, + Reference< xml::input::XAttributes > const & xAttributes ) + throw (xml::sax::SAXException, RuntimeException) +{ + // event + if (_pImport->isEventElement( nUid, rLocalName )) + { + return new EventElement( nUid, rLocalName, xAttributes, this, _pImport ); + } + else if (_pImport->XMLNS_DIALOGS_UID != nUid) + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("illegal namespace!") ), + Reference< XInterface >(), Any() ); + } + // menupopup + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("menupopup") )) + { + _popup = new MenuPopupElement( rLocalName, xAttributes, this, _pImport ); + return _popup; + } + else + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("expected event or menupopup element!") ), + Reference< XInterface >(), Any() ); + } +} +//__________________________________________________________________________________________________ +void ComboBoxElement::endElement() + throw (xml::sax::SAXException, RuntimeException) +{ + ControlImportContext ctx( + _pImport, getControlId( _xAttributes ), + OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlComboBoxModel") ) ); + Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() ); + + Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) ); + if (xStyle.is()) + { + StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () ); + pStyle->importBackgroundColorStyle( xControlModel ); + pStyle->importTextColorStyle( xControlModel ); + pStyle->importTextLineColorStyle( xControlModel ); + pStyle->importBorderStyle( xControlModel ); + pStyle->importFontStyle( xControlModel ); + } + + ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ReadOnly") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("readonly") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Autocomplete") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("autocomplete") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Dropdown") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("spin") ), + _xAttributes ); + ctx.importBooleanProperty( + OUSTR("HideInactiveSelection"), OUSTR("hide-inactive-selection"), + _xAttributes ); + ctx.importShortProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("MaxTextLen") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("maxlength") ), + _xAttributes ); + ctx.importShortProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("LineCount") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("linecount") ), + _xAttributes ); + ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Text") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value") ), + _xAttributes ); + ctx.importAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Align") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("align") ), + _xAttributes ); + + if (_popup.is()) + { + MenuPopupElement * p = static_cast< MenuPopupElement * >( _popup.get() ); + xControlModel->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM("StringItemList") ), + makeAny( p->getItemValues() ) ); + } + + ctx.importEvents( _events ); + // avoid ring-reference: + // vector< event elements > holding event elements holding this (via _pParent) + _events.clear(); +} + +//################################################################################################## + +// checkbox +//__________________________________________________________________________________________________ +Reference< xml::input::XElement > CheckBoxElement::startChildElement( + sal_Int32 nUid, OUString const & rLocalName, + Reference< xml::input::XAttributes > const & xAttributes ) + throw (xml::sax::SAXException, RuntimeException) +{ + // event + if (_pImport->isEventElement( nUid, rLocalName )) + { + return new EventElement( nUid, rLocalName, xAttributes, this, _pImport ); + } + else + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ), + Reference< XInterface >(), Any() ); + } +} +//__________________________________________________________________________________________________ +void CheckBoxElement::endElement() + throw (xml::sax::SAXException, RuntimeException) +{ + ControlImportContext ctx( + _pImport, getControlId( _xAttributes ), + OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlCheckBoxModel") ) ); + Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() ); + + Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) ); + if (xStyle.is()) + { + StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () ); + pStyle->importBackgroundColorStyle( xControlModel ); + pStyle->importTextColorStyle( xControlModel ); + pStyle->importTextLineColorStyle( xControlModel ); + pStyle->importFontStyle( xControlModel ); + pStyle->importVisualEffectStyle( xControlModel ); + } + + ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ), + _xAttributes ); + ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Label") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value") ), + _xAttributes ); + ctx.importAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Align") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("align") ), + _xAttributes ); + ctx.importVerticalAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("VerticalAlign") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("valign") ), + _xAttributes ); + ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ImageURL") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("image-src") ), + _xAttributes ); + ctx.importImagePositionProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ImagePosition") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("image-position") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("MultiLine") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("multiline") ), + _xAttributes ); + + + sal_Bool bTriState = sal_False; + if (getBoolAttr( &bTriState, + OUString( RTL_CONSTASCII_USTRINGPARAM("tristate") ), + _xAttributes, + _pImport->XMLNS_DIALOGS_UID )) + { + xControlModel->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM("TriState") ), + makeAny( bTriState ) ); + } + sal_Bool bChecked = sal_False; + if (getBoolAttr( &bChecked, + OUString( RTL_CONSTASCII_USTRINGPARAM("checked") ), + _xAttributes, + _pImport->XMLNS_DIALOGS_UID )) + { + // has "checked" attribute + sal_Int16 nVal = (bChecked ? 1 : 0); + xControlModel->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM("State") ), + makeAny( nVal ) ); + } + else + { + sal_Int16 nVal = (bTriState ? 2 : 0); // if tristate set, but checked omitted => dont know! + xControlModel->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM("State") ), + makeAny( nVal ) ); + } + + ctx.importEvents( _events ); + // avoid ring-reference: + // vector< event elements > holding event elements holding this (via _pParent) + _events.clear(); +} + +//################################################################################################## + +// button +//__________________________________________________________________________________________________ +Reference< xml::input::XElement > ButtonElement::startChildElement( + sal_Int32 nUid, OUString const & rLocalName, + Reference< xml::input::XAttributes > const & xAttributes ) + throw (xml::sax::SAXException, RuntimeException) +{ + // event + if (_pImport->isEventElement( nUid, rLocalName )) + { + return new EventElement( nUid, rLocalName, xAttributes, this, _pImport ); + } + else + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("expected event element!") ), + Reference< XInterface >(), Any() ); + } +} +//__________________________________________________________________________________________________ +void ButtonElement::endElement() + throw (xml::sax::SAXException, RuntimeException) +{ + ControlImportContext ctx( + _pImport, getControlId( _xAttributes ), + OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlButtonModel") ) ); + + Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) ); + if (xStyle.is()) + { + StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () ); + Reference< beans::XPropertySet > xControlModel( ctx.getControlModel() ); + pStyle->importBackgroundColorStyle( xControlModel ); + pStyle->importTextColorStyle( xControlModel ); + pStyle->importTextLineColorStyle( xControlModel ); + pStyle->importFontStyle( xControlModel ); + } + + ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("tabstop") ), + _xAttributes ); + ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Label") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("value") ), + _xAttributes ); + ctx.importAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("Align") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("align") ), + _xAttributes ); + ctx.importVerticalAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("VerticalAlign") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("valign") ), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("DefaultButton") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("default") ), + _xAttributes ); + ctx.importButtonTypeProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("PushButtonType") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("button-type") ), + _xAttributes ); + ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ImageURL") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("image-src") ), + _xAttributes ); + ctx.importImagePositionProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ImagePosition") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("image-position") ), + _xAttributes ); + ctx.importImageAlignProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ImageAlign") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("image-align") ), + _xAttributes ); + if (ctx.importLongProperty( OUSTR("RepeatDelay"), OUSTR("repeat"), + _xAttributes )) + ctx.getControlModel()->setPropertyValue( + OUSTR("Repeat"), makeAny(true) ); + sal_Int32 toggled = 0; + if (getLongAttr( &toggled, OUSTR("toggled"), _xAttributes, + _pImport->XMLNS_DIALOGS_UID ) && toggled == 1) + ctx.getControlModel()->setPropertyValue(OUSTR("Toggle"), makeAny(true)); + ctx.importBooleanProperty( OUSTR("FocusOnClick"), OUSTR("grab-focus"), + _xAttributes ); + ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("MultiLine") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("multiline") ), + _xAttributes ); + // State + sal_Bool bChecked = sal_False; + if (getBoolAttr( + &bChecked, + OUString( RTL_CONSTASCII_USTRINGPARAM("checked") ), + _xAttributes, + _pImport->XMLNS_DIALOGS_UID ) && + bChecked) + { + sal_Int16 nVal = 1; + ctx.getControlModel()->setPropertyValue( + OUString( RTL_CONSTASCII_USTRINGPARAM("State") ), makeAny( nVal ) ); + } + + ctx.importEvents( _events ); + // avoid ring-reference: + // vector< event elements > holding event elements holding this (via _pParent) + _events.clear(); +} + +//################################################################################################## + +// bulletinboard +//__________________________________________________________________________________________________ +Reference< xml::input::XElement > BulletinBoardElement::startChildElement( + sal_Int32 nUid, OUString const & rLocalName, + Reference< xml::input::XAttributes > const & xAttributes ) + throw (xml::sax::SAXException, RuntimeException) +{ + if (_pImport->XMLNS_DIALOGS_UID != nUid) + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("illegal namespace!") ), + Reference< XInterface >(), Any() ); + } + // button + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("button") )) + { + return new ButtonElement( rLocalName, xAttributes, this, _pImport ); + } + // checkbox + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("checkbox") )) + { + return new CheckBoxElement( rLocalName, xAttributes, this, _pImport ); + } + // combobox + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("combobox") )) + { + return new ComboBoxElement( rLocalName, xAttributes, this, _pImport ); + } + // listbox + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("menulist") )) + { + return new MenuListElement( rLocalName, xAttributes, this, _pImport ); + } + // radiogroup + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("radiogroup") )) + { + return new RadioGroupElement( rLocalName, xAttributes, this, _pImport ); + } + // titledbox + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("titledbox") )) + { + return new TitledBoxElement( rLocalName, xAttributes, this, _pImport ); + } + // text + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("text") )) + { + return new TextElement( rLocalName, xAttributes, this, _pImport ); + } + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("linklabel") )) + { + return new FixedHyperLinkElement( rLocalName, xAttributes, this, _pImport ); + } + // textfield + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("textfield") )) + { + return new TextFieldElement( rLocalName, xAttributes, this, _pImport ); + } + // img + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("img") )) + { + return new ImageControlElement( rLocalName, xAttributes, this, _pImport ); + } + // filecontrol + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("filecontrol") )) + { + return new FileControlElement( rLocalName, xAttributes, this, _pImport ); + } + // treecontrol + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("treecontrol") )) + { + return new TreeControlElement( rLocalName, xAttributes, this, _pImport ); + } + // currencyfield + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("currencyfield") )) + { + return new CurrencyFieldElement( rLocalName, xAttributes, this, _pImport ); + } + // datefield + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("datefield") )) + { + return new DateFieldElement( rLocalName, xAttributes, this, _pImport ); + } + // datefield + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("numericfield") )) + { + return new NumericFieldElement( rLocalName, xAttributes, this, _pImport ); + } + // timefield + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("timefield") )) + { + return new TimeFieldElement( rLocalName, xAttributes, this, _pImport ); + } + // patternfield + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("patternfield") )) + { + return new PatternFieldElement( rLocalName, xAttributes, this, _pImport ); + } + // formattedfield + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("formattedfield") )) + { + return new FormattedFieldElement( rLocalName, xAttributes, this, _pImport ); + } + // fixedline + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("fixedline") )) + { + return new FixedLineElement( rLocalName, xAttributes, this, _pImport ); + } + // scrollbar + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("scrollbar") )) + { + return new ScrollBarElement( rLocalName, xAttributes, this, _pImport ); + } + // progressmeter + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("progressmeter") )) + { + return new ProgressBarElement( rLocalName, xAttributes, this, _pImport ); + } + // bulletinboard + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("bulletinboard") )) + { + return new BulletinBoardElement( rLocalName, xAttributes, this, _pImport ); + } + else + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("expected styles, bulletinboard or bulletinboard element, not: ") ) + rLocalName, + Reference< XInterface >(), Any() ); + } +} +//__________________________________________________________________________________________________ +BulletinBoardElement::BulletinBoardElement( + OUString const & rLocalName, + Reference< xml::input::XAttributes > const & xAttributes, + ElementBase * pParent, DialogImport * pImport ) + SAL_THROW( () ) + : ControlElement( rLocalName, xAttributes, pParent, pImport ) +{ + OUString aValue( + _xAttributes->getValueByUidName( + _pImport->XMLNS_DIALOGS_UID, + OUString( RTL_CONSTASCII_USTRINGPARAM("left") ) ) ); + if (aValue.getLength()) + { + _nBasePosX += toInt32( aValue ); + } + aValue = _xAttributes->getValueByUidName( + _pImport->XMLNS_DIALOGS_UID, + OUString( RTL_CONSTASCII_USTRINGPARAM("top") ) ); + if (aValue.getLength()) + { + _nBasePosY += toInt32( aValue ); + } +} + +//################################################################################################## + +// style +//__________________________________________________________________________________________________ +Reference< xml::input::XElement > StyleElement::startChildElement( + sal_Int32 /*nUid*/, OUString const & /*rLocalName*/, + Reference< xml::input::XAttributes > const & /*xAttributes*/ ) + throw (xml::sax::SAXException, RuntimeException) +{ + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("unexpected sub elements of style!") ), + Reference< XInterface >(), Any() ); +} +//__________________________________________________________________________________________________ +void StyleElement::endElement() + throw (xml::sax::SAXException, RuntimeException) +{ + Reference< xml::input::XAttributes > xStyle; + OUString aStyleId( + _xAttributes->getValueByUidName( + _pImport->XMLNS_DIALOGS_UID, + OUString( RTL_CONSTASCII_USTRINGPARAM("style-id") ) ) ); + if (aStyleId.getLength()) + { + _pImport->addStyle( aStyleId, this ); + } + else + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("missing style-id attribute!") ), + Reference< XInterface >(), Any() ); + } +} + +//################################################################################################## + +// styles +//__________________________________________________________________________________________________ +Reference< xml::input::XElement > StylesElement::startChildElement( + sal_Int32 nUid, OUString const & rLocalName, + Reference< xml::input::XAttributes > const & xAttributes ) + throw (xml::sax::SAXException, RuntimeException) +{ + if (_pImport->XMLNS_DIALOGS_UID != nUid) + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("illegal namespace!") ), + Reference< XInterface >(), Any() ); + } + // style + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("style") )) + { + return new StyleElement( rLocalName, xAttributes, this, _pImport ); + } + else + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("expected style element!") ), + Reference< XInterface >(), Any() ); + } +} + +//################################################################################################## + +// window +//__________________________________________________________________________________________________ +Reference< xml::input::XElement > WindowElement::startChildElement( + sal_Int32 nUid, OUString const & rLocalName, + Reference< xml::input::XAttributes > const & xAttributes ) + throw (xml::sax::SAXException, RuntimeException) +{ + // event + if (_pImport->isEventElement( nUid, rLocalName )) + { + return new EventElement( nUid, rLocalName, xAttributes, this, _pImport ); + } + else if (_pImport->XMLNS_DIALOGS_UID != nUid) + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("illegal namespace!") ), + Reference< XInterface >(), Any() ); + } + // styles + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("styles") )) + { + return new StylesElement( rLocalName, xAttributes, this, _pImport ); + } + // bulletinboard + else if (rLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("bulletinboard") )) + { + return new BulletinBoardElement( rLocalName, xAttributes, this, _pImport ); + } + else + { + throw xml::sax::SAXException( + OUString( RTL_CONSTASCII_USTRINGPARAM("expected styles ot bulletinboard element!") ), + Reference< XInterface >(), Any() ); + } +} +//__________________________________________________________________________________________________ +void WindowElement::endElement() + throw (xml::sax::SAXException, RuntimeException) +{ + Reference< beans::XPropertySet > xProps( + _pImport->_xDialogModel, UNO_QUERY_THROW ); + ImportContext ctx( _pImport, xProps, getControlId( _xAttributes ) ); + + Reference< xml::input::XElement > xStyle( getStyle( _xAttributes ) ); + if (xStyle.is()) + { + StyleElement * pStyle = static_cast< StyleElement * >( xStyle.get () ); + pStyle->importBackgroundColorStyle( xProps ); + pStyle->importTextColorStyle( xProps ); + pStyle->importTextLineColorStyle( xProps ); + pStyle->importFontStyle( xProps ); + } + + ctx.importDefaults( 0, 0, _xAttributes, false ); + ctx.importBooleanProperty( + OUString( RTL_CONSTASCII_USTRINGPARAM("Closeable") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("closeable") ), + _xAttributes ); + ctx.importBooleanProperty( + OUString( RTL_CONSTASCII_USTRINGPARAM("Moveable") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("moveable") ), + _xAttributes ); + ctx.importBooleanProperty( + OUString( RTL_CONSTASCII_USTRINGPARAM("Sizeable") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("resizeable") ), + _xAttributes ); + ctx.importStringProperty( + OUString( RTL_CONSTASCII_USTRINGPARAM("Title") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("title") ), + _xAttributes ); + ctx.importBooleanProperty( + OUString( RTL_CONSTASCII_USTRINGPARAM("Decoration") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("withtitlebar") ), + _xAttributes ); + ctx.importStringProperty( + OUString( RTL_CONSTASCII_USTRINGPARAM("ImageURL") ), + OUString( RTL_CONSTASCII_USTRINGPARAM("image-src") ), + _xAttributes ); + ctx.importEvents( _events ); + // avoid ring-reference: + // vector< event elements > holding event elements holding this (via _pParent) + _events.clear(); +} + +} |