update credits
[LibreOffice.git] / framework / inc / xml / menudocumenthandler.hxx
bloba35634eb36d943cd575da3f84d901cbb394730e0
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef __FRAMEWORK_XML_MENUDOCUMENTHANDLER_HXX_
21 #define __FRAMEWORK_XML_MENUDOCUMENTHANDLER_HXX_
23 #include <com/sun/star/xml/sax/XDocumentHandler.hpp>
24 #include <com/sun/star/container/XIndexContainer.hpp>
25 #include <com/sun/star/lang/XSingleComponentFactory.hpp>
26 #include <com/sun/star/beans/PropertyValue.hpp>
27 #include <com/sun/star/uno/Sequence.h>
28 #include <com/sun/star/uno/XComponentContext.hpp>
30 #include <threadhelp/threadhelpbase.hxx>
31 #include <rtl/ustring.hxx>
32 #include <cppuhelper/implbase1.hxx>
33 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
34 #include <framework/fwedllapi.h>
36 namespace framework{
38 class FWE_DLLPUBLIC ReadMenuDocumentHandlerBase : public ThreadHelpBase, // Struct for right initalization of mutex member! Must be first of baseclasses.
39 public ::cppu::WeakImplHelper1< ::com::sun::star::xml::sax::XDocumentHandler >
41 public:
42 ReadMenuDocumentHandlerBase();
43 virtual ~ReadMenuDocumentHandlerBase();
45 // XDocumentHandler
46 virtual void SAL_CALL startDocument(void)
47 throw ( ::com::sun::star::xml::sax::SAXException,
48 ::com::sun::star::uno::RuntimeException ) = 0;
50 virtual void SAL_CALL endDocument(void)
51 throw( ::com::sun::star::xml::sax::SAXException,
52 ::com::sun::star::uno::RuntimeException ) = 0;
54 virtual void SAL_CALL startElement(
55 const OUString& aName,
56 const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > &xAttribs)
57 throw( ::com::sun::star::xml::sax::SAXException,
58 ::com::sun::star::uno::RuntimeException ) = 0;
60 virtual void SAL_CALL endElement(const OUString& aName)
61 throw( ::com::sun::star::xml::sax::SAXException,
62 ::com::sun::star::uno::RuntimeException ) = 0;
64 virtual void SAL_CALL characters(const OUString& aChars)
65 throw( ::com::sun::star::xml::sax::SAXException,
66 ::com::sun::star::uno::RuntimeException ) = 0;
68 virtual void SAL_CALL ignorableWhitespace(const OUString& aWhitespaces)
69 throw( ::com::sun::star::xml::sax::SAXException,
70 ::com::sun::star::uno::RuntimeException );
72 virtual void SAL_CALL processingInstruction(const OUString& aTarget,
73 const OUString& aData)
74 throw( ::com::sun::star::xml::sax::SAXException,
75 ::com::sun::star::uno::RuntimeException );
77 virtual void SAL_CALL setDocumentLocator(
78 const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XLocator > &xLocator)
79 throw( ::com::sun::star::xml::sax::SAXException,
80 ::com::sun::star::uno::RuntimeException );
82 protected:
83 OUString getErrorLineString();
85 ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XLocator > m_xLocator;
86 ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler> m_xReader;
87 void initPropertyCommon( com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > &rProps,
88 const OUString &rCommandURL, const OUString &rHelpId,
89 const OUString &rLabel, sal_Int16 nItemStyleBits );
90 private:
91 OUString m_aType;
92 OUString m_aLabel;
93 OUString m_aContainer;
94 OUString m_aHelpURL;
95 OUString m_aCommandURL;
96 OUString m_aStyle;
97 ::com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > m_aItemProp;
101 class FWE_DLLPUBLIC OReadMenuDocumentHandler : public ReadMenuDocumentHandlerBase
103 public:
104 OReadMenuDocumentHandler(
105 const com::sun::star::uno::Reference< com::sun::star::container::XIndexContainer >& rItemContainer );
106 virtual ~OReadMenuDocumentHandler();
108 // XDocumentHandler
109 virtual void SAL_CALL startDocument(void)
110 throw ( ::com::sun::star::xml::sax::SAXException,
111 ::com::sun::star::uno::RuntimeException );
113 virtual void SAL_CALL endDocument(void)
114 throw( ::com::sun::star::xml::sax::SAXException,
115 ::com::sun::star::uno::RuntimeException );
117 virtual void SAL_CALL startElement(
118 const OUString& aName,
119 const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > &xAttribs)
120 throw( ::com::sun::star::xml::sax::SAXException,
121 ::com::sun::star::uno::RuntimeException );
123 virtual void SAL_CALL endElement(const OUString& aName)
124 throw( ::com::sun::star::xml::sax::SAXException,
125 ::com::sun::star::uno::RuntimeException );
127 virtual void SAL_CALL characters(const OUString& aChars)
128 throw( ::com::sun::star::xml::sax::SAXException,
129 ::com::sun::star::uno::RuntimeException );
131 private:
132 int m_nElementDepth;
133 sal_Bool m_bMenuBarMode;
134 com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer > m_xMenuBarContainer;
135 com::sun::star::uno::Reference< ::com::sun::star::lang::XSingleComponentFactory > m_xContainerFactory;
136 }; // OReadMenuDocumentHandler
139 class FWE_DLLPUBLIC OReadMenuBarHandler : public ReadMenuDocumentHandlerBase
141 public:
142 OReadMenuBarHandler(
143 const com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer >& rMenuBarContainer,
144 const com::sun::star::uno::Reference< ::com::sun::star::lang::XSingleComponentFactory >& rContainerFactory );
145 virtual ~OReadMenuBarHandler();
147 // XDocumentHandler
148 virtual void SAL_CALL startDocument(void)
149 throw ( ::com::sun::star::xml::sax::SAXException,
150 ::com::sun::star::uno::RuntimeException );
152 virtual void SAL_CALL endDocument(void)
153 throw( ::com::sun::star::xml::sax::SAXException,
154 ::com::sun::star::uno::RuntimeException );
156 virtual void SAL_CALL startElement(
157 const OUString& aName,
158 const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > &xAttribs)
159 throw( ::com::sun::star::xml::sax::SAXException,
160 ::com::sun::star::uno::RuntimeException );
162 virtual void SAL_CALL endElement(const OUString& aName)
163 throw( ::com::sun::star::xml::sax::SAXException,
164 ::com::sun::star::uno::RuntimeException );
166 virtual void SAL_CALL characters(const OUString& aChars)
167 throw( ::com::sun::star::xml::sax::SAXException,
168 ::com::sun::star::uno::RuntimeException );
170 private:
171 int m_nElementDepth;
172 sal_Bool m_bMenuMode;
173 com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer > m_xMenuBarContainer;
174 com::sun::star::uno::Reference< ::com::sun::star::lang::XSingleComponentFactory > m_xContainerFactory;
175 }; // OReadMenuBarHandler
178 class FWE_DLLPUBLIC OReadMenuHandler : public ReadMenuDocumentHandlerBase
180 public:
181 OReadMenuHandler( const com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer >& rMenuContainer,
182 const com::sun::star::uno::Reference< ::com::sun::star::lang::XSingleComponentFactory >& rContainerFactory );
183 virtual ~OReadMenuHandler();
185 // XDocumentHandler
186 virtual void SAL_CALL startDocument(void)
187 throw ( ::com::sun::star::xml::sax::SAXException,
188 ::com::sun::star::uno::RuntimeException );
190 virtual void SAL_CALL endDocument(void)
191 throw( ::com::sun::star::xml::sax::SAXException,
192 ::com::sun::star::uno::RuntimeException );
194 virtual void SAL_CALL startElement(
195 const OUString& aName,
196 const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > &xAttribs)
197 throw( ::com::sun::star::xml::sax::SAXException,
198 ::com::sun::star::uno::RuntimeException );
200 virtual void SAL_CALL endElement(const OUString& aName)
201 throw( ::com::sun::star::xml::sax::SAXException,
202 ::com::sun::star::uno::RuntimeException );
204 virtual void SAL_CALL characters(const OUString& aChars)
205 throw( ::com::sun::star::xml::sax::SAXException,
206 ::com::sun::star::uno::RuntimeException );
208 private:
209 int m_nElementDepth;
210 sal_Bool m_bMenuPopupMode;
211 com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer > m_xMenuContainer;
212 com::sun::star::uno::Reference< ::com::sun::star::lang::XSingleComponentFactory > m_xContainerFactory;
213 }; // OReadMenuHandler
216 class FWE_DLLPUBLIC OReadMenuPopupHandler : public ReadMenuDocumentHandlerBase
218 public:
219 OReadMenuPopupHandler( const com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer >& rMenuContainer,
220 const com::sun::star::uno::Reference< ::com::sun::star::lang::XSingleComponentFactory >& rContainerFactory );
221 virtual ~OReadMenuPopupHandler();
223 // XDocumentHandler
224 virtual void SAL_CALL startDocument(void)
225 throw ( ::com::sun::star::xml::sax::SAXException,
226 ::com::sun::star::uno::RuntimeException );
228 virtual void SAL_CALL endDocument(void)
229 throw ( ::com::sun::star::xml::sax::SAXException,
230 ::com::sun::star::uno::RuntimeException );
232 virtual void SAL_CALL startElement(
233 const OUString& aName,
234 const ::com::sun::star::uno::Reference<
235 ::com::sun::star::xml::sax::XAttributeList > &xAttribs)
236 throw ( ::com::sun::star::xml::sax::SAXException,
237 ::com::sun::star::uno::RuntimeException );
239 virtual void SAL_CALL endElement(const OUString& aName)
240 throw ( ::com::sun::star::xml::sax::SAXException,
241 ::com::sun::star::uno::RuntimeException );
243 virtual void SAL_CALL characters(const OUString& aChars)
244 throw ( ::com::sun::star::xml::sax::SAXException,
245 ::com::sun::star::uno::RuntimeException );
247 private:
248 enum NextElementClose { ELEM_CLOSE_NONE, ELEM_CLOSE_MENUITEM, ELEM_CLOSE_MENUSEPARATOR };
250 int m_nElementDepth;
251 sal_Bool m_bMenuMode;
252 com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer > m_xMenuContainer;
253 com::sun::star::uno::Reference< ::com::sun::star::lang::XSingleComponentFactory > m_xContainerFactory;
254 com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > m_xComponentContext;
255 NextElementClose m_nNextElementExpected;
256 }; // OReadMenuPopupHandler
259 class FWE_DLLPUBLIC OWriteMenuDocumentHandler
261 public:
262 OWriteMenuDocumentHandler(
263 const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess >& rMenuBarContainer,
264 const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler >& rDocumentHandler );
265 virtual ~OWriteMenuDocumentHandler();
267 void WriteMenuDocument() throw
268 ( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException );
269 protected:
270 virtual void WriteMenu( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess >& rSubMenuContainer ) throw
271 ( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException );
273 virtual void WriteMenuItem( const OUString& aCommandURL, const OUString& aLabel, const OUString& aHelpURL, sal_Int16 nStyle = 0 );
274 virtual void WriteMenuSeparator();
276 com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > m_xMenuBarContainer;
277 ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler > m_xWriteDocumentHandler;
278 ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > m_xEmptyList;
279 OUString m_aAttributeType;
282 } // namespace framework
284 #endif // #ifndef __FRAMEWORK_XML_MENUDOCUMENTHANDLER_HXX_
286 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */