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 : #include "imp_share.hxx"
21 : #include "xml_import.hxx"
22 :
23 : #include <com/sun/star/awt/CharSet.hpp>
24 : #include <com/sun/star/awt/FontFamily.hpp>
25 : #include <com/sun/star/awt/FontPitch.hpp>
26 : #include <com/sun/star/awt/FontSlant.hpp>
27 : #include <com/sun/star/awt/FontStrikeout.hpp>
28 : #include <com/sun/star/awt/FontType.hpp>
29 : #include <com/sun/star/awt/FontUnderline.hpp>
30 : #include <com/sun/star/awt/FontWeight.hpp>
31 : #include <com/sun/star/awt/FontWidth.hpp>
32 : #include <com/sun/star/awt/ImagePosition.hpp>
33 : #include <com/sun/star/awt/LineEndFormat.hpp>
34 : #include <com/sun/star/awt/PushButtonType.hpp>
35 : #include <com/sun/star/awt/VisualEffect.hpp>
36 : #include <com/sun/star/style/VerticalAlignment.hpp>
37 :
38 : #include <com/sun/star/script/XScriptEventsSupplier.hpp>
39 : #include <com/sun/star/script/ScriptEventDescriptor.hpp>
40 :
41 : #include <com/sun/star/view/SelectionType.hpp>
42 : #include <com/sun/star/lang/XServiceInfo.hpp>
43 : #include <com/sun/star/form/binding/XBindableValue.hpp>
44 : #include <com/sun/star/form/binding/XValueBinding.hpp>
45 : #include <com/sun/star/form/binding/XListEntrySink.hpp>
46 : #include <com/sun/star/beans/NamedValue.hpp>
47 : #include <com/sun/star/table/CellAddress.hpp>
48 : #include <com/sun/star/table/CellRangeAddress.hpp>
49 : #include <com/sun/star/document/XGraphicObjectResolver.hpp>
50 : #include <com/sun/star/document/XStorageBasedDocument.hpp>
51 : #include <com/sun/star/script/DocumentScriptLibraryContainer.hpp>
52 : #include <com/sun/star/script/vba/XVBACompatibility.hpp>
53 : #include <com/sun/star/util/NumberFormatsSupplier.hpp>
54 :
55 : #include <comphelper/componentcontext.hxx>
56 :
57 : using namespace ::com::sun::star;
58 : using namespace ::com::sun::star::uno;
59 : using namespace ::com::sun::star::frame;
60 : using ::rtl::OUString;
61 :
62 : namespace xmlscript
63 : {
64 :
65 : //__________________________________________________________________________________________________
66 0 : void EventElement::endElement()
67 : throw (xml::sax::SAXException, RuntimeException)
68 : {
69 0 : static_cast< ControlElement * >( _pParent )->_events.push_back( this );
70 0 : }
71 : //__________________________________________________________________________________________________
72 0 : ControlElement::ControlElement(
73 : OUString const & rLocalName,
74 : Reference< xml::input::XAttributes > const & xAttributes,
75 : ElementBase * pParent, DialogImport * pImport )
76 : SAL_THROW(())
77 : : ElementBase(
78 0 : pImport->XMLNS_DIALOGS_UID, rLocalName, xAttributes, pParent, pImport )
79 : {
80 0 : if (_pParent)
81 : {
82 : // inherit position
83 0 : _nBasePosX = static_cast< ControlElement * >( _pParent )->_nBasePosX;
84 0 : _nBasePosY = static_cast< ControlElement * >( _pParent )->_nBasePosY;
85 : }
86 : else
87 : {
88 0 : _nBasePosX = 0;
89 0 : _nBasePosY = 0;
90 : }
91 0 : }
92 :
93 : //__________________________________________________________________________________________________
94 0 : Reference< xml::input::XElement > ControlElement::getStyle(
95 : Reference< xml::input::XAttributes > const & xAttributes )
96 : {
97 0 : OUString aStyleId( xAttributes->getValueByUidName( _pImport->XMLNS_DIALOGS_UID,"style-id" ) );
98 0 : if (!aStyleId.isEmpty())
99 : {
100 0 : return _pImport->getStyle( aStyleId );
101 : }
102 0 : return Reference< xml::input::XElement >();
103 : }
104 : //__________________________________________________________________________________________________
105 0 : OUString ControlElement::getControlId(
106 : Reference< xml::input::XAttributes > const & xAttributes )
107 : {
108 0 : OUString aId( xAttributes->getValueByUidName( _pImport->XMLNS_DIALOGS_UID, "id" ) );
109 0 : if (aId.isEmpty())
110 : {
111 0 : throw xml::sax::SAXException( "missing id attribute!", Reference< XInterface >(), Any() );
112 : }
113 0 : return aId;
114 : }
115 :
116 0 : OUString ControlElement::getControlModelName(
117 : OUString const& rDefaultModel,
118 : Reference< xml::input::XAttributes > const & xAttributes )
119 : {
120 0 : OUString aModel;
121 0 : aModel = xAttributes->getValueByUidName( _pImport->XMLNS_DIALOGS_UID, "control-implementation");
122 0 : if (aModel.isEmpty())
123 0 : aModel = rDefaultModel;
124 0 : return aModel;
125 : }
126 :
127 :
128 : //##################################################################################################
129 :
130 : //__________________________________________________________________________________________________
131 0 : bool StyleElement::importTextColorStyle(
132 : Reference< beans::XPropertySet > const & xProps )
133 : {
134 0 : if ((_inited & 0x2) != 0)
135 : {
136 0 : if ((_hasValue & 0x2) != 0)
137 : {
138 0 : xProps->setPropertyValue("TextColor", makeAny( _textColor ) );
139 0 : return true;
140 : }
141 0 : return false;
142 : }
143 0 : _inited |= 0x2;
144 :
145 0 : if (getLongAttr( &_textColor, "text-color", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
146 : {
147 0 : _hasValue |= 0x2;
148 0 : xProps->setPropertyValue( "TextColor", makeAny( _textColor ) );
149 0 : return true;
150 : }
151 0 : return false;
152 : }
153 : //__________________________________________________________________________________________________
154 0 : bool StyleElement::importTextLineColorStyle(
155 : Reference< beans::XPropertySet > const & xProps )
156 : {
157 0 : if ((_inited & 0x20) != 0)
158 : {
159 0 : if ((_hasValue & 0x20) != 0)
160 : {
161 0 : xProps->setPropertyValue( "TextLineColor", makeAny( _textLineColor ) );
162 0 : return true;
163 : }
164 0 : return false;
165 : }
166 0 : _inited |= 0x20;
167 :
168 0 : if (getLongAttr( &_textLineColor, "textline-color", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
169 : {
170 0 : _hasValue |= 0x20;
171 0 : xProps->setPropertyValue( "TextLineColor", makeAny( _textLineColor ) );
172 0 : return true;
173 : }
174 0 : return false;
175 : }
176 : //__________________________________________________________________________________________________
177 0 : bool StyleElement::importFillColorStyle(
178 : Reference< beans::XPropertySet > const & xProps )
179 : {
180 0 : if ((_inited & 0x10) != 0)
181 : {
182 0 : if ((_hasValue & 0x10) != 0)
183 : {
184 0 : xProps->setPropertyValue( "FillColor", makeAny( _fillColor ) );
185 0 : return true;
186 : }
187 0 : return false;
188 : }
189 0 : _inited |= 0x10;
190 :
191 0 : if (getLongAttr( &_fillColor, "fill-color", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
192 : {
193 0 : _hasValue |= 0x10;
194 0 : xProps->setPropertyValue( "FillColor", makeAny( _fillColor ) );
195 0 : return true;
196 : }
197 0 : return false;
198 : }
199 : //__________________________________________________________________________________________________
200 0 : bool StyleElement::importBackgroundColorStyle(
201 : Reference< beans::XPropertySet > const & xProps )
202 : {
203 0 : if ((_inited & 0x1) != 0)
204 : {
205 0 : if ((_hasValue & 0x1) != 0)
206 : {
207 0 : xProps->setPropertyValue( "BackgroundColor", makeAny( _backgroundColor ) );
208 0 : return true;
209 : }
210 0 : return false;
211 : }
212 0 : _inited |= 0x1;
213 :
214 0 : if (getLongAttr( &_backgroundColor, "background-color", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
215 : {
216 0 : _hasValue |= 0x1;
217 0 : xProps->setPropertyValue( "BackgroundColor", makeAny( _backgroundColor ) );
218 0 : return true;
219 : }
220 0 : return false;
221 : }
222 :
223 : //__________________________________________________________________________________________________
224 0 : bool StyleElement::importBorderStyle(
225 : Reference< beans::XPropertySet > const & xProps )
226 : {
227 0 : if ((_inited & 0x4) != 0)
228 : {
229 0 : if ((_hasValue & 0x4) != 0)
230 : {
231 0 : xProps->setPropertyValue( "Border", makeAny( _border == BORDER_SIMPLE_COLOR ? BORDER_SIMPLE : _border ) );
232 0 : if (_border == BORDER_SIMPLE_COLOR)
233 0 : xProps->setPropertyValue( "BorderColor", makeAny(_borderColor) );
234 0 : return true;
235 : }
236 0 : return false;
237 : }
238 0 : _inited |= 0x4;
239 :
240 0 : OUString aValue;
241 0 : if (getStringAttr(&aValue, "border", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
242 : {
243 0 : if ( aValue == "none" )
244 0 : _border = BORDER_NONE;
245 0 : else if ( aValue == "3d" )
246 0 : _border = BORDER_3D;
247 0 : else if ( aValue == "simple" )
248 0 : _border = BORDER_SIMPLE;
249 : else {
250 0 : _border = BORDER_SIMPLE_COLOR;
251 0 : _borderColor = toInt32(aValue);
252 : }
253 :
254 0 : _hasValue |= 0x4;
255 0 : importBorderStyle(xProps); // write values
256 : }
257 0 : return false;
258 : }
259 :
260 : //______________________________________________________________________________
261 0 : bool StyleElement::importVisualEffectStyle(
262 : Reference<beans::XPropertySet> const & xProps )
263 : {
264 0 : if ((_inited & 0x40) != 0)
265 : {
266 0 : if ((_hasValue & 0x40) != 0)
267 : {
268 0 : xProps->setPropertyValue( "VisualEffect", makeAny(_visualEffect) );
269 0 : return true;
270 : }
271 0 : return false;
272 : }
273 0 : _inited |= 0x40;
274 :
275 0 : OUString aValue;
276 0 : if (getStringAttr( &aValue, "look", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
277 : {
278 0 : if ( aValue == "none" )
279 : {
280 0 : _visualEffect = awt::VisualEffect::NONE;
281 : }
282 0 : else if ( aValue == "3d" )
283 : {
284 0 : _visualEffect = awt::VisualEffect::LOOK3D;
285 : }
286 0 : else if ( aValue == "simple" )
287 : {
288 0 : _visualEffect = awt::VisualEffect::FLAT;
289 : }
290 : else
291 : OSL_ASSERT( 0 );
292 :
293 0 : _hasValue |= 0x40;
294 0 : xProps->setPropertyValue( "VisualEffect", makeAny(_visualEffect) );
295 : }
296 0 : return false;
297 : }
298 :
299 : //__________________________________________________________________________________________________
300 0 : void StyleElement::setFontProperties(
301 : Reference< beans::XPropertySet > const & xProps )
302 : {
303 0 : xProps->setPropertyValue("FontDescriptor", makeAny( _descr ) );
304 0 : xProps->setPropertyValue("FontEmphasisMark", makeAny( _fontEmphasisMark ) );
305 0 : xProps->setPropertyValue("FontRelief", makeAny( _fontRelief ) );
306 0 : }
307 : //__________________________________________________________________________________________________
308 0 : bool StyleElement::importFontStyle(
309 : Reference< beans::XPropertySet > const & xProps )
310 : {
311 0 : if ((_inited & 0x8) != 0)
312 : {
313 0 : if ((_hasValue & 0x8) != 0)
314 : {
315 0 : setFontProperties( xProps );
316 0 : return true;
317 : }
318 0 : return false;
319 : }
320 0 : _inited |= 0x8;
321 :
322 0 : OUString aValue;
323 : bool bFontImport;
324 :
325 : // dialog:font-name CDATA #IMPLIED
326 0 : bFontImport = getStringAttr( &_descr.Name, "font-name", _xAttributes, _pImport->XMLNS_DIALOGS_UID );
327 :
328 : // dialog:font-height %numeric; #IMPLIED
329 0 : if (getStringAttr( &aValue, "font-height", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
330 : {
331 0 : _descr.Height = (sal_Int16)toInt32( aValue );
332 0 : bFontImport = true;
333 : }
334 : // dialog:font-width %numeric; #IMPLIED
335 0 : if (getStringAttr(&aValue, "font-width", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
336 : {
337 0 : _descr.Width = (sal_Int16)toInt32( aValue );
338 0 : bFontImport = true;
339 : }
340 : // dialog:font-stylename CDATA #IMPLIED
341 0 : bFontImport |= getStringAttr( &_descr.StyleName, "font-stylename", _xAttributes, _pImport->XMLNS_DIALOGS_UID );
342 :
343 : // dialog:font-family "(decorative|modern|roman|script|swiss|system)" #IMPLIED
344 0 : if (getStringAttr(&aValue, "font-family", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
345 : {
346 0 : if ( aValue == "decorative" )
347 : {
348 0 : _descr.Family = awt::FontFamily::DECORATIVE;
349 : }
350 0 : else if ( aValue == "modern" )
351 : {
352 0 : _descr.Family = awt::FontFamily::MODERN;
353 : }
354 0 : else if ( aValue == "roman" )
355 : {
356 0 : _descr.Family = awt::FontFamily::ROMAN;
357 : }
358 0 : else if ( aValue == "script" )
359 : {
360 0 : _descr.Family = awt::FontFamily::SCRIPT;
361 : }
362 0 : else if ( aValue == "swiss" )
363 : {
364 0 : _descr.Family = awt::FontFamily::SWISS;
365 : }
366 0 : else if ( aValue == "system" )
367 : {
368 0 : _descr.Family = awt::FontFamily::SYSTEM;
369 : }
370 : else
371 : {
372 0 : throw xml::sax::SAXException("invalid font-family style!", Reference< XInterface >(), Any() );
373 : }
374 0 : bFontImport = true;
375 : }
376 :
377 : // dialog:font-charset "(ansi|mac|ibmpc_437|ibmpc_850|ibmpc_860|ibmpc_861|ibmpc_863|ibmpc_865|system|symbol)" #IMPLIED
378 0 : if (getStringAttr(&aValue, "font-charset", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
379 : {
380 0 : if ( aValue == "ansi" )
381 : {
382 0 : _descr.CharSet = awt::CharSet::ANSI;
383 : }
384 0 : else if ( aValue == "mac" )
385 : {
386 0 : _descr.CharSet = awt::CharSet::MAC;
387 : }
388 0 : else if ( aValue == "ibmpc_437" )
389 : {
390 0 : _descr.CharSet = awt::CharSet::IBMPC_437;
391 : }
392 0 : else if ( aValue == "ibmpc_850" )
393 : {
394 0 : _descr.CharSet = awt::CharSet::IBMPC_850;
395 : }
396 0 : else if ( aValue == "ibmpc_860" )
397 : {
398 0 : _descr.CharSet = awt::CharSet::IBMPC_860;
399 : }
400 0 : else if ( aValue == "ibmpc_861" )
401 : {
402 0 : _descr.CharSet = awt::CharSet::IBMPC_861;
403 : }
404 0 : else if ( aValue == "ibmpc_863" )
405 : {
406 0 : _descr.CharSet = awt::CharSet::IBMPC_863;
407 : }
408 0 : else if ( aValue == "ibmpc_865" )
409 : {
410 0 : _descr.CharSet = awt::CharSet::IBMPC_865;
411 : }
412 0 : else if ( aValue == "system" )
413 : {
414 0 : _descr.CharSet = awt::CharSet::SYSTEM;
415 : }
416 0 : else if ( aValue == "symbol" )
417 : {
418 0 : _descr.CharSet = awt::CharSet::SYMBOL;
419 : }
420 : else
421 : {
422 0 : throw xml::sax::SAXException("invalid font-charset style!", Reference< XInterface >(), Any() );
423 : }
424 0 : bFontImport = true;
425 : }
426 :
427 : // dialog:font-pitch "(fixed|variable)" #IMPLIED
428 0 : if (getStringAttr( &aValue, "font-pitch", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
429 : {
430 0 : if ( aValue == "fixed" )
431 : {
432 0 : _descr.Pitch = awt::FontPitch::FIXED;
433 : }
434 0 : else if ( aValue == "variable" )
435 : {
436 0 : _descr.Pitch = awt::FontPitch::VARIABLE;
437 : }
438 : else
439 : {
440 0 : throw xml::sax::SAXException("invalid font-pitch style!", Reference< XInterface >(), Any() );
441 : }
442 0 : bFontImport = true;
443 : }
444 :
445 : // dialog:font-charwidth CDATA #IMPLIED
446 0 : if (getStringAttr( &aValue, "font-charwidth", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
447 : {
448 0 : _descr.CharacterWidth = aValue.toFloat();
449 0 : bFontImport = true;
450 : }
451 : // dialog:font-weight CDATA #IMPLIED
452 0 : if (getStringAttr( &aValue, "font-weight", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
453 : {
454 0 : _descr.Weight = aValue.toFloat();
455 0 : bFontImport = true;
456 : }
457 :
458 : // dialog:font-slant "(oblique|italic|reverse_oblique|reverse_italic)" #IMPLIED
459 0 : if (getStringAttr( &aValue, "font-slant", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
460 : {
461 0 : if ( aValue == "oblique" )
462 : {
463 0 : _descr.Slant = awt::FontSlant_OBLIQUE;
464 : }
465 0 : else if ( aValue == "italic" )
466 : {
467 0 : _descr.Slant = awt::FontSlant_ITALIC;
468 : }
469 0 : else if ( aValue == "reverse_oblique" )
470 : {
471 0 : _descr.Slant = awt::FontSlant_REVERSE_OBLIQUE;
472 : }
473 0 : else if ( aValue == "reverse_italic" )
474 : {
475 0 : _descr.Slant = awt::FontSlant_REVERSE_ITALIC;
476 : }
477 : else
478 : {
479 0 : throw xml::sax::SAXException("invalid font-slant style!", Reference< XInterface >(), Any() );
480 : }
481 0 : bFontImport = true;
482 : }
483 :
484 : // dialog:font-underline "(single|double|dotted|dash|longdash|dashdot|dashdotdot|smallwave|wave|doublewave|bold|bolddotted|bolddash|boldlongdash|bolddashdot|bolddashdotdot|boldwave)" #IMPLIED
485 0 : if (getStringAttr( &aValue, "font-underline", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
486 : {
487 0 : if ( aValue == "single" )
488 : {
489 0 : _descr.Underline = awt::FontUnderline::SINGLE;
490 : }
491 0 : else if ( aValue == "double" )
492 : {
493 0 : _descr.Underline = awt::FontUnderline::DOUBLE;
494 : }
495 0 : else if ( aValue == "dotted" )
496 : {
497 0 : _descr.Underline = awt::FontUnderline::DOTTED;
498 : }
499 0 : else if ( aValue == "dash" )
500 : {
501 0 : _descr.Underline = awt::FontUnderline::DASH;
502 : }
503 0 : else if ( aValue == "longdash" )
504 : {
505 0 : _descr.Underline = awt::FontUnderline::LONGDASH;
506 : }
507 0 : else if ( aValue == "dashdot" )
508 : {
509 0 : _descr.Underline = awt::FontUnderline::DASHDOT;
510 : }
511 0 : else if ( aValue == "dashdotdot" )
512 : {
513 0 : _descr.Underline = awt::FontUnderline::DASHDOTDOT;
514 : }
515 0 : else if ( aValue == "smallwave" )
516 : {
517 0 : _descr.Underline = awt::FontUnderline::SMALLWAVE;
518 : }
519 0 : else if ( aValue == "wave" )
520 : {
521 0 : _descr.Underline = awt::FontUnderline::WAVE;
522 : }
523 0 : else if ( aValue == "doublewave" )
524 : {
525 0 : _descr.Underline = awt::FontUnderline::DOUBLEWAVE;
526 : }
527 0 : else if ( aValue == "bold" )
528 : {
529 0 : _descr.Underline = awt::FontUnderline::BOLD;
530 : }
531 0 : else if ( aValue == "bolddotted" )
532 : {
533 0 : _descr.Underline = awt::FontUnderline::BOLDDOTTED;
534 : }
535 0 : else if ( aValue == "bolddash" )
536 : {
537 0 : _descr.Underline = awt::FontUnderline::BOLDDASH;
538 : }
539 0 : else if ( aValue == "boldlongdash" )
540 : {
541 0 : _descr.Underline = awt::FontUnderline::BOLDLONGDASH;
542 : }
543 0 : else if ( aValue == "bolddashdot" )
544 : {
545 0 : _descr.Underline = awt::FontUnderline::BOLDDASHDOT;
546 : }
547 0 : else if ( aValue == "bolddashdotdot" )
548 : {
549 0 : _descr.Underline = awt::FontUnderline::BOLDDASHDOTDOT;
550 : }
551 0 : else if ( aValue == "boldwave" )
552 : {
553 0 : _descr.Underline = awt::FontUnderline::BOLDWAVE;
554 : }
555 : else
556 : {
557 0 : throw xml::sax::SAXException("invalid font-underline style!", Reference< XInterface >(), Any() );
558 : }
559 0 : bFontImport = true;
560 : }
561 :
562 : // dialog:font-strikeout "(single|double|bold|slash|x)" #IMPLIED
563 0 : if (getStringAttr( &aValue, "font-strikeout", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
564 : {
565 0 : if ( aValue == "single" )
566 : {
567 0 : _descr.Strikeout = awt::FontStrikeout::SINGLE;
568 : }
569 0 : else if ( aValue == "double" )
570 : {
571 0 : _descr.Strikeout = awt::FontStrikeout::DOUBLE;
572 : }
573 0 : else if ( aValue == "bold" )
574 : {
575 0 : _descr.Strikeout = awt::FontStrikeout::BOLD;
576 : }
577 0 : else if ( aValue == "slash" )
578 : {
579 0 : _descr.Strikeout = awt::FontStrikeout::SLASH;
580 : }
581 0 : else if ( aValue == "x" )
582 : {
583 0 : _descr.Strikeout = awt::FontStrikeout::X;
584 : }
585 : else
586 : {
587 0 : throw xml::sax::SAXException( "invalid font-strikeout style!" , Reference< XInterface >(), Any() );
588 : }
589 0 : bFontImport = true;
590 : }
591 :
592 : // dialog:font-orientation CDATA #IMPLIED
593 0 : if (getStringAttr( &aValue, "font-orientation", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
594 : {
595 0 : _descr.Orientation = aValue.toFloat();
596 0 : bFontImport = true;
597 : }
598 : // dialog:font-kerning %boolean; #IMPLIED
599 0 : bFontImport |= getBoolAttr( &_descr.Kerning, "font-kerning", _xAttributes, _pImport->XMLNS_DIALOGS_UID );
600 : // dialog:font-wordlinemode %boolean; #IMPLIED
601 0 : bFontImport |= getBoolAttr( &_descr.WordLineMode,"font-wordlinemode", _xAttributes, _pImport->XMLNS_DIALOGS_UID );
602 :
603 : // dialog:font-type "(raster|device|scalable)" #IMPLIED
604 0 : if (getStringAttr( &aValue, "font-type", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
605 : {
606 0 : if ( aValue == "raster" )
607 : {
608 0 : _descr.Type = awt::FontType::RASTER;
609 : }
610 0 : else if ( aValue == "device" )
611 : {
612 0 : _descr.Type = awt::FontType::DEVICE;
613 : }
614 0 : else if ( aValue == "scalable" )
615 : {
616 0 : _descr.Type = awt::FontType::SCALABLE;
617 : }
618 : else
619 : {
620 0 : throw xml::sax::SAXException( "invalid font-type style!", Reference< XInterface >(), Any() );
621 : }
622 0 : bFontImport = true;
623 : }
624 :
625 : // additional properties which are not part of the FontDescriptor struct
626 : // dialog:font-relief (none|embossed|engraved) #IMPLIED
627 0 : if (getStringAttr( &aValue, "font-relief", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
628 : {
629 0 : if ( aValue == "none" )
630 : {
631 0 : _fontRelief = awt::FontRelief::NONE;
632 : }
633 0 : else if ( aValue == "embossed" )
634 : {
635 0 : _fontRelief = awt::FontRelief::EMBOSSED;
636 : }
637 0 : else if ( aValue == "engraved" )
638 : {
639 0 : _fontRelief = awt::FontRelief::ENGRAVED;
640 : }
641 : else
642 : {
643 0 : throw xml::sax::SAXException("invalid font-relief style!", Reference< XInterface >(), Any() );
644 : }
645 0 : bFontImport = true;
646 : }
647 : // dialog:font-emphasismark (none|dot|circle|disc|accent|above|below) #IMPLIED
648 0 : if (getStringAttr(&aValue, "font-emphasismark", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
649 : {
650 0 : if ( aValue == "none" )
651 : {
652 0 : _fontEmphasisMark = awt::FontEmphasisMark::NONE;
653 : }
654 0 : else if ( aValue == "dot" )
655 : {
656 0 : _fontEmphasisMark = awt::FontEmphasisMark::DOT;
657 : }
658 0 : else if ( aValue == "circle" )
659 : {
660 0 : _fontEmphasisMark = awt::FontEmphasisMark::CIRCLE;
661 : }
662 0 : else if ( aValue == "disc" )
663 : {
664 0 : _fontEmphasisMark = awt::FontEmphasisMark::DISC;
665 : }
666 0 : else if ( aValue == "accent" )
667 : {
668 0 : _fontEmphasisMark = awt::FontEmphasisMark::ACCENT;
669 : }
670 0 : else if ( aValue == "above" )
671 : {
672 0 : _fontEmphasisMark = awt::FontEmphasisMark::ABOVE;
673 : }
674 0 : else if ( aValue == "below" )
675 : {
676 0 : _fontEmphasisMark = awt::FontEmphasisMark::BELOW;
677 : }
678 : else
679 : {
680 0 : throw xml::sax::SAXException( "invalid font-emphasismark style!", Reference< XInterface >(), Any() );
681 : }
682 0 : bFontImport = true;
683 : }
684 :
685 : // ==================================================
686 0 : if (bFontImport)
687 : {
688 0 : _hasValue |= 0x8;
689 0 : setFontProperties( xProps );
690 : }
691 :
692 0 : return bFontImport;
693 : }
694 :
695 : //##################################################################################################
696 :
697 : //__________________________________________________________________________________________________
698 0 : bool ImportContext::importStringProperty(
699 : OUString const & rPropName, OUString const & rAttrName,
700 : Reference< xml::input::XAttributes > const & xAttributes )
701 : {
702 : OUString aValue(
703 0 : xAttributes->getValueByUidName(
704 0 : _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
705 0 : if (!aValue.isEmpty())
706 : {
707 0 : _xControlModel->setPropertyValue( rPropName, makeAny( aValue ) );
708 0 : return true;
709 : }
710 0 : return false;
711 : }
712 : //__________________________________________________________________________________________________
713 0 : bool ImportContext::importDoubleProperty(
714 : OUString const & rPropName, OUString const & rAttrName,
715 : Reference< xml::input::XAttributes > const & xAttributes )
716 : {
717 : OUString aValue(
718 0 : xAttributes->getValueByUidName(
719 0 : _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
720 0 : if (!aValue.isEmpty())
721 : {
722 0 : _xControlModel->setPropertyValue( rPropName, makeAny( aValue.toDouble() ) );
723 0 : return true;
724 : }
725 0 : return false;
726 : }
727 :
728 : //__________________________________________________________________________________________________
729 0 : bool ImportContext::importBooleanProperty(
730 : OUString const & rPropName, OUString const & rAttrName,
731 : Reference< xml::input::XAttributes > const & xAttributes )
732 : {
733 : sal_Bool bBool;
734 0 : if (getBoolAttr(
735 0 : &bBool, rAttrName, xAttributes, _pImport->XMLNS_DIALOGS_UID ))
736 : {
737 0 : _xControlModel->setPropertyValue( rPropName, makeAny( bBool ) );
738 0 : return true;
739 : }
740 0 : return false;
741 : }
742 : //__________________________________________________________________________________________________
743 0 : bool ImportContext::importLongProperty(
744 : OUString const & rPropName, OUString const & rAttrName,
745 : Reference< xml::input::XAttributes > const & xAttributes )
746 : {
747 : OUString aValue(
748 0 : xAttributes->getValueByUidName(
749 0 : _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
750 0 : if (!aValue.isEmpty())
751 : {
752 0 : _xControlModel->setPropertyValue( rPropName, makeAny( toInt32( aValue ) ) );
753 0 : return true;
754 : }
755 0 : return false;
756 : }
757 : //__________________________________________________________________________________________________
758 0 : bool ImportContext::importLongProperty(
759 : sal_Int32 nOffset,
760 : OUString const & rPropName, OUString const & rAttrName,
761 : Reference< xml::input::XAttributes > const & xAttributes )
762 : {
763 : OUString aValue(
764 0 : xAttributes->getValueByUidName(
765 0 : _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
766 0 : if (!aValue.isEmpty())
767 : {
768 0 : _xControlModel->setPropertyValue( rPropName, makeAny( toInt32( aValue ) + nOffset ) );
769 0 : return true;
770 : }
771 0 : return false;
772 : }
773 : //__________________________________________________________________________________________________
774 0 : bool ImportContext::importHexLongProperty(
775 : OUString const & rPropName, OUString const & rAttrName,
776 : Reference< xml::input::XAttributes > const & xAttributes )
777 : {
778 : OUString aValue(
779 0 : xAttributes->getValueByUidName(
780 0 : _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
781 0 : if (!aValue.isEmpty())
782 : {
783 0 : _xControlModel->setPropertyValue( rPropName, makeAny( toInt32( aValue ) ) );
784 0 : return true;
785 : }
786 0 : return false;
787 : }
788 : //__________________________________________________________________________________________________
789 0 : bool ImportContext::importShortProperty(
790 : OUString const & rPropName, OUString const & rAttrName,
791 : Reference< xml::input::XAttributes > const & xAttributes )
792 : {
793 : OUString aValue(
794 0 : xAttributes->getValueByUidName(
795 0 : _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
796 0 : if (!aValue.isEmpty())
797 : {
798 0 : _xControlModel->setPropertyValue( rPropName, makeAny( (sal_Int16)toInt32( aValue ) ) );
799 0 : return true;
800 : }
801 0 : return false;
802 : }
803 : //__________________________________________________________________________________________________
804 0 : bool ImportContext::importAlignProperty(
805 : OUString const & rPropName, OUString const & rAttrName,
806 : Reference< xml::input::XAttributes > const & xAttributes )
807 : {
808 : OUString aAlign(
809 0 : xAttributes->getValueByUidName(
810 0 : _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
811 0 : if (!aAlign.isEmpty())
812 : {
813 : sal_Int16 nAlign;
814 0 : if ( aAlign == "left" )
815 : {
816 0 : nAlign = 0;
817 : }
818 0 : else if ( aAlign == "center" )
819 : {
820 0 : nAlign = 1;
821 : }
822 0 : else if ( aAlign == "right" )
823 : {
824 0 : nAlign = 2;
825 : }
826 0 : else if ( aAlign == "none" )
827 : {
828 0 : nAlign = 0; // default
829 : }
830 : else
831 : {
832 0 : throw xml::sax::SAXException("invalid align value!", Reference< XInterface >(), Any() );
833 : }
834 :
835 0 : _xControlModel->setPropertyValue( rPropName, makeAny( nAlign ) );
836 0 : return true;
837 : }
838 0 : return false;
839 : }
840 : //__________________________________________________________________________________________________
841 0 : bool ImportContext::importVerticalAlignProperty(
842 : OUString const & rPropName, OUString const & rAttrName,
843 : Reference< xml::input::XAttributes > const & xAttributes )
844 : {
845 : OUString aAlign(
846 0 : xAttributes->getValueByUidName(
847 0 : _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
848 0 : if (!aAlign.isEmpty())
849 : {
850 : style::VerticalAlignment eAlign;
851 :
852 0 : if ( aAlign == "top" )
853 : {
854 0 : eAlign = style::VerticalAlignment_TOP;
855 : }
856 0 : else if ( aAlign == "center" )
857 : {
858 0 : eAlign = style::VerticalAlignment_MIDDLE;
859 : }
860 0 : else if ( aAlign == "bottom" )
861 : {
862 0 : eAlign = style::VerticalAlignment_BOTTOM;
863 : }
864 : else
865 : {
866 0 : throw xml::sax::SAXException( "invalid vertical align value!", Reference< XInterface >(), Any() );
867 : }
868 :
869 0 : _xControlModel->setPropertyValue( rPropName, makeAny( eAlign ) );
870 0 : return true;
871 : }
872 0 : return false;
873 : }
874 : //__________________________________________________________________________________________________
875 0 : bool ImportContext::importImageURLProperty(
876 : OUString const & rPropName, OUString const & rAttrName,
877 : Reference< xml::input::XAttributes > const & xAttributes )
878 : {
879 0 : rtl::OUString sURL = xAttributes->getValueByUidName( _pImport->XMLNS_DIALOGS_UID, rAttrName );
880 0 : if ( !sURL.isEmpty() )
881 : {
882 0 : Reference< document::XStorageBasedDocument > xDocStorage( _pImport->getDocOwner(), UNO_QUERY );
883 :
884 0 : uno::Reference< document::XGraphicObjectResolver > xGraphicResolver;
885 0 : if ( xDocStorage.is() )
886 : {
887 0 : uno::Sequence< Any > aArgs( 1 );
888 0 : aArgs[ 0 ] <<= xDocStorage->getDocumentStorage();
889 0 : ::comphelper::ComponentContext aContext( _pImport->getComponentContext() );
890 0 : aContext.createComponentWithArguments( "com.sun.star.comp.Svx.GraphicImportHelper" , aArgs, xGraphicResolver );
891 0 : if ( xGraphicResolver.is() )
892 : {
893 0 : OUString aTmp("vnd.sun.star.Package:");
894 0 : aTmp += sURL;
895 : try
896 : {
897 0 : aTmp = xGraphicResolver->resolveGraphicObjectURL( aTmp );
898 0 : if ( !aTmp.isEmpty() )
899 0 : sURL = aTmp;
900 : }
901 0 : catch( const uno::Exception& )
902 : {
903 0 : return false;
904 0 : }
905 :
906 0 : }
907 : }
908 0 : if ( !sURL.isEmpty() )
909 : {
910 0 : Reference< beans::XPropertySet > xProps( getControlModel(), UNO_QUERY );
911 0 : if ( xProps.is() )
912 : {
913 0 : xProps->setPropertyValue( rPropName, makeAny( sURL ) );
914 0 : return true;
915 0 : }
916 0 : }
917 : }
918 0 : return false;
919 : }
920 : //__________________________________________________________________________________________________
921 0 : bool ImportContext::importDataAwareProperty(
922 : ::rtl::OUString const & rPropName,
923 : Reference<xml::input::XAttributes> const & xAttributes )
924 : {
925 0 : OUString sLinkedCell;
926 0 : OUString sCellRange;
927 0 : if ( rPropName.equals( "linked-cell" ) )
928 0 : sLinkedCell = xAttributes->getValueByUidName( _pImport->XMLNS_DIALOGS_UID, rPropName );
929 0 : if ( rPropName.equals( "source-cell-range" ) )
930 0 : sCellRange = xAttributes->getValueByUidName( _pImport->XMLNS_DIALOGS_UID, rPropName );
931 0 : bool bRes = false;
932 0 : Reference< lang::XMultiServiceFactory > xFac( _pImport->getDocOwner(), UNO_QUERY );
933 0 : if ( xFac.is() && ( !sLinkedCell.isEmpty() || !sCellRange.isEmpty() ) )
934 : {
935 : // Set up Celllink
936 0 : if ( !sLinkedCell.isEmpty() )
937 : {
938 0 : Reference< form::binding::XBindableValue > xBindable( getControlModel(), uno::UNO_QUERY );
939 0 : Reference< beans::XPropertySet > xConvertor( xFac->createInstance( "com.sun.star.table.CellAddressConversion" ), uno::UNO_QUERY );
940 0 : if ( xBindable.is() && xConvertor.is() )
941 : {
942 0 : table::CellAddress aAddress;
943 0 : xConvertor->setPropertyValue( "PersistentRepresentation" , uno::makeAny( sLinkedCell ) );
944 0 : xConvertor->getPropertyValue( "Address" ) >>= aAddress;
945 0 : beans::NamedValue aArg1;
946 0 : aArg1.Name = "BoundCell";
947 0 : aArg1.Value <<= aAddress;
948 :
949 0 : uno::Sequence< uno::Any > aArgs(1);
950 0 : aArgs[ 0 ] <<= aArg1;
951 :
952 0 : uno::Reference< form::binding::XValueBinding > xBinding( xFac->createInstanceWithArguments( "com.sun.star.table.CellValueBinding" , aArgs ), uno::UNO_QUERY );
953 0 : xBindable->setValueBinding( xBinding );
954 0 : bRes = true;
955 0 : }
956 : }
957 : // Set up CelllRange
958 0 : if ( !sCellRange.isEmpty() )
959 : {
960 0 : Reference< form::binding::XListEntrySink > xListEntrySink( getControlModel(), uno::UNO_QUERY );
961 0 : Reference< beans::XPropertySet > xConvertor( xFac->createInstance( "com.sun.star.table.CellRangeAddressConversion" ), uno::UNO_QUERY );
962 0 : if ( xListEntrySink.is() && xConvertor.is() )
963 : {
964 0 : table::CellRangeAddress aAddress;
965 0 : xConvertor->setPropertyValue( "PersistentRepresentation" , uno::makeAny( sCellRange ) );
966 0 : xConvertor->getPropertyValue( "Address" ) >>= aAddress;
967 0 : beans::NamedValue aArg1;
968 0 : aArg1.Name = "CellRange";
969 0 : aArg1.Value <<= aAddress;
970 :
971 0 : uno::Sequence< uno::Any > aArgs(1);
972 0 : aArgs[ 0 ] <<= aArg1;
973 :
974 0 : uno::Reference< form::binding::XListEntrySource > xSource( xFac->createInstanceWithArguments( "com.sun.star.table.CellRangeListSource" , aArgs ), uno::UNO_QUERY );
975 0 : xListEntrySink->setListEntrySource( xSource );
976 0 : bRes = true;
977 0 : }
978 : }
979 : }
980 0 : return bRes;
981 : }
982 : //__________________________________________________________________________________________________
983 0 : bool ImportContext::importImageAlignProperty(
984 : OUString const & rPropName, OUString const & rAttrName,
985 : Reference< xml::input::XAttributes > const & xAttributes )
986 : {
987 : OUString aAlign(
988 0 : xAttributes->getValueByUidName(
989 0 : _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
990 0 : if (!aAlign.isEmpty())
991 : {
992 : sal_Int16 nAlign;
993 0 : if ( aAlign == "left" )
994 : {
995 0 : nAlign = 0;
996 : }
997 0 : else if ( aAlign == "top" )
998 : {
999 0 : nAlign = 1;
1000 : }
1001 0 : else if ( aAlign == "right" )
1002 : {
1003 0 : nAlign = 2;
1004 : }
1005 0 : else if ( aAlign == "bottom" )
1006 : {
1007 0 : nAlign = 3;
1008 : }
1009 : else
1010 : {
1011 0 : throw xml::sax::SAXException( "invalid image align value!", Reference< XInterface >(), Any() );
1012 : }
1013 :
1014 0 : _xControlModel->setPropertyValue( rPropName, makeAny( nAlign ) );
1015 0 : return true;
1016 : }
1017 0 : return false;
1018 : }
1019 : //__________________________________________________________________________________________________
1020 0 : bool ImportContext::importImagePositionProperty(
1021 : OUString const & rPropName, OUString const & rAttrName,
1022 : Reference< xml::input::XAttributes > const & xAttributes )
1023 : {
1024 : OUString aPosition(
1025 0 : xAttributes->getValueByUidName(
1026 0 : _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
1027 0 : if (!aPosition.isEmpty())
1028 : {
1029 : sal_Int16 nPosition;
1030 0 : if ( aPosition == "left-top" )
1031 : {
1032 0 : nPosition = awt::ImagePosition::LeftTop;
1033 : }
1034 0 : else if ( aPosition == "left-center" )
1035 : {
1036 0 : nPosition = awt::ImagePosition::LeftCenter;
1037 : }
1038 0 : else if ( aPosition == "left-bottom" )
1039 : {
1040 0 : nPosition = awt::ImagePosition::LeftBottom;
1041 : }
1042 0 : else if ( aPosition == "right-top" )
1043 : {
1044 0 : nPosition = awt::ImagePosition::RightTop;
1045 : }
1046 0 : else if ( aPosition == "right-center" )
1047 : {
1048 0 : nPosition = awt::ImagePosition::RightCenter;
1049 : }
1050 0 : else if ( aPosition == "right-bottom" )
1051 : {
1052 0 : nPosition = awt::ImagePosition::RightBottom;
1053 : }
1054 0 : else if ( aPosition == "top-left" )
1055 : {
1056 0 : nPosition = awt::ImagePosition::AboveLeft;
1057 : }
1058 0 : else if ( aPosition == "top-center" )
1059 : {
1060 0 : nPosition = awt::ImagePosition::AboveCenter;
1061 : }
1062 0 : else if ( aPosition == "top-right" )
1063 : {
1064 0 : nPosition = awt::ImagePosition::AboveRight;
1065 : }
1066 0 : else if ( aPosition == "bottom-left" )
1067 : {
1068 0 : nPosition = awt::ImagePosition::BelowLeft;
1069 : }
1070 0 : else if ( aPosition == "bottom-center" )
1071 : {
1072 0 : nPosition = awt::ImagePosition::BelowCenter;
1073 : }
1074 0 : else if ( aPosition == "bottom-right" )
1075 : {
1076 0 : nPosition = awt::ImagePosition::BelowRight;
1077 : }
1078 0 : else if ( aPosition == "center" )
1079 : {
1080 0 : nPosition = awt::ImagePosition::Centered;
1081 : }
1082 : else
1083 : {
1084 0 : throw xml::sax::SAXException( "invalid image position value!", Reference< XInterface >(), Any() );
1085 : }
1086 :
1087 0 : _xControlModel->setPropertyValue( rPropName, makeAny( nPosition ) );
1088 0 : return true;
1089 : }
1090 0 : return false;
1091 : }
1092 : //__________________________________________________________________________________________________
1093 0 : bool ImportContext::importButtonTypeProperty(
1094 : OUString const & rPropName, OUString const & rAttrName,
1095 : Reference< xml::input::XAttributes > const & xAttributes )
1096 : {
1097 : OUString buttonType(
1098 0 : xAttributes->getValueByUidName(
1099 0 : _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
1100 0 : if (!buttonType.isEmpty())
1101 : {
1102 : sal_Int16 nButtonType;
1103 0 : if ( buttonType == "standard" )
1104 : {
1105 0 : nButtonType = awt::PushButtonType_STANDARD;
1106 : }
1107 0 : else if ( buttonType == "ok" )
1108 : {
1109 0 : nButtonType = awt::PushButtonType_OK;
1110 : }
1111 0 : else if ( buttonType == "cancel" )
1112 : {
1113 0 : nButtonType = awt::PushButtonType_CANCEL;
1114 : }
1115 0 : else if ( buttonType == "help" )
1116 : {
1117 0 : nButtonType = awt::PushButtonType_HELP;
1118 : }
1119 : else
1120 : {
1121 0 : throw xml::sax::SAXException( "invalid button-type value!", Reference< XInterface >(), Any() );
1122 : }
1123 :
1124 0 : _xControlModel->setPropertyValue( rPropName, makeAny( nButtonType ) );
1125 0 : return true;
1126 : }
1127 0 : return false;
1128 : }
1129 : //__________________________________________________________________________________________________
1130 0 : bool ImportContext::importDateFormatProperty(
1131 : OUString const & rPropName, OUString const & rAttrName,
1132 : Reference< xml::input::XAttributes > const & xAttributes )
1133 : {
1134 : OUString aFormat(
1135 0 : xAttributes->getValueByUidName(
1136 0 : _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
1137 0 : if (!aFormat.isEmpty())
1138 : {
1139 : sal_Int16 nFormat;
1140 0 : if ( aFormat == "system_short" )
1141 : {
1142 0 : nFormat = 0;
1143 : }
1144 0 : else if ( aFormat == "system_short_YY" )
1145 : {
1146 0 : nFormat = 1;
1147 : }
1148 0 : else if ( aFormat == "system_short_YYYY" )
1149 : {
1150 0 : nFormat = 2;
1151 : }
1152 0 : else if ( aFormat == "system_long" )
1153 : {
1154 0 : nFormat = 3;
1155 : }
1156 0 : else if ( aFormat == "short_DDMMYY" )
1157 : {
1158 0 : nFormat = 4;
1159 : }
1160 0 : else if ( aFormat == "short_MMDDYY" )
1161 : {
1162 0 : nFormat = 5;
1163 : }
1164 0 : else if ( aFormat == "short_YYMMDD" )
1165 : {
1166 0 : nFormat = 6;
1167 : }
1168 0 : else if ( aFormat == "short_DDMMYYYY" )
1169 : {
1170 0 : nFormat = 7;
1171 : }
1172 0 : else if ( aFormat == "short_MMDDYYYY" )
1173 : {
1174 0 : nFormat = 8;
1175 : }
1176 0 : else if ( aFormat == "short_YYYYMMDD" )
1177 : {
1178 0 : nFormat = 9;
1179 : }
1180 0 : else if ( aFormat == "short_YYMMDD_DIN5008" )
1181 : {
1182 0 : nFormat = 10;
1183 : }
1184 0 : else if ( aFormat == "short_YYYYMMDD_DIN5008" )
1185 : {
1186 0 : nFormat = 11;
1187 : }
1188 : else
1189 : {
1190 0 : throw xml::sax::SAXException( "invalid date-format value!", Reference< XInterface >(), Any() );
1191 : }
1192 :
1193 0 : _xControlModel->setPropertyValue( rPropName, makeAny( nFormat ) );
1194 0 : return true;
1195 : }
1196 0 : return false;
1197 : }
1198 : //__________________________________________________________________________________________________
1199 0 : bool ImportContext::importTimeFormatProperty(
1200 : OUString const & rPropName, OUString const & rAttrName,
1201 : Reference< xml::input::XAttributes > const & xAttributes )
1202 : {
1203 : OUString aFormat(
1204 0 : xAttributes->getValueByUidName(
1205 0 : _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
1206 0 : if (!aFormat.isEmpty())
1207 : {
1208 : sal_Int16 nFormat;
1209 0 : if ( aFormat == "24h_short" )
1210 : {
1211 0 : nFormat = 0;
1212 : }
1213 0 : else if ( aFormat == "24h_long" )
1214 : {
1215 0 : nFormat = 1;
1216 : }
1217 0 : else if ( aFormat == "12h_short" )
1218 : {
1219 0 : nFormat = 2;
1220 : }
1221 0 : else if ( aFormat == "12h_long" )
1222 : {
1223 0 : nFormat = 3;
1224 : }
1225 0 : else if ( aFormat == "Duration_short" )
1226 : {
1227 0 : nFormat = 4;
1228 : }
1229 0 : else if ( aFormat == "Duration_long" )
1230 : {
1231 0 : nFormat = 5;
1232 : }
1233 : else
1234 : {
1235 0 : throw xml::sax::SAXException( "invalid time-format value!", Reference< XInterface >(), Any() );
1236 : }
1237 :
1238 0 : _xControlModel->setPropertyValue( rPropName, makeAny( nFormat ) );
1239 0 : return true;
1240 : }
1241 0 : return false;
1242 : }
1243 : //__________________________________________________________________________________________________
1244 0 : bool ImportContext::importOrientationProperty(
1245 : OUString const & rPropName, OUString const & rAttrName,
1246 : Reference< xml::input::XAttributes > const & xAttributes )
1247 : {
1248 : OUString aOrient(
1249 0 : xAttributes->getValueByUidName(
1250 0 : _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
1251 0 : if (!aOrient.isEmpty())
1252 : {
1253 : sal_Int32 nOrient;
1254 0 : if ( aOrient == "horizontal" )
1255 : {
1256 0 : nOrient = 0;
1257 : }
1258 0 : else if ( aOrient == "vertical" )
1259 : {
1260 0 : nOrient = 1;
1261 : }
1262 : else
1263 : {
1264 0 : throw xml::sax::SAXException( "invalid orientation value!", Reference< XInterface >(), Any() );
1265 : }
1266 :
1267 0 : _xControlModel->setPropertyValue( rPropName, makeAny( nOrient ) );
1268 0 : return true;
1269 : }
1270 0 : return false;
1271 : }
1272 : //__________________________________________________________________________________________________
1273 0 : bool ImportContext::importLineEndFormatProperty(
1274 : OUString const & rPropName, OUString const & rAttrName,
1275 : Reference< xml::input::XAttributes > const & xAttributes )
1276 : {
1277 : OUString aFormat(
1278 0 : xAttributes->getValueByUidName(
1279 0 : _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
1280 0 : if (!aFormat.isEmpty())
1281 : {
1282 : sal_Int16 nFormat;
1283 0 : if ( aFormat == "carriage-return" )
1284 : {
1285 0 : nFormat = awt::LineEndFormat::CARRIAGE_RETURN;
1286 : }
1287 0 : else if ( aFormat == "line-feed" )
1288 : {
1289 0 : nFormat = awt::LineEndFormat::LINE_FEED;
1290 : }
1291 0 : else if ( aFormat == "carriage-return-line-feed" )
1292 : {
1293 0 : nFormat = awt::LineEndFormat::CARRIAGE_RETURN_LINE_FEED;
1294 : }
1295 : else
1296 : {
1297 0 : throw xml::sax::SAXException( "invalid line end format value!", Reference< XInterface >(), Any() );
1298 : }
1299 :
1300 0 : _xControlModel->setPropertyValue( rPropName, makeAny( nFormat ) );
1301 0 : return true;
1302 : }
1303 0 : return false;
1304 : }
1305 : //__________________________________________________________________________________________________
1306 0 : bool ImportContext::importSelectionTypeProperty(
1307 : OUString const & rPropName, OUString const & rAttrName,
1308 : Reference< xml::input::XAttributes > const & xAttributes )
1309 : {
1310 : OUString aSelectionType(
1311 0 : xAttributes->getValueByUidName(
1312 0 : _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
1313 0 : if (!aSelectionType.isEmpty())
1314 : {
1315 : view::SelectionType eSelectionType;
1316 :
1317 0 : if ( aSelectionType == "none" )
1318 : {
1319 0 : eSelectionType = view::SelectionType_NONE;
1320 : }
1321 0 : else if ( aSelectionType == "single" )
1322 : {
1323 0 : eSelectionType = view::SelectionType_SINGLE;
1324 : }
1325 0 : else if ( aSelectionType == "multi" )
1326 : {
1327 0 : eSelectionType = view::SelectionType_MULTI;
1328 : }
1329 0 : else if ( aSelectionType == "range" )
1330 : {
1331 0 : eSelectionType = view::SelectionType_RANGE;
1332 : }
1333 : else
1334 : {
1335 0 : throw xml::sax::SAXException( "invalid selection type value!", Reference< XInterface >(), Any() );
1336 : }
1337 :
1338 0 : _xControlModel->setPropertyValue( rPropName, makeAny( eSelectionType ) );
1339 0 : return true;
1340 : }
1341 0 : return false;
1342 : }
1343 :
1344 : //==================================================================================================
1345 : struct StringTriple
1346 : {
1347 : char const * first;
1348 : char const * second;
1349 : char const * third;
1350 : };
1351 : static StringTriple const s_aEventTranslations[] =
1352 : {
1353 : // from xmloff/source/forms/formevents.cxx
1354 : // 28.09.2001 tbe added on-adjustmentvaluechange
1355 : { "com.sun.star.form.XApproveActionListener", "approveAction", "on-approveaction" },
1356 : { "com.sun.star.awt.XActionListener", "actionPerformed", "on-performaction" },
1357 : { "com.sun.star.form.XChangeListener", "changed", "on-change" },
1358 : { "com.sun.star.awt.XTextListener", "textChanged", "on-textchange" },
1359 : { "com.sun.star.awt.XItemListener", "itemStateChanged", "on-itemstatechange" },
1360 : { "com.sun.star.awt.XFocusListener", "focusGained", "on-focus" },
1361 : { "com.sun.star.awt.XFocusListener", "focusLost", "on-blur" },
1362 : { "com.sun.star.awt.XKeyListener", "keyPressed", "on-keydown" },
1363 : { "com.sun.star.awt.XKeyListener", "keyReleased", "on-keyup" },
1364 : { "com.sun.star.awt.XMouseListener", "mouseEntered", "on-mouseover" },
1365 : { "com.sun.star.awt.XMouseMotionListener", "mouseDragged", "on-mousedrag" },
1366 : { "com.sun.star.awt.XMouseMotionListener", "mouseMoved", "on-mousemove" },
1367 : { "com.sun.star.awt.XMouseListener", "mousePressed", "on-mousedown" },
1368 : { "com.sun.star.awt.XMouseListener", "mouseReleased", "on-mouseup" },
1369 : { "com.sun.star.awt.XMouseListener", "mouseExited", "on-mouseout" },
1370 : { "com.sun.star.form.XResetListener", "approveReset", "on-approvereset" },
1371 : { "com.sun.star.form.XResetListener", "resetted", "on-reset" },
1372 : { "com.sun.star.form.XSubmitListener", "approveSubmit", "on-submit" },
1373 : { "com.sun.star.form.XUpdateListener", "approveUpdate", "on-approveupdate" },
1374 : { "com.sun.star.form.XUpdateListener", "updated", "on-update" },
1375 : { "com.sun.star.form.XLoadListener", "loaded", "on-load" },
1376 : { "com.sun.star.form.XLoadListener", "reloading", "on-startreload" },
1377 : { "com.sun.star.form.XLoadListener", "reloaded", "on-reload" },
1378 : { "com.sun.star.form.XLoadListener", "unloading", "on-startunload" },
1379 : { "com.sun.star.form.XLoadListener", "unloaded", "on-unload" },
1380 : { "com.sun.star.form.XConfirmDeleteListener", "confirmDelete", "on-confirmdelete" },
1381 : { "com.sun.star.sdb.XRowSetApproveListener", "approveRowChange", "on-approverowchange" },
1382 : { "com.sun.star.sdbc.XRowSetListener", "rowChanged", "on-rowchange" },
1383 : { "com.sun.star.sdb.XRowSetApproveListener", "approveCursorMove", "on-approvecursormove" },
1384 : { "com.sun.star.sdbc.XRowSetListener", "cursorMoved", "on-cursormove" },
1385 : { "com.sun.star.form.XDatabaseParameterListener", "approveParameter", "on-supplyparameter" },
1386 : { "com.sun.star.sdb.XSQLErrorListener", "errorOccured", "on-error" },
1387 : { "com.sun.star.awt.XAdjustmentListener", "adjustmentValueChanged", "on-adjustmentvaluechange" },
1388 : { 0, 0, 0 }
1389 : };
1390 : extern StringTriple const * const g_pEventTranslations;
1391 : StringTriple const * const g_pEventTranslations = s_aEventTranslations;
1392 :
1393 : //__________________________________________________________________________________________________
1394 0 : void ImportContext::importEvents(
1395 : ::std::vector< Reference< xml::input::XElement > > const & rEvents )
1396 : {
1397 : Reference< script::XScriptEventsSupplier > xSupplier(
1398 0 : _xControlModel, UNO_QUERY );
1399 0 : if (xSupplier.is())
1400 : {
1401 0 : Reference< container::XNameContainer > xEvents( xSupplier->getEvents() );
1402 0 : if (xEvents.is())
1403 : {
1404 0 : for ( size_t nPos = 0; nPos < rEvents.size(); ++nPos )
1405 : {
1406 0 : script::ScriptEventDescriptor descr;
1407 :
1408 0 : EventElement * pEventElement = static_cast< EventElement * >( rEvents[ nPos ].get() );
1409 0 : sal_Int32 nUid = pEventElement->getUid();
1410 0 : OUString aLocalName( pEventElement->getLocalName() );
1411 0 : Reference< xml::input::XAttributes > xAttributes( pEventElement->getAttributes() );
1412 :
1413 : // nowadays script events
1414 0 : if (_pImport->XMLNS_SCRIPT_UID == nUid)
1415 : {
1416 0 : if (!getStringAttr( &descr.ScriptType, "language" , xAttributes, _pImport->XMLNS_SCRIPT_UID ) ||
1417 0 : !getStringAttr( &descr.ScriptCode, "macro-name", xAttributes, _pImport->XMLNS_SCRIPT_UID ))
1418 : {
1419 0 : throw xml::sax::SAXException( "missing language or macro-name attribute(s) of event!", Reference< XInterface >(), Any() );
1420 : }
1421 0 : if ( descr.ScriptType == "StarBasic" )
1422 : {
1423 0 : OUString aLocation;
1424 0 : if (getStringAttr( &aLocation, "location", xAttributes, _pImport->XMLNS_SCRIPT_UID ))
1425 : {
1426 : // prepend location
1427 0 : OUStringBuffer buf;
1428 0 : buf.append( aLocation );
1429 0 : buf.append( (sal_Unicode)':' );
1430 0 : buf.append( descr.ScriptCode );
1431 0 : descr.ScriptCode = buf.makeStringAndClear();
1432 0 : }
1433 : }
1434 0 : else if ( descr.ScriptType == "Script" )
1435 : {
1436 : // Check if there is a protocol, if not assume
1437 : // this is an early scripting framework url ( without
1438 : // the protocol ) and fix it up!!
1439 0 : if ( descr.ScriptCode.indexOf( ':' ) == -1 )
1440 : {
1441 0 : OUStringBuffer buf;
1442 0 : buf.append( "vnd.sun.star.script:" );
1443 0 : buf.append( descr.ScriptCode );
1444 0 : descr.ScriptCode = buf.makeStringAndClear();
1445 : }
1446 : }
1447 :
1448 : // script:event element
1449 0 : if ( aLocalName == "event" )
1450 : {
1451 0 : OUString aEventName;
1452 0 : if (! getStringAttr( &aEventName, "event-name", xAttributes, _pImport->XMLNS_SCRIPT_UID ))
1453 : {
1454 0 : throw xml::sax::SAXException( "missing event-name attribute!", Reference< XInterface >(), Any() );
1455 : }
1456 :
1457 : // lookup in table
1458 0 : OString str( OUStringToOString( aEventName, RTL_TEXTENCODING_ASCII_US ) );
1459 0 : StringTriple const * p = g_pEventTranslations;
1460 0 : while (p->first)
1461 : {
1462 0 : if (0 == ::rtl_str_compare( p->third, str.getStr() ))
1463 : {
1464 : descr.ListenerType = OUString(
1465 : p->first, ::rtl_str_getLength( p->first ),
1466 0 : RTL_TEXTENCODING_ASCII_US );
1467 : descr.EventMethod = OUString(
1468 : p->second, ::rtl_str_getLength( p->second ),
1469 0 : RTL_TEXTENCODING_ASCII_US );
1470 0 : break;
1471 : }
1472 0 : ++p;
1473 : }
1474 :
1475 0 : if (! p->first)
1476 : {
1477 0 : throw xml::sax::SAXException( "no matching event-name found!", Reference< XInterface >(), Any() );
1478 0 : }
1479 : }
1480 : else // script:listener-event element
1481 : {
1482 : OSL_ASSERT( aLocalName == "listener-event" );
1483 :
1484 0 : if (!getStringAttr( &descr.ListenerType, "listener-type" , xAttributes, _pImport->XMLNS_SCRIPT_UID ) ||
1485 0 : !getStringAttr( &descr.EventMethod , "listener-method", xAttributes, _pImport->XMLNS_SCRIPT_UID ))
1486 : {
1487 0 : throw xml::sax::SAXException("missing listener-type or listener-method attribute(s)!", Reference< XInterface >(), Any() );
1488 : }
1489 : // optional listener param
1490 0 : getStringAttr( &descr.AddListenerParam, "listener-param", xAttributes, _pImport->XMLNS_SCRIPT_UID );
1491 : }
1492 : }
1493 : else // deprecated dlg:event element
1494 : {
1495 : OSL_ASSERT( _pImport->XMLNS_DIALOGS_UID == nUid && aLocalName == "event" );
1496 :
1497 0 : if (!getStringAttr( &descr.ListenerType, "listener-type", xAttributes, _pImport->XMLNS_DIALOGS_UID ) ||
1498 0 : !getStringAttr( &descr.EventMethod, "event-method", xAttributes, _pImport->XMLNS_DIALOGS_UID ))
1499 : {
1500 0 : throw xml::sax::SAXException("missing listener-type or event-method attribute(s)!", Reference< XInterface >(), Any() );
1501 : }
1502 :
1503 0 : getStringAttr( &descr.ScriptType, "script-type", xAttributes, _pImport->XMLNS_DIALOGS_UID );
1504 0 : getStringAttr( &descr.ScriptCode, "script-code", xAttributes, _pImport->XMLNS_DIALOGS_UID );
1505 0 : getStringAttr( &descr.AddListenerParam, "param", xAttributes, _pImport->XMLNS_DIALOGS_UID );
1506 : }
1507 :
1508 0 : OUStringBuffer buf;
1509 0 : buf.append( descr.ListenerType );
1510 0 : buf.appendAscii( "::" );
1511 0 : buf.append( descr.EventMethod );
1512 0 : xEvents->insertByName( buf.makeStringAndClear(), makeAny( descr ) );
1513 0 : }
1514 0 : }
1515 0 : }
1516 0 : }
1517 : //__________________________________________________________________________________________________
1518 0 : void ImportContext::importScollableSettings(
1519 : Reference< xml::input::XAttributes > const & _xAttributes )
1520 : {
1521 : importLongProperty( OUString( "ScrollHeight" ),
1522 : OUString( "scrollheight" ),
1523 0 : _xAttributes );
1524 : importLongProperty( OUString( "ScrollWidth" ),
1525 : OUString( "scrollwidth" ),
1526 0 : _xAttributes );
1527 : importLongProperty( OUString( "ScrollTop" ),
1528 : OUString( "scrolltop" ),
1529 0 : _xAttributes );
1530 : importLongProperty( OUString( "ScrollLeft" ),
1531 : OUString( "scrollleft" ),
1532 0 : _xAttributes );
1533 : importBooleanProperty( OUString( "HScroll" ),
1534 : OUString( "hscroll" ),
1535 0 : _xAttributes );
1536 : importBooleanProperty( OUString( "VScroll" ),
1537 : OUString( "vscroll" ),
1538 0 : _xAttributes );
1539 0 : }
1540 :
1541 0 : void ImportContext::importDefaults(
1542 : sal_Int32 nBaseX, sal_Int32 nBaseY,
1543 : Reference< xml::input::XAttributes > const & xAttributes,
1544 : bool supportPrintable )
1545 : {
1546 0 : _xControlModel->setPropertyValue( "Name", makeAny( _aId ) );
1547 :
1548 0 : importShortProperty( "TabIndex", "tab-index", xAttributes );
1549 :
1550 0 : sal_Bool bDisable = sal_False;
1551 0 : if (getBoolAttr( &bDisable,"disabled", xAttributes, _pImport->XMLNS_DIALOGS_UID ) && bDisable)
1552 : {
1553 0 : _xControlModel->setPropertyValue( "Enabled", makeAny( sal_False ) );
1554 : }
1555 :
1556 0 : sal_Bool bVisible = sal_True;
1557 0 : if (getBoolAttr( &bVisible, "visible", xAttributes, _pImport->XMLNS_DIALOGS_UID ) && !bVisible)
1558 : {
1559 : try
1560 : {
1561 0 : _xControlModel->setPropertyValue( "EnableVisible", makeAny( sal_False ) );
1562 : }
1563 0 : catch( Exception& )
1564 : {
1565 : DBG_UNHANDLED_EXCEPTION();
1566 : }
1567 : }
1568 :
1569 0 : if (!importLongProperty( nBaseX, "PositionX", "left", xAttributes ) ||
1570 0 : !importLongProperty( nBaseY, "PositionY", "top", xAttributes ) ||
1571 0 : !importLongProperty( "Width", "width", xAttributes ) ||
1572 0 : !importLongProperty( "Height", "height", xAttributes ))
1573 : {
1574 0 : throw xml::sax::SAXException( "missing pos size attribute(s)!", Reference< XInterface >(), Any() );
1575 : }
1576 :
1577 0 : if (supportPrintable)
1578 : {
1579 0 : importBooleanProperty("Printable", "printable", xAttributes );
1580 : }
1581 :
1582 : sal_Int32 nLong;
1583 0 : if (! getLongAttr( &nLong, "page", xAttributes, _pImport->XMLNS_DIALOGS_UID ))
1584 : {
1585 0 : nLong = 0;
1586 : }
1587 0 : _xControlModel->setPropertyValue( "Step", makeAny( nLong ) );
1588 :
1589 0 : importStringProperty("Tag", "tag", xAttributes );
1590 0 : importStringProperty( "HelpText", "help-text", xAttributes );
1591 0 : importStringProperty( "HelpURL", "help-url", xAttributes );
1592 0 : }
1593 :
1594 : //##################################################################################################
1595 :
1596 : //__________________________________________________________________________________________________
1597 0 : Reference< xml::input::XElement > ElementBase::getParent()
1598 : throw (RuntimeException)
1599 : {
1600 0 : return static_cast< xml::input::XElement * >( _pParent );
1601 : }
1602 : //__________________________________________________________________________________________________
1603 0 : OUString ElementBase::getLocalName()
1604 : throw (RuntimeException)
1605 : {
1606 0 : return _aLocalName;
1607 : }
1608 : //__________________________________________________________________________________________________
1609 0 : sal_Int32 ElementBase::getUid()
1610 : throw (RuntimeException)
1611 : {
1612 0 : return _nUid;
1613 : }
1614 : //__________________________________________________________________________________________________
1615 0 : Reference< xml::input::XAttributes > ElementBase::getAttributes()
1616 : throw (RuntimeException)
1617 : {
1618 0 : return _xAttributes;
1619 : }
1620 : //__________________________________________________________________________________________________
1621 0 : void ElementBase::ignorableWhitespace(
1622 : OUString const & /*rWhitespaces*/ )
1623 : throw (xml::sax::SAXException, RuntimeException)
1624 : {
1625 : // not used
1626 0 : }
1627 : //__________________________________________________________________________________________________
1628 0 : void ElementBase::characters( OUString const & /*rChars*/ )
1629 : throw (xml::sax::SAXException, RuntimeException)
1630 : {
1631 : // not used, all characters ignored
1632 0 : }
1633 : //__________________________________________________________________________________________________
1634 0 : void ElementBase::endElement()
1635 : throw (xml::sax::SAXException, RuntimeException)
1636 : {
1637 0 : }
1638 : //______________________________________________________________________________
1639 0 : void ElementBase::processingInstruction(
1640 : OUString const & /*Target*/, OUString const & /*Data*/ )
1641 : throw (xml::sax::SAXException, RuntimeException)
1642 : {
1643 0 : }
1644 : //__________________________________________________________________________________________________
1645 0 : Reference< xml::input::XElement > ElementBase::startChildElement(
1646 : sal_Int32 /*nUid*/, OUString const & /*rLocalName*/,
1647 : Reference< xml::input::XAttributes > const & /*xAttributes*/ )
1648 : throw (xml::sax::SAXException, RuntimeException)
1649 : {
1650 0 : throw xml::sax::SAXException( "unexpected element!", Reference< XInterface >(), Any() );
1651 : }
1652 :
1653 : //__________________________________________________________________________________________________
1654 0 : ElementBase::ElementBase(
1655 : sal_Int32 nUid, OUString const & rLocalName,
1656 : Reference< xml::input::XAttributes > const & xAttributes,
1657 : ElementBase * pParent, DialogImport * pImport )
1658 : SAL_THROW(())
1659 : : _pImport( pImport )
1660 : , _pParent( pParent )
1661 : , _nUid( nUid )
1662 : , _aLocalName( rLocalName )
1663 0 : , _xAttributes( xAttributes )
1664 : {
1665 0 : _pImport->acquire();
1666 :
1667 0 : if (_pParent)
1668 : {
1669 0 : _pParent->acquire();
1670 : }
1671 0 : }
1672 : //__________________________________________________________________________________________________
1673 0 : ElementBase::~ElementBase()
1674 : SAL_THROW(())
1675 : {
1676 0 : _pImport->release();
1677 :
1678 0 : if (_pParent)
1679 : {
1680 0 : _pParent->release();
1681 : }
1682 :
1683 : #if OSL_DEBUG_LEVEL > 1
1684 : ::rtl::OString aStr( ::rtl::OUStringToOString(
1685 : _aLocalName, RTL_TEXTENCODING_ASCII_US ) );
1686 : OSL_TRACE( "ElementBase::~ElementBase(): %s", aStr.getStr() );
1687 : #endif
1688 0 : }
1689 :
1690 : //##################################################################################################
1691 :
1692 : // XRoot
1693 : //
1694 :
1695 : //______________________________________________________________________________
1696 0 : void DialogImport::startDocument(
1697 : Reference< xml::input::XNamespaceMapping > const & xNamespaceMapping )
1698 : throw (xml::sax::SAXException, RuntimeException)
1699 : {
1700 0 : XMLNS_DIALOGS_UID = xNamespaceMapping->getUidByUri( XMLNS_DIALOGS_URI );
1701 0 : XMLNS_SCRIPT_UID = xNamespaceMapping->getUidByUri( XMLNS_SCRIPT_URI );
1702 0 : }
1703 : //__________________________________________________________________________________________________
1704 0 : void DialogImport::endDocument()
1705 : throw (xml::sax::SAXException, RuntimeException)
1706 : {
1707 : // ignored
1708 0 : }
1709 : //__________________________________________________________________________________________________
1710 0 : void DialogImport::processingInstruction(
1711 : OUString const & /*rTarget*/, OUString const & /*rData*/ )
1712 : throw (xml::sax::SAXException, RuntimeException)
1713 : {
1714 : // ignored for now: xxx todo
1715 0 : }
1716 : //__________________________________________________________________________________________________
1717 0 : void DialogImport::setDocumentLocator(
1718 : Reference< xml::sax::XLocator > const & /*xLocator*/ )
1719 : throw (xml::sax::SAXException, RuntimeException)
1720 : {
1721 : // ignored for now: xxx todo
1722 0 : }
1723 : //__________________________________________________________________________________________________
1724 0 : Reference< xml::input::XElement > DialogImport::startRootElement(
1725 : sal_Int32 nUid, OUString const & rLocalName,
1726 : Reference< xml::input::XAttributes > const & xAttributes )
1727 : throw (xml::sax::SAXException, RuntimeException)
1728 : {
1729 0 : if (XMLNS_DIALOGS_UID != nUid)
1730 : {
1731 0 : throw xml::sax::SAXException( "illegal namespace!", Reference< XInterface >(), Any() );
1732 : }
1733 : // window
1734 0 : else if ( rLocalName == "window" )
1735 : {
1736 0 : return new WindowElement( rLocalName, xAttributes, 0, this );
1737 : }
1738 : else
1739 : {
1740 0 : throw xml::sax::SAXException( "illegal root element (expected window) given: " + rLocalName, Reference< XInterface >(), Any() );
1741 : }
1742 : }
1743 : //__________________________________________________________________________________________________
1744 0 : DialogImport::~DialogImport()
1745 : SAL_THROW(())
1746 : {
1747 : #if OSL_DEBUG_LEVEL > 1
1748 : OSL_TRACE( "DialogImport::~DialogImport()." );
1749 : #endif
1750 0 : }
1751 : //__________________________________________________________________________________________________
1752 0 : Reference< util::XNumberFormatsSupplier > const & DialogImport::getNumberFormatsSupplier()
1753 : {
1754 0 : if (! _xSupplier.is())
1755 : {
1756 0 : Reference< util::XNumberFormatsSupplier > xSupplier = util::NumberFormatsSupplier::createWithDefaultLocale( getComponentContext() );
1757 :
1758 0 : ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
1759 0 : if (! _xSupplier.is())
1760 : {
1761 0 : _xSupplier = xSupplier;
1762 0 : }
1763 : }
1764 0 : return _xSupplier;
1765 : }
1766 :
1767 : //__________________________________________________________________________________________________
1768 0 : void DialogImport::addStyle(
1769 : OUString const & rStyleId,
1770 : Reference< xml::input::XElement > const & xStyle )
1771 : SAL_THROW(())
1772 : {
1773 0 : (*_pStyleNames).push_back( rStyleId );
1774 0 : (*_pStyles).push_back( xStyle );
1775 0 : }
1776 : //__________________________________________________________________________________________________
1777 0 : Reference< xml::input::XElement > DialogImport::getStyle(
1778 : OUString const & rStyleId ) const
1779 : SAL_THROW(())
1780 : {
1781 0 : for ( size_t nPos = 0; nPos < (*_pStyleNames).size(); ++nPos )
1782 : {
1783 0 : if ( (*_pStyleNames)[ nPos ] == rStyleId)
1784 : {
1785 0 : return (*_pStyles)[ nPos ];
1786 : }
1787 : }
1788 0 : return 0;
1789 : }
1790 :
1791 0 : Reference< xml::sax::XDocumentHandler > SAL_CALL importDialogModel(
1792 : Reference< container::XNameContainer > const & xDialogModel,
1793 : Reference< XComponentContext > const & xContext,
1794 : Reference< XModel > const & xDocument )
1795 : SAL_THROW( (Exception) )
1796 : {
1797 : // single set of styles and stylenames apply to all containees
1798 0 : :: boost::shared_ptr< ::std::vector< ::rtl::OUString > > pStyleNames( new ::std::vector< ::rtl::OUString > );
1799 0 : :: boost::shared_ptr< ::std::vector< css::uno::Reference< css::xml::input::XElement > > > pStyles( new ::std::vector< css::uno::Reference< css::xml::input::XElement > > );
1800 : return ::xmlscript::createDocumentHandler(
1801 : static_cast< xml::input::XRoot * >(
1802 0 : new DialogImport( xContext, xDialogModel, pStyleNames, pStyles, xDocument ) ) );
1803 : }
1804 : }
1805 :
1806 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|