1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 #include "oox/drawingml/textfieldcontext.hxx"
29 #include "oox/drawingml/textparagraphpropertiescontext.hxx"
30 #include "oox/drawingml/textcharacterpropertiescontext.hxx"
31 #include "oox/drawingml/textfield.hxx"
32 
33 using ::rtl::OUString;
34 using namespace ::oox::core;
35 using namespace ::com::sun::star::uno;
36 using namespace ::com::sun::star::xml::sax;
37 
38 namespace oox { namespace drawingml {
39 
40 TextFieldContext::TextFieldContext( ContextHandler& rParent,
41             const Reference< XFastAttributeList >& rXAttributes,
42             TextField& rTextField)
43     : ContextHandler( rParent )
44         , mrTextField( rTextField )
45         , mbIsInText( false )
46 {
47     mrTextField.setUuid( rXAttributes->getOptionalValue( XML_id ) );
48     mrTextField.setType( rXAttributes->getOptionalValue( XML_type ) );
49 }
50 
51 void TextFieldContext::endFastElement( sal_Int32 aElementToken ) throw (SAXException, RuntimeException)
52 {
53     if( aElementToken == (A_TOKEN( t )) )
54     {
55         mbIsInText = false;
56     }
57 }
58 
59 void TextFieldContext::characters( const OUString& aChars ) throw (SAXException, RuntimeException)
60 {
61     if( mbIsInText )
62     {
63         mrTextField.getText() += aChars;
64     }
65 }
66 
67 Reference< XFastContextHandler > TextFieldContext::createFastChildContext( sal_Int32 aElementToken, const Reference< XFastAttributeList >& xAttribs )
68     throw (SAXException, RuntimeException)
69 {
70     Reference< XFastContextHandler > xRet;
71     switch( aElementToken )
72     {
73     case A_TOKEN( rPr ):
74         xRet.set( new TextCharacterPropertiesContext( *this, xAttribs, mrTextField.getTextCharacterProperties() ) );
75         break;
76     case A_TOKEN( pPr ):
77         xRet.set( new TextParagraphPropertiesContext( *this, xAttribs, mrTextField.getTextParagraphProperties() ) );
78         break;
79     case A_TOKEN( t ):
80         mbIsInText = true;
81         break;
82     }
83     if ( !xRet.is() )
84         xRet.set( this );
85     return xRet;
86 }
87 
88 
89 } }
90