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
10*cde9e8dcSAndrew Rist  *
11*cde9e8dcSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*cde9e8dcSAndrew Rist  *
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.
19*cde9e8dcSAndrew Rist  *
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 "ChartController.hxx"
27cdf0e10cSrcweir 
28cdf0e10cSrcweir #include "dlg_InsertAxis_Grid.hxx"
29cdf0e10cSrcweir #include "dlg_InsertDataLabel.hxx"
30cdf0e10cSrcweir #include "dlg_InsertLegend.hxx"
31cdf0e10cSrcweir #include "dlg_InsertTrendline.hxx"
32cdf0e10cSrcweir #include "dlg_InsertErrorBars.hxx"
33cdf0e10cSrcweir #include "dlg_InsertTitle.hxx"
34cdf0e10cSrcweir #include "dlg_ObjectProperties.hxx"
35cdf0e10cSrcweir 
36cdf0e10cSrcweir #include "ChartWindow.hxx"
37cdf0e10cSrcweir #include "ChartModelHelper.hxx"
38cdf0e10cSrcweir #include "AxisHelper.hxx"
39cdf0e10cSrcweir #include "TitleHelper.hxx"
40cdf0e10cSrcweir #include "DiagramHelper.hxx"
41cdf0e10cSrcweir #include "macros.hxx"
42cdf0e10cSrcweir #include "chartview/DrawModelWrapper.hxx"
43cdf0e10cSrcweir #include "NumberFormatterWrapper.hxx"
44cdf0e10cSrcweir #include "ViewElementListProvider.hxx"
45cdf0e10cSrcweir #include "MultipleChartConverters.hxx"
46cdf0e10cSrcweir #include "ControllerLockGuard.hxx"
47cdf0e10cSrcweir #include "UndoGuard.hxx"
48cdf0e10cSrcweir #include "ResId.hxx"
49cdf0e10cSrcweir #include "Strings.hrc"
50cdf0e10cSrcweir #include "ReferenceSizeProvider.hxx"
51cdf0e10cSrcweir #include "ObjectIdentifier.hxx"
52cdf0e10cSrcweir #include "RegressionCurveHelper.hxx"
53cdf0e10cSrcweir #include "RegressionCurveItemConverter.hxx"
54cdf0e10cSrcweir #include "StatisticsHelper.hxx"
55cdf0e10cSrcweir #include "ErrorBarItemConverter.hxx"
56cdf0e10cSrcweir #include "MultipleItemConverter.hxx"
57cdf0e10cSrcweir #include "DataSeriesHelper.hxx"
58cdf0e10cSrcweir #include "ObjectNameProvider.hxx"
59cdf0e10cSrcweir #include "LegendHelper.hxx"
60cdf0e10cSrcweir 
61cdf0e10cSrcweir #include <com/sun/star/chart2/XRegressionCurve.hpp>
62cdf0e10cSrcweir #include <com/sun/star/chart/ErrorBarStyle.hpp>
63cdf0e10cSrcweir #include <svx/ActionDescriptionProvider.hxx>
64cdf0e10cSrcweir 
65cdf0e10cSrcweir //--------------------------------------
66cdf0e10cSrcweir 
67cdf0e10cSrcweir // header for define RET_OK
68cdf0e10cSrcweir #include <vcl/msgbox.hxx>
69cdf0e10cSrcweir // header for class OUStringBuffer
70cdf0e10cSrcweir #include <rtl/ustrbuf.hxx>
71cdf0e10cSrcweir // header for class Application
72cdf0e10cSrcweir #include <vcl/svapp.hxx>
73cdf0e10cSrcweir // header for class ::vos::OGuard
74cdf0e10cSrcweir #include <vos/mutex.hxx>
75cdf0e10cSrcweir 
76cdf0e10cSrcweir 
77cdf0e10cSrcweir using namespace ::com::sun::star;
78cdf0e10cSrcweir using namespace ::com::sun::star::chart2;
79cdf0e10cSrcweir using ::com::sun::star::uno::Reference;
80cdf0e10cSrcweir using ::com::sun::star::uno::Sequence;
81cdf0e10cSrcweir using ::rtl::OUString;
82cdf0e10cSrcweir 
83cdf0e10cSrcweir //.............................................................................
84cdf0e10cSrcweir 
85cdf0e10cSrcweir namespace
86cdf0e10cSrcweir {
87cdf0e10cSrcweir struct lcl_InsertMeanValueLine
88cdf0e10cSrcweir {
89cdf0e10cSrcweir public:
lcl_InsertMeanValueLine__anonffc77ad30111::lcl_InsertMeanValueLine90cdf0e10cSrcweir     lcl_InsertMeanValueLine( const uno::Reference< uno::XComponentContext > & xContext ) :
91cdf0e10cSrcweir             m_xContext( xContext )
92cdf0e10cSrcweir     {}
93cdf0e10cSrcweir 
operator ()__anonffc77ad30111::lcl_InsertMeanValueLine94cdf0e10cSrcweir     void operator()( const uno::Reference< chart2::XDataSeries > & xSeries )
95cdf0e10cSrcweir     {
96cdf0e10cSrcweir         uno::Reference< chart2::XRegressionCurveContainer > xRegCurveCnt(
97cdf0e10cSrcweir             xSeries, uno::UNO_QUERY );
98cdf0e10cSrcweir         if( xRegCurveCnt.is())
99cdf0e10cSrcweir         {
100cdf0e10cSrcweir             ::chart::RegressionCurveHelper::addMeanValueLine(
101cdf0e10cSrcweir                 xRegCurveCnt, m_xContext, uno::Reference< beans::XPropertySet >( xSeries, uno::UNO_QUERY ));
102cdf0e10cSrcweir         }
103cdf0e10cSrcweir     }
104cdf0e10cSrcweir 
105cdf0e10cSrcweir private:
106cdf0e10cSrcweir     uno::Reference< uno::XComponentContext > m_xContext;
107cdf0e10cSrcweir };
108cdf0e10cSrcweir 
109cdf0e10cSrcweir } // anonymous namespace
110cdf0e10cSrcweir 
111cdf0e10cSrcweir //.............................................................................
112cdf0e10cSrcweir namespace chart
113cdf0e10cSrcweir {
114cdf0e10cSrcweir //.............................................................................
115cdf0e10cSrcweir 
executeDispatch_InsertAxes()116cdf0e10cSrcweir void ChartController::executeDispatch_InsertAxes()
117cdf0e10cSrcweir {
118cdf0e10cSrcweir     UndoGuard aUndoGuard(
119cdf0e10cSrcweir         ActionDescriptionProvider::createDescription(
120cdf0e10cSrcweir             ActionDescriptionProvider::INSERT, String( SchResId( STR_OBJECT_AXES ))),
121cdf0e10cSrcweir         m_xUndoManager );
122cdf0e10cSrcweir 
123cdf0e10cSrcweir     try
124cdf0e10cSrcweir     {
125cdf0e10cSrcweir         InsertAxisOrGridDialogData aDialogInput;
126cdf0e10cSrcweir         uno::Reference< XDiagram > xDiagram = ChartModelHelper::findDiagram(getModel());
127cdf0e10cSrcweir         AxisHelper::getAxisOrGridExcistence( aDialogInput.aExistenceList, xDiagram, sal_True );
128cdf0e10cSrcweir         AxisHelper::getAxisOrGridPossibilities( aDialogInput.aPossibilityList, xDiagram, sal_True );
129cdf0e10cSrcweir 
130cdf0e10cSrcweir         ::vos::OGuard aGuard( Application::GetSolarMutex());
131cdf0e10cSrcweir         SchAxisDlg aDlg( m_pChartWindow, aDialogInput );
132cdf0e10cSrcweir         if( aDlg.Execute() == RET_OK )
133cdf0e10cSrcweir         {
134cdf0e10cSrcweir             // lock controllers till end of block
135cdf0e10cSrcweir             ControllerLockGuard aCLGuard( getModel() );
136cdf0e10cSrcweir 
137cdf0e10cSrcweir             InsertAxisOrGridDialogData aDialogOutput;
138cdf0e10cSrcweir             aDlg.getResult( aDialogOutput );
139cdf0e10cSrcweir             ::std::auto_ptr< ReferenceSizeProvider > mpRefSizeProvider(
140cdf0e10cSrcweir                 impl_createReferenceSizeProvider());
141cdf0e10cSrcweir             bool bChanged = AxisHelper::changeVisibilityOfAxes( xDiagram
142cdf0e10cSrcweir                 , aDialogInput.aExistenceList, aDialogOutput.aExistenceList, m_xCC
143cdf0e10cSrcweir                 , mpRefSizeProvider.get() );
144cdf0e10cSrcweir             if( bChanged )
145cdf0e10cSrcweir                 aUndoGuard.commit();
146cdf0e10cSrcweir         }
147cdf0e10cSrcweir     }
148cdf0e10cSrcweir     catch( uno::RuntimeException& e)
149cdf0e10cSrcweir     {
150cdf0e10cSrcweir         ASSERT_EXCEPTION( e );
151cdf0e10cSrcweir     }
152cdf0e10cSrcweir }
153cdf0e10cSrcweir 
executeDispatch_InsertGrid()154cdf0e10cSrcweir void ChartController::executeDispatch_InsertGrid()
155cdf0e10cSrcweir {
156cdf0e10cSrcweir     UndoGuard aUndoGuard(
157cdf0e10cSrcweir         ActionDescriptionProvider::createDescription(
158cdf0e10cSrcweir             ActionDescriptionProvider::INSERT, String( SchResId( STR_OBJECT_GRIDS ))),
159cdf0e10cSrcweir         m_xUndoManager );
160cdf0e10cSrcweir 
161cdf0e10cSrcweir     try
162cdf0e10cSrcweir     {
163cdf0e10cSrcweir         InsertAxisOrGridDialogData aDialogInput;
164cdf0e10cSrcweir         uno::Reference< XDiagram > xDiagram = ChartModelHelper::findDiagram(getModel());
165cdf0e10cSrcweir         AxisHelper::getAxisOrGridExcistence( aDialogInput.aExistenceList, xDiagram, sal_False );
166cdf0e10cSrcweir         AxisHelper::getAxisOrGridPossibilities( aDialogInput.aPossibilityList, xDiagram, sal_False );
167cdf0e10cSrcweir 
168cdf0e10cSrcweir         ::vos::OGuard aGuard( Application::GetSolarMutex());
169cdf0e10cSrcweir         SchGridDlg aDlg( m_pChartWindow, aDialogInput );//aItemSet, b3D, bNet, bSecondaryX, bSecondaryY );
170cdf0e10cSrcweir         if( aDlg.Execute() == RET_OK )
171cdf0e10cSrcweir         {
172cdf0e10cSrcweir             // lock controllers till end of block
173cdf0e10cSrcweir             ControllerLockGuard aCLGuard( getModel() );
174cdf0e10cSrcweir             InsertAxisOrGridDialogData aDialogOutput;
175cdf0e10cSrcweir             aDlg.getResult( aDialogOutput );
176cdf0e10cSrcweir             bool bChanged = AxisHelper::changeVisibilityOfGrids( xDiagram
177cdf0e10cSrcweir                 , aDialogInput.aExistenceList, aDialogOutput.aExistenceList, m_xCC );
178cdf0e10cSrcweir             if( bChanged )
179cdf0e10cSrcweir                 aUndoGuard.commit();
180cdf0e10cSrcweir         }
181cdf0e10cSrcweir     }
182cdf0e10cSrcweir     catch( uno::RuntimeException& e)
183cdf0e10cSrcweir     {
184cdf0e10cSrcweir         ASSERT_EXCEPTION( e );
185cdf0e10cSrcweir     }
186cdf0e10cSrcweir }
187cdf0e10cSrcweir 
188cdf0e10cSrcweir //-----------------------------------------------------------------------------
189cdf0e10cSrcweir //-----------------------------------------------------------------------------
190cdf0e10cSrcweir 
executeDispatch_InsertTitles()191cdf0e10cSrcweir void ChartController::executeDispatch_InsertTitles()
192cdf0e10cSrcweir {
193cdf0e10cSrcweir     UndoGuard aUndoGuard(
194cdf0e10cSrcweir         ActionDescriptionProvider::createDescription(
195cdf0e10cSrcweir             ActionDescriptionProvider::INSERT, String( SchResId( STR_OBJECT_TITLES ))),
196cdf0e10cSrcweir         m_xUndoManager );
197cdf0e10cSrcweir 
198cdf0e10cSrcweir     try
199cdf0e10cSrcweir     {
200cdf0e10cSrcweir         TitleDialogData aDialogInput;
201cdf0e10cSrcweir         aDialogInput.readFromModel( getModel() );
202cdf0e10cSrcweir 
203cdf0e10cSrcweir         ::vos::OGuard aGuard( Application::GetSolarMutex());
204cdf0e10cSrcweir         SchTitleDlg aDlg( m_pChartWindow, aDialogInput );
205cdf0e10cSrcweir         if( aDlg.Execute() == RET_OK )
206cdf0e10cSrcweir         {
207cdf0e10cSrcweir             // lock controllers till end of block
208cdf0e10cSrcweir             ControllerLockGuard aCLGuard( getModel() );
209cdf0e10cSrcweir             TitleDialogData aDialogOutput( impl_createReferenceSizeProvider());
210cdf0e10cSrcweir             aDlg.getResult( aDialogOutput );
211cdf0e10cSrcweir             bool bChanged = aDialogOutput.writeDifferenceToModel( getModel(), m_xCC, &aDialogInput );
212cdf0e10cSrcweir             if( bChanged )
213cdf0e10cSrcweir                 aUndoGuard.commit();
214cdf0e10cSrcweir         }
215cdf0e10cSrcweir     }
216cdf0e10cSrcweir     catch( uno::RuntimeException& e)
217cdf0e10cSrcweir     {
218cdf0e10cSrcweir         ASSERT_EXCEPTION( e );
219cdf0e10cSrcweir     }
220cdf0e10cSrcweir }
221cdf0e10cSrcweir 
executeDispatch_DeleteLegend()222cdf0e10cSrcweir void ChartController::executeDispatch_DeleteLegend()
223cdf0e10cSrcweir {
224cdf0e10cSrcweir     UndoGuard aUndoGuard(
225cdf0e10cSrcweir         ActionDescriptionProvider::createDescription(
226cdf0e10cSrcweir             ActionDescriptionProvider::DELETE, String( SchResId( STR_OBJECT_LEGEND ))),
227cdf0e10cSrcweir         m_xUndoManager );
228cdf0e10cSrcweir 
229cdf0e10cSrcweir     LegendHelper::hideLegend( getModel() );
230cdf0e10cSrcweir     aUndoGuard.commit();
231cdf0e10cSrcweir }
232cdf0e10cSrcweir 
executeDispatch_InsertLegend()233cdf0e10cSrcweir void ChartController::executeDispatch_InsertLegend()
234cdf0e10cSrcweir {
235cdf0e10cSrcweir     UndoGuard aUndoGuard(
236cdf0e10cSrcweir         ActionDescriptionProvider::createDescription(
237cdf0e10cSrcweir             ActionDescriptionProvider::INSERT, String( SchResId( STR_OBJECT_LEGEND ))),
238cdf0e10cSrcweir         m_xUndoManager );
239cdf0e10cSrcweir 
240cdf0e10cSrcweir     Reference< chart2::XLegend > xLegend = LegendHelper::showLegend( getModel(), m_xCC );
241cdf0e10cSrcweir     aUndoGuard.commit();
242cdf0e10cSrcweir }
243cdf0e10cSrcweir 
executeDispatch_OpenLegendDialog()244cdf0e10cSrcweir void ChartController::executeDispatch_OpenLegendDialog()
245cdf0e10cSrcweir {
246cdf0e10cSrcweir     UndoGuard aUndoGuard(
247cdf0e10cSrcweir         ActionDescriptionProvider::createDescription(
248cdf0e10cSrcweir             ActionDescriptionProvider::INSERT, String( SchResId( STR_OBJECT_LEGEND ))),
249cdf0e10cSrcweir         m_xUndoManager );
250cdf0e10cSrcweir 
251cdf0e10cSrcweir     try
252cdf0e10cSrcweir     {
253cdf0e10cSrcweir         //prepare and open dialog
254cdf0e10cSrcweir         ::vos::OGuard aGuard( Application::GetSolarMutex());
255cdf0e10cSrcweir         SchLegendDlg aDlg( m_pChartWindow, m_xCC );
256cdf0e10cSrcweir         aDlg.init( getModel() );
257cdf0e10cSrcweir         if( aDlg.Execute() == RET_OK )
258cdf0e10cSrcweir         {
259cdf0e10cSrcweir             // lock controllers till end of block
260cdf0e10cSrcweir             ControllerLockGuard aCLGuard( getModel() );
261cdf0e10cSrcweir             bool bChanged = aDlg.writeToModel( getModel() );
262cdf0e10cSrcweir             if( bChanged )
263cdf0e10cSrcweir                 aUndoGuard.commit();
264cdf0e10cSrcweir         }
265cdf0e10cSrcweir     }
266cdf0e10cSrcweir     catch( uno::RuntimeException& e)
267cdf0e10cSrcweir     {
268cdf0e10cSrcweir         ASSERT_EXCEPTION( e );
269cdf0e10cSrcweir     }
270cdf0e10cSrcweir }
271cdf0e10cSrcweir 
272cdf0e10cSrcweir //-----------------------------------------------------------------------------
273cdf0e10cSrcweir //-----------------------------------------------------------------------------
274cdf0e10cSrcweir 
executeDispatch_InsertMenu_DataLabels()275cdf0e10cSrcweir void ChartController::executeDispatch_InsertMenu_DataLabels()
276cdf0e10cSrcweir {
277cdf0e10cSrcweir     UndoGuard aUndoGuard(
278cdf0e10cSrcweir         ActionDescriptionProvider::createDescription(
279cdf0e10cSrcweir             ActionDescriptionProvider::INSERT, String( SchResId( STR_OBJECT_DATALABELS ))),
280cdf0e10cSrcweir         m_xUndoManager );
281cdf0e10cSrcweir 
282cdf0e10cSrcweir     //if a series is selected insert labels for that series only:
283cdf0e10cSrcweir     uno::Reference< chart2::XDataSeries > xSeries(
284cdf0e10cSrcweir         ObjectIdentifier::getDataSeriesForCID( m_aSelection.getSelectedCID(), getModel()), uno::UNO_QUERY );
285cdf0e10cSrcweir     if( xSeries.is() )
286cdf0e10cSrcweir     {
287cdf0e10cSrcweir         // add labels
288cdf0e10cSrcweir         DataSeriesHelper::insertDataLabelsToSeriesAndAllPoints( xSeries );
289cdf0e10cSrcweir 
290cdf0e10cSrcweir         rtl::OUString aChildParticle( ObjectIdentifier::getStringForType( OBJECTTYPE_DATA_LABELS ) );
291cdf0e10cSrcweir         aChildParticle+=(C2U("="));
292cdf0e10cSrcweir         rtl::OUString aObjectCID = ObjectIdentifier::createClassifiedIdentifierForParticles(
293cdf0e10cSrcweir             ObjectIdentifier::getSeriesParticleFromCID(m_aSelection.getSelectedCID()), aChildParticle );
294cdf0e10cSrcweir 
295cdf0e10cSrcweir         bool bSuccess = ChartController::executeDlg_ObjectProperties_withoutUndoGuard( aObjectCID, true );
296cdf0e10cSrcweir         if( bSuccess )
297cdf0e10cSrcweir             aUndoGuard.commit();
298cdf0e10cSrcweir         return;
299cdf0e10cSrcweir     }
300cdf0e10cSrcweir 
301cdf0e10cSrcweir     try
302cdf0e10cSrcweir     {
303cdf0e10cSrcweir         wrapper::AllDataLabelItemConverter aItemConverter(
304cdf0e10cSrcweir             getModel(),
305cdf0e10cSrcweir             m_pDrawModelWrapper->GetItemPool(),
306cdf0e10cSrcweir             m_pDrawModelWrapper->getSdrModel(),
307cdf0e10cSrcweir             uno::Reference< lang::XMultiServiceFactory >( getModel(), uno::UNO_QUERY ));
308cdf0e10cSrcweir         SfxItemSet aItemSet = aItemConverter.CreateEmptyItemSet();
309cdf0e10cSrcweir         aItemConverter.FillItemSet( aItemSet );
310cdf0e10cSrcweir 
311cdf0e10cSrcweir         //prepare and open dialog
312cdf0e10cSrcweir         ::vos::OGuard aGuard( Application::GetSolarMutex());
313cdf0e10cSrcweir 
314cdf0e10cSrcweir         //get number formatter
315cdf0e10cSrcweir         uno::Reference< util::XNumberFormatsSupplier > xNumberFormatsSupplier( getModel(), uno::UNO_QUERY );
316cdf0e10cSrcweir         NumberFormatterWrapper aNumberFormatterWrapper( xNumberFormatsSupplier );
317cdf0e10cSrcweir         SvNumberFormatter* pNumberFormatter = aNumberFormatterWrapper.getSvNumberFormatter();
318cdf0e10cSrcweir 
319cdf0e10cSrcweir         DataLabelsDialog aDlg( m_pChartWindow, aItemSet, pNumberFormatter);
320cdf0e10cSrcweir 
321cdf0e10cSrcweir         if( aDlg.Execute() == RET_OK )
322cdf0e10cSrcweir         {
323cdf0e10cSrcweir             SfxItemSet aOutItemSet = aItemConverter.CreateEmptyItemSet();
324cdf0e10cSrcweir             aDlg.FillItemSet( aOutItemSet );
325cdf0e10cSrcweir             // lock controllers till end of block
326cdf0e10cSrcweir             ControllerLockGuard aCLGuard( getModel() );
327cdf0e10cSrcweir             bool bChanged = aItemConverter.ApplyItemSet( aOutItemSet );//model should be changed now
328cdf0e10cSrcweir             if( bChanged )
329cdf0e10cSrcweir                 aUndoGuard.commit();
330cdf0e10cSrcweir         }
331cdf0e10cSrcweir     }
332cdf0e10cSrcweir     catch( uno::RuntimeException& e)
333cdf0e10cSrcweir     {
334cdf0e10cSrcweir         ASSERT_EXCEPTION( e );
335cdf0e10cSrcweir     }
336cdf0e10cSrcweir }
337cdf0e10cSrcweir 
executeDispatch_InsertMenu_YErrorBars()338cdf0e10cSrcweir void ChartController::executeDispatch_InsertMenu_YErrorBars()
339cdf0e10cSrcweir {
340cdf0e10cSrcweir     //if a series is selected insert error bars for that series only:
341cdf0e10cSrcweir     uno::Reference< chart2::XDataSeries > xSeries(
342cdf0e10cSrcweir         ObjectIdentifier::getDataSeriesForCID( m_aSelection.getSelectedCID(), getModel() ), uno::UNO_QUERY );
343cdf0e10cSrcweir     if( xSeries.is())
344cdf0e10cSrcweir     {
345cdf0e10cSrcweir         executeDispatch_InsertYErrorBars();
346cdf0e10cSrcweir         return;
347cdf0e10cSrcweir     }
348cdf0e10cSrcweir 
349cdf0e10cSrcweir     //if no series is selected insert error bars for all series
350cdf0e10cSrcweir     UndoGuard aUndoGuard(
351cdf0e10cSrcweir         ActionDescriptionProvider::createDescription(
352cdf0e10cSrcweir             ActionDescriptionProvider::INSERT, ObjectNameProvider::getName_ObjectForAllSeries( OBJECTTYPE_DATA_ERRORS ) ),
353cdf0e10cSrcweir         m_xUndoManager );
354cdf0e10cSrcweir 
355cdf0e10cSrcweir     try
356cdf0e10cSrcweir     {
357cdf0e10cSrcweir         wrapper::AllSeriesStatisticsConverter aItemConverter(
358cdf0e10cSrcweir             getModel(), m_pDrawModelWrapper->GetItemPool() );
359cdf0e10cSrcweir         SfxItemSet aItemSet = aItemConverter.CreateEmptyItemSet();
360cdf0e10cSrcweir         aItemConverter.FillItemSet( aItemSet );
361cdf0e10cSrcweir 
362cdf0e10cSrcweir         //prepare and open dialog
363cdf0e10cSrcweir         ::vos::OGuard aGuard( Application::GetSolarMutex());
364cdf0e10cSrcweir         InsertErrorBarsDialog aDlg(
365cdf0e10cSrcweir             m_pChartWindow, aItemSet,
366cdf0e10cSrcweir             uno::Reference< chart2::XChartDocument >( getModel(), uno::UNO_QUERY ));
367cdf0e10cSrcweir         aDlg.SetAxisMinorStepWidthForErrorBarDecimals(
368cdf0e10cSrcweir             InsertErrorBarsDialog::getAxisMinorStepWidthForErrorBarDecimals( getModel(), m_xChartView, rtl::OUString() ) );
369cdf0e10cSrcweir 
370cdf0e10cSrcweir         if( aDlg.Execute() == RET_OK )
371cdf0e10cSrcweir         {
372cdf0e10cSrcweir             SfxItemSet aOutItemSet = aItemConverter.CreateEmptyItemSet();
373cdf0e10cSrcweir             aDlg.FillItemSet( aOutItemSet );
374cdf0e10cSrcweir 
375cdf0e10cSrcweir             // lock controllers till end of block
376cdf0e10cSrcweir             ControllerLockGuard aCLGuard( getModel() );
377cdf0e10cSrcweir             bool bChanged = aItemConverter.ApplyItemSet( aOutItemSet );//model should be changed now
378cdf0e10cSrcweir             if( bChanged )
379cdf0e10cSrcweir                 aUndoGuard.commit();
380cdf0e10cSrcweir         }
381cdf0e10cSrcweir     }
382cdf0e10cSrcweir     catch( uno::RuntimeException& e)
383cdf0e10cSrcweir     {
384cdf0e10cSrcweir         ASSERT_EXCEPTION( e );
385cdf0e10cSrcweir     }
386cdf0e10cSrcweir }
387cdf0e10cSrcweir 
executeDispatch_InsertMeanValue()388cdf0e10cSrcweir void ChartController::executeDispatch_InsertMeanValue()
389cdf0e10cSrcweir {
390cdf0e10cSrcweir     UndoGuard aUndoGuard(
391cdf0e10cSrcweir         ActionDescriptionProvider::createDescription(
392cdf0e10cSrcweir             ActionDescriptionProvider::INSERT, String( SchResId( STR_OBJECT_AVERAGE_LINE ))),
393cdf0e10cSrcweir         m_xUndoManager );
394cdf0e10cSrcweir     lcl_InsertMeanValueLine( m_xCC ).operator()(
395cdf0e10cSrcweir         ObjectIdentifier::getDataSeriesForCID( m_aSelection.getSelectedCID(), getModel() ));
396cdf0e10cSrcweir     aUndoGuard.commit();
397cdf0e10cSrcweir }
398cdf0e10cSrcweir 
executeDispatch_InsertMenu_MeanValues()399cdf0e10cSrcweir void ChartController::executeDispatch_InsertMenu_MeanValues()
400cdf0e10cSrcweir {
401cdf0e10cSrcweir     UndoGuard aUndoGuard(
402cdf0e10cSrcweir         ActionDescriptionProvider::createDescription(
403cdf0e10cSrcweir             ActionDescriptionProvider::INSERT, String( SchResId( STR_OBJECT_AVERAGE_LINE ))),
404cdf0e10cSrcweir         m_xUndoManager );
405cdf0e10cSrcweir 
406cdf0e10cSrcweir     uno::Reference< chart2::XDataSeries > xSeries(
407cdf0e10cSrcweir         ObjectIdentifier::getDataSeriesForCID( m_aSelection.getSelectedCID(), getModel() ), uno::UNO_QUERY );
408cdf0e10cSrcweir     if( xSeries.is() )
409cdf0e10cSrcweir     {
410cdf0e10cSrcweir         //if a series is selected insert mean value only for that series:
411cdf0e10cSrcweir         lcl_InsertMeanValueLine( m_xCC ).operator()(xSeries);
412cdf0e10cSrcweir     }
413cdf0e10cSrcweir     else
414cdf0e10cSrcweir     {
415cdf0e10cSrcweir         ::std::vector< uno::Reference< chart2::XDataSeries > > aSeries(
416cdf0e10cSrcweir             DiagramHelper::getDataSeriesFromDiagram( ChartModelHelper::findDiagram( getModel() )));
417cdf0e10cSrcweir         ::std::for_each( aSeries.begin(), aSeries.end(), lcl_InsertMeanValueLine( m_xCC ));
418cdf0e10cSrcweir     }
419cdf0e10cSrcweir     aUndoGuard.commit();
420cdf0e10cSrcweir }
421cdf0e10cSrcweir 
executeDispatch_InsertMenu_Trendlines()422cdf0e10cSrcweir void ChartController::executeDispatch_InsertMenu_Trendlines()
423cdf0e10cSrcweir {
424cdf0e10cSrcweir     //if a series is selected insert only for that series:
425cdf0e10cSrcweir     uno::Reference< chart2::XDataSeries > xSeries(
426cdf0e10cSrcweir         ObjectIdentifier::getDataSeriesForCID( m_aSelection.getSelectedCID(), getModel() ), uno::UNO_QUERY );
427cdf0e10cSrcweir     if( xSeries.is())
428cdf0e10cSrcweir     {
429cdf0e10cSrcweir         executeDispatch_InsertTrendline();
430cdf0e10cSrcweir         return;
431cdf0e10cSrcweir     }
432cdf0e10cSrcweir 
433cdf0e10cSrcweir     UndoGuard aUndoGuard(
434cdf0e10cSrcweir         ActionDescriptionProvider::createDescription(
435cdf0e10cSrcweir             ActionDescriptionProvider::INSERT, ObjectNameProvider::getName_ObjectForAllSeries( OBJECTTYPE_DATA_CURVE ) ),
436cdf0e10cSrcweir         m_xUndoManager );
437cdf0e10cSrcweir 
438cdf0e10cSrcweir     try
439cdf0e10cSrcweir     {
440cdf0e10cSrcweir         wrapper::AllSeriesStatisticsConverter aItemConverter(
441cdf0e10cSrcweir             getModel(), m_pDrawModelWrapper->GetItemPool() );
442cdf0e10cSrcweir         SfxItemSet aItemSet = aItemConverter.CreateEmptyItemSet();
443cdf0e10cSrcweir         aItemConverter.FillItemSet( aItemSet );
444cdf0e10cSrcweir 
445cdf0e10cSrcweir         //prepare and open dialog
446cdf0e10cSrcweir         ::vos::OGuard aGuard( Application::GetSolarMutex());
447cdf0e10cSrcweir         InsertTrendlineDialog aDlg( m_pChartWindow, aItemSet );
448cdf0e10cSrcweir         aDlg.adjustSize();
449cdf0e10cSrcweir 
450cdf0e10cSrcweir         if( aDlg.Execute() == RET_OK )
451cdf0e10cSrcweir         {
452cdf0e10cSrcweir             SfxItemSet aOutItemSet = aItemConverter.CreateEmptyItemSet();
453cdf0e10cSrcweir             aDlg.FillItemSet( aOutItemSet );
454cdf0e10cSrcweir 
455cdf0e10cSrcweir             // lock controllers till end of block
456cdf0e10cSrcweir             ControllerLockGuard aCLGuard( getModel() );
457cdf0e10cSrcweir             bool bChanged = aItemConverter.ApplyItemSet( aOutItemSet );//model should be changed now
458cdf0e10cSrcweir             if( bChanged )
459cdf0e10cSrcweir                 aUndoGuard.commit();
460cdf0e10cSrcweir         }
461cdf0e10cSrcweir     }
462cdf0e10cSrcweir     catch( uno::RuntimeException& e)
463cdf0e10cSrcweir     {
464cdf0e10cSrcweir         ASSERT_EXCEPTION( e );
465cdf0e10cSrcweir     }
466cdf0e10cSrcweir }
467cdf0e10cSrcweir 
executeDispatch_InsertTrendline()468cdf0e10cSrcweir void ChartController::executeDispatch_InsertTrendline()
469cdf0e10cSrcweir {
470cdf0e10cSrcweir     uno::Reference< chart2::XRegressionCurveContainer > xRegCurveCnt(
471cdf0e10cSrcweir         ObjectIdentifier::getDataSeriesForCID( m_aSelection.getSelectedCID(), getModel()), uno::UNO_QUERY );
472cdf0e10cSrcweir     if( xRegCurveCnt.is())
473cdf0e10cSrcweir     {
474cdf0e10cSrcweir         UndoLiveUpdateGuard aUndoGuard(
475cdf0e10cSrcweir             ActionDescriptionProvider::createDescription(
476cdf0e10cSrcweir                 ActionDescriptionProvider::INSERT, String( SchResId( STR_OBJECT_CURVE ))),
477cdf0e10cSrcweir             m_xUndoManager );
478cdf0e10cSrcweir 
479cdf0e10cSrcweir         // add a linear curve
480cdf0e10cSrcweir         RegressionCurveHelper::addRegressionCurve(
481cdf0e10cSrcweir             RegressionCurveHelper::REGRESSION_TYPE_LINEAR, xRegCurveCnt, m_xCC );
482cdf0e10cSrcweir 
483cdf0e10cSrcweir         // get an appropriate item converter
484cdf0e10cSrcweir         uno::Reference< chart2::XRegressionCurve > xCurve(
485cdf0e10cSrcweir             RegressionCurveHelper::getFirstCurveNotMeanValueLine( xRegCurveCnt ));
486cdf0e10cSrcweir         uno::Reference< beans::XPropertySet > xCurveProp( xCurve, uno::UNO_QUERY );
487cdf0e10cSrcweir         if( !xCurveProp.is())
488cdf0e10cSrcweir             return;
489cdf0e10cSrcweir         wrapper::RegressionCurveItemConverter aItemConverter(
490cdf0e10cSrcweir             xCurveProp, xRegCurveCnt, m_pDrawModelWrapper->getSdrModel().GetItemPool(),
491cdf0e10cSrcweir             m_pDrawModelWrapper->getSdrModel(),
492cdf0e10cSrcweir             uno::Reference< lang::XMultiServiceFactory >( getModel(), uno::UNO_QUERY ));
493cdf0e10cSrcweir 
494cdf0e10cSrcweir         // open dialog
495cdf0e10cSrcweir         SfxItemSet aItemSet = aItemConverter.CreateEmptyItemSet();
496cdf0e10cSrcweir         aItemConverter.FillItemSet( aItemSet );
497cdf0e10cSrcweir         ObjectPropertiesDialogParameter aDialogParameter = ObjectPropertiesDialogParameter(
498cdf0e10cSrcweir             ObjectIdentifier::createDataCurveCID(
499cdf0e10cSrcweir                 ObjectIdentifier::getSeriesParticleFromCID( m_aSelection.getSelectedCID()),
500cdf0e10cSrcweir                 RegressionCurveHelper::getRegressionCurveIndex( xRegCurveCnt, xCurve ), false ));
501cdf0e10cSrcweir 		aDialogParameter.init( getModel() );
502cdf0e10cSrcweir         ViewElementListProvider aViewElementListProvider( m_pDrawModelWrapper.get());
503cdf0e10cSrcweir         ::vos::OGuard aGuard( Application::GetSolarMutex());
504cdf0e10cSrcweir         SchAttribTabDlg aDlg( m_pChartWindow, &aItemSet, &aDialogParameter, &aViewElementListProvider,
505cdf0e10cSrcweir                               uno::Reference< util::XNumberFormatsSupplier >( getModel(), uno::UNO_QUERY ));
506cdf0e10cSrcweir 
507cdf0e10cSrcweir         // note: when a user pressed "OK" but didn't change any settings in the
508cdf0e10cSrcweir         // dialog, the SfxTabDialog returns "Cancel"
509cdf0e10cSrcweir         if( aDlg.Execute() == RET_OK || aDlg.DialogWasClosedWithOK())
510cdf0e10cSrcweir         {
511cdf0e10cSrcweir             const SfxItemSet* pOutItemSet = aDlg.GetOutputItemSet();
512cdf0e10cSrcweir             if( pOutItemSet )
513cdf0e10cSrcweir             {
514cdf0e10cSrcweir                 ControllerLockGuard aCLGuard( getModel() );
515cdf0e10cSrcweir                 aItemConverter.ApplyItemSet( *pOutItemSet );
516cdf0e10cSrcweir             }
517cdf0e10cSrcweir             aUndoGuard.commit();
518cdf0e10cSrcweir         }
519cdf0e10cSrcweir     }
520cdf0e10cSrcweir }
521cdf0e10cSrcweir 
executeDispatch_InsertYErrorBars()522cdf0e10cSrcweir void ChartController::executeDispatch_InsertYErrorBars()
523cdf0e10cSrcweir {
524cdf0e10cSrcweir     uno::Reference< chart2::XDataSeries > xSeries(
525cdf0e10cSrcweir         ObjectIdentifier::getDataSeriesForCID( m_aSelection.getSelectedCID(), getModel() ), uno::UNO_QUERY );
526cdf0e10cSrcweir     if( xSeries.is())
527cdf0e10cSrcweir     {
528cdf0e10cSrcweir         UndoLiveUpdateGuard aUndoGuard(
529cdf0e10cSrcweir             ActionDescriptionProvider::createDescription(
530cdf0e10cSrcweir                 ActionDescriptionProvider::INSERT, String( SchResId( STR_OBJECT_ERROR_BARS ))),
531cdf0e10cSrcweir             m_xUndoManager );
532cdf0e10cSrcweir 
533cdf0e10cSrcweir         // add error bars with standard deviation
534cdf0e10cSrcweir         uno::Reference< beans::XPropertySet > xErrorBarProp(
535cdf0e10cSrcweir             StatisticsHelper::addErrorBars( xSeries, m_xCC, ::com::sun::star::chart::ErrorBarStyle::STANDARD_DEVIATION ));
536cdf0e10cSrcweir 
537cdf0e10cSrcweir         // get an appropriate item converter
538cdf0e10cSrcweir         wrapper::ErrorBarItemConverter aItemConverter(
539cdf0e10cSrcweir             getModel(), xErrorBarProp, m_pDrawModelWrapper->getSdrModel().GetItemPool(),
540cdf0e10cSrcweir             m_pDrawModelWrapper->getSdrModel(),
541cdf0e10cSrcweir             uno::Reference< lang::XMultiServiceFactory >( getModel(), uno::UNO_QUERY ));
542cdf0e10cSrcweir 
543cdf0e10cSrcweir         // open dialog
544cdf0e10cSrcweir         SfxItemSet aItemSet = aItemConverter.CreateEmptyItemSet();
545cdf0e10cSrcweir         aItemConverter.FillItemSet( aItemSet );
546cdf0e10cSrcweir         ObjectPropertiesDialogParameter aDialogParameter = ObjectPropertiesDialogParameter(
547cdf0e10cSrcweir             ObjectIdentifier::createClassifiedIdentifierWithParent(
548cdf0e10cSrcweir                 OBJECTTYPE_DATA_ERRORS, ::rtl::OUString(), m_aSelection.getSelectedCID()));
549cdf0e10cSrcweir 		aDialogParameter.init( getModel() );
550cdf0e10cSrcweir         ViewElementListProvider aViewElementListProvider( m_pDrawModelWrapper.get());
551cdf0e10cSrcweir         ::vos::OGuard aGuard( Application::GetSolarMutex());
552cdf0e10cSrcweir         SchAttribTabDlg aDlg( m_pChartWindow, &aItemSet, &aDialogParameter, &aViewElementListProvider,
553cdf0e10cSrcweir                               uno::Reference< util::XNumberFormatsSupplier >( getModel(), uno::UNO_QUERY ));
554cdf0e10cSrcweir         aDlg.SetAxisMinorStepWidthForErrorBarDecimals(
555cdf0e10cSrcweir             InsertErrorBarsDialog::getAxisMinorStepWidthForErrorBarDecimals( getModel(), m_xChartView, m_aSelection.getSelectedCID()));
556cdf0e10cSrcweir 
557cdf0e10cSrcweir         // note: when a user pressed "OK" but didn't change any settings in the
558cdf0e10cSrcweir         // dialog, the SfxTabDialog returns "Cancel"
559cdf0e10cSrcweir         if( aDlg.Execute() == RET_OK || aDlg.DialogWasClosedWithOK())
560cdf0e10cSrcweir         {
561cdf0e10cSrcweir             const SfxItemSet* pOutItemSet = aDlg.GetOutputItemSet();
562cdf0e10cSrcweir             if( pOutItemSet )
563cdf0e10cSrcweir             {
564cdf0e10cSrcweir                 ControllerLockGuard aCLGuard( getModel() );
565cdf0e10cSrcweir                 aItemConverter.ApplyItemSet( *pOutItemSet );
566cdf0e10cSrcweir             }
567cdf0e10cSrcweir             aUndoGuard.commit();
568cdf0e10cSrcweir         }
569cdf0e10cSrcweir     }
570cdf0e10cSrcweir }
571cdf0e10cSrcweir 
executeDispatch_InsertTrendlineEquation(bool bInsertR2)572cdf0e10cSrcweir void ChartController::executeDispatch_InsertTrendlineEquation( bool bInsertR2 )
573cdf0e10cSrcweir {
574cdf0e10cSrcweir     uno::Reference< chart2::XRegressionCurve > xRegCurve(
575cdf0e10cSrcweir         ObjectIdentifier::getObjectPropertySet( m_aSelection.getSelectedCID(), getModel() ), uno::UNO_QUERY );
576cdf0e10cSrcweir     if( !xRegCurve.is() )
577cdf0e10cSrcweir     {
578cdf0e10cSrcweir         uno::Reference< chart2::XRegressionCurveContainer > xRegCurveCnt(
579cdf0e10cSrcweir             ObjectIdentifier::getDataSeriesForCID( m_aSelection.getSelectedCID(), getModel() ), uno::UNO_QUERY );
580cdf0e10cSrcweir         xRegCurve.set( RegressionCurveHelper::getFirstCurveNotMeanValueLine( xRegCurveCnt ) );
581cdf0e10cSrcweir     }
582cdf0e10cSrcweir     if( xRegCurve.is())
583cdf0e10cSrcweir     {
584cdf0e10cSrcweir         uno::Reference< beans::XPropertySet > xEqProp( xRegCurve->getEquationProperties());
585cdf0e10cSrcweir         if( xEqProp.is())
586cdf0e10cSrcweir         {
587cdf0e10cSrcweir             // using assignment for broken gcc 3.3
588cdf0e10cSrcweir             UndoGuard aUndoGuard = UndoGuard(
589cdf0e10cSrcweir                 ActionDescriptionProvider::createDescription(
590cdf0e10cSrcweir                     ActionDescriptionProvider::INSERT, String( SchResId( STR_OBJECT_CURVE_EQUATION ))),
591cdf0e10cSrcweir                 m_xUndoManager );
592cdf0e10cSrcweir             xEqProp->setPropertyValue( C2U("ShowEquation"), uno::makeAny( true ));
593cdf0e10cSrcweir             xEqProp->setPropertyValue( C2U("ShowCorrelationCoefficient"), uno::makeAny( bInsertR2 ));
594cdf0e10cSrcweir             aUndoGuard.commit();
595cdf0e10cSrcweir         }
596cdf0e10cSrcweir     }
597cdf0e10cSrcweir }
598cdf0e10cSrcweir 
executeDispatch_InsertR2Value()599cdf0e10cSrcweir void ChartController::executeDispatch_InsertR2Value()
600cdf0e10cSrcweir {
601cdf0e10cSrcweir     uno::Reference< beans::XPropertySet > xEqProp(
602cdf0e10cSrcweir         ObjectIdentifier::getObjectPropertySet( m_aSelection.getSelectedCID(), getModel() ), uno::UNO_QUERY );
603cdf0e10cSrcweir     if( xEqProp.is())
604cdf0e10cSrcweir     {
605cdf0e10cSrcweir         UndoGuard aUndoGuard = UndoGuard(
606cdf0e10cSrcweir             ActionDescriptionProvider::createDescription(
607cdf0e10cSrcweir                 ActionDescriptionProvider::INSERT, String( SchResId( STR_OBJECT_CURVE_EQUATION ))),
608cdf0e10cSrcweir             m_xUndoManager );
609cdf0e10cSrcweir         xEqProp->setPropertyValue( C2U("ShowCorrelationCoefficient"), uno::makeAny( true ));
610cdf0e10cSrcweir         aUndoGuard.commit();
611cdf0e10cSrcweir     }
612cdf0e10cSrcweir }
613cdf0e10cSrcweir 
executeDispatch_DeleteR2Value()614cdf0e10cSrcweir void ChartController::executeDispatch_DeleteR2Value()
615cdf0e10cSrcweir {
616cdf0e10cSrcweir     uno::Reference< beans::XPropertySet > xEqProp(
617cdf0e10cSrcweir         ObjectIdentifier::getObjectPropertySet( m_aSelection.getSelectedCID(), getModel() ), uno::UNO_QUERY );
618cdf0e10cSrcweir     if( xEqProp.is())
619cdf0e10cSrcweir     {
620cdf0e10cSrcweir         UndoGuard aUndoGuard = UndoGuard(
621cdf0e10cSrcweir             ActionDescriptionProvider::createDescription(
622cdf0e10cSrcweir                 ActionDescriptionProvider::INSERT, String( SchResId( STR_OBJECT_CURVE_EQUATION ))),
623cdf0e10cSrcweir             m_xUndoManager );
624cdf0e10cSrcweir         xEqProp->setPropertyValue( C2U("ShowCorrelationCoefficient"), uno::makeAny( false ));
625cdf0e10cSrcweir         aUndoGuard.commit();
626cdf0e10cSrcweir     }
627cdf0e10cSrcweir }
628cdf0e10cSrcweir 
executeDispatch_DeleteMeanValue()629cdf0e10cSrcweir void ChartController::executeDispatch_DeleteMeanValue()
630cdf0e10cSrcweir {
631cdf0e10cSrcweir     uno::Reference< chart2::XRegressionCurveContainer > xRegCurveCnt(
632cdf0e10cSrcweir         ObjectIdentifier::getDataSeriesForCID( m_aSelection.getSelectedCID(), getModel() ), uno::UNO_QUERY );
633cdf0e10cSrcweir     if( xRegCurveCnt.is())
634cdf0e10cSrcweir     {
635cdf0e10cSrcweir         UndoGuard aUndoGuard(
636cdf0e10cSrcweir             ActionDescriptionProvider::createDescription(
637cdf0e10cSrcweir                 ActionDescriptionProvider::DELETE, String( SchResId( STR_OBJECT_AVERAGE_LINE ))),
638cdf0e10cSrcweir             m_xUndoManager );
639cdf0e10cSrcweir         RegressionCurveHelper::removeMeanValueLine( xRegCurveCnt );
640cdf0e10cSrcweir         aUndoGuard.commit();
641cdf0e10cSrcweir     }
642cdf0e10cSrcweir }
643cdf0e10cSrcweir 
executeDispatch_DeleteTrendline()644cdf0e10cSrcweir void ChartController::executeDispatch_DeleteTrendline()
645cdf0e10cSrcweir {
646cdf0e10cSrcweir     uno::Reference< chart2::XRegressionCurveContainer > xRegCurveCnt(
647cdf0e10cSrcweir         ObjectIdentifier::getDataSeriesForCID( m_aSelection.getSelectedCID(), getModel() ), uno::UNO_QUERY );
648cdf0e10cSrcweir     if( xRegCurveCnt.is())
649cdf0e10cSrcweir     {
650cdf0e10cSrcweir         UndoGuard aUndoGuard(
651cdf0e10cSrcweir             ActionDescriptionProvider::createDescription(
652cdf0e10cSrcweir                 ActionDescriptionProvider::DELETE, String( SchResId( STR_OBJECT_CURVE ))),
653cdf0e10cSrcweir             m_xUndoManager );
654cdf0e10cSrcweir         RegressionCurveHelper::removeAllExceptMeanValueLine( xRegCurveCnt );
655cdf0e10cSrcweir         aUndoGuard.commit();
656cdf0e10cSrcweir     }
657cdf0e10cSrcweir }
658cdf0e10cSrcweir 
executeDispatch_DeleteTrendlineEquation()659cdf0e10cSrcweir void ChartController::executeDispatch_DeleteTrendlineEquation()
660cdf0e10cSrcweir {
661cdf0e10cSrcweir     uno::Reference< chart2::XRegressionCurveContainer > xRegCurveCnt(
662cdf0e10cSrcweir         ObjectIdentifier::getDataSeriesForCID( m_aSelection.getSelectedCID(), getModel() ), uno::UNO_QUERY );
663cdf0e10cSrcweir     if( xRegCurveCnt.is())
664cdf0e10cSrcweir     {
665cdf0e10cSrcweir         UndoGuard aUndoGuard(
666cdf0e10cSrcweir             ActionDescriptionProvider::createDescription(
667cdf0e10cSrcweir                 ActionDescriptionProvider::DELETE, String( SchResId( STR_OBJECT_CURVE_EQUATION ))),
668cdf0e10cSrcweir             m_xUndoManager );
669cdf0e10cSrcweir         RegressionCurveHelper::removeEquations( xRegCurveCnt );
670cdf0e10cSrcweir         aUndoGuard.commit();
671cdf0e10cSrcweir     }
672cdf0e10cSrcweir }
673cdf0e10cSrcweir 
executeDispatch_DeleteYErrorBars()674cdf0e10cSrcweir void ChartController::executeDispatch_DeleteYErrorBars()
675cdf0e10cSrcweir {
676cdf0e10cSrcweir     uno::Reference< chart2::XDataSeries > xDataSeries(
677cdf0e10cSrcweir         ObjectIdentifier::getDataSeriesForCID( m_aSelection.getSelectedCID(), getModel() ));
678cdf0e10cSrcweir     if( xDataSeries.is())
679cdf0e10cSrcweir     {
680cdf0e10cSrcweir         UndoGuard aUndoGuard(
681cdf0e10cSrcweir             ActionDescriptionProvider::createDescription(
682cdf0e10cSrcweir                 ActionDescriptionProvider::DELETE, String( SchResId( STR_OBJECT_CURVE ))),
683cdf0e10cSrcweir             m_xUndoManager );
684cdf0e10cSrcweir         StatisticsHelper::removeErrorBars( xDataSeries );
685cdf0e10cSrcweir         aUndoGuard.commit();
686cdf0e10cSrcweir     }
687cdf0e10cSrcweir }
688cdf0e10cSrcweir 
executeDispatch_InsertDataLabels()689cdf0e10cSrcweir void ChartController::executeDispatch_InsertDataLabels()
690cdf0e10cSrcweir {
691cdf0e10cSrcweir     uno::Reference< chart2::XDataSeries > xSeries(
692cdf0e10cSrcweir         ObjectIdentifier::getDataSeriesForCID( m_aSelection.getSelectedCID(), getModel() ), uno::UNO_QUERY );
693cdf0e10cSrcweir     if( xSeries.is() )
694cdf0e10cSrcweir     {
695cdf0e10cSrcweir         UndoGuard aUndoGuard = UndoGuard( ActionDescriptionProvider::createDescription( ActionDescriptionProvider::INSERT,
696cdf0e10cSrcweir             String( SchResId( STR_OBJECT_DATALABELS ))),
697cdf0e10cSrcweir             m_xUndoManager );
698cdf0e10cSrcweir         DataSeriesHelper::insertDataLabelsToSeriesAndAllPoints( xSeries );
699cdf0e10cSrcweir         aUndoGuard.commit();
700cdf0e10cSrcweir     }
701cdf0e10cSrcweir }
702cdf0e10cSrcweir 
executeDispatch_InsertDataLabel()703cdf0e10cSrcweir void ChartController::executeDispatch_InsertDataLabel()
704cdf0e10cSrcweir {
705cdf0e10cSrcweir     UndoGuard aUndoGuard = UndoGuard( ActionDescriptionProvider::createDescription( ActionDescriptionProvider::INSERT,
706cdf0e10cSrcweir         String( SchResId( STR_OBJECT_LABEL ))),
707cdf0e10cSrcweir         m_xUndoManager );
708cdf0e10cSrcweir     DataSeriesHelper::insertDataLabelToPoint( ObjectIdentifier::getObjectPropertySet( m_aSelection.getSelectedCID(), getModel() ) );
709cdf0e10cSrcweir     aUndoGuard.commit();
710cdf0e10cSrcweir }
711cdf0e10cSrcweir 
executeDispatch_DeleteDataLabels()712cdf0e10cSrcweir void ChartController::executeDispatch_DeleteDataLabels()
713cdf0e10cSrcweir {
714cdf0e10cSrcweir     uno::Reference< chart2::XDataSeries > xSeries(
715cdf0e10cSrcweir         ObjectIdentifier::getDataSeriesForCID( m_aSelection.getSelectedCID(), getModel() ), uno::UNO_QUERY );
716cdf0e10cSrcweir     if( xSeries.is() )
717cdf0e10cSrcweir     {
718cdf0e10cSrcweir         UndoGuard aUndoGuard( ActionDescriptionProvider::createDescription( ActionDescriptionProvider::DELETE,
719cdf0e10cSrcweir             String( SchResId( STR_OBJECT_DATALABELS ))),
720cdf0e10cSrcweir             m_xUndoManager );
721cdf0e10cSrcweir         DataSeriesHelper::deleteDataLabelsFromSeriesAndAllPoints( xSeries );
722cdf0e10cSrcweir         aUndoGuard.commit();
723cdf0e10cSrcweir     }
724cdf0e10cSrcweir }
725cdf0e10cSrcweir 
executeDispatch_DeleteDataLabel()726cdf0e10cSrcweir void ChartController::executeDispatch_DeleteDataLabel()
727cdf0e10cSrcweir {
728cdf0e10cSrcweir     UndoGuard aUndoGuard( ActionDescriptionProvider::createDescription( ActionDescriptionProvider::DELETE,
729cdf0e10cSrcweir         String( SchResId( STR_OBJECT_LABEL ))),
730cdf0e10cSrcweir         m_xUndoManager );
731cdf0e10cSrcweir     DataSeriesHelper::deleteDataLabelsFromPoint( ObjectIdentifier::getObjectPropertySet( m_aSelection.getSelectedCID(), getModel() ) );
732cdf0e10cSrcweir     aUndoGuard.commit();
733cdf0e10cSrcweir }
734cdf0e10cSrcweir 
executeDispatch_ResetAllDataPoints()735cdf0e10cSrcweir void ChartController::executeDispatch_ResetAllDataPoints()
736cdf0e10cSrcweir {
737cdf0e10cSrcweir     UndoGuard aUndoGuard( ActionDescriptionProvider::createDescription( ActionDescriptionProvider::FORMAT,
738cdf0e10cSrcweir         String( SchResId( STR_OBJECT_DATAPOINTS ))),
739cdf0e10cSrcweir         m_xUndoManager );
740cdf0e10cSrcweir     uno::Reference< chart2::XDataSeries > xSeries( ObjectIdentifier::getDataSeriesForCID( m_aSelection.getSelectedCID(), getModel() ), uno::UNO_QUERY );
741cdf0e10cSrcweir     if( xSeries.is() )
742cdf0e10cSrcweir         xSeries->resetAllDataPoints();
743cdf0e10cSrcweir     aUndoGuard.commit();
744cdf0e10cSrcweir }
executeDispatch_ResetDataPoint()745cdf0e10cSrcweir void ChartController::executeDispatch_ResetDataPoint()
746cdf0e10cSrcweir {
747cdf0e10cSrcweir     UndoGuard aUndoGuard( ActionDescriptionProvider::createDescription( ActionDescriptionProvider::FORMAT,
748cdf0e10cSrcweir         String( SchResId( STR_OBJECT_DATAPOINT ))),
749cdf0e10cSrcweir         m_xUndoManager );
750cdf0e10cSrcweir     uno::Reference< chart2::XDataSeries > xSeries( ObjectIdentifier::getDataSeriesForCID( m_aSelection.getSelectedCID(), getModel() ), uno::UNO_QUERY );
751cdf0e10cSrcweir     if( xSeries.is() )
752cdf0e10cSrcweir     {
753cdf0e10cSrcweir         sal_Int32 nPointIndex = ObjectIdentifier::getIndexFromParticleOrCID( m_aSelection.getSelectedCID() );
754cdf0e10cSrcweir         xSeries->resetDataPoint( nPointIndex );
755cdf0e10cSrcweir     }
756cdf0e10cSrcweir     aUndoGuard.commit();
757cdf0e10cSrcweir }
758cdf0e10cSrcweir 
executeDispatch_InsertAxisTitle()759cdf0e10cSrcweir void ChartController::executeDispatch_InsertAxisTitle()
760cdf0e10cSrcweir {
761cdf0e10cSrcweir     try
762cdf0e10cSrcweir     {
763cdf0e10cSrcweir         uno::Reference< XTitle > xTitle;
764cdf0e10cSrcweir         {
765cdf0e10cSrcweir             UndoGuard aUndoGuard(
766cdf0e10cSrcweir             ActionDescriptionProvider::createDescription(
767cdf0e10cSrcweir                 ActionDescriptionProvider::INSERT, String( SchResId( STR_OBJECT_TITLE ))),
768cdf0e10cSrcweir             m_xUndoManager );
769cdf0e10cSrcweir 
770cdf0e10cSrcweir             Reference< XAxis > xAxis = ObjectIdentifier::getAxisForCID( m_aSelection.getSelectedCID(), getModel() );
771cdf0e10cSrcweir             sal_Int32 nDimensionIndex = -1;
772cdf0e10cSrcweir             sal_Int32 nCooSysIndex = -1;
773cdf0e10cSrcweir             sal_Int32 nAxisIndex = -1;
774cdf0e10cSrcweir             AxisHelper::getIndicesForAxis( xAxis, ChartModelHelper::findDiagram(getModel()), nCooSysIndex, nDimensionIndex, nAxisIndex );
775cdf0e10cSrcweir 
776cdf0e10cSrcweir             TitleHelper::eTitleType eTitleType = TitleHelper::X_AXIS_TITLE;
777cdf0e10cSrcweir             if( nDimensionIndex==0 )
778cdf0e10cSrcweir                 eTitleType = nAxisIndex==0 ? TitleHelper::X_AXIS_TITLE : TitleHelper::SECONDARY_X_AXIS_TITLE;
779cdf0e10cSrcweir             else if( nDimensionIndex==1 )
780cdf0e10cSrcweir                 eTitleType = nAxisIndex==0 ? TitleHelper::Y_AXIS_TITLE : TitleHelper::SECONDARY_Y_AXIS_TITLE;
781cdf0e10cSrcweir             else
782cdf0e10cSrcweir                 eTitleType = TitleHelper::Z_AXIS_TITLE;
783cdf0e10cSrcweir 
784cdf0e10cSrcweir             ::std::auto_ptr< ReferenceSizeProvider > apRefSizeProvider( impl_createReferenceSizeProvider());
785cdf0e10cSrcweir             xTitle = TitleHelper::createTitle( eTitleType, ObjectNameProvider::getTitleNameByType(eTitleType), getModel(), m_xCC, apRefSizeProvider.get() );
786cdf0e10cSrcweir             aUndoGuard.commit();
787cdf0e10cSrcweir         }
788cdf0e10cSrcweir 
789cdf0e10cSrcweir         /*
790cdf0e10cSrcweir         if( xTitle.is() )
791cdf0e10cSrcweir         {
792cdf0e10cSrcweir             OUString aTitleCID = ObjectIdentifier::createClassifiedIdentifierForObject( xTitle, getModel() );
793cdf0e10cSrcweir             select( uno::makeAny(aTitleCID) );
794cdf0e10cSrcweir             executeDispatch_EditText();
795cdf0e10cSrcweir         }
796cdf0e10cSrcweir         */
797cdf0e10cSrcweir     }
798cdf0e10cSrcweir     catch( uno::RuntimeException& e)
799cdf0e10cSrcweir     {
800cdf0e10cSrcweir         ASSERT_EXCEPTION( e );
801cdf0e10cSrcweir     }
802cdf0e10cSrcweir }
803cdf0e10cSrcweir 
executeDispatch_InsertAxis()804cdf0e10cSrcweir void ChartController::executeDispatch_InsertAxis()
805cdf0e10cSrcweir {
806cdf0e10cSrcweir     UndoGuard aUndoGuard(
807cdf0e10cSrcweir         ActionDescriptionProvider::createDescription(
808cdf0e10cSrcweir             ActionDescriptionProvider::INSERT, String( SchResId( STR_OBJECT_AXIS ))),
809cdf0e10cSrcweir         m_xUndoManager );
810cdf0e10cSrcweir 
811cdf0e10cSrcweir     try
812cdf0e10cSrcweir     {
813cdf0e10cSrcweir         Reference< XAxis > xAxis = ObjectIdentifier::getAxisForCID( m_aSelection.getSelectedCID(), getModel() );
814cdf0e10cSrcweir         if( xAxis.is() )
815cdf0e10cSrcweir         {
816cdf0e10cSrcweir             AxisHelper::makeAxisVisible( xAxis );
817cdf0e10cSrcweir             aUndoGuard.commit();
818cdf0e10cSrcweir         }
819cdf0e10cSrcweir     }
820cdf0e10cSrcweir     catch( uno::RuntimeException& e)
821cdf0e10cSrcweir     {
822cdf0e10cSrcweir         ASSERT_EXCEPTION( e );
823cdf0e10cSrcweir     }
824cdf0e10cSrcweir }
825cdf0e10cSrcweir 
executeDispatch_DeleteAxis()826cdf0e10cSrcweir void ChartController::executeDispatch_DeleteAxis()
827cdf0e10cSrcweir {
828cdf0e10cSrcweir     UndoGuard aUndoGuard(
829cdf0e10cSrcweir         ActionDescriptionProvider::createDescription(
830cdf0e10cSrcweir             ActionDescriptionProvider::DELETE, String( SchResId( STR_OBJECT_AXIS ))),
831cdf0e10cSrcweir         m_xUndoManager );
832cdf0e10cSrcweir 
833cdf0e10cSrcweir     try
834cdf0e10cSrcweir     {
835cdf0e10cSrcweir         Reference< XAxis > xAxis = ObjectIdentifier::getAxisForCID( m_aSelection.getSelectedCID(), getModel() );
836cdf0e10cSrcweir         if( xAxis.is() )
837cdf0e10cSrcweir         {
838cdf0e10cSrcweir             AxisHelper::makeAxisInvisible( xAxis );
839cdf0e10cSrcweir             aUndoGuard.commit();
840cdf0e10cSrcweir         }
841cdf0e10cSrcweir     }
842cdf0e10cSrcweir     catch( uno::RuntimeException& e)
843cdf0e10cSrcweir     {
844cdf0e10cSrcweir         ASSERT_EXCEPTION( e );
845cdf0e10cSrcweir     }
846cdf0e10cSrcweir }
847cdf0e10cSrcweir 
executeDispatch_InsertMajorGrid()848cdf0e10cSrcweir void ChartController::executeDispatch_InsertMajorGrid()
849cdf0e10cSrcweir {
850cdf0e10cSrcweir     UndoGuard aUndoGuard(
851cdf0e10cSrcweir         ActionDescriptionProvider::createDescription(
852cdf0e10cSrcweir             ActionDescriptionProvider::INSERT, String( SchResId( STR_OBJECT_GRID ))),
853cdf0e10cSrcweir         m_xUndoManager );
854cdf0e10cSrcweir 
855cdf0e10cSrcweir     try
856cdf0e10cSrcweir     {
857cdf0e10cSrcweir         Reference< XAxis > xAxis = ObjectIdentifier::getAxisForCID( m_aSelection.getSelectedCID(), getModel() );
858cdf0e10cSrcweir         if( xAxis.is() )
859cdf0e10cSrcweir         {
860cdf0e10cSrcweir             AxisHelper::makeGridVisible( xAxis->getGridProperties() );
861cdf0e10cSrcweir             aUndoGuard.commit();
862cdf0e10cSrcweir         }
863cdf0e10cSrcweir     }
864cdf0e10cSrcweir     catch( uno::RuntimeException& e)
865cdf0e10cSrcweir     {
866cdf0e10cSrcweir         ASSERT_EXCEPTION( e );
867cdf0e10cSrcweir     }
868cdf0e10cSrcweir }
869cdf0e10cSrcweir 
executeDispatch_DeleteMajorGrid()870cdf0e10cSrcweir void ChartController::executeDispatch_DeleteMajorGrid()
871cdf0e10cSrcweir {
872cdf0e10cSrcweir     UndoGuard aUndoGuard(
873cdf0e10cSrcweir         ActionDescriptionProvider::createDescription(
874cdf0e10cSrcweir             ActionDescriptionProvider::DELETE, String( SchResId( STR_OBJECT_GRID ))),
875cdf0e10cSrcweir         m_xUndoManager );
876cdf0e10cSrcweir 
877cdf0e10cSrcweir     try
878cdf0e10cSrcweir     {
879cdf0e10cSrcweir         Reference< XAxis > xAxis = ObjectIdentifier::getAxisForCID( m_aSelection.getSelectedCID(), getModel() );
880cdf0e10cSrcweir         if( xAxis.is() )
881cdf0e10cSrcweir         {
882cdf0e10cSrcweir             AxisHelper::makeGridInvisible( xAxis->getGridProperties() );
883cdf0e10cSrcweir             aUndoGuard.commit();
884cdf0e10cSrcweir         }
885cdf0e10cSrcweir     }
886cdf0e10cSrcweir     catch( uno::RuntimeException& e)
887cdf0e10cSrcweir     {
888cdf0e10cSrcweir         ASSERT_EXCEPTION( e );
889cdf0e10cSrcweir     }
890cdf0e10cSrcweir }
891cdf0e10cSrcweir 
executeDispatch_InsertMinorGrid()892cdf0e10cSrcweir void ChartController::executeDispatch_InsertMinorGrid()
893cdf0e10cSrcweir {
894cdf0e10cSrcweir     UndoGuard aUndoGuard(
895cdf0e10cSrcweir         ActionDescriptionProvider::createDescription(
896cdf0e10cSrcweir             ActionDescriptionProvider::INSERT, String( SchResId( STR_OBJECT_GRID ))),
897cdf0e10cSrcweir         m_xUndoManager );
898cdf0e10cSrcweir 
899cdf0e10cSrcweir     try
900cdf0e10cSrcweir     {
901cdf0e10cSrcweir         Reference< XAxis > xAxis = ObjectIdentifier::getAxisForCID( m_aSelection.getSelectedCID(), getModel() );
902cdf0e10cSrcweir         if( xAxis.is() )
903cdf0e10cSrcweir         {
904cdf0e10cSrcweir             Sequence< Reference< beans::XPropertySet > > aSubGrids( xAxis->getSubGridProperties() );
905cdf0e10cSrcweir             for( sal_Int32 nN=0; nN<aSubGrids.getLength(); nN++)
906cdf0e10cSrcweir                 AxisHelper::makeGridVisible( aSubGrids[nN] );
907cdf0e10cSrcweir             aUndoGuard.commit();
908cdf0e10cSrcweir         }
909cdf0e10cSrcweir     }
910cdf0e10cSrcweir     catch( uno::RuntimeException& e)
911cdf0e10cSrcweir     {
912cdf0e10cSrcweir         ASSERT_EXCEPTION( e );
913cdf0e10cSrcweir     }
914cdf0e10cSrcweir }
915cdf0e10cSrcweir 
executeDispatch_DeleteMinorGrid()916cdf0e10cSrcweir void ChartController::executeDispatch_DeleteMinorGrid()
917cdf0e10cSrcweir {
918cdf0e10cSrcweir     UndoGuard aUndoGuard(
919cdf0e10cSrcweir         ActionDescriptionProvider::createDescription(
920cdf0e10cSrcweir             ActionDescriptionProvider::DELETE, String( SchResId( STR_OBJECT_GRID ))),
921cdf0e10cSrcweir         m_xUndoManager );
922cdf0e10cSrcweir 
923cdf0e10cSrcweir     try
924cdf0e10cSrcweir     {
925cdf0e10cSrcweir         Reference< XAxis > xAxis = ObjectIdentifier::getAxisForCID( m_aSelection.getSelectedCID(), getModel() );
926cdf0e10cSrcweir         if( xAxis.is() )
927cdf0e10cSrcweir         {
928cdf0e10cSrcweir             Sequence< Reference< beans::XPropertySet > > aSubGrids( xAxis->getSubGridProperties() );
929cdf0e10cSrcweir             for( sal_Int32 nN=0; nN<aSubGrids.getLength(); nN++)
930cdf0e10cSrcweir                 AxisHelper::makeGridInvisible( aSubGrids[nN] );
931cdf0e10cSrcweir             aUndoGuard.commit();
932cdf0e10cSrcweir         }
933cdf0e10cSrcweir     }
934cdf0e10cSrcweir     catch( uno::RuntimeException& e)
935cdf0e10cSrcweir     {
936cdf0e10cSrcweir         ASSERT_EXCEPTION( e );
937cdf0e10cSrcweir     }
938cdf0e10cSrcweir }
939cdf0e10cSrcweir 
940cdf0e10cSrcweir //.............................................................................
941cdf0e10cSrcweir } //namespace chart
942cdf0e10cSrcweir //.............................................................................
943