1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_chart2.hxx"
26*b1cdbd2cSJim Jagielski #include "TitleWrapper.hxx"
27*b1cdbd2cSJim Jagielski #include "macros.hxx"
28*b1cdbd2cSJim Jagielski #include "ContainerHelper.hxx"
29*b1cdbd2cSJim Jagielski #include "ControllerLockGuard.hxx"
30*b1cdbd2cSJim Jagielski
31*b1cdbd2cSJim Jagielski #include <comphelper/InlineContainer.hxx>
32*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/PropertyAttribute.hpp>
33*b1cdbd2cSJim Jagielski #include <com/sun/star/chart2/RelativePosition.hpp>
34*b1cdbd2cSJim Jagielski
35*b1cdbd2cSJim Jagielski #include "CharacterProperties.hxx"
36*b1cdbd2cSJim Jagielski #include "LineProperties.hxx"
37*b1cdbd2cSJim Jagielski #include "FillProperties.hxx"
38*b1cdbd2cSJim Jagielski #include "UserDefinedProperties.hxx"
39*b1cdbd2cSJim Jagielski #include "WrappedCharacterHeightProperty.hxx"
40*b1cdbd2cSJim Jagielski #include "WrappedTextRotationProperty.hxx"
41*b1cdbd2cSJim Jagielski #include "WrappedAutomaticPositionProperties.hxx"
42*b1cdbd2cSJim Jagielski #include "WrappedScaleTextProperties.hxx"
43*b1cdbd2cSJim Jagielski
44*b1cdbd2cSJim Jagielski #include <algorithm>
45*b1cdbd2cSJim Jagielski #include <rtl/ustrbuf.hxx>
46*b1cdbd2cSJim Jagielski
47*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
48*b1cdbd2cSJim Jagielski using ::com::sun::star::beans::Property;
49*b1cdbd2cSJim Jagielski using ::osl::MutexGuard;
50*b1cdbd2cSJim Jagielski using ::rtl::OUString;
51*b1cdbd2cSJim Jagielski using ::com::sun::star::uno::Any;
52*b1cdbd2cSJim Jagielski using ::com::sun::star::uno::Reference;
53*b1cdbd2cSJim Jagielski using ::com::sun::star::uno::Sequence;
54*b1cdbd2cSJim Jagielski
55*b1cdbd2cSJim Jagielski
56*b1cdbd2cSJim Jagielski namespace chart
57*b1cdbd2cSJim Jagielski {
58*b1cdbd2cSJim Jagielski class WrappedTitleStringProperty : public WrappedProperty
59*b1cdbd2cSJim Jagielski {
60*b1cdbd2cSJim Jagielski public:
61*b1cdbd2cSJim Jagielski WrappedTitleStringProperty( const Reference< uno::XComponentContext >& xContext );
62*b1cdbd2cSJim Jagielski virtual ~WrappedTitleStringProperty();
63*b1cdbd2cSJim Jagielski
64*b1cdbd2cSJim Jagielski virtual void setPropertyValue( const Any& rOuterValue, const Reference< beans::XPropertySet >& xInnerPropertySet ) const
65*b1cdbd2cSJim Jagielski throw (beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException);
66*b1cdbd2cSJim Jagielski virtual Any getPropertyValue( const Reference< beans::XPropertySet >& xInnerPropertySet ) const
67*b1cdbd2cSJim Jagielski throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException);
68*b1cdbd2cSJim Jagielski virtual Any getPropertyDefault( const Reference< beans::XPropertyState >& xInnerPropertyState ) const
69*b1cdbd2cSJim Jagielski throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException);
70*b1cdbd2cSJim Jagielski
71*b1cdbd2cSJim Jagielski protected:
72*b1cdbd2cSJim Jagielski Reference< uno::XComponentContext > m_xContext;
73*b1cdbd2cSJim Jagielski };
74*b1cdbd2cSJim Jagielski
WrappedTitleStringProperty(const Reference<uno::XComponentContext> & xContext)75*b1cdbd2cSJim Jagielski WrappedTitleStringProperty::WrappedTitleStringProperty( const Reference< uno::XComponentContext >& xContext )
76*b1cdbd2cSJim Jagielski : ::chart::WrappedProperty( C2U( "String" ), OUString() )
77*b1cdbd2cSJim Jagielski , m_xContext( xContext )
78*b1cdbd2cSJim Jagielski {
79*b1cdbd2cSJim Jagielski }
~WrappedTitleStringProperty()80*b1cdbd2cSJim Jagielski WrappedTitleStringProperty::~WrappedTitleStringProperty()
81*b1cdbd2cSJim Jagielski {
82*b1cdbd2cSJim Jagielski }
83*b1cdbd2cSJim Jagielski
setPropertyValue(const Any & rOuterValue,const Reference<beans::XPropertySet> & xInnerPropertySet) const84*b1cdbd2cSJim Jagielski void WrappedTitleStringProperty::setPropertyValue( const Any& rOuterValue, const Reference< beans::XPropertySet >& xInnerPropertySet ) const
85*b1cdbd2cSJim Jagielski throw (beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException)
86*b1cdbd2cSJim Jagielski {
87*b1cdbd2cSJim Jagielski Reference< chart2::XTitle > xTitle(xInnerPropertySet,uno::UNO_QUERY);
88*b1cdbd2cSJim Jagielski if(xTitle.is())
89*b1cdbd2cSJim Jagielski {
90*b1cdbd2cSJim Jagielski OUString aString;
91*b1cdbd2cSJim Jagielski rOuterValue >>= aString;
92*b1cdbd2cSJim Jagielski TitleHelper::setCompleteString( aString, xTitle, m_xContext );
93*b1cdbd2cSJim Jagielski }
94*b1cdbd2cSJim Jagielski }
getPropertyValue(const Reference<beans::XPropertySet> & xInnerPropertySet) const95*b1cdbd2cSJim Jagielski Any WrappedTitleStringProperty::getPropertyValue( const Reference< beans::XPropertySet >& xInnerPropertySet ) const
96*b1cdbd2cSJim Jagielski throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
97*b1cdbd2cSJim Jagielski {
98*b1cdbd2cSJim Jagielski Any aRet( getPropertyDefault( Reference< beans::XPropertyState >( xInnerPropertySet, uno::UNO_QUERY ) ) );
99*b1cdbd2cSJim Jagielski Reference< chart2::XTitle > xTitle(xInnerPropertySet,uno::UNO_QUERY);
100*b1cdbd2cSJim Jagielski if(xTitle.is())
101*b1cdbd2cSJim Jagielski {
102*b1cdbd2cSJim Jagielski Sequence< Reference< chart2::XFormattedString > > aStrings( xTitle->getText());
103*b1cdbd2cSJim Jagielski
104*b1cdbd2cSJim Jagielski ::rtl::OUStringBuffer aBuf;
105*b1cdbd2cSJim Jagielski for( sal_Int32 i = 0; i < aStrings.getLength(); ++i )
106*b1cdbd2cSJim Jagielski {
107*b1cdbd2cSJim Jagielski aBuf.append( aStrings[ i ]->getString());
108*b1cdbd2cSJim Jagielski }
109*b1cdbd2cSJim Jagielski aRet <<= aBuf.makeStringAndClear();
110*b1cdbd2cSJim Jagielski }
111*b1cdbd2cSJim Jagielski return aRet;
112*b1cdbd2cSJim Jagielski }
getPropertyDefault(const Reference<beans::XPropertyState> &) const113*b1cdbd2cSJim Jagielski Any WrappedTitleStringProperty::getPropertyDefault( const Reference< beans::XPropertyState >& /*xInnerPropertyState*/ ) const
114*b1cdbd2cSJim Jagielski throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
115*b1cdbd2cSJim Jagielski {
116*b1cdbd2cSJim Jagielski return uno::makeAny( rtl::OUString() );//default title is a empty String
117*b1cdbd2cSJim Jagielski }
118*b1cdbd2cSJim Jagielski
119*b1cdbd2cSJim Jagielski //-----------------------------------------------------------------------------
120*b1cdbd2cSJim Jagielski //-----------------------------------------------------------------------------
121*b1cdbd2cSJim Jagielski
122*b1cdbd2cSJim Jagielski class WrappedStackedTextProperty : public WrappedProperty
123*b1cdbd2cSJim Jagielski {
124*b1cdbd2cSJim Jagielski public:
125*b1cdbd2cSJim Jagielski WrappedStackedTextProperty();
126*b1cdbd2cSJim Jagielski virtual ~WrappedStackedTextProperty();
127*b1cdbd2cSJim Jagielski };
128*b1cdbd2cSJim Jagielski
WrappedStackedTextProperty()129*b1cdbd2cSJim Jagielski WrappedStackedTextProperty::WrappedStackedTextProperty()
130*b1cdbd2cSJim Jagielski : ::chart::WrappedProperty( C2U( "StackedText" ), C2U( "StackCharacters" ) )
131*b1cdbd2cSJim Jagielski {
132*b1cdbd2cSJim Jagielski }
~WrappedStackedTextProperty()133*b1cdbd2cSJim Jagielski WrappedStackedTextProperty::~WrappedStackedTextProperty()
134*b1cdbd2cSJim Jagielski {
135*b1cdbd2cSJim Jagielski }
136*b1cdbd2cSJim Jagielski
137*b1cdbd2cSJim Jagielski }// end namespace chart
138*b1cdbd2cSJim Jagielski
139*b1cdbd2cSJim Jagielski
140*b1cdbd2cSJim Jagielski //-----------------------------------------------------------------------------
141*b1cdbd2cSJim Jagielski //-----------------------------------------------------------------------------
142*b1cdbd2cSJim Jagielski //-----------------------------------------------------------------------------
143*b1cdbd2cSJim Jagielski //-----------------------------------------------------------------------------
144*b1cdbd2cSJim Jagielski
145*b1cdbd2cSJim Jagielski namespace
146*b1cdbd2cSJim Jagielski {
147*b1cdbd2cSJim Jagielski static const OUString lcl_aServiceName(
148*b1cdbd2cSJim Jagielski RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.chart.Title" ));
149*b1cdbd2cSJim Jagielski
150*b1cdbd2cSJim Jagielski enum
151*b1cdbd2cSJim Jagielski {
152*b1cdbd2cSJim Jagielski PROP_TITLE_STRING,
153*b1cdbd2cSJim Jagielski PROP_TITLE_TEXT_ROTATION,
154*b1cdbd2cSJim Jagielski PROP_TITLE_TEXT_STACKED
155*b1cdbd2cSJim Jagielski };
156*b1cdbd2cSJim Jagielski
lcl_AddPropertiesToVector(::std::vector<Property> & rOutProperties)157*b1cdbd2cSJim Jagielski void lcl_AddPropertiesToVector(
158*b1cdbd2cSJim Jagielski ::std::vector< Property > & rOutProperties )
159*b1cdbd2cSJim Jagielski {
160*b1cdbd2cSJim Jagielski rOutProperties.push_back(
161*b1cdbd2cSJim Jagielski Property( C2U( "String" ),
162*b1cdbd2cSJim Jagielski PROP_TITLE_STRING,
163*b1cdbd2cSJim Jagielski ::getCppuType( reinterpret_cast< const ::rtl::OUString * >(0)),
164*b1cdbd2cSJim Jagielski beans::PropertyAttribute::BOUND
165*b1cdbd2cSJim Jagielski | beans::PropertyAttribute::MAYBEVOID ));
166*b1cdbd2cSJim Jagielski
167*b1cdbd2cSJim Jagielski rOutProperties.push_back(
168*b1cdbd2cSJim Jagielski Property( C2U( "TextRotation" ),
169*b1cdbd2cSJim Jagielski PROP_TITLE_TEXT_ROTATION,
170*b1cdbd2cSJim Jagielski ::getCppuType( reinterpret_cast< const sal_Int32 * >(0)),
171*b1cdbd2cSJim Jagielski beans::PropertyAttribute::BOUND
172*b1cdbd2cSJim Jagielski | beans::PropertyAttribute::MAYBEDEFAULT ));
173*b1cdbd2cSJim Jagielski rOutProperties.push_back(
174*b1cdbd2cSJim Jagielski Property( C2U( "StackedText" ),
175*b1cdbd2cSJim Jagielski PROP_TITLE_TEXT_STACKED,
176*b1cdbd2cSJim Jagielski ::getBooleanCppuType(),
177*b1cdbd2cSJim Jagielski beans::PropertyAttribute::BOUND
178*b1cdbd2cSJim Jagielski | beans::PropertyAttribute::MAYBEDEFAULT ));
179*b1cdbd2cSJim Jagielski }
180*b1cdbd2cSJim Jagielski
181*b1cdbd2cSJim Jagielski struct StaticTitleWrapperPropertyArray_Initializer
182*b1cdbd2cSJim Jagielski {
operator ()__anonbf4187050111::StaticTitleWrapperPropertyArray_Initializer183*b1cdbd2cSJim Jagielski Sequence< Property >* operator()()
184*b1cdbd2cSJim Jagielski {
185*b1cdbd2cSJim Jagielski static Sequence< Property > aPropSeq( lcl_GetPropertySequence() );
186*b1cdbd2cSJim Jagielski return &aPropSeq;
187*b1cdbd2cSJim Jagielski }
188*b1cdbd2cSJim Jagielski
189*b1cdbd2cSJim Jagielski private:
lcl_GetPropertySequence__anonbf4187050111::StaticTitleWrapperPropertyArray_Initializer190*b1cdbd2cSJim Jagielski Sequence< Property > lcl_GetPropertySequence()
191*b1cdbd2cSJim Jagielski {
192*b1cdbd2cSJim Jagielski ::std::vector< beans::Property > aProperties;
193*b1cdbd2cSJim Jagielski lcl_AddPropertiesToVector( aProperties );
194*b1cdbd2cSJim Jagielski ::chart::CharacterProperties::AddPropertiesToVector( aProperties );
195*b1cdbd2cSJim Jagielski ::chart::LineProperties::AddPropertiesToVector( aProperties );
196*b1cdbd2cSJim Jagielski ::chart::FillProperties::AddPropertiesToVector( aProperties );
197*b1cdbd2cSJim Jagielski //::chart::NamedProperties::AddPropertiesToVector( aProperties );
198*b1cdbd2cSJim Jagielski ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties );
199*b1cdbd2cSJim Jagielski ::chart::wrapper::WrappedAutomaticPositionProperties::addProperties( aProperties );
200*b1cdbd2cSJim Jagielski ::chart::wrapper::WrappedScaleTextProperties::addProperties( aProperties );
201*b1cdbd2cSJim Jagielski
202*b1cdbd2cSJim Jagielski ::std::sort( aProperties.begin(), aProperties.end(),
203*b1cdbd2cSJim Jagielski ::chart::PropertyNameLess() );
204*b1cdbd2cSJim Jagielski
205*b1cdbd2cSJim Jagielski return ::chart::ContainerHelper::ContainerToSequence( aProperties );
206*b1cdbd2cSJim Jagielski }
207*b1cdbd2cSJim Jagielski };
208*b1cdbd2cSJim Jagielski
209*b1cdbd2cSJim Jagielski struct StaticTitleWrapperPropertyArray : public rtl::StaticAggregate< Sequence< Property >, StaticTitleWrapperPropertyArray_Initializer >
210*b1cdbd2cSJim Jagielski {
211*b1cdbd2cSJim Jagielski };
212*b1cdbd2cSJim Jagielski
213*b1cdbd2cSJim Jagielski } // anonymous namespace
214*b1cdbd2cSJim Jagielski
215*b1cdbd2cSJim Jagielski // --------------------------------------------------------------------------------
216*b1cdbd2cSJim Jagielski
217*b1cdbd2cSJim Jagielski namespace chart
218*b1cdbd2cSJim Jagielski {
219*b1cdbd2cSJim Jagielski namespace wrapper
220*b1cdbd2cSJim Jagielski {
221*b1cdbd2cSJim Jagielski
TitleWrapper(::chart::TitleHelper::eTitleType eTitleType,::boost::shared_ptr<Chart2ModelContact> spChart2ModelContact)222*b1cdbd2cSJim Jagielski TitleWrapper::TitleWrapper( ::chart::TitleHelper::eTitleType eTitleType,
223*b1cdbd2cSJim Jagielski ::boost::shared_ptr< Chart2ModelContact > spChart2ModelContact ) :
224*b1cdbd2cSJim Jagielski m_spChart2ModelContact( spChart2ModelContact ),
225*b1cdbd2cSJim Jagielski m_aEventListenerContainer( m_aMutex ),
226*b1cdbd2cSJim Jagielski m_eTitleType(eTitleType)
227*b1cdbd2cSJim Jagielski {
228*b1cdbd2cSJim Jagielski ControllerLockGuard aCtrlLockGuard( Reference< frame::XModel >( m_spChart2ModelContact->getChart2Document(), uno::UNO_QUERY ));
229*b1cdbd2cSJim Jagielski if( !getTitleObject().is() ) //#i83831# create an empty title at the model, thus references to properties can be mapped mapped correctly
230*b1cdbd2cSJim Jagielski TitleHelper::createTitle( m_eTitleType, OUString(), m_spChart2ModelContact->getChartModel(), m_spChart2ModelContact->m_xContext );
231*b1cdbd2cSJim Jagielski }
232*b1cdbd2cSJim Jagielski
~TitleWrapper()233*b1cdbd2cSJim Jagielski TitleWrapper::~TitleWrapper()
234*b1cdbd2cSJim Jagielski {
235*b1cdbd2cSJim Jagielski }
236*b1cdbd2cSJim Jagielski
237*b1cdbd2cSJim Jagielski // ____ XShape ____
getPosition()238*b1cdbd2cSJim Jagielski awt::Point SAL_CALL TitleWrapper::getPosition()
239*b1cdbd2cSJim Jagielski throw (uno::RuntimeException)
240*b1cdbd2cSJim Jagielski {
241*b1cdbd2cSJim Jagielski return m_spChart2ModelContact->GetTitlePosition( this->getTitleObject() );
242*b1cdbd2cSJim Jagielski }
243*b1cdbd2cSJim Jagielski
setPosition(const awt::Point & aPosition)244*b1cdbd2cSJim Jagielski void SAL_CALL TitleWrapper::setPosition( const awt::Point& aPosition )
245*b1cdbd2cSJim Jagielski throw (uno::RuntimeException)
246*b1cdbd2cSJim Jagielski {
247*b1cdbd2cSJim Jagielski Reference< beans::XPropertySet > xPropertySet( this->getInnerPropertySet() );
248*b1cdbd2cSJim Jagielski if(xPropertySet.is())
249*b1cdbd2cSJim Jagielski {
250*b1cdbd2cSJim Jagielski awt::Size aPageSize( m_spChart2ModelContact->GetPageSize() );
251*b1cdbd2cSJim Jagielski
252*b1cdbd2cSJim Jagielski chart2::RelativePosition aRelativePosition;
253*b1cdbd2cSJim Jagielski aRelativePosition.Anchor = drawing::Alignment_TOP_LEFT;
254*b1cdbd2cSJim Jagielski aRelativePosition.Primary = double(aPosition.X)/double(aPageSize.Width);
255*b1cdbd2cSJim Jagielski aRelativePosition.Secondary = double(aPosition.Y)/double(aPageSize.Height);
256*b1cdbd2cSJim Jagielski xPropertySet->setPropertyValue( C2U( "RelativePosition" ), uno::makeAny(aRelativePosition) );
257*b1cdbd2cSJim Jagielski }
258*b1cdbd2cSJim Jagielski }
259*b1cdbd2cSJim Jagielski
getSize()260*b1cdbd2cSJim Jagielski awt::Size SAL_CALL TitleWrapper::getSize()
261*b1cdbd2cSJim Jagielski throw (uno::RuntimeException)
262*b1cdbd2cSJim Jagielski {
263*b1cdbd2cSJim Jagielski return m_spChart2ModelContact->GetTitleSize( this->getTitleObject() );
264*b1cdbd2cSJim Jagielski }
265*b1cdbd2cSJim Jagielski
setSize(const awt::Size &)266*b1cdbd2cSJim Jagielski void SAL_CALL TitleWrapper::setSize( const awt::Size& /*aSize*/ )
267*b1cdbd2cSJim Jagielski throw (beans::PropertyVetoException,
268*b1cdbd2cSJim Jagielski uno::RuntimeException)
269*b1cdbd2cSJim Jagielski {
270*b1cdbd2cSJim Jagielski OSL_ENSURE( false, "trying to set size of title" );
271*b1cdbd2cSJim Jagielski }
272*b1cdbd2cSJim Jagielski
273*b1cdbd2cSJim Jagielski // ____ XShapeDescriptor (base of XShape) ____
getShapeType()274*b1cdbd2cSJim Jagielski OUString SAL_CALL TitleWrapper::getShapeType()
275*b1cdbd2cSJim Jagielski throw (uno::RuntimeException)
276*b1cdbd2cSJim Jagielski {
277*b1cdbd2cSJim Jagielski return C2U( "com.sun.star.chart.ChartTitle" );
278*b1cdbd2cSJim Jagielski }
279*b1cdbd2cSJim Jagielski
280*b1cdbd2cSJim Jagielski // ____ XComponent ____
dispose()281*b1cdbd2cSJim Jagielski void SAL_CALL TitleWrapper::dispose()
282*b1cdbd2cSJim Jagielski throw (uno::RuntimeException)
283*b1cdbd2cSJim Jagielski {
284*b1cdbd2cSJim Jagielski Reference< uno::XInterface > xSource( static_cast< ::cppu::OWeakObject* >( this ) );
285*b1cdbd2cSJim Jagielski m_aEventListenerContainer.disposeAndClear( lang::EventObject( xSource ) );
286*b1cdbd2cSJim Jagielski
287*b1cdbd2cSJim Jagielski // /--
288*b1cdbd2cSJim Jagielski MutexGuard aGuard( GetMutex());
289*b1cdbd2cSJim Jagielski clearWrappedPropertySet();
290*b1cdbd2cSJim Jagielski // \--
291*b1cdbd2cSJim Jagielski }
292*b1cdbd2cSJim Jagielski
addEventListener(const Reference<lang::XEventListener> & xListener)293*b1cdbd2cSJim Jagielski void SAL_CALL TitleWrapper::addEventListener(
294*b1cdbd2cSJim Jagielski const Reference< lang::XEventListener >& xListener )
295*b1cdbd2cSJim Jagielski throw (uno::RuntimeException)
296*b1cdbd2cSJim Jagielski {
297*b1cdbd2cSJim Jagielski m_aEventListenerContainer.addInterface( xListener );
298*b1cdbd2cSJim Jagielski }
299*b1cdbd2cSJim Jagielski
removeEventListener(const Reference<lang::XEventListener> & aListener)300*b1cdbd2cSJim Jagielski void SAL_CALL TitleWrapper::removeEventListener(
301*b1cdbd2cSJim Jagielski const Reference< lang::XEventListener >& aListener )
302*b1cdbd2cSJim Jagielski throw (uno::RuntimeException)
303*b1cdbd2cSJim Jagielski {
304*b1cdbd2cSJim Jagielski m_aEventListenerContainer.removeInterface( aListener );
305*b1cdbd2cSJim Jagielski }
306*b1cdbd2cSJim Jagielski
307*b1cdbd2cSJim Jagielski // ================================================================================
308*b1cdbd2cSJim Jagielski
getFirstCharacterPropertySet()309*b1cdbd2cSJim Jagielski Reference< beans::XPropertySet > TitleWrapper::getFirstCharacterPropertySet()
310*b1cdbd2cSJim Jagielski {
311*b1cdbd2cSJim Jagielski Reference< beans::XPropertySet > xProp;
312*b1cdbd2cSJim Jagielski
313*b1cdbd2cSJim Jagielski Reference< chart2::XTitle > xTitle( this->getTitleObject() );
314*b1cdbd2cSJim Jagielski if( xTitle.is())
315*b1cdbd2cSJim Jagielski {
316*b1cdbd2cSJim Jagielski Sequence< Reference< chart2::XFormattedString > > aStrings( xTitle->getText());
317*b1cdbd2cSJim Jagielski if( aStrings.getLength() > 0 )
318*b1cdbd2cSJim Jagielski xProp.set( aStrings[0], uno::UNO_QUERY );
319*b1cdbd2cSJim Jagielski }
320*b1cdbd2cSJim Jagielski
321*b1cdbd2cSJim Jagielski return xProp;
322*b1cdbd2cSJim Jagielski }
323*b1cdbd2cSJim Jagielski
getFastCharacterPropertyValue(sal_Int32 nHandle,Any & rValue)324*b1cdbd2cSJim Jagielski void TitleWrapper::getFastCharacterPropertyValue( sal_Int32 nHandle, Any& rValue )
325*b1cdbd2cSJim Jagielski {
326*b1cdbd2cSJim Jagielski OSL_ASSERT( FAST_PROPERTY_ID_START_CHAR_PROP <= nHandle &&
327*b1cdbd2cSJim Jagielski nHandle < CharacterProperties::FAST_PROPERTY_ID_END_CHAR_PROP );
328*b1cdbd2cSJim Jagielski
329*b1cdbd2cSJim Jagielski Reference< beans::XPropertySet > xProp( getFirstCharacterPropertySet(), uno::UNO_QUERY );
330*b1cdbd2cSJim Jagielski Reference< beans::XFastPropertySet > xFastProp( xProp, uno::UNO_QUERY );
331*b1cdbd2cSJim Jagielski if(xProp.is())
332*b1cdbd2cSJim Jagielski {
333*b1cdbd2cSJim Jagielski const WrappedProperty* pWrappedProperty = getWrappedProperty( nHandle );
334*b1cdbd2cSJim Jagielski if( pWrappedProperty )
335*b1cdbd2cSJim Jagielski {
336*b1cdbd2cSJim Jagielski rValue = pWrappedProperty->getPropertyValue( xProp );
337*b1cdbd2cSJim Jagielski }
338*b1cdbd2cSJim Jagielski else if( xFastProp.is() )
339*b1cdbd2cSJim Jagielski {
340*b1cdbd2cSJim Jagielski rValue = xFastProp->getFastPropertyValue( nHandle );
341*b1cdbd2cSJim Jagielski }
342*b1cdbd2cSJim Jagielski }
343*b1cdbd2cSJim Jagielski
344*b1cdbd2cSJim Jagielski }
345*b1cdbd2cSJim Jagielski
setFastCharacterPropertyValue(sal_Int32 nHandle,const Any & rValue)346*b1cdbd2cSJim Jagielski void TitleWrapper::setFastCharacterPropertyValue(
347*b1cdbd2cSJim Jagielski sal_Int32 nHandle, const Any& rValue ) throw (uno::Exception)
348*b1cdbd2cSJim Jagielski {
349*b1cdbd2cSJim Jagielski OSL_ASSERT( FAST_PROPERTY_ID_START_CHAR_PROP <= nHandle &&
350*b1cdbd2cSJim Jagielski nHandle < CharacterProperties::FAST_PROPERTY_ID_END_CHAR_PROP );
351*b1cdbd2cSJim Jagielski
352*b1cdbd2cSJim Jagielski Reference< chart2::XTitle > xTitle( this->getTitleObject() );
353*b1cdbd2cSJim Jagielski if( xTitle.is())
354*b1cdbd2cSJim Jagielski {
355*b1cdbd2cSJim Jagielski Sequence< Reference< chart2::XFormattedString > > aStrings( xTitle->getText());
356*b1cdbd2cSJim Jagielski const WrappedProperty* pWrappedProperty = getWrappedProperty( nHandle );
357*b1cdbd2cSJim Jagielski
358*b1cdbd2cSJim Jagielski for( sal_Int32 i = 0; i < aStrings.getLength(); ++i )
359*b1cdbd2cSJim Jagielski {
360*b1cdbd2cSJim Jagielski Reference< beans::XFastPropertySet > xFastPropertySet( aStrings[ i ], uno::UNO_QUERY );
361*b1cdbd2cSJim Jagielski Reference< beans::XPropertySet > xPropSet( xFastPropertySet, uno::UNO_QUERY );
362*b1cdbd2cSJim Jagielski
363*b1cdbd2cSJim Jagielski if( pWrappedProperty )
364*b1cdbd2cSJim Jagielski pWrappedProperty->setPropertyValue( rValue, xPropSet );
365*b1cdbd2cSJim Jagielski else if( xFastPropertySet.is() )
366*b1cdbd2cSJim Jagielski xFastPropertySet->setFastPropertyValue( nHandle, rValue );
367*b1cdbd2cSJim Jagielski }
368*b1cdbd2cSJim Jagielski }
369*b1cdbd2cSJim Jagielski }
370*b1cdbd2cSJim Jagielski
371*b1cdbd2cSJim Jagielski // ================================================================================
372*b1cdbd2cSJim Jagielski // WrappedPropertySet
373*b1cdbd2cSJim Jagielski
setPropertyValue(const OUString & rPropertyName,const Any & rValue)374*b1cdbd2cSJim Jagielski void SAL_CALL TitleWrapper::setPropertyValue( const OUString& rPropertyName, const Any& rValue )
375*b1cdbd2cSJim Jagielski throw (beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException)
376*b1cdbd2cSJim Jagielski {
377*b1cdbd2cSJim Jagielski sal_Int32 nHandle = getInfoHelper().getHandleByName( rPropertyName );
378*b1cdbd2cSJim Jagielski if( CharacterProperties::IsCharacterPropertyHandle( nHandle ) )
379*b1cdbd2cSJim Jagielski {
380*b1cdbd2cSJim Jagielski setFastCharacterPropertyValue( nHandle, rValue );
381*b1cdbd2cSJim Jagielski }
382*b1cdbd2cSJim Jagielski else
383*b1cdbd2cSJim Jagielski WrappedPropertySet::setPropertyValue( rPropertyName, rValue );
384*b1cdbd2cSJim Jagielski }
385*b1cdbd2cSJim Jagielski
getPropertyValue(const OUString & rPropertyName)386*b1cdbd2cSJim Jagielski Any SAL_CALL TitleWrapper::getPropertyValue( const OUString& rPropertyName )
387*b1cdbd2cSJim Jagielski throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
388*b1cdbd2cSJim Jagielski {
389*b1cdbd2cSJim Jagielski Any aRet;
390*b1cdbd2cSJim Jagielski sal_Int32 nHandle = getInfoHelper().getHandleByName( rPropertyName );
391*b1cdbd2cSJim Jagielski if( CharacterProperties::IsCharacterPropertyHandle( nHandle ) )
392*b1cdbd2cSJim Jagielski getFastCharacterPropertyValue( nHandle, aRet );
393*b1cdbd2cSJim Jagielski else
394*b1cdbd2cSJim Jagielski aRet = WrappedPropertySet::getPropertyValue( rPropertyName );
395*b1cdbd2cSJim Jagielski return aRet;
396*b1cdbd2cSJim Jagielski }
397*b1cdbd2cSJim Jagielski
getPropertyState(const OUString & rPropertyName)398*b1cdbd2cSJim Jagielski beans::PropertyState SAL_CALL TitleWrapper::getPropertyState( const OUString& rPropertyName )
399*b1cdbd2cSJim Jagielski throw (beans::UnknownPropertyException, uno::RuntimeException)
400*b1cdbd2cSJim Jagielski {
401*b1cdbd2cSJim Jagielski beans::PropertyState aState( beans::PropertyState_DIRECT_VALUE );
402*b1cdbd2cSJim Jagielski
403*b1cdbd2cSJim Jagielski sal_Int32 nHandle = getInfoHelper().getHandleByName( rPropertyName );
404*b1cdbd2cSJim Jagielski if( CharacterProperties::IsCharacterPropertyHandle( nHandle ) )
405*b1cdbd2cSJim Jagielski {
406*b1cdbd2cSJim Jagielski Reference< beans::XPropertyState > xPropState( getFirstCharacterPropertySet(), uno::UNO_QUERY );
407*b1cdbd2cSJim Jagielski if( xPropState.is() )
408*b1cdbd2cSJim Jagielski {
409*b1cdbd2cSJim Jagielski const WrappedProperty* pWrappedProperty = getWrappedProperty( rPropertyName );
410*b1cdbd2cSJim Jagielski if( pWrappedProperty )
411*b1cdbd2cSJim Jagielski aState = pWrappedProperty->getPropertyState( xPropState );
412*b1cdbd2cSJim Jagielski else
413*b1cdbd2cSJim Jagielski aState = xPropState->getPropertyState( rPropertyName );
414*b1cdbd2cSJim Jagielski }
415*b1cdbd2cSJim Jagielski }
416*b1cdbd2cSJim Jagielski else
417*b1cdbd2cSJim Jagielski aState = WrappedPropertySet::getPropertyState( rPropertyName );
418*b1cdbd2cSJim Jagielski
419*b1cdbd2cSJim Jagielski return aState;
420*b1cdbd2cSJim Jagielski }
setPropertyToDefault(const OUString & rPropertyName)421*b1cdbd2cSJim Jagielski void SAL_CALL TitleWrapper::setPropertyToDefault( const OUString& rPropertyName )
422*b1cdbd2cSJim Jagielski throw (beans::UnknownPropertyException, uno::RuntimeException)
423*b1cdbd2cSJim Jagielski {
424*b1cdbd2cSJim Jagielski sal_Int32 nHandle = getInfoHelper().getHandleByName( rPropertyName );
425*b1cdbd2cSJim Jagielski if( CharacterProperties::IsCharacterPropertyHandle( nHandle ) )
426*b1cdbd2cSJim Jagielski {
427*b1cdbd2cSJim Jagielski Any aDefault = getPropertyDefault( rPropertyName );
428*b1cdbd2cSJim Jagielski setFastCharacterPropertyValue( nHandle, aDefault );
429*b1cdbd2cSJim Jagielski }
430*b1cdbd2cSJim Jagielski else
431*b1cdbd2cSJim Jagielski WrappedPropertySet::setPropertyToDefault( rPropertyName );
432*b1cdbd2cSJim Jagielski }
getPropertyDefault(const OUString & rPropertyName)433*b1cdbd2cSJim Jagielski Any SAL_CALL TitleWrapper::getPropertyDefault( const OUString& rPropertyName )
434*b1cdbd2cSJim Jagielski throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
435*b1cdbd2cSJim Jagielski {
436*b1cdbd2cSJim Jagielski Any aRet;
437*b1cdbd2cSJim Jagielski
438*b1cdbd2cSJim Jagielski sal_Int32 nHandle = getInfoHelper().getHandleByName( rPropertyName );
439*b1cdbd2cSJim Jagielski if( CharacterProperties::IsCharacterPropertyHandle( nHandle ) )
440*b1cdbd2cSJim Jagielski {
441*b1cdbd2cSJim Jagielski Reference< beans::XPropertyState > xPropState( getFirstCharacterPropertySet(), uno::UNO_QUERY );
442*b1cdbd2cSJim Jagielski if( xPropState.is() )
443*b1cdbd2cSJim Jagielski {
444*b1cdbd2cSJim Jagielski const WrappedProperty* pWrappedProperty = getWrappedProperty( rPropertyName );
445*b1cdbd2cSJim Jagielski if( pWrappedProperty )
446*b1cdbd2cSJim Jagielski aRet = pWrappedProperty->getPropertyDefault(xPropState);
447*b1cdbd2cSJim Jagielski else
448*b1cdbd2cSJim Jagielski aRet = xPropState->getPropertyDefault( rPropertyName );
449*b1cdbd2cSJim Jagielski }
450*b1cdbd2cSJim Jagielski }
451*b1cdbd2cSJim Jagielski else
452*b1cdbd2cSJim Jagielski aRet = WrappedPropertySet::getPropertyDefault( rPropertyName );
453*b1cdbd2cSJim Jagielski
454*b1cdbd2cSJim Jagielski return aRet;
455*b1cdbd2cSJim Jagielski }
456*b1cdbd2cSJim Jagielski
addPropertyChangeListener(const OUString & rPropertyName,const Reference<beans::XPropertyChangeListener> & xListener)457*b1cdbd2cSJim Jagielski void SAL_CALL TitleWrapper::addPropertyChangeListener( const OUString& rPropertyName, const Reference< beans::XPropertyChangeListener >& xListener )
458*b1cdbd2cSJim Jagielski throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
459*b1cdbd2cSJim Jagielski {
460*b1cdbd2cSJim Jagielski sal_Int32 nHandle = getInfoHelper().getHandleByName( rPropertyName );
461*b1cdbd2cSJim Jagielski if( CharacterProperties::IsCharacterPropertyHandle( nHandle ) )
462*b1cdbd2cSJim Jagielski {
463*b1cdbd2cSJim Jagielski Reference< beans::XPropertySet > xPropSet( getFirstCharacterPropertySet(), uno::UNO_QUERY );
464*b1cdbd2cSJim Jagielski if( xPropSet.is() )
465*b1cdbd2cSJim Jagielski xPropSet->addPropertyChangeListener( rPropertyName, xListener );
466*b1cdbd2cSJim Jagielski }
467*b1cdbd2cSJim Jagielski else
468*b1cdbd2cSJim Jagielski WrappedPropertySet::addPropertyChangeListener( rPropertyName, xListener );
469*b1cdbd2cSJim Jagielski }
removePropertyChangeListener(const OUString & rPropertyName,const Reference<beans::XPropertyChangeListener> & xListener)470*b1cdbd2cSJim Jagielski void SAL_CALL TitleWrapper::removePropertyChangeListener( const OUString& rPropertyName, const Reference< beans::XPropertyChangeListener >& xListener )
471*b1cdbd2cSJim Jagielski throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
472*b1cdbd2cSJim Jagielski {
473*b1cdbd2cSJim Jagielski sal_Int32 nHandle = getInfoHelper().getHandleByName( rPropertyName );
474*b1cdbd2cSJim Jagielski if( CharacterProperties::IsCharacterPropertyHandle( nHandle ) )
475*b1cdbd2cSJim Jagielski {
476*b1cdbd2cSJim Jagielski Reference< beans::XPropertySet > xPropSet( getFirstCharacterPropertySet(), uno::UNO_QUERY );
477*b1cdbd2cSJim Jagielski if( xPropSet.is() )
478*b1cdbd2cSJim Jagielski xPropSet->removePropertyChangeListener( rPropertyName, xListener );
479*b1cdbd2cSJim Jagielski }
480*b1cdbd2cSJim Jagielski else
481*b1cdbd2cSJim Jagielski WrappedPropertySet::removePropertyChangeListener( rPropertyName, xListener );
482*b1cdbd2cSJim Jagielski }
483*b1cdbd2cSJim Jagielski
484*b1cdbd2cSJim Jagielski // ================================================================================
485*b1cdbd2cSJim Jagielski
486*b1cdbd2cSJim Jagielski //ReferenceSizePropertyProvider
updateReferenceSize()487*b1cdbd2cSJim Jagielski void TitleWrapper::updateReferenceSize()
488*b1cdbd2cSJim Jagielski {
489*b1cdbd2cSJim Jagielski Reference< beans::XPropertySet > xProp( this->getTitleObject(), uno::UNO_QUERY );
490*b1cdbd2cSJim Jagielski if( xProp.is() )
491*b1cdbd2cSJim Jagielski {
492*b1cdbd2cSJim Jagielski if( xProp->getPropertyValue( C2U("ReferencePageSize") ).hasValue() )
493*b1cdbd2cSJim Jagielski xProp->setPropertyValue( C2U("ReferencePageSize"), uno::makeAny(
494*b1cdbd2cSJim Jagielski m_spChart2ModelContact->GetPageSize() ));
495*b1cdbd2cSJim Jagielski }
496*b1cdbd2cSJim Jagielski }
getReferenceSize()497*b1cdbd2cSJim Jagielski Any TitleWrapper::getReferenceSize()
498*b1cdbd2cSJim Jagielski {
499*b1cdbd2cSJim Jagielski Any aRet;
500*b1cdbd2cSJim Jagielski Reference< beans::XPropertySet > xProp( this->getTitleObject(), uno::UNO_QUERY );
501*b1cdbd2cSJim Jagielski if( xProp.is() )
502*b1cdbd2cSJim Jagielski aRet = xProp->getPropertyValue( C2U("ReferencePageSize") );
503*b1cdbd2cSJim Jagielski
504*b1cdbd2cSJim Jagielski return aRet;
505*b1cdbd2cSJim Jagielski }
getCurrentSizeForReference()506*b1cdbd2cSJim Jagielski awt::Size TitleWrapper::getCurrentSizeForReference()
507*b1cdbd2cSJim Jagielski {
508*b1cdbd2cSJim Jagielski return m_spChart2ModelContact->GetPageSize();
509*b1cdbd2cSJim Jagielski }
510*b1cdbd2cSJim Jagielski
511*b1cdbd2cSJim Jagielski // ================================================================================
512*b1cdbd2cSJim Jagielski
getTitleObject()513*b1cdbd2cSJim Jagielski Reference< chart2::XTitle > TitleWrapper::getTitleObject()
514*b1cdbd2cSJim Jagielski {
515*b1cdbd2cSJim Jagielski return TitleHelper::getTitle( m_eTitleType, m_spChart2ModelContact->getChartModel() );
516*b1cdbd2cSJim Jagielski }
517*b1cdbd2cSJim Jagielski
518*b1cdbd2cSJim Jagielski // WrappedPropertySet
519*b1cdbd2cSJim Jagielski
getInnerPropertySet()520*b1cdbd2cSJim Jagielski Reference< beans::XPropertySet > TitleWrapper::getInnerPropertySet()
521*b1cdbd2cSJim Jagielski {
522*b1cdbd2cSJim Jagielski return Reference< beans::XPropertySet >( this->getTitleObject(), uno::UNO_QUERY );
523*b1cdbd2cSJim Jagielski }
524*b1cdbd2cSJim Jagielski
getPropertySequence()525*b1cdbd2cSJim Jagielski const Sequence< beans::Property >& TitleWrapper::getPropertySequence()
526*b1cdbd2cSJim Jagielski {
527*b1cdbd2cSJim Jagielski return *StaticTitleWrapperPropertyArray::get();
528*b1cdbd2cSJim Jagielski }
529*b1cdbd2cSJim Jagielski
createWrappedProperties()530*b1cdbd2cSJim Jagielski const std::vector< WrappedProperty* > TitleWrapper::createWrappedProperties()
531*b1cdbd2cSJim Jagielski {
532*b1cdbd2cSJim Jagielski ::std::vector< ::chart::WrappedProperty* > aWrappedProperties;
533*b1cdbd2cSJim Jagielski
534*b1cdbd2cSJim Jagielski aWrappedProperties.push_back( new WrappedTitleStringProperty( m_spChart2ModelContact->m_xContext ) );
535*b1cdbd2cSJim Jagielski aWrappedProperties.push_back( new WrappedTextRotationProperty( m_eTitleType==TitleHelper::Y_AXIS_TITLE || m_eTitleType==TitleHelper::X_AXIS_TITLE ) );
536*b1cdbd2cSJim Jagielski aWrappedProperties.push_back( new WrappedStackedTextProperty() );
537*b1cdbd2cSJim Jagielski WrappedCharacterHeightProperty::addWrappedProperties( aWrappedProperties, this );
538*b1cdbd2cSJim Jagielski WrappedAutomaticPositionProperties::addWrappedProperties( aWrappedProperties );
539*b1cdbd2cSJim Jagielski WrappedScaleTextProperties::addWrappedProperties( aWrappedProperties, m_spChart2ModelContact );
540*b1cdbd2cSJim Jagielski
541*b1cdbd2cSJim Jagielski return aWrappedProperties;
542*b1cdbd2cSJim Jagielski }
543*b1cdbd2cSJim Jagielski
544*b1cdbd2cSJim Jagielski // ================================================================================
545*b1cdbd2cSJim Jagielski
getSupportedServiceNames_Static()546*b1cdbd2cSJim Jagielski Sequence< OUString > TitleWrapper::getSupportedServiceNames_Static()
547*b1cdbd2cSJim Jagielski {
548*b1cdbd2cSJim Jagielski Sequence< OUString > aServices( 4 );
549*b1cdbd2cSJim Jagielski aServices[ 0 ] = C2U( "com.sun.star.chart.ChartTitle" );
550*b1cdbd2cSJim Jagielski aServices[ 1 ] = C2U( "com.sun.star.drawing.Shape" );
551*b1cdbd2cSJim Jagielski aServices[ 2 ] = C2U( "com.sun.star.xml.UserDefinedAttributeSupplier" );
552*b1cdbd2cSJim Jagielski aServices[ 3 ] = C2U( "com.sun.star.style.CharacterProperties" );
553*b1cdbd2cSJim Jagielski // aServices[ 4 ] = C2U( "com.sun.star.beans.PropertySet" );
554*b1cdbd2cSJim Jagielski // aServices[ 5 ] = C2U( "com.sun.star.drawing.FillProperties" );
555*b1cdbd2cSJim Jagielski // aServices[ 6 ] = C2U( "com.sun.star.drawing.LineProperties" );
556*b1cdbd2cSJim Jagielski
557*b1cdbd2cSJim Jagielski return aServices;
558*b1cdbd2cSJim Jagielski }
559*b1cdbd2cSJim Jagielski
560*b1cdbd2cSJim Jagielski // implement XServiceInfo methods basing upon getSupportedServiceNames_Static
561*b1cdbd2cSJim Jagielski APPHELPER_XSERVICEINFO_IMPL( TitleWrapper, lcl_aServiceName );
562*b1cdbd2cSJim Jagielski
563*b1cdbd2cSJim Jagielski } // namespace wrapper
564*b1cdbd2cSJim Jagielski } // namespace chart
565