xref: /trunk/main/reportdesign/source/core/api/FixedText.cxx (revision 7c736323a3a78d11537e3f8c912d232c6973a7c3)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 #include "precompiled_reportdesign.hxx"
24 #include "FixedText.hxx"
25 #include <com/sun/star/beans/PropertyAttribute.hpp>
26 #ifndef REPORTDESIGN_SHARED_CORESTRINGS_HRC
27 #include "corestrings.hrc"
28 #endif
29 #include <com/sun/star/beans/XPropertyState.hpp>
30 #ifndef REPORTDESIGN_CORE_RESOURCE_HRC_
31 #include "core_resource.hrc"
32 #endif
33 #include "core_resource.hxx"
34 #include <comphelper/sequence.hxx>
35 #include "Tools.hxx"
36 #include <tools/debug.hxx>
37 #include <comphelper/property.hxx>
38 #include "FormatCondition.hxx"
39 #include <com/sun/star/text/ParagraphVertAlign.hpp>
40 #include "ReportHelperImpl.hxx"
41 // =============================================================================
42 namespace reportdesign
43 {
44 // =============================================================================
45     using namespace com::sun::star;
46     using namespace comphelper;
47 uno::Sequence< ::rtl::OUString > lcl_getFixedTextOptionals()
48 {
49     ::rtl::OUString pProps[] = { PROPERTY_DATAFIELD,PROPERTY_MASTERFIELDS,PROPERTY_DETAILFIELDS };
50     return uno::Sequence< ::rtl::OUString >(pProps,sizeof(pProps)/sizeof(pProps[0]));
51 }
52 DBG_NAME( rpt_OFixedText )
53 // -----------------------------------------------------------------------------
54 OFixedText::OFixedText(uno::Reference< uno::XComponentContext > const & _xContext)
55 :FixedTextBase(m_aMutex)
56 ,FixedTextPropertySet(_xContext,static_cast< Implements >(IMPLEMENTS_PROPERTY_SET),lcl_getFixedTextOptionals())
57 ,m_aProps(m_aMutex,static_cast< container::XContainer*>( this ),_xContext)
58 {
59     DBG_CTOR( rpt_OFixedText,NULL);
60     m_aProps.aComponent.m_sName  = RPT_RESSTRING(RID_STR_FIXEDTEXT,m_aProps.aComponent.m_xContext->getServiceManager());
61     m_aProps.aComponent.m_nBorder = 0; // no border
62 }
63 // -----------------------------------------------------------------------------
64 OFixedText::OFixedText(uno::Reference< uno::XComponentContext > const & _xContext
65                        ,const uno::Reference< lang::XMultiServiceFactory>& _xFactory
66                        ,uno::Reference< drawing::XShape >& _xShape)
67 :FixedTextBase(m_aMutex)
68 ,FixedTextPropertySet(_xContext,static_cast< Implements >(IMPLEMENTS_PROPERTY_SET),lcl_getFixedTextOptionals())
69 ,m_aProps(m_aMutex,static_cast< container::XContainer*>( this ),_xContext)
70 {
71     DBG_CTOR( rpt_OFixedText,NULL);
72     m_aProps.aComponent.m_sName  = RPT_RESSTRING(RID_STR_FIXEDTEXT,m_aProps.aComponent.m_xContext->getServiceManager());
73     m_aProps.aComponent.m_nBorder = 0; // no border
74     m_aProps.aComponent.m_xFactory = _xFactory;
75     osl_incrementInterlockedCount( &m_refCount );
76     {
77         m_aProps.aComponent.setShape(_xShape,this,m_refCount);
78     }
79     osl_decrementInterlockedCount( &m_refCount );
80 }
81 // -----------------------------------------------------------------------------
82 OFixedText::~OFixedText()
83 {
84     DBG_DTOR( rpt_OFixedText,NULL);
85 }
86 // -----------------------------------------------------------------------------
87 IMPLEMENT_FORWARD_REFCOUNT( OFixedText, FixedTextBase )
88 // --------------------------------------------------------------------------------
89 uno::Any SAL_CALL OFixedText::queryInterface( const uno::Type& _rType ) throw (uno::RuntimeException)
90 {
91     uno::Any aReturn = FixedTextBase::queryInterface(_rType);
92     if ( !aReturn.hasValue() )
93         aReturn = FixedTextPropertySet::queryInterface(_rType);
94     if ( !aReturn.hasValue() && OReportControlModel::isInterfaceForbidden(_rType) )
95         return aReturn;
96 
97     return aReturn.hasValue() ? aReturn : (m_aProps.aComponent.m_xProxy.is() ? m_aProps.aComponent.m_xProxy->queryAggregation(_rType) : aReturn);
98 }
99 
100 //IMPLEMENT_FORWARD_XINTERFACE2(OFixedText,FixedTextBase,FixedTextPropertySet)
101 // -----------------------------------------------------------------------------
102 void SAL_CALL OFixedText::dispose() throw(uno::RuntimeException)
103 {
104     FixedTextPropertySet::dispose();
105     cppu::WeakComponentImplHelperBase::dispose();
106     uno::Reference< report::XFixedText> xHoldAlive = this;
107 }
108 // -----------------------------------------------------------------------------
109 ::rtl::OUString OFixedText::getImplementationName_Static(  ) throw(uno::RuntimeException)
110 {
111     return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.report.OFixedText"));
112 }
113 
114 //--------------------------------------------------------------------------
115 ::rtl::OUString SAL_CALL OFixedText::getImplementationName(  ) throw(uno::RuntimeException)
116 {
117     return getImplementationName_Static();
118 }
119 //--------------------------------------------------------------------------
120 uno::Sequence< ::rtl::OUString > OFixedText::getSupportedServiceNames_Static(  ) throw(uno::RuntimeException)
121 {
122     uno::Sequence< ::rtl::OUString > aServices(1);//2);
123     aServices.getArray()[0] = SERVICE_FIXEDTEXT;
124     //aServices.getArray()[1] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.form.component.FixedText"));
125 
126     return aServices;
127 }
128 //------------------------------------------------------------------------------
129 uno::Reference< uno::XInterface > OFixedText::create(uno::Reference< uno::XComponentContext > const & xContext)
130 {
131     return *(new OFixedText(xContext));
132 }
133 
134 //--------------------------------------------------------------------------
135 uno::Sequence< ::rtl::OUString > SAL_CALL OFixedText::getSupportedServiceNames(  ) throw(uno::RuntimeException)
136 {
137     return getSupportedServiceNames_Static();
138 }
139 //------------------------------------------------------------------------------
140 sal_Bool SAL_CALL OFixedText::supportsService(const ::rtl::OUString& ServiceName) throw( uno::RuntimeException )
141 {
142     return ::comphelper::existsValue(ServiceName,getSupportedServiceNames_Static());
143 }
144 // -----------------------------------------------------------------------------
145 // XReportComponent
146 REPORTCOMPONENT_IMPL(OFixedText,m_aProps.aComponent)
147 REPORTCOMPONENT_IMPL2(OFixedText,m_aProps.aComponent)
148 REPORTCOMPONENT_NOMASTERDETAIL(OFixedText)
149 REPORTCONTROLFORMAT_IMPL(OFixedText,m_aProps.aFormatProperties)
150 // -----------------------------------------------------------------------------
151 uno::Reference< beans::XPropertySetInfo > SAL_CALL OFixedText::getPropertySetInfo(  ) throw(uno::RuntimeException)
152 {
153     return FixedTextPropertySet::getPropertySetInfo();
154 }
155 // -----------------------------------------------------------------------------
156 void SAL_CALL OFixedText::setPropertyValue( const ::rtl::OUString& aPropertyName, const uno::Any& aValue ) throw (beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException)
157 {
158     FixedTextPropertySet::setPropertyValue( aPropertyName, aValue );
159 }
160 // -----------------------------------------------------------------------------
161 uno::Any SAL_CALL OFixedText::getPropertyValue( const ::rtl::OUString& PropertyName ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
162 {
163     return FixedTextPropertySet::getPropertyValue( PropertyName);
164 }
165 // -----------------------------------------------------------------------------
166 void SAL_CALL OFixedText::addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const uno::Reference< beans::XPropertyChangeListener >& xListener ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
167 {
168     FixedTextPropertySet::addPropertyChangeListener( aPropertyName, xListener );
169 }
170 // -----------------------------------------------------------------------------
171 void SAL_CALL OFixedText::removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const uno::Reference< beans::XPropertyChangeListener >& aListener ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
172 {
173     FixedTextPropertySet::removePropertyChangeListener( aPropertyName, aListener );
174 }
175 // -----------------------------------------------------------------------------
176 void SAL_CALL OFixedText::addVetoableChangeListener( const ::rtl::OUString& PropertyName, const uno::Reference< beans::XVetoableChangeListener >& aListener ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
177 {
178     FixedTextPropertySet::addVetoableChangeListener( PropertyName, aListener );
179 }
180 // -----------------------------------------------------------------------------
181 void SAL_CALL OFixedText::removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const uno::Reference< beans::XVetoableChangeListener >& aListener ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
182 {
183     FixedTextPropertySet::removeVetoableChangeListener( PropertyName, aListener );
184 }
185 // -----------------------------------------------------------------------------
186 // XReportControlModel
187 ::rtl::OUString SAL_CALL OFixedText::getDataField() throw ( beans::UnknownPropertyException, uno::RuntimeException)
188 {
189     throw beans::UnknownPropertyException();
190 }
191 // -----------------------------------------------------------------------------
192 void SAL_CALL OFixedText::setDataField( const ::rtl::OUString& /*_datafield*/ ) throw (lang::IllegalArgumentException, beans::UnknownPropertyException, uno::RuntimeException)
193 {
194     throw beans::UnknownPropertyException();
195 }
196 // -----------------------------------------------------------------------------
197 
198 // -----------------------------------------------------------------------------
199 ::sal_Bool SAL_CALL OFixedText::getPrintWhenGroupChange() throw (beans::UnknownPropertyException, uno::RuntimeException)
200 {
201     ::osl::MutexGuard aGuard(m_aMutex);
202     return m_aProps.bPrintWhenGroupChange;
203 }
204 // -----------------------------------------------------------------------------
205 void SAL_CALL OFixedText::setPrintWhenGroupChange( ::sal_Bool _printwhengroupchange ) throw (beans::UnknownPropertyException, uno::RuntimeException)
206 {
207     set(PROPERTY_PRINTWHENGROUPCHANGE,_printwhengroupchange,m_aProps.bPrintWhenGroupChange);
208 }
209 // -----------------------------------------------------------------------------
210 ::rtl::OUString SAL_CALL OFixedText::getConditionalPrintExpression() throw (beans::UnknownPropertyException, uno::RuntimeException)
211 {
212     ::osl::MutexGuard aGuard(m_aMutex);
213     return m_aProps.aConditionalPrintExpression;
214 }
215 // -----------------------------------------------------------------------------
216 void SAL_CALL OFixedText::setConditionalPrintExpression( const ::rtl::OUString& _conditionalprintexpression ) throw (beans::UnknownPropertyException, uno::RuntimeException)
217 {
218     set(PROPERTY_CONDITIONALPRINTEXPRESSION,_conditionalprintexpression,m_aProps.aConditionalPrintExpression);
219 }
220 // -----------------------------------------------------------------------------
221 
222 // XCloneable
223 uno::Reference< util::XCloneable > SAL_CALL OFixedText::createClone(  ) throw (uno::RuntimeException)
224 {
225     uno::Reference< report::XReportComponent> xSource = this;
226     uno::Reference< report::XFixedText> xSet(cloneObject(xSource,m_aProps.aComponent.m_xFactory,SERVICE_FIXEDTEXT),uno::UNO_QUERY_THROW);
227     return xSet.get();
228 }
229 // -----------------------------------------------------------------------------
230 
231 // XFixedText
232 ::rtl::OUString SAL_CALL OFixedText::getLabel() throw (uno::RuntimeException)
233 {
234     ::osl::MutexGuard aGuard(m_aMutex);
235     return m_sLabel;
236 }
237 // -----------------------------------------------------------------------------
238 void SAL_CALL OFixedText::setLabel( const ::rtl::OUString& _label ) throw (uno::RuntimeException)
239 {
240     set(PROPERTY_LABEL,_label,m_sLabel);
241 }
242 // -----------------------------------------------------------------------------
243 // XChild
244 uno::Reference< uno::XInterface > SAL_CALL OFixedText::getParent(  ) throw (uno::RuntimeException)
245 {
246     return OShapeHelper::getParent(this);
247 }
248 // -----------------------------------------------------------------------------
249 void SAL_CALL OFixedText::setParent( const uno::Reference< uno::XInterface >& Parent ) throw (lang::NoSupportException, uno::RuntimeException)
250 {
251     OShapeHelper::setParent(Parent,this);
252 }
253 // -----------------------------------------------------------------------------
254 uno::Reference< report::XFormatCondition > SAL_CALL OFixedText::createFormatCondition(  ) throw (uno::Exception, uno::RuntimeException)
255 {
256     return new OFormatCondition(m_aProps.aComponent.m_xContext);
257 }
258 // -----------------------------------------------------------------------------
259 // XContainer
260 void SAL_CALL OFixedText::addContainerListener( const uno::Reference< container::XContainerListener >& xListener ) throw (uno::RuntimeException)
261 {
262     m_aProps.addContainerListener(xListener);
263 }
264 // -----------------------------------------------------------------------------
265 void SAL_CALL OFixedText::removeContainerListener( const uno::Reference< container::XContainerListener >& xListener ) throw (uno::RuntimeException)
266 {
267     m_aProps.removeContainerListener(xListener);
268 }
269 // -----------------------------------------------------------------------------
270 // XElementAccess
271 uno::Type SAL_CALL OFixedText::getElementType(  ) throw (uno::RuntimeException)
272 {
273     return ::getCppuType(static_cast< uno::Reference<report::XFormatCondition>*>(NULL));
274 }
275 // -----------------------------------------------------------------------------
276 ::sal_Bool SAL_CALL OFixedText::hasElements(  ) throw (uno::RuntimeException)
277 {
278     return m_aProps.hasElements();
279 }
280 // -----------------------------------------------------------------------------
281 // XIndexContainer
282 void SAL_CALL OFixedText::insertByIndex( ::sal_Int32 Index, const uno::Any& Element ) throw (lang::IllegalArgumentException, lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException)
283 {
284     m_aProps.insertByIndex(Index,Element);
285 }
286 // -----------------------------------------------------------------------------
287 void SAL_CALL OFixedText::removeByIndex( ::sal_Int32 Index ) throw (lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException)
288 {
289     m_aProps.removeByIndex(Index);
290 }
291 // -----------------------------------------------------------------------------
292 // XIndexReplace
293 void SAL_CALL OFixedText::replaceByIndex( ::sal_Int32 Index, const uno::Any& Element ) throw (lang::IllegalArgumentException, lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException)
294 {
295     m_aProps.replaceByIndex(Index,Element);
296 }
297 // -----------------------------------------------------------------------------
298 // XIndexAccess
299 ::sal_Int32 SAL_CALL OFixedText::getCount(  ) throw (uno::RuntimeException)
300 {
301     return m_aProps.getCount();
302 }
303 // -----------------------------------------------------------------------------
304 uno::Any SAL_CALL OFixedText::getByIndex( ::sal_Int32 Index ) throw (lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException)
305 {
306     return m_aProps.getByIndex( Index );
307 }
308 // -----------------------------------------------------------------------------
309 // XShape
310 awt::Point SAL_CALL OFixedText::getPosition(  ) throw (uno::RuntimeException)
311 {
312     return OShapeHelper::getPosition(this);
313 }
314 // -----------------------------------------------------------------------------
315 void SAL_CALL OFixedText::setPosition( const awt::Point& aPosition ) throw (uno::RuntimeException)
316 {
317     OShapeHelper::setPosition(aPosition,this);
318 }
319 // -----------------------------------------------------------------------------
320 awt::Size SAL_CALL OFixedText::getSize(  ) throw (uno::RuntimeException)
321 {
322     return OShapeHelper::getSize(this);
323 }
324 // -----------------------------------------------------------------------------
325 void SAL_CALL OFixedText::setSize( const awt::Size& aSize ) throw (beans::PropertyVetoException, uno::RuntimeException)
326 {
327     OShapeHelper::setSize(aSize,this);
328 }
329 // -----------------------------------------------------------------------------
330 
331 // XShapeDescriptor
332 ::rtl::OUString SAL_CALL OFixedText::getShapeType(  ) throw (uno::RuntimeException)
333 {
334     return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.ControlShape"));
335 }
336 // -----------------------------------------------------------------------------
337 // -----------------------------------------------------------------------------
338 // =============================================================================
339 } // namespace reportdesign
340 // =============================================================================
341 
342