1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
30 #include "vbaheaderfooter.hxx"
31 #include <vbahelper/vbahelper.hxx>
32 #include <tools/diagnose_ex.h>
33 #include <ooo/vba/word/WdHeaderFooterIndex.hpp>
34 #include <com/sun/star/text/XText.hpp>
35 #include <com/sun/star/text/XTextDocument.hpp>
36 #include <com/sun/star/drawing/XDrawPageSupplier.hpp>
37 #include "vbarange.hxx"
38 #include <vbahelper/vbashapes.hxx>
40 using namespace ::ooo::vba
;
41 using namespace ::com::sun::star
;
43 SwVbaHeaderFooter::SwVbaHeaderFooter( const uno::Reference
< ooo::vba::XHelperInterface
>& rParent
, const uno::Reference
< uno::XComponentContext
>& rContext
, const uno::Reference
< frame::XModel
>& xModel
, const uno::Reference
< beans::XPropertySet
>& rProps
, sal_Bool isHeader
, sal_Int32 index
) throw ( uno::RuntimeException
) : SwVbaHeaderFooter_BASE( rParent
, rContext
), mxModel( xModel
), mxPageStyleProps( rProps
), mbHeader( isHeader
), mnIndex( index
)
47 sal_Bool SAL_CALL
SwVbaHeaderFooter::getIsHeader() throw (uno::RuntimeException
)
52 sal_Bool SAL_CALL
SwVbaHeaderFooter::getLinkToPrevious() throw (uno::RuntimeException
)
58 void SAL_CALL
SwVbaHeaderFooter::setLinkToPrevious( ::sal_Bool
/*_linktoprevious*/ ) throw (uno::RuntimeException
)
60 // not support in Writer
63 uno::Reference
< word::XRange
> SAL_CALL
SwVbaHeaderFooter::getRange() throw (uno::RuntimeException
)
65 rtl::OUString sPropsNameText
;
68 sPropsNameText
= rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("HeaderText") );
72 sPropsNameText
= rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("FooterText") );
74 if( mnIndex
== word::WdHeaderFooterIndex::wdHeaderFooterEvenPages
)
76 sPropsNameText
.concat( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Left") ) );
79 uno::Reference
< text::XText
> xText( mxPageStyleProps
->getPropertyValue( sPropsNameText
), uno::UNO_QUERY_THROW
);
80 uno::Reference
< text::XTextDocument
> xDocument( mxModel
, uno::UNO_QUERY_THROW
);
81 return uno::Reference
< word::XRange
>( new SwVbaRange( this, mxContext
, xDocument
, xText
->getStart(), xText
->getEnd(), xText
) );
85 SwVbaHeaderFooter::Shapes( const uno::Any
& index
) throw (uno::RuntimeException
)
87 uno::Reference
< drawing::XDrawPageSupplier
> xDrawPageSupplier( mxModel
, uno::UNO_QUERY_THROW
);
88 //uno::Reference< drawing::XShapes > xShapes( xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY_THROW );
89 uno::Reference
< container::XIndexAccess
> xIndexAccess( xDrawPageSupplier
->getDrawPage(), uno::UNO_QUERY_THROW
);
90 uno::Reference
< XCollection
> xCol( new ScVbaShapes( this, mxContext
, xIndexAccess
, mxModel
) );
91 if ( index
.hasValue() )
92 return xCol
->Item( index
, uno::Any() );
93 return uno::makeAny( xCol
);
97 SwVbaHeaderFooter::getServiceImplName()
99 static rtl::OUString
sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaHeaderFooter") );
103 uno::Sequence
< rtl::OUString
>
104 SwVbaHeaderFooter::getServiceNames()
106 static uno::Sequence
< rtl::OUString
> aServiceNames
;
107 if ( aServiceNames
.getLength() == 0 )
109 aServiceNames
.realloc( 1 );
110 aServiceNames
[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Pane" ) );
112 return aServiceNames
;