| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| #ifndef _XMLOFF_FORMS_LAYERIMPORT_HXX_ |
| #define _XMLOFF_FORMS_LAYERIMPORT_HXX_ |
| |
| #include <com/sun/star/xml/sax/XAttributeList.hpp> |
| #include <com/sun/star/form/XFormsSupplier2.hpp> |
| #include <vos/ref.hxx> |
| #include "formattributes.hxx" |
| #include "callbacks.hxx" |
| #include "eventimport.hxx" |
| #include <tools/ref.hxx> |
| |
| class SvXMLImport; |
| class SvXMLImportContext; |
| class XMLPropertyHandlerFactory; |
| class SvXMLImportPropertyMapper; |
| class XMLPropStyleContext; |
| |
| SV_DECL_REF( SvXMLStylesContext ) |
| // unfortunately, we can't put this into our namespace, as the macro expands to (amongst others) a forward |
| // declaration of the class name, which then would be in the namespace, too |
| |
| //......................................................................... |
| namespace xmloff |
| { |
| //......................................................................... |
| |
| class OAttribute2Property; |
| |
| //===================================================================== |
| //= ControlReference |
| //===================================================================== |
| /// a structure containing a property set (the referred control) and a string (the list of referring controls) |
| /* struct ControlReference |
| { |
| ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > |
| xReferredControl; |
| ::rtl::OUString |
| sReferringControls; |
| |
| ControlReference( |
| const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxReferredControl, |
| const ::rtl::OUString& _rReferringControls) |
| :xReferredControl(_rxReferredControl) |
| ,sReferringControls(_rReferringControls) |
| { |
| } |
| }; |
| */ |
| |
| //===================================================================== |
| //= OFormLayerXMLImport_Impl |
| //===================================================================== |
| class OFormLayerXMLImport_Impl |
| : public ODefaultEventAttacherManager |
| { |
| friend class OFormLayerXMLImport; |
| |
| protected: |
| SvXMLImport& m_rImporter; |
| OAttribute2Property m_aAttributeMetaData; |
| |
| /// the supplier for the forms of the currently imported page |
| ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormsSupplier2 > |
| m_xCurrentPageFormsSupp; |
| SvXMLStylesContext* m_pAutoStyles; |
| |
| protected: |
| DECLARE_STL_USTRINGACCESS_MAP( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >, MapString2PropertySet ); |
| DECLARE_STL_MAP( ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage >, MapString2PropertySet, ODrawPageCompare, MapDrawPage2Map); |
| |
| MapDrawPage2Map m_aControlIds; // ids of the controls on all known page |
| MapDrawPage2MapIterator m_aCurrentPageIds; // ifs of the controls on the current page |
| |
| typedef ::std::pair< ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >, ::rtl::OUString > |
| ModelStringPair; |
| ::std::vector< ModelStringPair > |
| m_aControlReferences; // control reference descriptions for current page |
| ::std::vector< ModelStringPair > |
| m_aCellValueBindings; // information about controls bound to spreadsheet cells |
| ::std::vector< ModelStringPair > |
| m_aCellRangeListSources;// information about controls bound to spreadsheet cell range list sources |
| |
| ::std::vector< ModelStringPair > |
| m_aXFormsValueBindings; // collect xforms:bind attributes to be resolved |
| |
| ::std::vector< ModelStringPair > |
| m_aXFormsListBindings; // collect forms:xforms-list-source attributes to be resolved |
| |
| ::std::vector< ModelStringPair > |
| m_aXFormsSubmissions; // collect xforms:submission attributes to be resolved |
| |
| public: |
| // IControlIdMap |
| void registerControlId( |
| const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxControl, |
| const ::rtl::OUString& _rId); |
| void registerControlReferences( |
| const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxControl, |
| const ::rtl::OUString& _rReferringControls); |
| |
| // OFormLayerXMLImport_Impl |
| inline OAttribute2Property& getAttributeMap() { return m_aAttributeMetaData; } |
| inline SvXMLImport& getGlobalContext() { return m_rImporter; } |
| const SvXMLStyleContext* getStyleElement(const ::rtl::OUString& _rStyleName) const; |
| void enterEventContext(); |
| void leaveEventContext(); |
| void applyControlNumberStyle( |
| const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxControlModel, |
| const ::rtl::OUString& _rControlNumerStyleName |
| ); |
| void registerCellValueBinding( |
| const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxControlModel, |
| const ::rtl::OUString& _rCellAddress |
| ); |
| |
| void registerCellRangeListSource( |
| const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxControlModel, |
| const ::rtl::OUString& _rCellRangeAddress |
| ); |
| |
| void registerXFormsValueBinding( |
| const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxControlModel, |
| const ::rtl::OUString& _rBindingID |
| ); |
| |
| void registerXFormsListBinding( |
| const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxControlModel, |
| const ::rtl::OUString& _rBindingID |
| ); |
| |
| void registerXFormsSubmission( |
| const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxControlModel, |
| const ::rtl::OUString& _rSubmissionID |
| ); |
| |
| protected: |
| OFormLayerXMLImport_Impl(SvXMLImport& _rImporter); |
| virtual ~OFormLayerXMLImport_Impl(); |
| |
| /** start importing the forms of the given page |
| */ |
| void startPage( |
| const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage >& _rxDrawPage); |
| |
| /** end importing the forms of the current page |
| */ |
| void endPage(); |
| |
| /** creates an import context for the office:forms element |
| */ |
| SvXMLImportContext* createOfficeFormsContext( |
| SvXMLImport& _rImport, |
| sal_uInt16 _nPrefix, |
| const rtl::OUString& _rLocalName); |
| |
| /** create an <type>SvXMLImportContext</type> instance which is able to import the <form:form> |
| element. |
| */ |
| SvXMLImportContext* createContext( |
| const sal_uInt16 _nPrefix, |
| const rtl::OUString& _rLocalName, |
| const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& _rxAttribs); |
| |
| /** get the control with the given id |
| */ |
| ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > |
| lookupControlId(const ::rtl::OUString& _rControlId); |
| |
| /** seek to the given page |
| */ |
| void seekPage( |
| const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage >& _rxDrawPage); |
| |
| /** announces the auto-style context to the form importer |
| */ |
| void setAutoStyleContext(SvXMLStylesContext* _pNewContext); |
| |
| /** to be called when the document has been completely imported |
| |
| <p>For some documents (currently: only some spreadsheet documents) it's necessary |
| do to a post processing, since not all information from the file can be processed |
| if the document is not completed, yet.</p> |
| */ |
| void documentDone( ); |
| }; |
| |
| //......................................................................... |
| } // namespace xmloff |
| //......................................................................... |
| |
| #endif // _XMLOFF_FORMS_LAYERIMPORT_HXX_ |
| |