Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
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/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
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 .
18 : */
19 :
20 :
21 : #include "ChartTypeDialogController.hxx"
22 : #include "ResId.hxx"
23 : #include "HelpIds.hrc"
24 : #include "Strings.hrc"
25 : #include "Bitmaps.hrc"
26 : #include "macros.hxx"
27 : #include "ChartModelHelper.hxx"
28 : #include "DiagramHelper.hxx"
29 : #include "ControllerLockGuard.hxx"
30 : #include "AxisHelper.hxx"
31 :
32 : #include <com/sun/star/chart2/DataPointGeometry3D.hpp>
33 : #include <com/sun/star/chart2/PieChartOffsetMode.hpp>
34 : #include <com/sun/star/chart2/XDataSeriesContainer.hpp>
35 :
36 : #include <svtools/controldims.hrc>
37 : #include <svtools/valueset.hxx>
38 : // header for class Image
39 : #include <vcl/image.hxx>
40 : // header for class Bitmap
41 : #include <vcl/bitmap.hxx>
42 : #include <vcl/svapp.hxx>
43 :
44 : #include <com/sun/star/lang/XMultiServiceFactory.hpp>
45 :
46 : //.............................................................................
47 : namespace chart
48 : {
49 : //.............................................................................
50 : using namespace ::com::sun::star;
51 : using namespace ::com::sun::star::chart2;
52 :
53 0 : ChartTypeParameter::ChartTypeParameter()
54 : : nSubTypeIndex( 1 )
55 : , bXAxisWithValues( false )
56 : , b3DLook( false )
57 : , bSymbols( true )
58 : , bLines( true )
59 : , eStackMode( GlobalStackMode_NONE )
60 : , eCurveStyle( CurveStyle_LINES )
61 : , nCurveResolution(20)
62 : , nSplineOrder(3)
63 : , nGeometry3D(DataPointGeometry3D::CUBOID)
64 : , eThreeDLookScheme(ThreeDLookScheme_Realistic)
65 0 : , bSortByXValues(false)
66 : {
67 0 : }
68 :
69 0 : ChartTypeParameter::ChartTypeParameter( sal_Int32 SubTypeIndex, bool HasXAxisWithValues
70 : , bool Is3DLook, GlobalStackMode nStackMode
71 : , bool HasSymbols, bool HasLines
72 : , CurveStyle nCurveStyle )
73 : : nSubTypeIndex( SubTypeIndex )
74 : , bXAxisWithValues( HasXAxisWithValues )
75 : , b3DLook( Is3DLook )
76 : , bSymbols( HasSymbols )
77 : , bLines( HasLines )
78 : , eStackMode( nStackMode )
79 : , eCurveStyle( nCurveStyle )
80 : , nCurveResolution(20)
81 : , nSplineOrder(3)
82 : , nGeometry3D(DataPointGeometry3D::CUBOID)
83 : , eThreeDLookScheme(ThreeDLookScheme_Realistic)
84 0 : , bSortByXValues(false)
85 : {
86 0 : }
87 0 : ChartTypeParameter::~ChartTypeParameter()
88 : {
89 0 : }
90 :
91 0 : bool ChartTypeParameter::mapsToSameService( const ChartTypeParameter& rParameter ) const
92 : {
93 0 : return this->mapsToSimilarService( rParameter, 0 );
94 : }
95 0 : bool ChartTypeParameter::mapsToSimilarService( const ChartTypeParameter& rParameter, sal_Int32 nTheHigherTheLess ) const
96 : {
97 0 : sal_Int32 nMax=7;
98 0 : if(nTheHigherTheLess>nMax)
99 0 : return true;
100 0 : if( this->bXAxisWithValues!=rParameter.bXAxisWithValues )
101 0 : return nTheHigherTheLess>nMax-1;
102 0 : if( this->b3DLook!=rParameter.b3DLook )
103 0 : return nTheHigherTheLess>nMax-2;
104 0 : if( this->eStackMode!=rParameter.eStackMode )
105 0 : return nTheHigherTheLess>nMax-3;
106 0 : if( this->nSubTypeIndex!=rParameter.nSubTypeIndex )
107 0 : return nTheHigherTheLess>nMax-4;
108 0 : if( this->bSymbols!=rParameter.bSymbols )
109 0 : return nTheHigherTheLess>nMax-5;
110 0 : if( this->bLines!=rParameter.bLines )
111 0 : return nTheHigherTheLess>nMax-6;
112 0 : return true;
113 : }
114 :
115 : //-----------------------------------------------------------------------------
116 : //-----------------------------------------------------------------------------
117 : //-----------------------------------------------------------------------------
118 :
119 0 : ChartTypeDialogController::ChartTypeDialogController()
120 : : bSupportsXAxisWithValues(false)
121 0 : , bSupports3D(true)
122 : {
123 0 : }
124 :
125 0 : ChartTypeDialogController::~ChartTypeDialogController()
126 : {
127 0 : }
128 0 : Image ChartTypeDialogController::getImage()
129 : {
130 0 : return Image();
131 : }
132 0 : bool ChartTypeDialogController::isSubType( const OUString& rServiceName )
133 : {
134 0 : const tTemplateServiceChartTypeParameterMap& rTemplateMap = this->getTemplateMap();
135 0 : tTemplateServiceChartTypeParameterMap::const_iterator aIt( rTemplateMap.find( rServiceName ));
136 0 : if( aIt != rTemplateMap.end())
137 0 : return true;
138 0 : return false;
139 : }
140 0 : ChartTypeParameter ChartTypeDialogController::getChartTypeParameterForService(
141 : const OUString& rServiceName
142 : , const uno::Reference< beans::XPropertySet >& xTemplateProps )
143 : {
144 0 : ChartTypeParameter aRet;
145 0 : const tTemplateServiceChartTypeParameterMap& rTemplateMap = this->getTemplateMap();
146 0 : tTemplateServiceChartTypeParameterMap::const_iterator aIt( rTemplateMap.find( rServiceName ));
147 0 : if( aIt != rTemplateMap.end())
148 0 : aRet = (*aIt).second;
149 0 : if( xTemplateProps.is() )
150 : {
151 : try
152 : {
153 0 : xTemplateProps->getPropertyValue( "CurveStyle" ) >>= aRet.eCurveStyle;
154 0 : xTemplateProps->getPropertyValue( "CurveResolution" ) >>= aRet.nCurveResolution;
155 0 : xTemplateProps->getPropertyValue( "SplineOrder" ) >>= aRet.nSplineOrder;
156 : }
157 0 : catch( uno::Exception & ex )
158 : {
159 : //not all templates need to support CurveStyle, CurveResolution or SplineOrder
160 0 : ex.Context.is();//to have debug information without compilation warnings
161 : }
162 :
163 : try
164 : {
165 0 : xTemplateProps->getPropertyValue( "Geometry3D" ) >>= aRet.nGeometry3D;
166 : }
167 0 : catch( uno::Exception& ex )
168 : {
169 : //not all templates need to support CGeometry3D
170 0 : ex.Context.is();//to have debug information without compilation warnings
171 : }
172 : }
173 0 : return aRet;
174 : }
175 0 : void ChartTypeDialogController::adjustSubTypeAndEnableControls( ChartTypeParameter& /*rParameter*/ )
176 : {
177 0 : }
178 0 : void ChartTypeDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter )
179 : {
180 0 : switch( rParameter.nSubTypeIndex )
181 : {
182 : case 2:
183 0 : rParameter.eStackMode=GlobalStackMode_STACK_Y;
184 0 : break;
185 : case 3:
186 0 : rParameter.eStackMode=GlobalStackMode_STACK_Y_PERCENT;
187 0 : break;
188 : case 4:
189 0 : rParameter.eStackMode=GlobalStackMode_STACK_Z;
190 0 : break;
191 : default:
192 0 : rParameter.eStackMode=GlobalStackMode_NONE;
193 0 : break;
194 : }
195 0 : }
196 0 : void ChartTypeDialogController::adjustParameterToMainType( ChartTypeParameter& rParameter )
197 : {
198 0 : bool bFoundSomeMatch=false;
199 :
200 0 : rParameter.bXAxisWithValues = bSupportsXAxisWithValues;
201 0 : if( rParameter.b3DLook && !bSupports3D )
202 0 : rParameter.b3DLook = false;
203 0 : if(!rParameter.b3DLook && rParameter.eStackMode==GlobalStackMode_STACK_Z)
204 0 : rParameter.eStackMode = GlobalStackMode_NONE;
205 :
206 0 : const tTemplateServiceChartTypeParameterMap& rMap = getTemplateMap();
207 0 : tTemplateServiceChartTypeParameterMap::const_iterator aIter = rMap.begin();
208 0 : const tTemplateServiceChartTypeParameterMap::const_iterator aEnd = rMap.end();
209 0 : for( sal_Int32 nMatchPrecision=0; nMatchPrecision<7 && !bFoundSomeMatch; nMatchPrecision++ )
210 : {
211 0 : for( aIter = rMap.begin(); aIter != aEnd; ++aIter )
212 : {
213 0 : if( rParameter.mapsToSimilarService( (*aIter).second, nMatchPrecision ) )
214 : {
215 : //remind some values
216 0 : ThreeDLookScheme aScheme = rParameter.eThreeDLookScheme;
217 0 : sal_Int32 nCurveResolution = rParameter.nCurveResolution;
218 0 : sal_Int32 nSplineOrder = rParameter.nSplineOrder;
219 0 : CurveStyle eCurveStyle = rParameter.eCurveStyle;
220 0 : sal_Int32 nGeometry3D = rParameter.nGeometry3D;
221 0 : bool bSortByXValues = rParameter.bSortByXValues;
222 :
223 0 : rParameter = (*aIter).second;
224 :
225 : //some values should not be changed with charttype
226 0 : rParameter.eThreeDLookScheme = aScheme;
227 0 : rParameter.nCurveResolution = nCurveResolution;
228 0 : rParameter.nSplineOrder =nSplineOrder;
229 0 : rParameter.eCurveStyle = eCurveStyle;
230 0 : rParameter.nGeometry3D = nGeometry3D;
231 0 : rParameter.bSortByXValues = bSortByXValues;
232 :
233 0 : bFoundSomeMatch = true;
234 0 : break;
235 : }
236 : }
237 : }
238 0 : if(!bFoundSomeMatch)
239 : {
240 0 : if(rMap.begin()!=rMap.end())
241 0 : rParameter = (*rMap.begin()).second;
242 : else
243 0 : rParameter = ChartTypeParameter();
244 : }
245 0 : }
246 0 : OUString ChartTypeDialogController::getServiceNameForParameter( const ChartTypeParameter& rParameter ) const
247 : {
248 0 : ChartTypeParameter aParameter(rParameter);
249 0 : if( aParameter.bXAxisWithValues )
250 0 : aParameter.eStackMode = GlobalStackMode_NONE;
251 0 : if(!aParameter.b3DLook && aParameter.eStackMode==GlobalStackMode_STACK_Z)
252 0 : aParameter.eStackMode = GlobalStackMode_NONE;
253 0 : const tTemplateServiceChartTypeParameterMap& rMap = getTemplateMap();
254 0 : tTemplateServiceChartTypeParameterMap::const_iterator aIter = rMap.begin();
255 0 : const tTemplateServiceChartTypeParameterMap::const_iterator aEnd = rMap.end();
256 0 : for( ; aIter != aEnd; ++aIter )
257 : {
258 0 : if( aParameter.mapsToSameService( (*aIter).second ) )
259 0 : return (*aIter).first;
260 : }
261 :
262 : OSL_FAIL( "ChartType not implemented yet - use fallback to similar type" );
263 0 : for( sal_Int32 nMatchPrecision=1; nMatchPrecision<8; nMatchPrecision++ )
264 : {
265 0 : for( aIter = rMap.begin(); aIter != aEnd; ++aIter )
266 : {
267 0 : if( aParameter.mapsToSimilarService( (*aIter).second, nMatchPrecision ) )
268 0 : return (*aIter).first;
269 : }
270 : }
271 0 : return OUString();
272 : }
273 0 : uno::Reference< XChartTypeTemplate > ChartTypeDialogController::getCurrentTemplate(
274 : const ChartTypeParameter& rParameter
275 : , const uno::Reference< lang::XMultiServiceFactory >& xTemplateManager ) const
276 : {
277 0 : uno::Reference< XChartTypeTemplate > xTemplate(0);
278 :
279 0 : OUString aServiceName( this->getServiceNameForParameter( rParameter ) );
280 0 : if(!aServiceName.isEmpty())
281 : {
282 0 : xTemplate.set( xTemplateManager->createInstance( aServiceName ), uno::UNO_QUERY );
283 0 : if(xTemplate.is())
284 : {
285 0 : uno::Reference< beans::XPropertySet > xTemplateProps( xTemplate, uno::UNO_QUERY );
286 0 : if(xTemplateProps.is())
287 : {
288 : try
289 : {
290 0 : xTemplateProps->setPropertyValue( "CurveStyle" , uno::makeAny(rParameter.eCurveStyle) );
291 0 : xTemplateProps->setPropertyValue( "CurveResolution" , uno::makeAny(rParameter.nCurveResolution) );
292 0 : xTemplateProps->setPropertyValue( "SplineOrder" , uno::makeAny(rParameter.nSplineOrder) );
293 : }
294 0 : catch( uno::Exception & ex )
295 : {
296 : //not all templates need to support CurveStyle, CurveResolution or SplineOrder
297 0 : ex.Context.is();//to have debug information without compilation warnings
298 : }
299 : try
300 : {
301 0 : xTemplateProps->setPropertyValue( "Geometry3D" , uno::makeAny(rParameter.nGeometry3D) );
302 : }
303 0 : catch( uno::Exception & ex )
304 : {
305 : //not all templates need to support Geometry3D
306 0 : ex.Context.is();//to have debug information without compilation warnings
307 : }
308 : try
309 : {
310 0 : this->setTemplateProperties( xTemplateProps );
311 : }
312 0 : catch( const uno::Exception & ex )
313 : {
314 : ASSERT_EXCEPTION( ex );
315 : }
316 0 : }
317 : }
318 : }
319 0 : return xTemplate;
320 : }
321 :
322 0 : bool ChartTypeDialogController::commitToModel( const ChartTypeParameter& rParameter
323 : , const uno::Reference< XChartDocument >& xChartModel )
324 : {
325 0 : uno::Reference< lang::XMultiServiceFactory > xTemplateManager( xChartModel->getChartTypeManager(), uno::UNO_QUERY );
326 0 : uno::Reference< XChartTypeTemplate > xTemplate( this->getCurrentTemplate( rParameter, xTemplateManager ) );
327 0 : if(xTemplate.is())
328 : {
329 0 : uno::Reference< frame::XModel > xModel( xChartModel, uno::UNO_QUERY);
330 :
331 : // locked controllers
332 0 : ControllerLockGuard aCtrlLockGuard( xModel );
333 0 : uno::Reference< XDiagram > xDiagram = ChartModelHelper::findDiagram( xModel );
334 : DiagramHelper::tTemplateWithServiceName aTemplateWithService(
335 0 : DiagramHelper::getTemplateForDiagram( xDiagram, xTemplateManager ));
336 0 : if( aTemplateWithService.first.is())
337 0 : aTemplateWithService.first->resetStyles( xDiagram );
338 0 : xTemplate->changeDiagram( xDiagram );
339 0 : if( Application::GetSettings().GetLayoutRTL() )
340 0 : AxisHelper::setRTLAxisLayout( AxisHelper::getCoordinateSystemByIndex( xDiagram, 0 ) );
341 0 : if( rParameter.b3DLook )
342 0 : ThreeDHelper::setScheme( xDiagram, rParameter.eThreeDLookScheme );
343 :
344 : //SortByXValues
345 : {
346 0 : uno::Reference< beans::XPropertySet > xDiaProp( xDiagram, uno::UNO_QUERY );
347 0 : if( xDiaProp.is() )
348 0 : xDiaProp->setPropertyValue( "SortByXValues" , uno::makeAny( rParameter.bSortByXValues ) );
349 0 : }
350 : }
351 0 : return false;
352 : }
353 0 : void ChartTypeDialogController::fillSubTypeList( ValueSet& rSubTypeList, const ChartTypeParameter& /*rParameter*/ )
354 : {
355 0 : rSubTypeList.Clear();
356 0 : }
357 0 : bool ChartTypeDialogController::shouldShow_XAxisTypeControl() const
358 : {
359 0 : return false;
360 : }
361 0 : bool ChartTypeDialogController::shouldShow_3DLookControl() const
362 : {
363 0 : return false;
364 : }
365 0 : bool ChartTypeDialogController::shouldShow_StackingControl() const
366 : {
367 0 : return false;
368 : }
369 0 : bool ChartTypeDialogController::shouldShow_DeepStackingControl() const
370 : {
371 0 : return false;
372 : }
373 0 : bool ChartTypeDialogController::shouldShow_SplineControl() const
374 : {
375 0 : return false;
376 : }
377 0 : bool ChartTypeDialogController::shouldShow_GeometryControl() const
378 : {
379 0 : return false;
380 : }
381 0 : bool ChartTypeDialogController::shouldShow_SortByXValuesResourceGroup() const
382 : {
383 0 : return false;
384 : }
385 :
386 0 : void ChartTypeDialogController::showExtraControls( Window* /*pParent*/, const Point& /*rPosition*/, const Size& /*rSize*/ )
387 : {
388 0 : }
389 0 : void ChartTypeDialogController::hideExtraControls() const
390 : {
391 0 : }
392 0 : void ChartTypeDialogController::fillExtraControls( const ChartTypeParameter& /*rParameter*/
393 : , const uno::Reference< XChartDocument >& /*xChartModel*/
394 : , const uno::Reference< beans::XPropertySet >& /*xTemplateProps*/ ) const
395 : {
396 0 : }
397 0 : void ChartTypeDialogController::setTemplateProperties( const uno::Reference< beans::XPropertySet >& /*xTemplateProps*/ ) const throw (uno::RuntimeException)
398 : {
399 0 : }
400 : //--------------------------------------------------------------------------
401 :
402 0 : ColumnOrBarChartDialogController_Base::ColumnOrBarChartDialogController_Base()
403 0 : : ChartTypeDialogController()
404 : {
405 0 : }
406 0 : ColumnOrBarChartDialogController_Base::~ColumnOrBarChartDialogController_Base()
407 : {
408 0 : }
409 0 : bool ColumnOrBarChartDialogController_Base::shouldShow_3DLookControl() const
410 : {
411 0 : return true;
412 : }
413 0 : bool ColumnOrBarChartDialogController_Base::shouldShow_GeometryControl() const
414 : {
415 0 : return true;
416 : }
417 0 : void ColumnOrBarChartDialogController_Base::adjustSubTypeAndEnableControls( ChartTypeParameter& rParameter )
418 : {
419 0 : if(rParameter.nSubTypeIndex>3 && !rParameter.b3DLook)
420 : {
421 0 : rParameter.nSubTypeIndex=1;
422 : }
423 0 : }
424 : //--------------------------------------------------------------------------
425 0 : ColumnChartDialogController::ColumnChartDialogController()
426 : {
427 0 : }
428 0 : ColumnChartDialogController::~ColumnChartDialogController()
429 : {
430 0 : }
431 0 : String ColumnChartDialogController::getName()
432 : {
433 0 : return String( SchResId( STR_TYPE_COLUMN ));
434 : }
435 0 : Image ColumnChartDialogController::getImage()
436 : {
437 0 : return Image( SchResId( IMG_TYPE_COLUMN ));
438 : }
439 0 : const tTemplateServiceChartTypeParameterMap& ColumnChartDialogController::getTemplateMap() const
440 : {
441 : static tTemplateServiceChartTypeParameterMap m_aTemplateMap =
442 : tTemplateServiceChartTypeParameterMap
443 : ( "com.sun.star.chart2.template.Column" , ChartTypeParameter(1,false,false,GlobalStackMode_NONE) )
444 0 : ( "com.sun.star.chart2.template.StackedColumn" , ChartTypeParameter(2,false,false,GlobalStackMode_STACK_Y) )
445 0 : ( "com.sun.star.chart2.template.PercentStackedColumn" , ChartTypeParameter(3,false,false,GlobalStackMode_STACK_Y_PERCENT) )
446 0 : ( "com.sun.star.chart2.template.ThreeDColumnFlat" , ChartTypeParameter(1,false,true,GlobalStackMode_NONE) )
447 0 : ( "com.sun.star.chart2.template.StackedThreeDColumnFlat" , ChartTypeParameter(2,false,true,GlobalStackMode_STACK_Y) )
448 0 : ( "com.sun.star.chart2.template.PercentStackedThreeDColumnFlat" , ChartTypeParameter(3,false,true,GlobalStackMode_STACK_Y_PERCENT) )
449 0 : ( "com.sun.star.chart2.template.ThreeDColumnDeep" , ChartTypeParameter(4,false,true,GlobalStackMode_STACK_Z) )
450 : ;
451 0 : return m_aTemplateMap;
452 : }
453 0 : void ColumnChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, const ChartTypeParameter& rParameter )
454 : {
455 0 : rSubTypeList.Clear();
456 :
457 0 : if( rParameter.b3DLook )
458 : {
459 0 : switch(rParameter.nGeometry3D)
460 : {
461 : case DataPointGeometry3D::CYLINDER:
462 0 : rSubTypeList.InsertItem( 1, Bitmap( SchResId( BMP_SAEULE_3D_1 )));
463 0 : rSubTypeList.InsertItem( 2, Bitmap( SchResId( BMP_SAEULE_3D_2 )));
464 0 : rSubTypeList.InsertItem( 3, Bitmap( SchResId( BMP_SAEULE_3D_3 )));
465 0 : rSubTypeList.InsertItem( 4, Bitmap( SchResId( BMP_SAEULE_3D_4 )));
466 0 : break;
467 : case DataPointGeometry3D::CONE:
468 0 : rSubTypeList.InsertItem( 1, Bitmap( SchResId( BMP_KEGEL_3D_1 )));
469 0 : rSubTypeList.InsertItem( 2, Bitmap( SchResId( BMP_KEGEL_3D_2 )));
470 0 : rSubTypeList.InsertItem( 3, Bitmap( SchResId( BMP_KEGEL_3D_3 )));
471 0 : rSubTypeList.InsertItem( 4, Bitmap( SchResId( BMP_KEGEL_3D_4 )));
472 0 : break;
473 : case DataPointGeometry3D::PYRAMID:
474 0 : rSubTypeList.InsertItem( 1, Bitmap( SchResId( BMP_PYRAMID_3D_1 )));
475 0 : rSubTypeList.InsertItem( 2, Bitmap( SchResId( BMP_PYRAMID_3D_2 )));
476 0 : rSubTypeList.InsertItem( 3, Bitmap( SchResId( BMP_PYRAMID_3D_3 )));
477 0 : rSubTypeList.InsertItem( 4, Bitmap( SchResId( BMP_PYRAMID_3D_4 )));
478 0 : break;
479 : default: //DataPointGeometry3D::CUBOID:
480 0 : rSubTypeList.InsertItem( 1, Bitmap( SchResId( BMP_COLUMNS_3D_1 )));
481 0 : rSubTypeList.InsertItem( 2, Bitmap( SchResId( BMP_COLUMNS_3D_2 )));
482 0 : rSubTypeList.InsertItem( 3, Bitmap( SchResId( BMP_COLUMNS_3D_3 )));
483 0 : rSubTypeList.InsertItem( 4, Bitmap( SchResId( BMP_COLUMNS_3D )));
484 0 : break;
485 : }
486 : }
487 : else
488 : {
489 0 : rSubTypeList.InsertItem( 1, Bitmap( SchResId( BMP_COLUMNS_2D_1 )));
490 0 : rSubTypeList.InsertItem( 2, Bitmap( SchResId( BMP_COLUMNS_2D_2 )));
491 0 : rSubTypeList.InsertItem( 3, Bitmap( SchResId( BMP_COLUMNS_2D_3 )));
492 : }
493 :
494 0 : rSubTypeList.SetItemText( 1, String( SchResId( STR_NORMAL )) );
495 0 : rSubTypeList.SetItemText( 2, String( SchResId( STR_STACKED )) );
496 0 : rSubTypeList.SetItemText( 3, String( SchResId( STR_PERCENT )) );
497 0 : rSubTypeList.SetItemText( 4, String( SchResId( STR_DEEP )) );
498 0 : }
499 :
500 : //--------------------------------------------------------------------------
501 :
502 0 : BarChartDialogController::BarChartDialogController()
503 : {
504 0 : }
505 0 : BarChartDialogController::~BarChartDialogController()
506 : {
507 0 : }
508 0 : String BarChartDialogController::getName()
509 : {
510 0 : return String( SchResId( STR_TYPE_BAR ));
511 : }
512 0 : Image BarChartDialogController::getImage()
513 : {
514 0 : return Image( SchResId( IMG_TYPE_BAR ));
515 : }
516 0 : const tTemplateServiceChartTypeParameterMap& BarChartDialogController::getTemplateMap() const
517 : {
518 : static tTemplateServiceChartTypeParameterMap m_aTemplateMap =
519 : tTemplateServiceChartTypeParameterMap
520 : ( "com.sun.star.chart2.template.Bar" , ChartTypeParameter(1,false,false,GlobalStackMode_NONE) )
521 0 : ( "com.sun.star.chart2.template.StackedBar" , ChartTypeParameter(2,false,false,GlobalStackMode_STACK_Y) )
522 0 : ( "com.sun.star.chart2.template.PercentStackedBar" , ChartTypeParameter(3,false,false,GlobalStackMode_STACK_Y_PERCENT) )
523 0 : ( "com.sun.star.chart2.template.ThreeDBarFlat" , ChartTypeParameter(1,false,true,GlobalStackMode_NONE) )
524 0 : ( "com.sun.star.chart2.template.StackedThreeDBarFlat" , ChartTypeParameter(2,false,true,GlobalStackMode_STACK_Y) )
525 0 : ( "com.sun.star.chart2.template.PercentStackedThreeDBarFlat" , ChartTypeParameter(3,false,true,GlobalStackMode_STACK_Y_PERCENT) )
526 0 : ( "com.sun.star.chart2.template.ThreeDBarDeep" , ChartTypeParameter(4,false,true,GlobalStackMode_STACK_Z) )
527 : ;
528 0 : return m_aTemplateMap;
529 : }
530 0 : void BarChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, const ChartTypeParameter& rParameter )
531 : {
532 0 : rSubTypeList.Clear();
533 :
534 0 : if( rParameter.b3DLook )
535 : {
536 0 : switch(rParameter.nGeometry3D)
537 : {
538 : case DataPointGeometry3D::CYLINDER:
539 0 : rSubTypeList.InsertItem( 1, Bitmap( SchResId( BMP_ROEHRE_3D_1 )));
540 0 : rSubTypeList.InsertItem( 2, Bitmap( SchResId( BMP_ROEHRE_3D_2 )));
541 0 : rSubTypeList.InsertItem( 3, Bitmap( SchResId( BMP_ROEHRE_3D_3 )));
542 0 : rSubTypeList.InsertItem( 4, Bitmap( SchResId( BMP_ROEHRE_3D_4 )));
543 0 : break;
544 : case DataPointGeometry3D::CONE:
545 0 : rSubTypeList.InsertItem( 1, Bitmap( SchResId( BMP_KEGELQ_3D_1 )));
546 0 : rSubTypeList.InsertItem( 2, Bitmap( SchResId( BMP_KEGELQ_3D_2 )));
547 0 : rSubTypeList.InsertItem( 3, Bitmap( SchResId( BMP_KEGELQ_3D_3 )));
548 0 : rSubTypeList.InsertItem( 4, Bitmap( SchResId( BMP_KEGELQ_3D_4 )));
549 0 : break;
550 : case DataPointGeometry3D::PYRAMID:
551 0 : rSubTypeList.InsertItem( 1, Bitmap( SchResId( BMP_PYRAMIDQ_3D_1 )));
552 0 : rSubTypeList.InsertItem( 2, Bitmap( SchResId( BMP_PYRAMIDQ_3D_2 )));
553 0 : rSubTypeList.InsertItem( 3, Bitmap( SchResId( BMP_PYRAMIDQ_3D_3 )));
554 0 : rSubTypeList.InsertItem( 4, Bitmap( SchResId( BMP_PYRAMIDQ_3D_4 )));
555 0 : break;
556 : default: //DataPointGeometry3D::CUBOID:
557 0 : rSubTypeList.InsertItem( 1, Bitmap( SchResId( BMP_BARS_3D_1 )));
558 0 : rSubTypeList.InsertItem( 2, Bitmap( SchResId( BMP_BARS_3D_2 )));
559 0 : rSubTypeList.InsertItem( 3, Bitmap( SchResId( BMP_BARS_3D_3 )));
560 0 : rSubTypeList.InsertItem( 4, Bitmap( SchResId( BMP_BARS_3D )));
561 0 : break;
562 : }
563 : }
564 : else
565 : {
566 0 : rSubTypeList.InsertItem( 1, Bitmap( SchResId( BMP_BARS_2D_1 )));
567 0 : rSubTypeList.InsertItem( 2, Bitmap( SchResId( BMP_BARS_2D_2 )));
568 0 : rSubTypeList.InsertItem( 3, Bitmap( SchResId( BMP_BARS_2D_3 )));
569 : }
570 0 : rSubTypeList.SetItemText( 1, String( SchResId( STR_NORMAL )) );
571 0 : rSubTypeList.SetItemText( 2, String( SchResId( STR_STACKED )) );
572 0 : rSubTypeList.SetItemText( 3, String( SchResId( STR_PERCENT )) );
573 0 : rSubTypeList.SetItemText( 4, String( SchResId( STR_DEEP )) );
574 0 : }
575 :
576 : //--------------------------------------------------------------------------
577 :
578 0 : PieChartDialogController::PieChartDialogController()
579 : {
580 0 : }
581 0 : PieChartDialogController::~PieChartDialogController()
582 : {
583 0 : }
584 0 : String PieChartDialogController::getName()
585 : {
586 0 : return String( SchResId( STR_TYPE_PIE ));
587 : }
588 0 : Image PieChartDialogController::getImage()
589 : {
590 0 : return Image( SchResId( IMG_TYPE_PIE ));
591 : }
592 0 : const tTemplateServiceChartTypeParameterMap& PieChartDialogController::getTemplateMap() const
593 : {
594 : static tTemplateServiceChartTypeParameterMap m_aTemplateMap =
595 : tTemplateServiceChartTypeParameterMap
596 : ( "com.sun.star.chart2.template.Pie" , ChartTypeParameter(1,false,false) )
597 0 : ( "com.sun.star.chart2.template.PieAllExploded" , ChartTypeParameter(2,false,false) )
598 0 : ( "com.sun.star.chart2.template.Donut" , ChartTypeParameter(3,false,false) )
599 0 : ( "com.sun.star.chart2.template.DonutAllExploded" , ChartTypeParameter(4,false,false) )
600 0 : ( "com.sun.star.chart2.template.ThreeDPie" , ChartTypeParameter(1,false,true) )
601 0 : ( "com.sun.star.chart2.template.ThreeDPieAllExploded" , ChartTypeParameter(2,false,true) )
602 0 : ( "com.sun.star.chart2.template.ThreeDDonut" , ChartTypeParameter(3,false,true) )
603 0 : ( "com.sun.star.chart2.template.ThreeDDonutAllExploded" , ChartTypeParameter(4,false,true) )
604 : ;
605 0 : return m_aTemplateMap;
606 : }
607 0 : void PieChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, const ChartTypeParameter& rParameter )
608 : {
609 0 : rSubTypeList.Clear();
610 :
611 0 : if( rParameter.b3DLook )
612 : {
613 0 : rSubTypeList.InsertItem( 1, Bitmap( SchResId( BMP_CIRCLES_3D )));
614 0 : rSubTypeList.InsertItem( 2, Bitmap( SchResId( BMP_CIRCLES_3D_EXPLODED )));
615 0 : rSubTypeList.InsertItem( 3, Bitmap( SchResId( BMP_DONUT_3D )));
616 0 : rSubTypeList.InsertItem( 4, Bitmap( SchResId( BMP_DONUT_3D_EXPLODED )));
617 : }
618 : else
619 : {
620 0 : rSubTypeList.InsertItem( 1, Bitmap( SchResId( BMP_CIRCLES_2D )));
621 0 : rSubTypeList.InsertItem( 2, Bitmap( SchResId( BMP_CIRCLES_2D_EXPLODED )));
622 0 : rSubTypeList.InsertItem( 3, Bitmap( SchResId( BMP_DONUT_2D )));
623 0 : rSubTypeList.InsertItem( 4, Bitmap( SchResId( BMP_DONUT_2D_EXPLODED )));
624 : }
625 0 : rSubTypeList.SetItemText( 1, String( SchResId( STR_NORMAL ) ) );
626 0 : rSubTypeList.SetItemText( 2, String( SchResId( STR_PIE_EXPLODED ) ) );
627 0 : rSubTypeList.SetItemText( 3, String( SchResId( STR_DONUT ) ) );
628 0 : rSubTypeList.SetItemText( 4, String( SchResId( STR_DONUT_EXPLODED ) ) );
629 0 : }
630 :
631 0 : bool PieChartDialogController::shouldShow_3DLookControl() const
632 : {
633 0 : return true;
634 : }
635 0 : void PieChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter )
636 : {
637 0 : if(rParameter.eStackMode==GlobalStackMode_STACK_Z)
638 0 : rParameter.eStackMode = GlobalStackMode_NONE;
639 0 : }
640 : //--------------------------------------------------------------------------
641 0 : LineChartDialogController::LineChartDialogController()
642 : {
643 0 : }
644 0 : LineChartDialogController::~LineChartDialogController()
645 : {
646 0 : }
647 0 : String LineChartDialogController::getName()
648 : {
649 0 : return String( SchResId( STR_TYPE_LINE ));
650 : }
651 0 : Image LineChartDialogController::getImage()
652 : {
653 0 : return Image( SchResId( IMG_TYPE_LINE ));
654 : }
655 0 : const tTemplateServiceChartTypeParameterMap& LineChartDialogController::getTemplateMap() const
656 : {
657 : static tTemplateServiceChartTypeParameterMap m_aTemplateMap =
658 : tTemplateServiceChartTypeParameterMap
659 : //-------------------------------------------------------
660 : ( "com.sun.star.chart2.template.Symbol" , ChartTypeParameter(1,false,false,GlobalStackMode_NONE,true,false) )
661 0 : ( "com.sun.star.chart2.template.StackedSymbol" , ChartTypeParameter(1,false,false,GlobalStackMode_STACK_Y,true,false) )
662 0 : ( "com.sun.star.chart2.template.PercentStackedSymbol" , ChartTypeParameter(1,false,false,GlobalStackMode_STACK_Y_PERCENT,true,false) )
663 0 : ( "com.sun.star.chart2.template.LineSymbol" , ChartTypeParameter(2,false,false,GlobalStackMode_NONE,true,true) )
664 0 : ( "com.sun.star.chart2.template.StackedLineSymbol" , ChartTypeParameter(2,false,false,GlobalStackMode_STACK_Y,true,true) )
665 0 : ( "com.sun.star.chart2.template.PercentStackedLineSymbol" , ChartTypeParameter(2,false,false,GlobalStackMode_STACK_Y_PERCENT,true,true) )
666 0 : ( "com.sun.star.chart2.template.Line" , ChartTypeParameter(3,false,false,GlobalStackMode_NONE,false,true) )
667 0 : ( "com.sun.star.chart2.template.StackedLine" , ChartTypeParameter(3,false,false,GlobalStackMode_STACK_Y,false,true) )
668 0 : ( "com.sun.star.chart2.template.PercentStackedLine" , ChartTypeParameter(3,false,false,GlobalStackMode_STACK_Y_PERCENT,false,true) )
669 : //-------------------------------------------------------
670 0 : ( "com.sun.star.chart2.template.StackedThreeDLine" , ChartTypeParameter(4,false,true,GlobalStackMode_STACK_Y,false,true) )
671 0 : ( "com.sun.star.chart2.template.PercentStackedThreeDLine" , ChartTypeParameter(4,false,true,GlobalStackMode_STACK_Y_PERCENT,false,true) )
672 0 : ( "com.sun.star.chart2.template.ThreeDLineDeep" , ChartTypeParameter(4,false,true,GlobalStackMode_STACK_Z,false,true) )
673 : //-------------------------------------------------------
674 : ;
675 0 : return m_aTemplateMap;
676 : }
677 0 : void LineChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, const ChartTypeParameter& rParameter )
678 : {
679 0 : rSubTypeList.Clear();
680 :
681 0 : if( CurveStyle_LINES==rParameter.eCurveStyle )
682 : {
683 : //direct lines
684 0 : if( GlobalStackMode_NONE == rParameter.eStackMode || GlobalStackMode_STACK_Z == rParameter.eStackMode )
685 : {
686 0 : rSubTypeList.InsertItem( 1, Bitmap( SchResId( BMP_POINTS_XCATEGORY )));
687 0 : rSubTypeList.InsertItem( 2, Bitmap( SchResId( BMP_LINE_P_XCATEGORY )));
688 0 : rSubTypeList.InsertItem( 3, Bitmap( SchResId( BMP_LINE_O_XCATEGORY )));
689 0 : rSubTypeList.InsertItem( 4, Bitmap( SchResId( BMP_LINE3D_XCATEGORY )));
690 : }
691 : else
692 : {
693 0 : rSubTypeList.InsertItem( 1, Bitmap( SchResId( BMP_POINTS_STACKED )));
694 0 : rSubTypeList.InsertItem( 2, Bitmap( SchResId( BMP_LINE_P_STACKED )));
695 0 : rSubTypeList.InsertItem( 3, Bitmap( SchResId( BMP_LINE_O_STACKED )));
696 0 : rSubTypeList.InsertItem( 4, Bitmap( SchResId( BMP_LINE3D_STACKED )));
697 : }
698 : }
699 : else //CurveStyle_LINES
700 : {
701 0 : if( GlobalStackMode_NONE == rParameter.eStackMode || GlobalStackMode_STACK_Z == rParameter.eStackMode )
702 : {
703 0 : rSubTypeList.InsertItem( 1, Bitmap( SchResId( BMP_POINTS_XCATEGORY )));
704 0 : rSubTypeList.InsertItem( 2, Bitmap( SchResId( BMP_LINE_P_XCATEGORY_SMOOTH )));
705 0 : rSubTypeList.InsertItem( 3, Bitmap( SchResId( BMP_LINE_O_XCATEGORY_SMOOTH )));
706 0 : rSubTypeList.InsertItem( 4, Bitmap( SchResId( BMP_LINE3D_XCATEGORY_SMOOTH )));
707 : }
708 : else
709 : {
710 0 : rSubTypeList.InsertItem( 1, Bitmap( SchResId( BMP_POINTS_STACKED )));
711 0 : rSubTypeList.InsertItem( 2, Bitmap( SchResId( BMP_LINE_P_STACKED_SMOOTH )));
712 0 : rSubTypeList.InsertItem( 3, Bitmap( SchResId( BMP_LINE_O_STACKED_SMOOTH )));
713 0 : rSubTypeList.InsertItem( 4, Bitmap( SchResId( BMP_LINE3D_STACKED_SMOOTH )));
714 : }
715 : }
716 :
717 0 : rSubTypeList.SetItemText( 1, String( SchResId( STR_POINTS_ONLY )) );
718 0 : rSubTypeList.SetItemText( 2, String( SchResId( STR_POINTS_AND_LINES )) );
719 0 : rSubTypeList.SetItemText( 3, String( SchResId( STR_LINES_ONLY )) );
720 0 : rSubTypeList.SetItemText( 4, String( SchResId( STR_LINES_3D )) );
721 0 : }
722 0 : bool LineChartDialogController::shouldShow_StackingControl() const
723 : {
724 0 : return true;
725 : }
726 0 : bool LineChartDialogController::shouldShow_DeepStackingControl() const
727 : {
728 0 : return false;
729 : }
730 0 : bool LineChartDialogController::shouldShow_SplineControl() const
731 : {
732 0 : return true;
733 : }
734 0 : void LineChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter )
735 : {
736 0 : rParameter.b3DLook = false;
737 :
738 0 : switch( rParameter.nSubTypeIndex )
739 : {
740 : case 2:
741 0 : rParameter.bSymbols = true;
742 0 : rParameter.bLines = true;
743 0 : break;
744 : case 3:
745 0 : rParameter.bSymbols = false;
746 0 : rParameter.bLines = true;
747 0 : break;
748 : case 4:
749 0 : rParameter.bSymbols = false;
750 0 : rParameter.bLines = true;
751 0 : rParameter.b3DLook = true;
752 0 : if( rParameter.eStackMode == GlobalStackMode_NONE )
753 0 : rParameter.eStackMode = GlobalStackMode_STACK_Z;
754 0 : break;
755 : default:
756 0 : rParameter.bSymbols = true;
757 0 : rParameter.bLines = false;
758 0 : break;
759 : }
760 :
761 0 : if(!rParameter.b3DLook && rParameter.eStackMode == GlobalStackMode_STACK_Z )
762 0 : rParameter.eStackMode = GlobalStackMode_NONE;
763 0 : }
764 0 : void LineChartDialogController::adjustParameterToMainType( ChartTypeParameter& rParameter )
765 : {
766 0 : if( rParameter.b3DLook && rParameter.eStackMode == GlobalStackMode_NONE )
767 0 : rParameter.eStackMode = GlobalStackMode_STACK_Z;
768 :
769 0 : ChartTypeDialogController::adjustParameterToMainType( rParameter );
770 0 : }
771 : //--------------------------------------------------------------------------
772 0 : XYChartDialogController::XYChartDialogController()
773 : {
774 0 : bSupportsXAxisWithValues = true;
775 0 : }
776 0 : XYChartDialogController::~XYChartDialogController()
777 : {
778 0 : }
779 0 : String XYChartDialogController::getName()
780 : {
781 0 : return String( SchResId( STR_TYPE_XY ));
782 : }
783 0 : Image XYChartDialogController::getImage()
784 : {
785 0 : return Image( SchResId( IMG_TYPE_XY ));
786 : }
787 0 : const tTemplateServiceChartTypeParameterMap& XYChartDialogController::getTemplateMap() const
788 : {
789 : static tTemplateServiceChartTypeParameterMap m_aTemplateMap =
790 : tTemplateServiceChartTypeParameterMap
791 : //-------------------------------------------------------
792 : ( "com.sun.star.chart2.template.ScatterSymbol" , ChartTypeParameter(1,true,false,GlobalStackMode_NONE,true,false) )
793 0 : ( "com.sun.star.chart2.template.ScatterLineSymbol" , ChartTypeParameter(2,true,false,GlobalStackMode_NONE,true,true) )
794 0 : ( "com.sun.star.chart2.template.ScatterLine" , ChartTypeParameter(3,true,false,GlobalStackMode_NONE,false,true) )
795 0 : ( "com.sun.star.chart2.template.ThreeDScatter" , ChartTypeParameter(4,true,true,GlobalStackMode_NONE,false,true) )
796 : ;
797 0 : return m_aTemplateMap;
798 : }
799 0 : void XYChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, const ChartTypeParameter& rParameter )
800 : {
801 0 : rSubTypeList.Clear();
802 :
803 0 : if( CurveStyle_LINES==rParameter.eCurveStyle )
804 : {
805 0 : rSubTypeList.InsertItem( 1, Bitmap( SchResId( BMP_POINTS_XVALUES )));
806 0 : rSubTypeList.InsertItem( 2, Bitmap( SchResId( BMP_LINE_P_XVALUES )));
807 0 : rSubTypeList.InsertItem( 3, Bitmap( SchResId( BMP_LINE_O_XVALUES )));
808 0 : rSubTypeList.InsertItem( 4, Bitmap( SchResId( BMP_LINE3D_XVALUES )));
809 : }
810 : else //CurveStyle_LINES
811 : {
812 : //smooth lines
813 0 : rSubTypeList.InsertItem( 1, Bitmap( SchResId( BMP_POINTS_XVALUES )));
814 0 : rSubTypeList.InsertItem( 2, Bitmap( SchResId( BMP_LINE_P_XVALUES_SMOOTH )));
815 0 : rSubTypeList.InsertItem( 3, Bitmap( SchResId( BMP_LINE_O_XVALUES_SMOOTH )));
816 0 : rSubTypeList.InsertItem( 4, Bitmap( SchResId( BMP_LINE3D_XVALUES_SMOOTH )));
817 : }
818 :
819 0 : rSubTypeList.SetItemText( 1, String( SchResId( STR_POINTS_ONLY )) );
820 0 : rSubTypeList.SetItemText( 2, String( SchResId( STR_POINTS_AND_LINES )) );
821 0 : rSubTypeList.SetItemText( 3, String( SchResId( STR_LINES_ONLY )) );
822 0 : rSubTypeList.SetItemText( 4, String( SchResId( STR_LINES_3D )) );
823 0 : }
824 0 : bool XYChartDialogController::shouldShow_SplineControl() const
825 : {
826 0 : return true;
827 : }
828 0 : bool XYChartDialogController::shouldShow_SortByXValuesResourceGroup() const
829 : {
830 0 : return true;
831 : }
832 0 : void XYChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter )
833 : {
834 0 : rParameter.eStackMode=GlobalStackMode_NONE;
835 0 : rParameter.b3DLook = false;
836 :
837 0 : switch( rParameter.nSubTypeIndex )
838 : {
839 : case 2:
840 0 : rParameter.bSymbols = true;
841 0 : rParameter.bLines = true;
842 0 : break;
843 : case 3:
844 0 : rParameter.bSymbols = false;
845 0 : rParameter.bLines = true;
846 0 : break;
847 : case 4:
848 0 : rParameter.bSymbols = false;
849 0 : rParameter.bLines = true;
850 0 : rParameter.b3DLook = true;
851 0 : rParameter.eStackMode=GlobalStackMode_STACK_Z;
852 0 : break;
853 : default:
854 0 : rParameter.bSymbols = true;
855 0 : rParameter.bLines = false;
856 0 : break;
857 : }
858 0 : }
859 : //--------------------------------------------------------------------------
860 0 : AreaChartDialogController::AreaChartDialogController()
861 : {
862 0 : }
863 0 : AreaChartDialogController::~AreaChartDialogController()
864 : {
865 0 : }
866 0 : String AreaChartDialogController::getName()
867 : {
868 0 : return String( SchResId( STR_TYPE_AREA ));
869 : }
870 0 : Image AreaChartDialogController::getImage()
871 : {
872 0 : return Image( SchResId( IMG_TYPE_AREA ));
873 : }
874 0 : bool AreaChartDialogController::shouldShow_3DLookControl() const
875 : {
876 0 : return true;
877 : }
878 0 : const tTemplateServiceChartTypeParameterMap& AreaChartDialogController::getTemplateMap() const
879 : {
880 : static tTemplateServiceChartTypeParameterMap m_aTemplateMap =
881 : tTemplateServiceChartTypeParameterMap
882 : ( "com.sun.star.chart2.template.Area" , ChartTypeParameter(1,false,false,GlobalStackMode_NONE) )
883 0 : ( "com.sun.star.chart2.template.ThreeDArea" , ChartTypeParameter(1,false,true,GlobalStackMode_STACK_Z) )
884 0 : ( "com.sun.star.chart2.template.StackedArea" , ChartTypeParameter(2,false,false,GlobalStackMode_STACK_Y) )
885 0 : ( "com.sun.star.chart2.template.StackedThreeDArea" , ChartTypeParameter(2,false,true,GlobalStackMode_STACK_Y) )
886 0 : ( "com.sun.star.chart2.template.PercentStackedArea" , ChartTypeParameter(3,false,false,GlobalStackMode_STACK_Y_PERCENT) )
887 0 : ( "com.sun.star.chart2.template.PercentStackedThreeDArea" , ChartTypeParameter(3,false,true,GlobalStackMode_STACK_Y_PERCENT) )
888 : ;
889 0 : return m_aTemplateMap;
890 : }
891 0 : void AreaChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, const ChartTypeParameter& rParameter )
892 : {
893 0 : rSubTypeList.Clear();
894 :
895 0 : if( rParameter.b3DLook )
896 : {
897 0 : rSubTypeList.InsertItem( 1, Bitmap( SchResId( BMP_AREAS_3D )));
898 0 : rSubTypeList.InsertItem( 2, Bitmap( SchResId( BMP_AREAS_3D_1 )));
899 0 : rSubTypeList.InsertItem( 3, Bitmap( SchResId( BMP_AREAS_3D_2 )));
900 : }
901 : else
902 : {
903 0 : rSubTypeList.InsertItem( 1, Bitmap( SchResId( BMP_AREAS_2D_1 )));
904 0 : rSubTypeList.InsertItem( 2, Bitmap( SchResId( BMP_AREAS_2D )));
905 0 : rSubTypeList.InsertItem( 3, Bitmap( SchResId( BMP_AREAS_2D_3 )));
906 : }
907 :
908 0 : rSubTypeList.SetItemText( 1, String( SchResId( rParameter.b3DLook ? STR_DEEP : STR_NORMAL )) );
909 0 : rSubTypeList.SetItemText( 2, String( SchResId( STR_STACKED )) );
910 0 : rSubTypeList.SetItemText( 3, String( SchResId( STR_PERCENT )) );
911 0 : }
912 0 : void AreaChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter )
913 : {
914 0 : rParameter.eCurveStyle = CurveStyle_LINES;
915 :
916 0 : if( rParameter.nSubTypeIndex>3 )
917 0 : rParameter.nSubTypeIndex = 1;
918 0 : switch( rParameter.nSubTypeIndex )
919 : {
920 : case 2:
921 0 : rParameter.eStackMode=GlobalStackMode_STACK_Y;
922 0 : break;
923 : case 3:
924 0 : rParameter.eStackMode=GlobalStackMode_STACK_Y_PERCENT;
925 0 : break;
926 : default:
927 0 : if( rParameter.b3DLook )
928 0 : rParameter.eStackMode=GlobalStackMode_STACK_Z;
929 : else
930 0 : rParameter.eStackMode=GlobalStackMode_NONE;
931 0 : break;
932 : }
933 0 : }
934 0 : void AreaChartDialogController::adjustParameterToMainType( ChartTypeParameter& rParameter )
935 : {
936 0 : if( rParameter.b3DLook && rParameter.eStackMode == GlobalStackMode_NONE )
937 0 : rParameter.eStackMode = GlobalStackMode_STACK_Z;
938 :
939 0 : ChartTypeDialogController::adjustParameterToMainType( rParameter );
940 0 : }
941 : //--------------------------------------------------------------------------
942 0 : NetChartDialogController::NetChartDialogController()
943 : {
944 0 : bSupports3D = false;
945 0 : }
946 0 : NetChartDialogController::~NetChartDialogController()
947 : {
948 0 : }
949 0 : String NetChartDialogController::getName()
950 : {
951 0 : return String( SchResId( STR_TYPE_NET ));
952 : }
953 0 : Image NetChartDialogController::getImage()
954 : {
955 0 : return Image( SchResId( IMG_TYPE_NET ));
956 : }
957 0 : bool NetChartDialogController::shouldShow_StackingControl() const
958 : {
959 0 : return true;
960 : }
961 0 : const tTemplateServiceChartTypeParameterMap& NetChartDialogController::getTemplateMap() const
962 : {
963 : static tTemplateServiceChartTypeParameterMap m_aTemplateMap =
964 : tTemplateServiceChartTypeParameterMap
965 : //@todo need templates with symbols only
966 : ( "com.sun.star.chart2.template.NetSymbol" , ChartTypeParameter(1,false,false,GlobalStackMode_NONE,true,false) )
967 0 : ( "com.sun.star.chart2.template.StackedNetSymbol" , ChartTypeParameter(1,false,false,GlobalStackMode_STACK_Y,true,false) )
968 0 : ( "com.sun.star.chart2.template.PercentStackedNetSymbol" ,ChartTypeParameter(1,false,false,GlobalStackMode_STACK_Y_PERCENT,true,false) )
969 :
970 0 : ( "com.sun.star.chart2.template.Net" , ChartTypeParameter(2,false,false,GlobalStackMode_NONE,true,true) )
971 0 : ( "com.sun.star.chart2.template.StackedNet" , ChartTypeParameter(2,false,false,GlobalStackMode_STACK_Y,true,true) )
972 0 : ( "com.sun.star.chart2.template.PercentStackedNet" , ChartTypeParameter(2,false,false,GlobalStackMode_STACK_Y_PERCENT,true,true) )
973 :
974 0 : ( "com.sun.star.chart2.template.NetLine" , ChartTypeParameter(3,false,false,GlobalStackMode_NONE,false,true) )
975 0 : ( "com.sun.star.chart2.template.StackedNetLine" , ChartTypeParameter(3,false,false,GlobalStackMode_STACK_Y,false,true) )
976 0 : ( "com.sun.star.chart2.template.PercentStackedNetLine" , ChartTypeParameter(3,false,false,GlobalStackMode_STACK_Y_PERCENT,false,true) )
977 :
978 0 : ( "com.sun.star.chart2.template.FilledNet" , ChartTypeParameter(4,false,false,GlobalStackMode_NONE,false,false) )
979 0 : ( "com.sun.star.chart2.template.StackedFilledNet" , ChartTypeParameter(4,false,false,GlobalStackMode_STACK_Y,false,false) )
980 0 : ( "com.sun.star.chart2.template.PercentStackedFilledNet" ,ChartTypeParameter(4,false,false,GlobalStackMode_STACK_Y_PERCENT,false,false) )
981 : ;
982 0 : return m_aTemplateMap;
983 : }
984 0 : void NetChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, const ChartTypeParameter& rParameter )
985 : {
986 0 : rSubTypeList.Clear();
987 :
988 0 : if( GlobalStackMode_NONE == rParameter.eStackMode )
989 : {
990 0 : rSubTypeList.InsertItem( 1, Bitmap( SchResId( BMP_NET_SYMB )));
991 0 : rSubTypeList.InsertItem( 2, Bitmap( SchResId( BMP_NET_LINESYMB )));
992 0 : rSubTypeList.InsertItem( 3, Bitmap( SchResId( BMP_NET )));
993 0 : rSubTypeList.InsertItem( 4, Bitmap( SchResId( BMP_NET_FILL )));
994 : }
995 : else
996 : {
997 0 : rSubTypeList.InsertItem( 1, Bitmap( SchResId( BMP_NET_SYMB_STACK )));
998 0 : rSubTypeList.InsertItem( 2, Bitmap( SchResId( BMP_NET_LINESYMB_STACK )));
999 0 : rSubTypeList.InsertItem( 3, Bitmap( SchResId( BMP_NET_STACK )));
1000 0 : rSubTypeList.InsertItem( 4, Bitmap( SchResId( BMP_NET_FILL_STACK )));
1001 : }
1002 :
1003 0 : rSubTypeList.SetItemText( 1, String( SchResId( STR_POINTS_ONLY )) );
1004 0 : rSubTypeList.SetItemText( 2, String( SchResId( STR_POINTS_AND_LINES )) );
1005 0 : rSubTypeList.SetItemText( 3, String( SchResId( STR_LINES_ONLY )) );
1006 0 : rSubTypeList.SetItemText( 4, String( SchResId( STR_FILLED )) );
1007 0 : }
1008 0 : void NetChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter )
1009 : {
1010 0 : rParameter.b3DLook = false;
1011 0 : if(rParameter.eStackMode==GlobalStackMode_STACK_Z)
1012 0 : rParameter.eStackMode = GlobalStackMode_NONE;
1013 :
1014 0 : switch( rParameter.nSubTypeIndex )
1015 : {
1016 : case 2:
1017 0 : rParameter.bSymbols = true;
1018 0 : rParameter.bLines = true;
1019 0 : break;
1020 : case 3:
1021 0 : rParameter.bSymbols = false;
1022 0 : rParameter.bLines = true;
1023 0 : break;
1024 : case 4:
1025 0 : rParameter.bSymbols = false;
1026 0 : rParameter.bLines = false;
1027 0 : break;
1028 : default:
1029 0 : rParameter.bSymbols = true;
1030 0 : rParameter.bLines = false;
1031 0 : break;
1032 : }
1033 0 : }
1034 : //--------------------------------------------------------------------------
1035 0 : StockChartDialogController::StockChartDialogController()
1036 : {
1037 0 : bSupports3D = false;
1038 0 : }
1039 :
1040 0 : StockChartDialogController::~StockChartDialogController()
1041 : {
1042 0 : }
1043 :
1044 0 : String StockChartDialogController::getName()
1045 : {
1046 0 : return String( SchResId( STR_TYPE_STOCK ));
1047 : }
1048 0 : Image StockChartDialogController::getImage()
1049 : {
1050 0 : return Image( SchResId( IMG_TYPE_STOCK ));
1051 : }
1052 :
1053 0 : const tTemplateServiceChartTypeParameterMap& StockChartDialogController::getTemplateMap() const
1054 : {
1055 : static tTemplateServiceChartTypeParameterMap m_aTemplateMap =
1056 : tTemplateServiceChartTypeParameterMap
1057 : ( "com.sun.star.chart2.template.StockLowHighClose" , ChartTypeParameter(1) )
1058 0 : ( "com.sun.star.chart2.template.StockOpenLowHighClose" , ChartTypeParameter(2) )
1059 0 : ( "com.sun.star.chart2.template.StockVolumeLowHighClose" , ChartTypeParameter(3) )
1060 0 : ( "com.sun.star.chart2.template.StockVolumeOpenLowHighClose" ,ChartTypeParameter(4) )
1061 : ;
1062 0 : return m_aTemplateMap;
1063 : }
1064 0 : void StockChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, const ChartTypeParameter& /*rParameter*/ )
1065 : {
1066 0 : rSubTypeList.Clear();
1067 0 : rSubTypeList.InsertItem( 1, Bitmap( SchResId( BMP_STOCK_1 )));
1068 0 : rSubTypeList.InsertItem( 2, Bitmap( SchResId( BMP_STOCK_2 )));
1069 0 : rSubTypeList.InsertItem( 3, Bitmap( SchResId( BMP_STOCK_3 )));
1070 0 : rSubTypeList.InsertItem( 4, Bitmap( SchResId( BMP_STOCK_4 )));
1071 :
1072 0 : rSubTypeList.SetItemText( 1, String( SchResId( STR_STOCK_1 )) );
1073 0 : rSubTypeList.SetItemText( 2, String( SchResId( STR_STOCK_2 )) );
1074 0 : rSubTypeList.SetItemText( 3, String( SchResId( STR_STOCK_3 )) );
1075 0 : rSubTypeList.SetItemText( 4, String( SchResId( STR_STOCK_4 )) );
1076 0 : }
1077 0 : void StockChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter )
1078 : {
1079 0 : rParameter.b3DLook = false;
1080 0 : rParameter.eStackMode = GlobalStackMode_NONE;
1081 0 : }
1082 : //--------------------------------------------------------------------------
1083 0 : CombiColumnLineChartDialogController::CombiColumnLineChartDialogController()
1084 : : m_pFT_NumberOfLines(0)
1085 0 : , m_pMF_NumberOfLines(0)
1086 : {
1087 0 : bSupports3D = false;
1088 0 : }
1089 :
1090 0 : CombiColumnLineChartDialogController::~CombiColumnLineChartDialogController()
1091 : {
1092 0 : if(m_pFT_NumberOfLines)
1093 0 : delete m_pFT_NumberOfLines;
1094 0 : if(m_pMF_NumberOfLines)
1095 0 : delete m_pMF_NumberOfLines;
1096 0 : }
1097 :
1098 0 : String CombiColumnLineChartDialogController::getName()
1099 : {
1100 0 : return String( SchResId( STR_TYPE_COMBI_COLUMN_LINE ));
1101 : }
1102 :
1103 0 : Image CombiColumnLineChartDialogController::getImage( )
1104 : {
1105 0 : return Image( SchResId( IMG_TYPE_COLUMN_LINE ) );
1106 : }
1107 :
1108 0 : const tTemplateServiceChartTypeParameterMap& CombiColumnLineChartDialogController::getTemplateMap() const
1109 : {
1110 : static tTemplateServiceChartTypeParameterMap m_aTemplateMap =
1111 : tTemplateServiceChartTypeParameterMap
1112 : ( "com.sun.star.chart2.template.ColumnWithLine" , ChartTypeParameter(1) )
1113 0 : ( "com.sun.star.chart2.template.StackedColumnWithLine" , ChartTypeParameter(2,false,false,GlobalStackMode_STACK_Y) )
1114 : ;
1115 0 : return m_aTemplateMap;
1116 : }
1117 0 : void CombiColumnLineChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, const ChartTypeParameter& /*rParameter*/ )
1118 : {
1119 0 : rSubTypeList.Clear();
1120 0 : rSubTypeList.InsertItem( 1, Bitmap( SchResId( BMP_COLUMN_LINE )));
1121 0 : rSubTypeList.InsertItem( 2, Bitmap( SchResId( BMP_COLUMN_LINE_STACKED )));
1122 :
1123 0 : rSubTypeList.SetItemText( 1, String( SchResId( STR_LINE_COLUMN )) );
1124 0 : rSubTypeList.SetItemText( 2, String( SchResId( STR_LINE_STACKEDCOLUMN )) );
1125 0 : }
1126 0 : void CombiColumnLineChartDialogController::showExtraControls( Window* pParent, const Point& rPosition, const Size& rSize )
1127 : {
1128 0 : if(!m_pFT_NumberOfLines)
1129 : {
1130 0 : m_pFT_NumberOfLines = new FixedText(pParent,pParent->GetStyle());
1131 0 : m_pFT_NumberOfLines->SetText( String( SchResId( STR_NUMBER_OF_LINES )) );
1132 : }
1133 0 : if(!m_pMF_NumberOfLines)
1134 : {
1135 0 : m_pMF_NumberOfLines = new MetricField(pParent,pParent->GetStyle() | WB_SPIN | WB_REPEAT | WB_BORDER );
1136 0 : m_pMF_NumberOfLines->SetDefaultUnit( FUNIT_CUSTOM );
1137 0 : m_pMF_NumberOfLines->SetUnit( FUNIT_CUSTOM );
1138 0 : m_pMF_NumberOfLines->SetSpinSize(1);
1139 0 : m_pMF_NumberOfLines->SetFirst( 1, FUNIT_CUSTOM );
1140 0 : m_pMF_NumberOfLines->SetLast( 100, FUNIT_CUSTOM );
1141 0 : m_pMF_NumberOfLines->SetMin( 1, FUNIT_CUSTOM );
1142 0 : m_pMF_NumberOfLines->SetMax( 100, FUNIT_CUSTOM );
1143 0 : m_pMF_NumberOfLines->SetHelpId( HID_SCH_NUM_OF_LINES );
1144 :
1145 0 : m_pMF_NumberOfLines->SetModifyHdl( LINK( this, CombiColumnLineChartDialogController, ChangeLineCountHdl ) );
1146 : }
1147 :
1148 0 : Size aDistanceSize( pParent->LogicToPixel( Size(RSC_SP_CTRL_DESC_X,2), MapMode(MAP_APPFONT) ) );
1149 0 : Size aMFSize( pParent->LogicToPixel( Size(20,RSC_CD_TEXTBOX_HEIGHT), MapMode(MAP_APPFONT) ) );
1150 0 : m_pMF_NumberOfLines->SetSizePixel( aMFSize );
1151 :
1152 0 : Size aFTSize(m_pFT_NumberOfLines->CalcMinimumSize(rSize.Width()-aMFSize.Width()-aDistanceSize.Width()));
1153 0 : m_pFT_NumberOfLines->SetSizePixel(aFTSize);
1154 :
1155 0 : m_pFT_NumberOfLines->SetPosPixel( Point( rPosition.X(), rPosition.Y()+aDistanceSize.Height()) );
1156 0 : m_pMF_NumberOfLines->SetPosPixel( Point( rPosition.X()+aFTSize.Width()+aDistanceSize.Width(), rPosition.Y()) );
1157 :
1158 0 : m_pFT_NumberOfLines->Show();
1159 0 : m_pMF_NumberOfLines->Show();
1160 0 : m_pMF_NumberOfLines->SetAccessibleName(m_pFT_NumberOfLines->GetText());
1161 0 : m_pMF_NumberOfLines->SetAccessibleRelationLabeledBy(m_pFT_NumberOfLines);
1162 0 : }
1163 0 : void CombiColumnLineChartDialogController::hideExtraControls() const
1164 : {
1165 0 : if(m_pFT_NumberOfLines)
1166 0 : m_pFT_NumberOfLines->Hide();
1167 0 : if(m_pMF_NumberOfLines)
1168 0 : m_pMF_NumberOfLines->Hide();
1169 0 : }
1170 0 : void CombiColumnLineChartDialogController::fillExtraControls( const ChartTypeParameter& /*rParameter*/
1171 : , const uno::Reference< XChartDocument >& xChartModel
1172 : , const uno::Reference< beans::XPropertySet >& xTemplateProps ) const
1173 : {
1174 0 : if(!m_pMF_NumberOfLines)
1175 : return;
1176 :
1177 0 : uno::Reference< frame::XModel > xModel( xChartModel, uno::UNO_QUERY );
1178 :
1179 0 : uno::Reference< XDiagram > xDiagram = ChartModelHelper::findDiagram( xModel );
1180 0 : if(!xDiagram.is())
1181 : return;
1182 :
1183 0 : sal_Int32 nNumLines = 0;
1184 :
1185 0 : if(xTemplateProps.is())
1186 : try
1187 : {
1188 0 : xTemplateProps->getPropertyValue( "NumberOfLines" ) >>= nNumLines;
1189 : }
1190 0 : catch( const uno::Exception & ex )
1191 : {
1192 : ASSERT_EXCEPTION( ex );
1193 : }
1194 0 : if( nNumLines < 0 )
1195 0 : nNumLines = 0;
1196 0 : m_pMF_NumberOfLines->SetValue( nNumLines );
1197 :
1198 0 : sal_Int32 nMaxLines = ChartModelHelper::getDataSeries( xModel ).size() - 1;
1199 0 : if( nMaxLines < 0 )
1200 0 : nMaxLines = 0;
1201 0 : m_pMF_NumberOfLines->SetLast( nMaxLines );
1202 0 : m_pMF_NumberOfLines->SetMax( nMaxLines );
1203 : }
1204 0 : void CombiColumnLineChartDialogController::setTemplateProperties( const uno::Reference< beans::XPropertySet >& xTemplateProps ) const throw (uno::RuntimeException)
1205 : {
1206 0 : if( xTemplateProps.is() )
1207 : {
1208 0 : sal_Int32 nNumLines = static_cast< sal_Int32 >( m_pMF_NumberOfLines->GetValue());
1209 0 : xTemplateProps->setPropertyValue( "NumberOfLines" , uno::makeAny(nNumLines) );
1210 : }
1211 0 : }
1212 :
1213 0 : IMPL_LINK_NOARG(CombiColumnLineChartDialogController, ChangeLineCountHdl)
1214 : {
1215 0 : if( m_pChangeListener )
1216 0 : m_pChangeListener->stateChanged(this);
1217 0 : return 0;
1218 : }
1219 0 : void CombiColumnLineChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter )
1220 : {
1221 0 : rParameter.b3DLook = false;
1222 0 : if(rParameter.eStackMode==GlobalStackMode_STACK_Z)
1223 0 : rParameter.eStackMode = GlobalStackMode_NONE;
1224 :
1225 0 : switch( rParameter.nSubTypeIndex )
1226 : {
1227 : case 2:
1228 0 : rParameter.eStackMode=GlobalStackMode_STACK_Y;
1229 0 : break;
1230 : default:
1231 0 : rParameter.eStackMode=GlobalStackMode_NONE;
1232 0 : break;
1233 : }
1234 0 : }
1235 : //--------------------------------------------------------------------------
1236 0 : BubbleChartDialogController::BubbleChartDialogController()
1237 : {
1238 0 : }
1239 0 : BubbleChartDialogController::~BubbleChartDialogController()
1240 : {
1241 0 : }
1242 0 : String BubbleChartDialogController::getName()
1243 : {
1244 0 : return String( SchResId( STR_TYPE_BUBBLE ));
1245 : }
1246 0 : Image BubbleChartDialogController::getImage()
1247 : {
1248 0 : return Image( SchResId( IMG_TYPE_BUBBLE ));
1249 : }
1250 0 : const tTemplateServiceChartTypeParameterMap& BubbleChartDialogController::getTemplateMap() const
1251 : {
1252 : static tTemplateServiceChartTypeParameterMap m_aTemplateMap =
1253 : tTemplateServiceChartTypeParameterMap
1254 0 : ( "com.sun.star.chart2.template.Bubble" , ChartTypeParameter(1,true) ) ;
1255 0 : return m_aTemplateMap;
1256 : }
1257 0 : void BubbleChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, const ChartTypeParameter& /*rParameter*/ )
1258 : {
1259 0 : rSubTypeList.Clear();
1260 0 : rSubTypeList.InsertItem( 1, Bitmap( SchResId( BMP_BUBBLE_1 )));
1261 :
1262 0 : rSubTypeList.SetItemText( 1, String( SchResId( STR_BUBBLE_1 )) );
1263 0 : }
1264 0 : void BubbleChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter )
1265 : {
1266 0 : rParameter.b3DLook = false;
1267 0 : rParameter.eStackMode = GlobalStackMode_NONE;
1268 0 : }
1269 : //.............................................................................
1270 : } //namespace chart
1271 : //.............................................................................
1272 :
1273 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|