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 <osl/diagnose.h> 29 #include "oox/helper/attributelist.hxx" 30 #include "oox/drawingml/guidcontext.hxx" 31 #include "oox/drawingml/table/tablecontext.hxx" 32 #include "oox/drawingml/table/tableproperties.hxx" 33 #include "oox/drawingml/table/tablestylecontext.hxx" 34 #include "oox/drawingml/table/tablerowcontext.hxx" 35 36 using namespace ::oox::core; 37 using namespace ::com::sun::star; 38 using ::rtl::OUString; 39 40 namespace oox { namespace drawingml { namespace table { 41 42 TableContext::TableContext( ContextHandler& rParent, ShapePtr pShapePtr ) 43 : ShapeContext( rParent, ShapePtr(), pShapePtr ) 44 , mrTableProperties( *pShapePtr->getTableProperties().get() ) 45 { 46 pShapePtr->setTableType(); 47 } 48 49 TableContext::~TableContext() 50 { 51 } 52 53 uno::Reference< xml::sax::XFastContextHandler > SAL_CALL 54 TableContext::createFastChildContext( ::sal_Int32 aElementToken, const uno::Reference< xml::sax::XFastAttributeList >& xAttribs ) 55 throw ( xml::sax::SAXException, uno::RuntimeException) 56 { 57 uno::Reference< xml::sax::XFastContextHandler > xRet; 58 59 switch( aElementToken ) 60 { 61 case A_TOKEN( tblPr ): // CT_TableProperties 62 { 63 AttributeList aAttribs( xAttribs ); 64 mrTableProperties.isRtl() = aAttribs.getBool( XML_rtl, sal_False ); 65 mrTableProperties.isFirstRow() = aAttribs.getBool( XML_firstRow, sal_False ); 66 mrTableProperties.isFirstCol() = aAttribs.getBool( XML_firstCol, sal_False ); 67 mrTableProperties.isLastRow() = aAttribs.getBool( XML_lastRow, sal_False ); 68 mrTableProperties.isLastCol() = aAttribs.getBool( XML_lastCol, sal_False ); 69 mrTableProperties.isBandRow() = aAttribs.getBool( XML_bandRow, sal_False ); 70 mrTableProperties.isBandCol() = aAttribs.getBool( XML_bandCol, sal_False ); 71 } 72 break; 73 case A_TOKEN( tableStyle ): // CT_TableStyle 74 { 75 boost::shared_ptr< TableStyle >& rTableStyle = mrTableProperties.getTableStyle(); 76 rTableStyle.reset( new TableStyle() ); 77 xRet = new TableStyleContext( *this, xAttribs, *rTableStyle ); 78 } 79 break; 80 case A_TOKEN( tableStyleId ): // ST_Guid 81 xRet.set( new oox::drawingml::GuidContext( *this, mrTableProperties.getStyleId() ) ); 82 break; 83 84 case A_TOKEN( tblGrid ): // CT_TableGrid 85 break; 86 case A_TOKEN( gridCol ): // CT_TableCol 87 { 88 std::vector< sal_Int32 >& rvTableGrid( mrTableProperties.getTableGrid() ); 89 rvTableGrid.push_back( xAttribs->getOptionalValue( XML_w ).toInt32() ); 90 } 91 break; 92 case A_TOKEN( tr ): // CT_TableRow 93 { 94 std::vector< TableRow >& rvTableRows( mrTableProperties.getTableRows() ); 95 rvTableRows.resize( rvTableRows.size() + 1 ); 96 xRet.set( new TableRowContext( *this, xAttribs, rvTableRows.back() ) ); 97 } 98 break; 99 } 100 101 if( !xRet.is() ) 102 xRet.set( this ); 103 104 return xRet; 105 } 106 107 } } } 108