1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
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 .
19 #ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_SECTION_HXX
20 #define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_SECTION_HXX
22 #include <com/sun/star/report/XSection.hpp>
23 #include <cppuhelper/compbase6.hxx>
24 #include <comphelper/broadcasthelper.hxx>
25 #include <comphelper/uno3.hxx>
26 #include <comphelper/types.hxx>
27 #include <cppuhelper/propertysetmixin.hxx>
28 #include <com/sun/star/uno/XComponentContext.hpp>
29 #include <com/sun/star/drawing/XDrawPage.hpp>
30 #include <com/sun/star/drawing/XShapeGrouper.hpp>
31 #include <com/sun/star/drawing/XShapes.hpp>
32 #include <com/sun/star/form/XFormsSupplier2.hpp>
33 #include <com/sun/star/lang/XUnoTunnel.hpp>
34 #include <com/sun/star/lang/XServiceInfo.hpp>
35 #include <rtl/ref.hxx>
37 namespace reportdesign
39 typedef ::cppu::WeakComponentImplHelper6
40 < ::com::sun::star::report::XSection
41 , ::com::sun::star::lang::XServiceInfo
42 , ::com::sun::star::lang::XUnoTunnel
43 // SvxDrawPage forward
44 , ::com::sun::star::drawing::XDrawPage
45 , ::com::sun::star::drawing::XShapeGrouper
46 // SvxFmDrawPage forward
47 , ::com::sun::star::form::XFormsSupplier2
49 typedef ::cppu::PropertySetMixin
<com::sun::star::report::XSection
> SectionPropertySet
;
51 class OSection
: public comphelper::OMutexAndBroadcastHelper
,
53 public SectionPropertySet
55 ::cppu::OInterfaceContainerHelper m_aContainerListeners
;
56 ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XComponentContext
> m_xContext
;
57 ::com::sun::star::uno::Reference
< ::com::sun::star::drawing::XDrawPage
> m_xDrawPage
;
58 ::com::sun::star::uno::Reference
< ::com::sun::star::drawing::XShapeGrouper
> m_xDrawPage_ShapeGrouper
;
59 ::com::sun::star::uno::Reference
< ::com::sun::star::form::XFormsSupplier2
> m_xDrawPage_FormSupplier
;
60 ::com::sun::star::uno::Reference
< ::com::sun::star::lang::XUnoTunnel
> m_xDrawPage_Tunnel
;
61 ::com::sun::star::uno::WeakReference
< ::com::sun::star::report::XGroup
> m_xGroup
;
62 ::com::sun::star::uno::WeakReference
< ::com::sun::star::report::XReportDefinition
> m_xReportDefinition
;
64 OUString m_sConditionalPrintExpression
;
65 ::sal_uInt32 m_nHeight
;
66 ::sal_Int32 m_nBackgroundColor
;
67 ::sal_Int16 m_nForceNewPage
;
68 ::sal_Int16 m_nNewRowOrCol
;
70 bool m_bRepeatSection
;
72 bool m_bBacktransparent
;
73 bool m_bInRemoveNotify
;
74 bool m_bInInsertNotify
;
77 OSection(const OSection
&) SAL_DELETED_FUNCTION
;
78 OSection
& operator=(const OSection
&) SAL_DELETED_FUNCTION
;
80 template <typename T
> void set( const OUString
& _sProperty
86 ::osl::MutexGuard
aGuard(m_aMutex
);
87 if ( _member
!= _Value
)
89 prepareSet(_sProperty
, ::com::sun::star::uno::makeAny(_member
), ::com::sun::star::uno::makeAny(_Value
), &l
);
95 void set( const OUString
& _sProperty
101 ::osl::MutexGuard
aGuard(m_aMutex
);
102 if ( _member
!= _Value
)
104 prepareSet(_sProperty
, ::com::sun::star::uno::makeAny(_member
), ::com::sun::star::uno::makeAny(_Value
), &l
);
111 /** checks if this section is either the page header or footer and if so it throws an UnknownPropertyException
114 void checkNotPageHeaderFooter();
118 // TODO: VirtualFunctionFinder: This is virtual function!
122 /** this function is called upon disposing the component
124 // TODO: VirtualFunctionFinder: This is virtual function!
126 virtual void SAL_CALL
disposing() SAL_OVERRIDE
;
128 typedef rtl::Reference
<OSection
> TSection
;
131 OSection(const ::com::sun::star::uno::Reference
< ::com::sun::star::report::XReportDefinition
>& xParentDef
132 ,const ::com::sun::star::uno::Reference
< ::com::sun::star::report::XGroup
>& xParentGroup
133 ,const com::sun::star::uno::Reference
< com::sun::star::uno::XComponentContext
>& context
,
134 ::com::sun::star::uno::Sequence
< OUString
> const&);
136 static ::com::sun::star::uno::Reference
< ::com::sun::star::report::XSection
>
137 createOSection(const ::com::sun::star::uno::Reference
< ::com::sun::star::report::XReportDefinition
>& _xParent
138 ,const com::sun::star::uno::Reference
< com::sun::star::uno::XComponentContext
>& context
,bool _bPageSection
=false);
139 static ::com::sun::star::uno::Reference
< ::com::sun::star::report::XSection
>
140 createOSection(const ::com::sun::star::uno::Reference
< ::com::sun::star::report::XGroup
>& _xParent
141 ,const com::sun::star::uno::Reference
< com::sun::star::uno::XComponentContext
>& context
,bool _bPageSection
=false);
143 DECLARE_XINTERFACE( )
145 // ::com::sun::star::lang::XServiceInfo
146 virtual sal_Bool SAL_CALL
supportsService( const OUString
& ServiceName
) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
147 virtual OUString SAL_CALL
getImplementationName( ) throw(::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
148 virtual ::com::sun::star::uno::Sequence
< OUString
> SAL_CALL
getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
150 static ::com::sun::star::uno::Sequence
< OUString
> getSupportedServiceNames_Static() throw( ::com::sun::star::uno::RuntimeException
);
151 // com::sun::star::beans::XPropertySet
152 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySetInfo
> SAL_CALL
getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
153 virtual void SAL_CALL
setPropertyValue( const OUString
& aPropertyName
, const ::com::sun::star::uno::Any
& aValue
) throw (::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::beans::PropertyVetoException
, ::com::sun::star::lang::IllegalArgumentException
, ::com::sun::star::lang::WrappedTargetException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
154 virtual ::com::sun::star::uno::Any SAL_CALL
getPropertyValue( const OUString
& PropertyName
) throw (::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::lang::WrappedTargetException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
155 virtual void SAL_CALL
addPropertyChangeListener( const OUString
& aPropertyName
, const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertyChangeListener
>& xListener
) throw (::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::lang::WrappedTargetException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
156 virtual void SAL_CALL
removePropertyChangeListener( const OUString
& aPropertyName
, const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertyChangeListener
>& aListener
) throw (::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::lang::WrappedTargetException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
157 virtual void SAL_CALL
addVetoableChangeListener( const OUString
& PropertyName
, const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XVetoableChangeListener
>& aListener
) throw (::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::lang::WrappedTargetException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
158 virtual void SAL_CALL
removeVetoableChangeListener( const OUString
& PropertyName
, const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XVetoableChangeListener
>& aListener
) throw (::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::lang::WrappedTargetException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
161 virtual sal_Bool SAL_CALL
getVisible() throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
162 virtual void SAL_CALL
setVisible( sal_Bool _visible
) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
163 virtual OUString SAL_CALL
getName() throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
164 virtual void SAL_CALL
setName( const OUString
& _name
) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
165 virtual ::sal_uInt32 SAL_CALL
getHeight() throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
166 virtual void SAL_CALL
setHeight( ::sal_uInt32 _height
) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
167 virtual ::sal_Int32 SAL_CALL
getBackColor() throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
168 virtual void SAL_CALL
setBackColor( ::sal_Int32 _backgroundcolor
) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
169 virtual sal_Bool SAL_CALL
getBackTransparent() throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
170 virtual void SAL_CALL
setBackTransparent( sal_Bool _backtransparent
) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
171 virtual OUString SAL_CALL
getConditionalPrintExpression() throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
172 virtual void SAL_CALL
setConditionalPrintExpression( const OUString
& _conditionalprintexpression
) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
173 virtual ::sal_Int16 SAL_CALL
getForceNewPage() throw (::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
174 virtual void SAL_CALL
setForceNewPage( ::sal_Int16 _forcenewpage
) throw (::com::sun::star::lang::IllegalArgumentException
, ::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
175 virtual ::sal_Int16 SAL_CALL
getNewRowOrCol() throw (::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
176 virtual void SAL_CALL
setNewRowOrCol( ::sal_Int16 _newroworcol
) throw (::com::sun::star::lang::IllegalArgumentException
, ::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
177 virtual sal_Bool SAL_CALL
getKeepTogether() throw (::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
178 virtual void SAL_CALL
setKeepTogether( sal_Bool _keeptogether
) throw (::com::sun::star::lang::IllegalArgumentException
, ::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
179 virtual sal_Bool SAL_CALL
getCanGrow() throw (::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
180 virtual void SAL_CALL
setCanGrow( sal_Bool _cangrow
) throw (::com::sun::star::lang::IllegalArgumentException
, ::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
181 virtual sal_Bool SAL_CALL
getCanShrink() throw (::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
182 virtual void SAL_CALL
setCanShrink( sal_Bool _canshrink
) throw (::com::sun::star::lang::IllegalArgumentException
, ::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
183 virtual sal_Bool SAL_CALL
getRepeatSection() throw (::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
184 virtual void SAL_CALL
setRepeatSection( sal_Bool _repeatsection
) throw (::com::sun::star::lang::IllegalArgumentException
, ::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
185 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::report::XGroup
> SAL_CALL
getGroup() throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
186 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::report::XReportDefinition
> SAL_CALL
getReportDefinition() throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
189 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
> SAL_CALL
getParent( ) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
190 virtual void SAL_CALL
setParent( const ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
>& Parent
) throw (::com::sun::star::lang::NoSupportException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
192 virtual void SAL_CALL
addContainerListener( const ::com::sun::star::uno::Reference
< ::com::sun::star::container::XContainerListener
>& xListener
) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
193 virtual void SAL_CALL
removeContainerListener( const ::com::sun::star::uno::Reference
< ::com::sun::star::container::XContainerListener
>& xListener
) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
195 virtual ::com::sun::star::uno::Type SAL_CALL
getElementType( ) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
196 virtual sal_Bool SAL_CALL
hasElements( ) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
198 virtual void SAL_CALL
add( const ::com::sun::star::uno::Reference
< ::com::sun::star::drawing::XShape
>& xShape
) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
199 virtual void SAL_CALL
remove( const ::com::sun::star::uno::Reference
< ::com::sun::star::drawing::XShape
>& xShape
) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
201 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::drawing::XShapeGroup
> SAL_CALL
group( const ::com::sun::star::uno::Reference
< ::com::sun::star::drawing::XShapes
>& xShapes
) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
202 virtual void SAL_CALL
ungroup( const ::com::sun::star::uno::Reference
< ::com::sun::star::drawing::XShapeGroup
>& aGroup
) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
205 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::container::XNameContainer
> SAL_CALL
getForms() throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
207 virtual sal_Bool SAL_CALL
hasForms() throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
210 virtual ::sal_Int32 SAL_CALL
getCount( ) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
211 virtual ::com::sun::star::uno::Any SAL_CALL
getByIndex( ::sal_Int32 Index
) throw (::com::sun::star::lang::IndexOutOfBoundsException
, ::com::sun::star::lang::WrappedTargetException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
212 // XEnumerationAccess
213 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::container::XEnumeration
> SAL_CALL
createEnumeration( ) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
216 virtual void SAL_CALL
dispose() throw(::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
217 virtual void SAL_CALL
addEventListener(const ::com::sun::star::uno::Reference
< ::com::sun::star::lang::XEventListener
> & aListener
) throw(::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
219 cppu::WeakComponentImplHelperBase::addEventListener(aListener
);
221 virtual void SAL_CALL
removeEventListener(const ::com::sun::star::uno::Reference
< ::com::sun::star::lang::XEventListener
> & aListener
) throw(::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
223 cppu::WeakComponentImplHelperBase::removeEventListener(aListener
);
226 // com::sun::star::lang::XUnoTunnel
227 virtual sal_Int64 SAL_CALL
getSomething( const ::com::sun::star::uno::Sequence
< sal_Int8
>& aIdentifier
) throw(::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
228 static OSection
* getImplementation( const ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
>& _rxComponent
);
229 static ::com::sun::star::uno::Sequence
< sal_Int8
> getUnoTunnelImplementationId();
231 void notifyElementAdded(const ::com::sun::star::uno::Reference
< ::com::sun::star::drawing::XShape
>& xShape
);
232 void notifyElementRemoved(const ::com::sun::star::uno::Reference
< ::com::sun::star::drawing::XShape
>& xShape
);
235 #endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_SECTION_HXX
237 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */