xref: /AOO41X/main/chart2/source/tools/TitleHelper.cxx (revision cde9e8dc2218e857da4894ecba5c903312256674)
1*cde9e8dcSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*cde9e8dcSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*cde9e8dcSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*cde9e8dcSAndrew Rist  * distributed with this work for additional information
6*cde9e8dcSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*cde9e8dcSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*cde9e8dcSAndrew Rist  * "License"); you may not use this file except in compliance
9*cde9e8dcSAndrew Rist  * with the License.  You may obtain a copy of the License at
10cdf0e10cSrcweir  *
11*cde9e8dcSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
13*cde9e8dcSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*cde9e8dcSAndrew Rist  * software distributed under the License is distributed on an
15*cde9e8dcSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*cde9e8dcSAndrew Rist  * KIND, either express or implied.  See the License for the
17*cde9e8dcSAndrew Rist  * specific language governing permissions and limitations
18*cde9e8dcSAndrew Rist  * under the License.
19cdf0e10cSrcweir  *
20*cde9e8dcSAndrew Rist  *************************************************************/
21*cde9e8dcSAndrew Rist 
22*cde9e8dcSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_chart2.hxx"
26cdf0e10cSrcweir #include "TitleHelper.hxx"
27cdf0e10cSrcweir #include "ChartModelHelper.hxx"
28cdf0e10cSrcweir #include "macros.hxx"
29cdf0e10cSrcweir #include "AxisHelper.hxx"
30cdf0e10cSrcweir #include "DiagramHelper.hxx"
31cdf0e10cSrcweir #include <com/sun/star/chart2/XChartDocument.hpp>
32cdf0e10cSrcweir #include <rtl/ustrbuf.hxx>
33cdf0e10cSrcweir 
34cdf0e10cSrcweir //.............................................................................
35cdf0e10cSrcweir namespace chart
36cdf0e10cSrcweir {
37cdf0e10cSrcweir //.............................................................................
38cdf0e10cSrcweir 
39cdf0e10cSrcweir using namespace ::com::sun::star;
40cdf0e10cSrcweir using namespace ::com::sun::star::chart2;
41cdf0e10cSrcweir using ::com::sun::star::uno::Reference;
42cdf0e10cSrcweir 
lcl_getTitleParentFromDiagram(TitleHelper::eTitleType nTitleIndex,const uno::Reference<XDiagram> & xDiagram)43cdf0e10cSrcweir uno::Reference< XTitled > lcl_getTitleParentFromDiagram(
44cdf0e10cSrcweir       TitleHelper::eTitleType nTitleIndex
45cdf0e10cSrcweir     , const uno::Reference< XDiagram >& xDiagram )
46cdf0e10cSrcweir {
47cdf0e10cSrcweir     uno::Reference< XTitled > xResult;
48cdf0e10cSrcweir 
49cdf0e10cSrcweir     if( nTitleIndex == TitleHelper::TITLE_AT_STANDARD_X_AXIS_POSITION ||
50cdf0e10cSrcweir         nTitleIndex == TitleHelper::TITLE_AT_STANDARD_Y_AXIS_POSITION )
51cdf0e10cSrcweir     {
52cdf0e10cSrcweir         bool bDummy = false;
53cdf0e10cSrcweir         bool bIsVertical = DiagramHelper::getVertical( xDiagram, bDummy, bDummy );
54cdf0e10cSrcweir 
55cdf0e10cSrcweir         if( nTitleIndex == TitleHelper::TITLE_AT_STANDARD_Y_AXIS_POSITION )
56cdf0e10cSrcweir             nTitleIndex = bIsVertical ? TitleHelper::X_AXIS_TITLE : TitleHelper::Y_AXIS_TITLE;
57cdf0e10cSrcweir         else
58cdf0e10cSrcweir             nTitleIndex = bIsVertical ? TitleHelper::Y_AXIS_TITLE : TitleHelper::X_AXIS_TITLE;
59cdf0e10cSrcweir     }
60cdf0e10cSrcweir 
61cdf0e10cSrcweir 
62cdf0e10cSrcweir     switch( nTitleIndex )
63cdf0e10cSrcweir     {
64cdf0e10cSrcweir         case TitleHelper::SUB_TITLE:
65cdf0e10cSrcweir             if( xDiagram.is())
66cdf0e10cSrcweir                 xResult.set( xDiagram, uno::UNO_QUERY );
67cdf0e10cSrcweir             break;
68cdf0e10cSrcweir         case TitleHelper::X_AXIS_TITLE:
69cdf0e10cSrcweir             if( xDiagram.is())
70cdf0e10cSrcweir                 xResult.set( AxisHelper::getAxis( 0, true, xDiagram ), uno::UNO_QUERY );
71cdf0e10cSrcweir             break;
72cdf0e10cSrcweir         case TitleHelper::Y_AXIS_TITLE:
73cdf0e10cSrcweir             if( xDiagram.is())
74cdf0e10cSrcweir                 xResult.set( AxisHelper::getAxis( 1, true, xDiagram ), uno::UNO_QUERY );
75cdf0e10cSrcweir             break;
76cdf0e10cSrcweir         case TitleHelper::Z_AXIS_TITLE:
77cdf0e10cSrcweir             if( xDiagram.is())
78cdf0e10cSrcweir                 xResult.set( AxisHelper::getAxis( 2, true, xDiagram ), uno::UNO_QUERY );
79cdf0e10cSrcweir             break;
80cdf0e10cSrcweir         case TitleHelper::SECONDARY_X_AXIS_TITLE:
81cdf0e10cSrcweir             if( xDiagram.is())
82cdf0e10cSrcweir                 xResult.set( AxisHelper::getAxis( 0, false, xDiagram ), uno::UNO_QUERY );
83cdf0e10cSrcweir             break;
84cdf0e10cSrcweir         case TitleHelper::SECONDARY_Y_AXIS_TITLE:
85cdf0e10cSrcweir             if( xDiagram.is())
86cdf0e10cSrcweir                 xResult.set( AxisHelper::getAxis( 1, false, xDiagram ), uno::UNO_QUERY );
87cdf0e10cSrcweir             break;
88cdf0e10cSrcweir 
89cdf0e10cSrcweir         case TitleHelper::MAIN_TITLE:
90cdf0e10cSrcweir         default:
91cdf0e10cSrcweir             OSL_ENSURE( false, "Unsupported Title-Type requested" );
92cdf0e10cSrcweir             break;
93cdf0e10cSrcweir     }
94cdf0e10cSrcweir 
95cdf0e10cSrcweir     return xResult;
96cdf0e10cSrcweir }
97cdf0e10cSrcweir 
lcl_getTitleParent(TitleHelper::eTitleType nTitleIndex,const uno::Reference<frame::XModel> & xModel)98cdf0e10cSrcweir uno::Reference< XTitled > lcl_getTitleParent( TitleHelper::eTitleType nTitleIndex
99cdf0e10cSrcweir                                               , const uno::Reference< frame::XModel >& xModel )
100cdf0e10cSrcweir {
101cdf0e10cSrcweir     uno::Reference< XTitled > xResult;
102cdf0e10cSrcweir     uno::Reference< XChartDocument > xChartDoc( xModel, uno::UNO_QUERY );
103cdf0e10cSrcweir     uno::Reference< XDiagram > xDiagram;
104cdf0e10cSrcweir     if( xChartDoc.is())
105cdf0e10cSrcweir         xDiagram.set( xChartDoc->getFirstDiagram());
106cdf0e10cSrcweir 
107cdf0e10cSrcweir     switch( nTitleIndex )
108cdf0e10cSrcweir     {
109cdf0e10cSrcweir         case TitleHelper::MAIN_TITLE:
110cdf0e10cSrcweir             xResult.set( xModel, uno::UNO_QUERY );
111cdf0e10cSrcweir             break;
112cdf0e10cSrcweir         case TitleHelper::SUB_TITLE:
113cdf0e10cSrcweir         case TitleHelper::X_AXIS_TITLE:
114cdf0e10cSrcweir         case TitleHelper::Y_AXIS_TITLE:
115cdf0e10cSrcweir         case TitleHelper::Z_AXIS_TITLE:
116cdf0e10cSrcweir         case TitleHelper::TITLE_AT_STANDARD_X_AXIS_POSITION:
117cdf0e10cSrcweir         case TitleHelper::TITLE_AT_STANDARD_Y_AXIS_POSITION:
118cdf0e10cSrcweir         case TitleHelper::SECONDARY_X_AXIS_TITLE:
119cdf0e10cSrcweir         case TitleHelper::SECONDARY_Y_AXIS_TITLE:
120cdf0e10cSrcweir             xResult.set( lcl_getTitleParentFromDiagram( nTitleIndex, xDiagram ));
121cdf0e10cSrcweir             break;
122cdf0e10cSrcweir         default:
123cdf0e10cSrcweir             OSL_ENSURE( false, "Unsupported Title-Type requested" );
124cdf0e10cSrcweir             break;
125cdf0e10cSrcweir     }
126cdf0e10cSrcweir 
127cdf0e10cSrcweir     return xResult;
128cdf0e10cSrcweir }
129cdf0e10cSrcweir 
getTitle(TitleHelper::eTitleType nTitleIndex,const uno::Reference<frame::XModel> & xModel)130cdf0e10cSrcweir uno::Reference< XTitle > TitleHelper::getTitle( TitleHelper::eTitleType nTitleIndex
131cdf0e10cSrcweir                             , const uno::Reference< frame::XModel >& xModel )
132cdf0e10cSrcweir {
133cdf0e10cSrcweir     uno::Reference< XTitled > xTitled( lcl_getTitleParent( nTitleIndex, xModel ) );
134cdf0e10cSrcweir     if( xTitled.is())
135cdf0e10cSrcweir         return xTitled->getTitleObject();
136cdf0e10cSrcweir     return NULL;
137cdf0e10cSrcweir }
138cdf0e10cSrcweir 
createTitle(TitleHelper::eTitleType eTitleType,const rtl::OUString & rTitleText,const uno::Reference<frame::XModel> & xModel,const uno::Reference<uno::XComponentContext> & xContext,ReferenceSizeProvider * pRefSizeProvider)139cdf0e10cSrcweir uno::Reference< XTitle > TitleHelper::createTitle(
140cdf0e10cSrcweir       TitleHelper::eTitleType eTitleType
141cdf0e10cSrcweir     , const rtl::OUString& rTitleText
142cdf0e10cSrcweir     , const uno::Reference< frame::XModel >& xModel
143cdf0e10cSrcweir     , const uno::Reference< uno::XComponentContext > & xContext
144cdf0e10cSrcweir     , ReferenceSizeProvider * pRefSizeProvider )
145cdf0e10cSrcweir {
146cdf0e10cSrcweir     uno::Reference< XTitle > xTitle;
147cdf0e10cSrcweir     uno::Reference< XTitled > xTitled( lcl_getTitleParent( eTitleType, xModel ) );
148cdf0e10cSrcweir 
149cdf0e10cSrcweir     if( !xTitled.is() )
150cdf0e10cSrcweir     {
151cdf0e10cSrcweir         uno::Reference< XDiagram > xDiagram( ChartModelHelper::findDiagram( xModel ) );
152cdf0e10cSrcweir         uno::Reference< chart2::XAxis > xAxis;
153cdf0e10cSrcweir         switch( eTitleType )
154cdf0e10cSrcweir         {
155cdf0e10cSrcweir             case TitleHelper::SECONDARY_X_AXIS_TITLE:
156cdf0e10cSrcweir                 xAxis = AxisHelper::createAxis( 0, false, xDiagram, xContext );
157cdf0e10cSrcweir                 break;
158cdf0e10cSrcweir             case TitleHelper::SECONDARY_Y_AXIS_TITLE:
159cdf0e10cSrcweir                 xAxis = AxisHelper::createAxis( 1, false, xDiagram, xContext );
160cdf0e10cSrcweir                break;
161cdf0e10cSrcweir             default:
162cdf0e10cSrcweir                break;
163cdf0e10cSrcweir         }
164cdf0e10cSrcweir         uno::Reference< beans::XPropertySet > xProps( xAxis, uno::UNO_QUERY );
165cdf0e10cSrcweir         if( xProps.is() )
166cdf0e10cSrcweir         {
167cdf0e10cSrcweir             xProps->setPropertyValue( C2U( "Show" ), uno::makeAny( sal_False ) );
168cdf0e10cSrcweir             xTitled = lcl_getTitleParent( eTitleType, xModel );
169cdf0e10cSrcweir         }
170cdf0e10cSrcweir     }
171cdf0e10cSrcweir 
172cdf0e10cSrcweir     if(xTitled.is())
173cdf0e10cSrcweir     {
174cdf0e10cSrcweir         uno::Reference< XDiagram > xDiagram( ChartModelHelper::findDiagram( xModel ) );
175cdf0e10cSrcweir 
176cdf0e10cSrcweir         xTitle.set( xContext->getServiceManager()->createInstanceWithContext(
177cdf0e10cSrcweir                         C2U( "com.sun.star.chart2.Title" ),
178cdf0e10cSrcweir                         xContext ), uno::UNO_QUERY );
179cdf0e10cSrcweir 
180cdf0e10cSrcweir         if(xTitle.is())
181cdf0e10cSrcweir         {
182cdf0e10cSrcweir             // default char height (main: 13.0 == default)
183cdf0e10cSrcweir             float fDefaultCharHeightSub = 11.0;
184cdf0e10cSrcweir             float fDefaultCharHeightAxis = 9.0;
185cdf0e10cSrcweir             switch( eTitleType )
186cdf0e10cSrcweir             {
187cdf0e10cSrcweir                 case TitleHelper::SUB_TITLE:
188cdf0e10cSrcweir                     TitleHelper::setCompleteString(
189cdf0e10cSrcweir                         rTitleText, xTitle, xContext, & fDefaultCharHeightSub );
190cdf0e10cSrcweir                     break;
191cdf0e10cSrcweir                 case TitleHelper::X_AXIS_TITLE:
192cdf0e10cSrcweir                 case TitleHelper::Y_AXIS_TITLE:
193cdf0e10cSrcweir                 case TitleHelper::Z_AXIS_TITLE:
194cdf0e10cSrcweir                 case TitleHelper::TITLE_AT_STANDARD_X_AXIS_POSITION:
195cdf0e10cSrcweir                 case TitleHelper::TITLE_AT_STANDARD_Y_AXIS_POSITION:
196cdf0e10cSrcweir                 case TitleHelper::SECONDARY_X_AXIS_TITLE:
197cdf0e10cSrcweir                 case TitleHelper::SECONDARY_Y_AXIS_TITLE:
198cdf0e10cSrcweir                     TitleHelper::setCompleteString(
199cdf0e10cSrcweir                         rTitleText, xTitle, xContext, & fDefaultCharHeightAxis );
200cdf0e10cSrcweir                     break;
201cdf0e10cSrcweir                 default:
202cdf0e10cSrcweir                     TitleHelper::setCompleteString( rTitleText, xTitle, xContext );
203cdf0e10cSrcweir                     break;
204cdf0e10cSrcweir             }
205cdf0e10cSrcweir 
206cdf0e10cSrcweir             // set/clear autoscale
207cdf0e10cSrcweir             if( pRefSizeProvider )
208cdf0e10cSrcweir                 pRefSizeProvider->setValuesAtTitle( xTitle );
209cdf0e10cSrcweir 
210cdf0e10cSrcweir             xTitled->setTitleObject( xTitle );
211cdf0e10cSrcweir 
212cdf0e10cSrcweir             //default rotation 90 degree for y axis title in normal coordinatesystems or for x axis title for swapped coordinatesystems
213cdf0e10cSrcweir             if( eTitleType == TitleHelper::X_AXIS_TITLE ||
214cdf0e10cSrcweir                 eTitleType == TitleHelper::Y_AXIS_TITLE ||
215cdf0e10cSrcweir                 eTitleType == TitleHelper::SECONDARY_X_AXIS_TITLE ||
216cdf0e10cSrcweir                 eTitleType == TitleHelper::SECONDARY_Y_AXIS_TITLE )
217cdf0e10cSrcweir 
218cdf0e10cSrcweir             {
219cdf0e10cSrcweir                 try
220cdf0e10cSrcweir                 {
221cdf0e10cSrcweir                     bool bDummy = false;
222cdf0e10cSrcweir                     bool bIsVertical = DiagramHelper::getVertical( xDiagram, bDummy, bDummy );
223cdf0e10cSrcweir 
224cdf0e10cSrcweir                     Reference< beans::XPropertySet > xTitleProps( xTitle, uno::UNO_QUERY );
225cdf0e10cSrcweir                     if( xTitleProps.is() )
226cdf0e10cSrcweir                     {
227cdf0e10cSrcweir                         double fNewAngleDegree = 90.0;
228cdf0e10cSrcweir                         if( (!bIsVertical && eTitleType == TitleHelper::Y_AXIS_TITLE)
229cdf0e10cSrcweir                             || (bIsVertical && eTitleType == TitleHelper::X_AXIS_TITLE)
230cdf0e10cSrcweir                             || (!bIsVertical && eTitleType == TitleHelper::SECONDARY_Y_AXIS_TITLE)
231cdf0e10cSrcweir                             || (bIsVertical && eTitleType == TitleHelper::SECONDARY_X_AXIS_TITLE) )
232cdf0e10cSrcweir                             xTitleProps->setPropertyValue( C2U( "TextRotation" ), uno::makeAny( fNewAngleDegree ));
233cdf0e10cSrcweir                     }
234cdf0e10cSrcweir                 }
235cdf0e10cSrcweir                 catch( uno::Exception & ex )
236cdf0e10cSrcweir                 {
237cdf0e10cSrcweir                     ASSERT_EXCEPTION( ex );
238cdf0e10cSrcweir                 }
239cdf0e10cSrcweir             }
240cdf0e10cSrcweir         }
241cdf0e10cSrcweir     }
242cdf0e10cSrcweir     return xTitle;
243cdf0e10cSrcweir 
244cdf0e10cSrcweir }
245cdf0e10cSrcweir 
getCompleteString(const uno::Reference<XTitle> & xTitle)246cdf0e10cSrcweir rtl::OUString TitleHelper::getCompleteString( const uno::Reference< XTitle >& xTitle )
247cdf0e10cSrcweir {
248cdf0e10cSrcweir     rtl::OUString aRet;
249cdf0e10cSrcweir     if(!xTitle.is())
250cdf0e10cSrcweir         return aRet;
251cdf0e10cSrcweir     uno::Sequence< uno::Reference< XFormattedString > > aStringList = xTitle->getText();
252cdf0e10cSrcweir     for( sal_Int32 nN=0; nN<aStringList.getLength();nN++ )
253cdf0e10cSrcweir         aRet += aStringList[nN]->getString();
254cdf0e10cSrcweir     return aRet;
255cdf0e10cSrcweir }
256cdf0e10cSrcweir 
setCompleteString(const rtl::OUString & rNewText,const uno::Reference<XTitle> & xTitle,const uno::Reference<uno::XComponentContext> & xContext,float * pDefaultCharHeight)257cdf0e10cSrcweir void TitleHelper::setCompleteString( const rtl::OUString& rNewText
258cdf0e10cSrcweir                     , const uno::Reference< XTitle >& xTitle
259cdf0e10cSrcweir                     , const uno::Reference< uno::XComponentContext > & xContext
260cdf0e10cSrcweir                     , float * pDefaultCharHeight /* = 0 */ )
261cdf0e10cSrcweir {
262cdf0e10cSrcweir     //the format of the first old text portion will be maintained if there is any
263cdf0e10cSrcweir     if(!xTitle.is())
264cdf0e10cSrcweir         return;
265cdf0e10cSrcweir 
266cdf0e10cSrcweir     rtl::OUString aNewText = rNewText;
267cdf0e10cSrcweir 
268cdf0e10cSrcweir     bool bStacked = false;
269cdf0e10cSrcweir     uno::Reference< beans::XPropertySet > xTitleProperties( xTitle, uno::UNO_QUERY );
270cdf0e10cSrcweir     if( xTitleProperties.is() )
271cdf0e10cSrcweir         xTitleProperties->getPropertyValue( C2U( "StackCharacters" ) ) >>= bStacked;
272cdf0e10cSrcweir 
273cdf0e10cSrcweir     if( bStacked )
274cdf0e10cSrcweir     {
275cdf0e10cSrcweir         //#i99841# remove linebreaks that were added for vertical stacking
276cdf0e10cSrcweir         rtl::OUStringBuffer aUnstackedStr;
277cdf0e10cSrcweir         rtl::OUStringBuffer aSource(rNewText);
278cdf0e10cSrcweir 
279cdf0e10cSrcweir         bool bBreakIgnored = false;
280cdf0e10cSrcweir         sal_Int32 nLen = rNewText.getLength();
281cdf0e10cSrcweir         for( sal_Int32 nPos = 0; nPos < nLen; ++nPos )
282cdf0e10cSrcweir         {
283cdf0e10cSrcweir             sal_Unicode aChar = aSource.charAt( nPos );
284cdf0e10cSrcweir             if( aChar != '\n' )
285cdf0e10cSrcweir             {
286cdf0e10cSrcweir                 aUnstackedStr.append( aChar );
287cdf0e10cSrcweir                 bBreakIgnored = false;
288cdf0e10cSrcweir             }
289cdf0e10cSrcweir             else if( aChar == '\n' && bBreakIgnored )
290cdf0e10cSrcweir                 aUnstackedStr.append( aChar );
291cdf0e10cSrcweir             else
292cdf0e10cSrcweir                 bBreakIgnored = true;
293cdf0e10cSrcweir         }
294cdf0e10cSrcweir         aNewText = aUnstackedStr.makeStringAndClear();
295cdf0e10cSrcweir     }
296cdf0e10cSrcweir 
297cdf0e10cSrcweir     uno::Sequence< uno::Reference< XFormattedString > > aNewStringList(1);
298cdf0e10cSrcweir 
299cdf0e10cSrcweir     uno::Sequence< uno::Reference< XFormattedString > >  aOldStringList = xTitle->getText();
300cdf0e10cSrcweir     if( aOldStringList.getLength() )
301cdf0e10cSrcweir     {
302cdf0e10cSrcweir         aNewStringList[0].set( aOldStringList[0] );
303cdf0e10cSrcweir         aNewStringList[0]->setString( aNewText );
304cdf0e10cSrcweir     }
305cdf0e10cSrcweir     else
306cdf0e10cSrcweir     {
307cdf0e10cSrcweir         uno::Reference< uno::XInterface > xI(
308cdf0e10cSrcweir             xContext->getServiceManager()->createInstanceWithContext(
309cdf0e10cSrcweir             C2U( "com.sun.star.chart2.FormattedString" ), xContext ) );
310cdf0e10cSrcweir         uno::Reference< XFormattedString > xFormattedString( xI, uno::UNO_QUERY );
311cdf0e10cSrcweir 
312cdf0e10cSrcweir         if(xFormattedString.is())
313cdf0e10cSrcweir         {
314cdf0e10cSrcweir             xFormattedString->setString( aNewText );
315cdf0e10cSrcweir             aNewStringList[0].set( xFormattedString );
316cdf0e10cSrcweir             if( pDefaultCharHeight != 0 )
317cdf0e10cSrcweir             {
318cdf0e10cSrcweir                 try
319cdf0e10cSrcweir                 {
320cdf0e10cSrcweir                     uno::Reference< beans::XPropertySet > xProp( xFormattedString, uno::UNO_QUERY_THROW );
321cdf0e10cSrcweir 
322cdf0e10cSrcweir                     uno::Any aFontSize( uno::makeAny( *pDefaultCharHeight ));
323cdf0e10cSrcweir                     xProp->setPropertyValue( C2U("CharHeight"), aFontSize );
324cdf0e10cSrcweir                     xProp->setPropertyValue( C2U("CharHeightAsian"), aFontSize );
325cdf0e10cSrcweir                     xProp->setPropertyValue( C2U("CharHeightComplex"), aFontSize );
326cdf0e10cSrcweir                 }
327cdf0e10cSrcweir                 catch( uno::Exception & ex )
328cdf0e10cSrcweir                 {
329cdf0e10cSrcweir                     ASSERT_EXCEPTION( ex );
330cdf0e10cSrcweir                 }
331cdf0e10cSrcweir             }
332cdf0e10cSrcweir         }
333cdf0e10cSrcweir     }
334cdf0e10cSrcweir     xTitle->setText( aNewStringList );
335cdf0e10cSrcweir }
336cdf0e10cSrcweir 
removeTitle(TitleHelper::eTitleType nTitleIndex,const::com::sun::star::uno::Reference<::com::sun::star::frame::XModel> & xModel)337cdf0e10cSrcweir void TitleHelper::removeTitle( TitleHelper::eTitleType nTitleIndex
338cdf0e10cSrcweir                     , const ::com::sun::star::uno::Reference<
339cdf0e10cSrcweir                             ::com::sun::star::frame::XModel >& xModel )
340cdf0e10cSrcweir {
341cdf0e10cSrcweir     uno::Reference< XTitled > xTitled( lcl_getTitleParent( nTitleIndex, xModel ) );
342cdf0e10cSrcweir     if( xTitled.is())
343cdf0e10cSrcweir     {
344cdf0e10cSrcweir         xTitled->setTitleObject(NULL);
345cdf0e10cSrcweir     }
346cdf0e10cSrcweir }
347cdf0e10cSrcweir 
getTitleType(eTitleType & rType,const::com::sun::star::uno::Reference<::com::sun::star::chart2::XTitle> & xTitle,const::com::sun::star::uno::Reference<::com::sun::star::frame::XModel> & xModel)348cdf0e10cSrcweir bool TitleHelper::getTitleType( eTitleType& rType
349cdf0e10cSrcweir                     , const ::com::sun::star::uno::Reference<
350cdf0e10cSrcweir                         ::com::sun::star::chart2::XTitle >& xTitle
351cdf0e10cSrcweir                     , const ::com::sun::star::uno::Reference<
352cdf0e10cSrcweir                         ::com::sun::star::frame::XModel >& xModel )
353cdf0e10cSrcweir {
354cdf0e10cSrcweir     if( !xTitle.is() || !xModel.is() )
355cdf0e10cSrcweir         return false;
356cdf0e10cSrcweir 
357cdf0e10cSrcweir     Reference< chart2::XTitle > xCurrentTitle;
358cdf0e10cSrcweir     for( sal_Int32 nTitleType = TITLE_BEGIN; nTitleType < NORMAL_TITLE_END; nTitleType++ )
359cdf0e10cSrcweir     {
360cdf0e10cSrcweir         xCurrentTitle = TitleHelper::getTitle( static_cast<eTitleType>(nTitleType), xModel );
361cdf0e10cSrcweir         if( xCurrentTitle == xTitle )
362cdf0e10cSrcweir         {
363cdf0e10cSrcweir             rType = static_cast<eTitleType>(nTitleType);
364cdf0e10cSrcweir             return true;
365cdf0e10cSrcweir         }
366cdf0e10cSrcweir     }
367cdf0e10cSrcweir 
368cdf0e10cSrcweir     return false;
369cdf0e10cSrcweir }
370cdf0e10cSrcweir 
371cdf0e10cSrcweir //.............................................................................
372cdf0e10cSrcweir } //namespace chart
373cdf0e10cSrcweir //.............................................................................
374cdf0e10cSrcweir 
375