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