LCOV - code coverage report
Current view: top level - libreoffice/xmloff/source/forms - elementimport.hxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 0 24 0.0 %
Date: 2012-12-27 Functions: 0 52 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       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/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      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 .
      18             :  */
      19             : 
      20             : #ifndef _XMLOFF_FORMS_ELEMENTIMPORT_HXX_
      21             : #define _XMLOFF_FORMS_ELEMENTIMPORT_HXX_
      22             : 
      23             : #include "propertyimport.hxx"
      24             : #include "controlelement.hxx"
      25             : #include "valueproperties.hxx"
      26             : #include "eventimport.hxx"
      27             : #include "logging.hxx"
      28             : #include "property_description.hxx"
      29             : 
      30             : #include <com/sun/star/text/XTextCursor.hpp>
      31             : #include <com/sun/star/container/XNameContainer.hpp>
      32             : #include <com/sun/star/lang/XMultiServiceFactory.hpp>
      33             : #include <com/sun/star/form/XGridColumnFactory.hpp>
      34             : #include <com/sun/star/script/XEventAttacherManager.hpp>
      35             : 
      36             : #include <comphelper/stl_types.hxx>
      37             : 
      38             : class XMLTextStyleContext;
      39             : //.........................................................................
      40             : namespace xmloff
      41             : {
      42             : //.........................................................................
      43             : 
      44             :     class OFormLayerXMLImport_Impl;
      45             : 
      46             :     //=====================================================================
      47             :     //= OElementNameMap
      48             :     //=====================================================================
      49             :     const OControlElement::ElementType& operator ++(OControlElement::ElementType& _e);
      50             : 
      51             :     /** helper class which allows fast translation of xml tag names into element types.
      52             :     */
      53             :     class OElementNameMap : public OControlElement
      54             :     {
      55             :     protected:
      56             :         DECLARE_STL_USTRINGACCESS_MAP( ElementType, MapString2Element );
      57             :         static MapString2Element    s_sElementTranslations;
      58             : 
      59             :     protected:
      60             :         OElementNameMap() { }
      61             : 
      62             :     public:
      63             :         static ElementType getElementType(const ::rtl::OUString& _rName);
      64             :     };
      65             : 
      66             :     //=====================================================================
      67             :     //= OElementImport
      68             :     //=====================================================================
      69             :     /** implements common behaviour for importing forms, controls and columns
      70             :     */
      71             :     class OElementImport
      72             :                 :public OPropertyImport
      73             :                 ,public IEventAttacher
      74             :                 ,public OStackedLogging
      75             :     {
      76             :     protected:
      77             :         ::rtl::OUString             m_sServiceName;     // the service name as extracted from the service-name attribute
      78             :         ::rtl::OUString             m_sName;            // the name of the object (redundant, already contained in the base class' array)
      79             :         OFormLayerXMLImport_Impl&   m_rFormImport;      // the form import context
      80             :         IEventAttacherManager&      m_rEventManager;    // the event attacher manager
      81             : 
      82             :         const XMLTextStyleContext*  m_pStyleElement;    // the XML element which describes the style we encountered
      83             :                                                         // while reading our element
      84             : 
      85             :         /// the parent container to insert the new element into
      86             :         ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >
      87             :                                     m_xParentContainer;
      88             : 
      89             :         /// the element we're creating. Valid after StartElement
      90             :         ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >
      91             :                                     m_xElement;
      92             :         ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
      93             :                                     m_xInfo;
      94             : 
      95             :         bool                        m_bImplicitGenericAttributeHandling;
      96             : 
      97             :     public:
      98             :         /** ctor
      99             :             @param _rImport
     100             :                 the importer
     101             :             @param _rEventManager
     102             :                 the event attacher manager for the control beeing imported
     103             :             @param _nPrefix
     104             :                 the namespace prefix
     105             :             @param _rName
     106             :                 the element name
     107             :             @param _rAttributeMap
     108             :                 the attribute map to be used for translating attributes into properties
     109             :             @param _rxParentContainer
     110             :                 the container in which the new element should be inserted
     111             :         */
     112             :         OElementImport(
     113             :             OFormLayerXMLImport_Impl& _rImport, IEventAttacherManager& _rEventManager,
     114             :             sal_uInt16 _nPrefix, const ::rtl::OUString& _rName,
     115             :             const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& _rxParentContainer
     116             :         );
     117             :         virtual ~OElementImport();
     118             : 
     119             :     protected:
     120             :         // SvXMLImportContext overridables
     121             :         virtual void StartElement(
     122             :             const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& _rxAttrList);
     123             :         virtual SvXMLImportContext* CreateChildContext(
     124             :             sal_uInt16 _nPrefix, const ::rtl::OUString& _rLocalName,
     125             :             const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& _rxAttrList);
     126             :         virtual void    EndElement();
     127             : 
     128             :         // OPropertyImport overridables
     129             :         virtual bool    handleAttribute(sal_uInt16 _nNamespaceKey,
     130             :             const ::rtl::OUString& _rLocalName,
     131             :             const ::rtl::OUString& _rValue);
     132             : 
     133             :         // IEventAttacher
     134             :         virtual void registerEvents(
     135             :             const ::com::sun::star::uno::Sequence< ::com::sun::star::script::ScriptEventDescriptor >& _rEvents
     136             :             );
     137             : 
     138             :         /** create the (uninitialized) element which is to represent the read data
     139             : 
     140             :             <p>The default implementation uses <member>m_xORB</member> to create a object with <member>m_sServiceName</member>.
     141             :         */
     142             :         virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >
     143             :                         createElement();
     144             : 
     145             :     protected:
     146             :         /** can be used to handle properties where the attribute default and the property default differ.
     147             :             <p>In such case, if the property had the attribute default upon writing, nothing is read, so upon reading,
     148             :             the property is still at it's own default (which is not the attribute default).<p/>
     149             :             <p>This method, if told the attribute and the property, and the (implied) attribute default, sets the
     150             :             property value as if the attribute was encountered.</p>
     151             :             @see encounteredAttribute
     152             :         */
     153             :         void        simulateDefaultedAttribute(const sal_Char* _pAttributeName, const ::rtl::OUString& _rPropertyName, const sal_Char* _pAttributeDefault);
     154             : 
     155             :         /** to be called from within handleAttribute, checks whether the given attribute is covered by our generic
     156             :             attribute handler mechanisms
     157             :         */
     158             :         bool        tryGenericAttribute( sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue );
     159             : 
     160             :         /** controls whether |handleAttribute| implicitly calls |tryGenericAttribute|, or whether the derived class
     161             :             must do this explicitly at a suitable place in its own |handleAttribute|
     162             :         */
     163           0 :         void        disableImplicitGenericAttributeHandling() { m_bImplicitGenericAttributeHandling = false; }
     164             : 
     165             :     private:
     166             :         ::rtl::OUString implGetDefaultName() const;
     167             :         void implApplyGenericProperties();
     168             :         void implApplySpecificProperties();
     169             : 
     170             :         /** sets the style properties which have been read for the element (if any)
     171             :         */
     172             :         void implSetStyleProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxObject );
     173             : 
     174             :         PropertyGroups::const_iterator impl_matchPropertyGroup( const PropertyGroups& i_propertyGroups ) const;
     175             : 
     176             :         virtual ::rtl::OUString determineDefaultServiceName() const;
     177             :     };
     178             : 
     179             :     //=====================================================================
     180             :     //= OControlImport
     181             :     //=====================================================================
     182             :     /** helper class for importing the description of a single control
     183             :     */
     184           0 :     class OControlImport
     185             :                 :public OElementImport
     186             :                 ,public OValuePropertiesMetaData
     187             :     {
     188             :     protected:
     189             :         ::rtl::OUString                 m_sControlId;
     190             :         OControlElement::ElementType    m_eElementType;
     191             : 
     192             :         PropertyValueArray              m_aValueProperties;
     193             :         // the value properties (value, current-value, min-value, max-value) require some special
     194             :         // handling
     195             : 
     196             :         // we fake the attributes our base class gets: we add the attributes of the outer wrapper
     197             :         // element which encloses us
     198             :         ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >
     199             :                                         m_xOuterAttributes;
     200             : 
     201             :         /** the address of the calc cell which the control model should be bound to,
     202             :             if applicable
     203             :         */
     204             :         ::rtl::OUString                 m_sBoundCellAddress;
     205             : 
     206             :         /** name of a value binding (xforms:bind attribute) */
     207             :         ::rtl::OUString                 m_sBindingID;
     208             : 
     209             :         /** name of a list binding (form:xforms-list-source attribute) */
     210             :         ::rtl::OUString                 m_sListBindingID;
     211             : 
     212             :         /** name of a submission (xforms:submission attribute) */
     213             :         ::rtl::OUString                 m_sSubmissionID;
     214             : 
     215             :     protected:
     216             :         // for use by derived classes only
     217             :         OControlImport(
     218             :             OFormLayerXMLImport_Impl& _rImport, IEventAttacherManager& _rEventManager,
     219             :             sal_uInt16 _nPrefix, const ::rtl::OUString& _rName,
     220             :             const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& _rxParentContainer
     221             :             );
     222             : 
     223             :     public:
     224             :         OControlImport(
     225             :             OFormLayerXMLImport_Impl& _rImport, IEventAttacherManager& _rEventManager,
     226             :             sal_uInt16 _nPrefix, const ::rtl::OUString& _rName,
     227             :             const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& _rxParentContainer,
     228             :             OControlElement::ElementType _eType
     229             :         );
     230             : 
     231             :         // SvXMLImportContext overridables
     232             :         virtual void StartElement(
     233             :             const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& _rxAttrList);
     234             :         virtual void    EndElement();
     235             : 
     236             :         // OPropertyImport overridables
     237             :         virtual bool    handleAttribute(sal_uInt16 _nNamespaceKey,
     238             :             const ::rtl::OUString& _rLocalName,
     239             :             const ::rtl::OUString& _rValue);
     240             : 
     241             :         void addOuterAttributes(const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& _rxOuterAttribs);
     242             : 
     243             :     protected:
     244           0 :         void setElementType(OControlElement::ElementType _eType) { m_eElementType = _eType; }
     245             : 
     246             :     protected:
     247             :         void implTranslateValueProperty(
     248             :             const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >& _rxPropInfo,
     249             :             ::com::sun::star::beans::PropertyValue& /* [in/out] */ _rPropValue);
     250             : 
     251             :         virtual ::rtl::OUString determineDefaultServiceName() const;
     252             : 
     253             :         /** registers the given cell address as value binding address for our element
     254             : 
     255             :             <p>The default implementation simply calls registerCellValueBinding at our import
     256             :             context, but you may want to override this behaviour.</p>
     257             : 
     258             :             @param _rBoundCellAddress
     259             :                 the cell address to register for our element. Must not be <NULL/>.
     260             :             @precond
     261             :                 we have a valid element (m_xElement)
     262             :         */
     263             :         virtual void doRegisterCellValueBinding( const ::rtl::OUString& _rBoundCellAddress );
     264             : 
     265             :         /** register the given XForms binding */
     266             :         virtual void doRegisterXFormsValueBinding( const ::rtl::OUString& );
     267             : 
     268             :         /** register the given XForms list binding */
     269             :         virtual void doRegisterXFormsListBinding( const ::rtl::OUString& );
     270             : 
     271             :         /** register the given XForms submission */
     272             :         virtual void doRegisterXFormsSubmission( const ::rtl::OUString& );
     273             : 
     274             :     protected:
     275             : 
     276             :         // OElementImport overridables
     277             :         virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >
     278             :                         createElement();
     279             :     };
     280             : 
     281             :     // TODO:
     282             :     // this whole mechanism doesn't scale. Instead of deriving even more classes for every new attribute,
     283             :     // we should have dedicated attribute handlers
     284             :     // The rest of xmloff implements it this way - why don't we do, too?
     285             : 
     286             :     //=====================================================================
     287             :     //= OImagePositionImport
     288             :     //=====================================================================
     289           0 :     class OImagePositionImport : public OControlImport
     290             :     {
     291             :         sal_Int16   m_nImagePosition;
     292             :         sal_Int16   m_nImageAlign;
     293             :         sal_Bool    m_bHaveImagePosition;
     294             : 
     295             :     public:
     296             :         OImagePositionImport(
     297             :             OFormLayerXMLImport_Impl& _rImport, IEventAttacherManager& _rEventManager, sal_uInt16 _nPrefix, const ::rtl::OUString& _rName,
     298             :             const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& _rxParentContainer,
     299             :             OControlElement::ElementType _eType
     300             :         );
     301             : 
     302             :     protected:
     303             :         // SvXMLImportContext overridables
     304             :         virtual void StartElement(
     305             :             const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& _rxAttrList);
     306             : 
     307             :         // OPropertyImport overridables
     308             :         virtual bool    handleAttribute( sal_uInt16 _nNamespaceKey,
     309             :             const ::rtl::OUString& _rLocalName,
     310             :             const ::rtl::OUString& _rValue
     311             :        );
     312             :     };
     313             : 
     314             :     //=====================================================================
     315             :     //= OReferredControlImport
     316             :     //=====================================================================
     317           0 :     class OReferredControlImport : public OControlImport
     318             :     {
     319             :     protected:
     320             :         ::rtl::OUString m_sReferringControls;   // the list of ids of controls referring to the one beeing imported
     321             : 
     322             :     public:
     323             :         OReferredControlImport(
     324             :             OFormLayerXMLImport_Impl& _rImport, IEventAttacherManager& _rEventManager, sal_uInt16 _nPrefix, const ::rtl::OUString& _rName,
     325             :             const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& _rxParentContainer,
     326             :             OControlElement::ElementType _eType
     327             :         );
     328             : 
     329             :         // SvXMLImportContext overridables
     330             :         virtual void StartElement(
     331             :             const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& _rxAttrList);
     332             : 
     333             :         // OPropertyImport overridables
     334             :         virtual bool    handleAttribute(sal_uInt16 _nNamespaceKey,
     335             :             const ::rtl::OUString& _rLocalName,
     336             :             const ::rtl::OUString& _rValue);
     337             :     };
     338             : 
     339             :     //=====================================================================
     340             :     //= OPasswordImport
     341             :     //=====================================================================
     342           0 :     class OPasswordImport : public OControlImport
     343             :     {
     344             :     public:
     345             :         OPasswordImport(
     346             :             OFormLayerXMLImport_Impl& _rImport, IEventAttacherManager& _rEventManager, sal_uInt16 _nPrefix, const ::rtl::OUString& _rName,
     347             :             const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& _rxParentContainer,
     348             :             OControlElement::ElementType _eType
     349             :         );
     350             : 
     351             :         // OPropertyImport overridables
     352             :         virtual bool    handleAttribute(sal_uInt16 _nNamespaceKey,
     353             :             const ::rtl::OUString& _rLocalName,
     354             :             const ::rtl::OUString& _rValue);
     355             :     };
     356             : 
     357             :     //=====================================================================
     358             :     //= ORadioImport
     359             :     //=====================================================================
     360           0 :     class ORadioImport : public OImagePositionImport
     361             :     {
     362             :     public:
     363             :         ORadioImport(
     364             :             OFormLayerXMLImport_Impl& _rImport, IEventAttacherManager& _rEventManager, sal_uInt16 _nPrefix, const ::rtl::OUString& _rName,
     365             :             const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& _rxParentContainer,
     366             :             OControlElement::ElementType _eType
     367             :         );
     368             : 
     369             :     protected:
     370             :         // OPropertyImport overridables
     371             :         virtual bool    handleAttribute(sal_uInt16 _nNamespaceKey,
     372             :             const ::rtl::OUString& _rLocalName,
     373             :             const ::rtl::OUString& _rValue);
     374             :     };
     375             : 
     376             :     //=====================================================================
     377             :     //= OURLReferenceImport
     378             :     //=====================================================================
     379             :     /** a specialized version of the <type>OControlImport</type> class, which is able
     380             :         to handle attributes which denote URLs (and stored relative)
     381             :     */
     382           0 :     class OURLReferenceImport : public OImagePositionImport
     383             :     {
     384             :     public:
     385             :         OURLReferenceImport(
     386             :             OFormLayerXMLImport_Impl& _rImport, IEventAttacherManager& _rEventManager, sal_uInt16 _nPrefix, const ::rtl::OUString& _rName,
     387             :             const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& _rxParentContainer,
     388             :             OControlElement::ElementType _eType
     389             :         );
     390             : 
     391             :     protected:
     392             :         // OPropertyImport overridables
     393             :         virtual bool    handleAttribute(sal_uInt16 _nNamespaceKey,
     394             :             const ::rtl::OUString& _rLocalName,
     395             :             const ::rtl::OUString& _rValue);
     396             :     };
     397             : 
     398             :     //=====================================================================
     399             :     //= OButtonImport
     400             :     //=====================================================================
     401             :     /** A specialized version of the <type>OControlImport</type> class, which handles
     402             :         the target frame for image and command buttons
     403             :     */
     404           0 :     class OButtonImport : public OURLReferenceImport
     405             :     {
     406             :     public:
     407             :         OButtonImport(
     408             :             OFormLayerXMLImport_Impl& _rImport, IEventAttacherManager& _rEventManager, sal_uInt16 _nPrefix, const ::rtl::OUString& _rName,
     409             :             const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& _rxParentContainer,
     410             :             OControlElement::ElementType _eType
     411             :         );
     412             : 
     413             :     protected:
     414             :         // SvXMLImportContext overridables
     415             :         virtual void StartElement(
     416             :             const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& _rxAttrList);
     417             :     };
     418             : 
     419             :     //=====================================================================
     420             :     //= OValueRangeImport
     421             :     //=====================================================================
     422             :     /** A specialized version of the <type>OControlImport</type> class, which imports
     423             :         the value-range elements
     424             :     */
     425           0 :     class OValueRangeImport : public OControlImport
     426             :     {
     427             :     private:
     428             :         sal_Int32   m_nStepSizeValue;
     429             : 
     430             :     public:
     431             :         OValueRangeImport(
     432             :             OFormLayerXMLImport_Impl& _rImport, IEventAttacherManager& _rEventManager, sal_uInt16 _nPrefix, const ::rtl::OUString& _rName,
     433             :             const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& _rxParentContainer,
     434             :             OControlElement::ElementType _eType
     435             :         );
     436             : 
     437             :     protected:
     438             :         // SvXMLImportContext overridables
     439             :         virtual void StartElement(
     440             :             const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& _rxAttrList );
     441             : 
     442             :         // OPropertyImport overridables
     443             :         virtual bool    handleAttribute( sal_uInt16 _nNamespaceKey,
     444             :             const ::rtl::OUString& _rLocalName,
     445             :             const ::rtl::OUString& _rValue );
     446             :     };
     447             : 
     448             :     //=====================================================================
     449             :     //= OTextLikeImport
     450             :     //=====================================================================
     451             :     /** A specialized version of the <type>OControlImport</type> class, which handles
     452             :         text like controls which have the convert-empty-to-null attribute</p>
     453             :     */
     454           0 :     class OTextLikeImport : public OControlImport
     455             :     {
     456             :     private:
     457             :         ::com::sun::star::uno::Reference< com::sun::star::text::XTextCursor >   m_xCursor;
     458             :         ::com::sun::star::uno::Reference< com::sun::star::text::XTextCursor >   m_xOldCursor;
     459             :         bool                                                                    m_bEncounteredTextPara;
     460             : 
     461             :     public:
     462             :         OTextLikeImport(
     463             :             OFormLayerXMLImport_Impl& _rImport, IEventAttacherManager& _rEventManager, sal_uInt16 _nPrefix, const ::rtl::OUString& _rName,
     464             :             const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& _rxParentContainer,
     465             :             OControlElement::ElementType _eType
     466             :         );
     467             : 
     468             :         // SvXMLImportContext overridables
     469             :         virtual void StartElement(
     470             :             const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& _rxAttrList);
     471             :         virtual SvXMLImportContext* CreateChildContext(
     472             :             sal_uInt16 _nPrefix, const ::rtl::OUString& _rLocalName,
     473             :             const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& _rxAttrList);
     474             :         virtual void    EndElement();
     475             : 
     476             :     private:
     477             :         void    adjustDefaultControlProperty();
     478             :         void    removeRedundantCurrentValue();
     479             :     };
     480             : 
     481             :     //=====================================================================
     482             :     //= OListAndComboImport
     483             :     //=====================================================================
     484             :     /** A specialized version of the <type>OControlImport</type> class, which handles
     485             :         attributes / sub elements which are special to list and combo boxes
     486             :     */
     487           0 :     class OListAndComboImport : public OControlImport
     488             :     {
     489             :         friend class OListOptionImport;
     490             :         friend class OComboItemImport;
     491             : 
     492             :     protected:
     493             :         ::com::sun::star::uno::Sequence< ::rtl::OUString >
     494             :                         m_aListSource;
     495             :         ::com::sun::star::uno::Sequence< ::rtl::OUString >
     496             :                         m_aValueList;
     497             : 
     498             :         ::com::sun::star::uno::Sequence< sal_Int16 >
     499             :                         m_aSelectedSeq;
     500             :         ::com::sun::star::uno::Sequence< sal_Int16 >
     501             :                         m_aDefaultSelectedSeq;
     502             : 
     503             :         ::rtl::OUString m_sCellListSource;      /// the cell range which acts as list source for the control
     504             : 
     505             :         sal_Int32       m_nEmptyListItems;      /// number of empty list items encountered during reading
     506             :         sal_Int32       m_nEmptyValueItems;     /// number of empty value items encountered during reading
     507             : 
     508             :         sal_Bool        m_bEncounteredLSAttrib;
     509             :         sal_Bool        m_bLinkWithIndexes;     /** <TRUE/> if and only if we should use a cell value binding
     510             :                                                     which exchanges the selection index (instead of the selection text
     511             :                                                 */
     512             : 
     513             :     public:
     514             :         OListAndComboImport(
     515             :             OFormLayerXMLImport_Impl& _rImport, IEventAttacherManager& _rEventManager, sal_uInt16 _nPrefix, const ::rtl::OUString& _rName,
     516             :             const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& _rxParentContainer,
     517             :             OControlElement::ElementType _eType
     518             :         );
     519             : 
     520             :         // SvXMLImportContext overridables
     521             :         virtual void StartElement(
     522             :             const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& _rxAttrList);
     523             :         virtual SvXMLImportContext* CreateChildContext(
     524             :             sal_uInt16 _nPrefix, const ::rtl::OUString& _rLocalName,
     525             :             const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& _rxAttrList);
     526             :         virtual void    EndElement();
     527             : 
     528             :         // OPropertyImport overridables
     529             :         virtual bool    handleAttribute(sal_uInt16 _nNamespaceKey,
     530             :             const ::rtl::OUString& _rLocalName,
     531             :             const ::rtl::OUString& _rValue);
     532             : 
     533             :         // OControlImport ovrridables
     534             :         virtual void doRegisterCellValueBinding( const ::rtl::OUString& _rBoundCellAddress );
     535             : 
     536             :     protected:
     537             :         void implPushBackLabel(const ::rtl::OUString& _rLabel);
     538             :         void implPushBackValue(const ::rtl::OUString& _rValue);
     539             : 
     540             :         void implEmptyLabelFound();
     541             :         void implEmptyValueFound();
     542             : 
     543             :         void implSelectCurrentItem();
     544             :         void implDefaultSelectCurrentItem();
     545             :     };
     546           0 :     SV_DECL_IMPL_REF(OListAndComboImport);
     547             : 
     548             :     //=====================================================================
     549             :     //= OListOptionImport
     550             :     //=====================================================================
     551             :     /** helper class for importing a single &lt;form:option&gt; element.
     552             :     */
     553           0 :     class OListOptionImport
     554             :                 :public SvXMLImportContext
     555             :     {
     556             :         OListAndComboImportRef  m_xListBoxImport;
     557             : 
     558             :     public:
     559             :         OListOptionImport(SvXMLImport& _rImport, sal_uInt16 _nPrefix, const ::rtl::OUString& _rName,
     560             :             const OListAndComboImportRef& _rListBox);
     561             : 
     562             :         virtual void StartElement(
     563             :             const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& _rxAttrList);
     564             :     };
     565             : 
     566             :     //=====================================================================
     567             :     //= OComboItemImport
     568             :     //=====================================================================
     569             :     /** helper class for importing a single &lt;form:item&gt; element.
     570             :     */
     571           0 :     class OComboItemImport
     572             :                 :public SvXMLImportContext
     573             :     {
     574             :         OListAndComboImportRef  m_xListBoxImport;
     575             : 
     576             :     public:
     577             :         OComboItemImport(SvXMLImport& _rImport, sal_uInt16 _nPrefix, const ::rtl::OUString& _rName,
     578             :             const OListAndComboImportRef& _rListBox);
     579             : 
     580             :     protected:
     581             :         // SvXMLImportContext overridables
     582             :         virtual void StartElement(
     583             :             const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& _rxAttrList);
     584             :     };
     585             : 
     586             :     //=====================================================================
     587             :     //= OContainerImport
     588             :     //=====================================================================
     589             :     // BASE must be a derivee of OElementImport
     590             :     template <class BASE>
     591           0 :     class OContainerImport
     592             :                 :public BASE
     593             :                 ,public ODefaultEventAttacherManager
     594             :     {
     595             :     protected:
     596             :         ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >
     597             :                         m_xMeAsContainer;
     598             :         ::rtl::OUString m_sWrapperElementName;
     599             : 
     600             :     protected:
     601           0 :         OContainerImport(OFormLayerXMLImport_Impl& _rImport, IEventAttacherManager& _rEventManager, sal_uInt16 _nPrefix, const ::rtl::OUString& _rName,
     602             :                 const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& _rxParentContainer,
     603             :                 const sal_Char* _pWrapperElementName)
     604             :             :BASE(_rImport, _rEventManager, _nPrefix, _rName, _rxParentContainer)
     605           0 :             ,m_sWrapperElementName(::rtl::OUString::createFromAscii(_pWrapperElementName))
     606             :         {
     607           0 :         }
     608             : 
     609             :         // SvXMLImportContext overridables
     610             :         virtual SvXMLImportContext* CreateChildContext(
     611             :             sal_uInt16 _nPrefix, const ::rtl::OUString& _rLocalName,
     612             :             const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& _rxAttrList);
     613             :         virtual void EndElement();
     614             : 
     615             :     protected:
     616             :         // OElementImport overridables
     617             :         virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >
     618             :                         createElement();
     619             : 
     620             :         // create the child context for the given control type
     621             :         virtual SvXMLImportContext* implCreateControlWrapper(
     622             :             sal_uInt16 _nPrefix, const ::rtl::OUString& _rLocalName) = 0;
     623             :     };
     624             : 
     625             :     //=====================================================================
     626             :     //= OColumnImport
     627             :     //=====================================================================
     628             :     /** helper class importing a single grid column (without the &lt;form:column&gt; element wrapping
     629             :         the column).
     630             : 
     631             :         <p>BASE (the template argument) must be a derivee of OControlImport</p>
     632             :     */
     633             :     template <class BASE>
     634           0 :     class OColumnImport : public BASE
     635             :     {
     636             :     protected:
     637             :         ::com::sun::star::uno::Reference< ::com::sun::star::form::XGridColumnFactory >
     638             :                     m_xColumnFactory;
     639             : 
     640             :     public:
     641             :         OColumnImport(OFormLayerXMLImport_Impl& _rImport, IEventAttacherManager& _rEventManager, sal_uInt16 _nPrefix, const ::rtl::OUString& _rName,
     642             :                 const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& _rxParentContainer,
     643             :                 OControlElement::ElementType _eType);
     644             : 
     645             :     protected:
     646             :         // OElementImport overridables
     647             :         virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >
     648             :                         createElement();
     649             :     };
     650             : 
     651             :     //=====================================================================
     652             :     //= OColumnWrapperImport
     653             :     //=====================================================================
     654           0 :     class OColumnWrapperImport : public SvXMLImportContext
     655             :     {
     656             :     protected:
     657             :         ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >
     658             :                                 m_xOwnAttributes;
     659             :         ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >
     660             :                                 m_xParentContainer;
     661             :         OFormLayerXMLImport_Impl&   m_rFormImport;
     662             :         IEventAttacherManager&  m_rEventManager;
     663             : 
     664             :     public:
     665             :         OColumnWrapperImport(OFormLayerXMLImport_Impl& _rImport, IEventAttacherManager& _rEventManager, sal_uInt16 _nPrefix, const ::rtl::OUString& _rName,
     666             :                 const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& _rxParentContainer);
     667             : 
     668             :         // SvXMLImportContext overridables
     669             :         virtual SvXMLImportContext* CreateChildContext(
     670             :             sal_uInt16 _nPrefix, const ::rtl::OUString& _rLocalName,
     671             :             const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& _rxAttrList);
     672             :         virtual void StartElement(
     673             :             const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& _rxAttrList);
     674             :     protected:
     675             :         OControlImport* implCreateChildContext(
     676             :             sal_uInt16 _nPrefix, const ::rtl::OUString& _rLocalName,
     677             :             OControlElement::ElementType _eType);
     678             :     };
     679             : 
     680             :     //=====================================================================
     681             :     //= OGridImport
     682             :     //=====================================================================
     683             :     typedef OContainerImport< OControlImport >  OGridImport_Base;
     684             :     /** helper class importing a single &lt;form:grid&gt; element
     685             :     */
     686           0 :     class OGridImport : public OGridImport_Base
     687             :     {
     688             :     public:
     689             :         OGridImport(
     690             :             OFormLayerXMLImport_Impl& _rImport, IEventAttacherManager& _rEventManager, sal_uInt16 _nPrefix, const ::rtl::OUString& _rName,
     691             :             const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& _rxParentContainer,
     692             :             OControlElement::ElementType _eType);
     693             : 
     694             :     protected:
     695             :         // OContainerImport overridables
     696             :         virtual SvXMLImportContext* implCreateControlWrapper(
     697             :             sal_uInt16 _nPrefix, const ::rtl::OUString& _rLocalName);
     698             :     };
     699             : 
     700             :     //=====================================================================
     701             :     //= OFormImport
     702             :     //=====================================================================
     703             :     typedef OContainerImport< OElementImport >  OFormImport_Base;
     704             :     /** helper class importing a single &lt;form:form&gt; element
     705             :     */
     706           0 :     class OFormImport : public OFormImport_Base
     707             :     {
     708             :     public:
     709             :         OFormImport(
     710             :             OFormLayerXMLImport_Impl& _rImport, IEventAttacherManager& _rEventManager, sal_uInt16 _nPrefix, const ::rtl::OUString& _rName,
     711             :             const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& _rxParentContainer
     712             :         );
     713             : 
     714             :     protected:
     715             :         // SvXMLImportContext overridables
     716             :         virtual SvXMLImportContext* CreateChildContext(
     717             :             sal_uInt16 _nPrefix, const ::rtl::OUString& _rLocalName,
     718             :             const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& _rxAttrList);
     719             :         virtual void    StartElement(
     720             :             const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& _rxAttrList);
     721             :         virtual void    EndElement();
     722             : 
     723             :         // OContainerImport overridables
     724             :         virtual SvXMLImportContext* implCreateControlWrapper(
     725             :             sal_uInt16 _nPrefix, const ::rtl::OUString& _rLocalName);
     726             : 
     727             :         // OPropertyImport overridables
     728             :         virtual bool    handleAttribute(sal_uInt16 _nNamespaceKey,
     729             :             const ::rtl::OUString& _rLocalName,
     730             :             const ::rtl::OUString& _rValue);
     731             : 
     732             :         OControlImport* implCreateChildContext(
     733             :                 sal_uInt16 _nPrefix, const ::rtl::OUString& _rLocalName,
     734             :                 OControlElement::ElementType _eType );
     735             : 
     736             : 
     737             :         void implTranslateStringListProperty(const ::rtl::OUString& _rPropertyName, const ::rtl::OUString& _rValue);
     738             :     };
     739             : 
     740             :     //=====================================================================
     741             :     //= OXMLDataSourceImport
     742             :     //=====================================================================
     743           0 :     class OXMLDataSourceImport : public SvXMLImportContext
     744             :     {
     745             :     public:
     746             :         OXMLDataSourceImport( SvXMLImport& _rImport
     747             :                     ,sal_uInt16 nPrfx
     748             :                     ,const ::rtl::OUString& rLName
     749             :                     ,const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > & xAttrList
     750             :                     ,const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _xElement);
     751             :     };
     752             : 
     753             : #define _INCLUDING_FROM_ELEMENTIMPORT_HXX_
     754             : #include "elementimport_impl.hxx"
     755             : #undef _INCLUDING_FROM_ELEMENTIMPORT_HXX_
     756             : 
     757             : //.........................................................................
     758             : }   // namespace xmloff
     759             : //.........................................................................
     760             : 
     761             : #endif // _XMLOFF_FORMS_ELEMENTIMPORT_HXX_
     762             : 
     763             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10