1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski #include "sampleaddin.hxx"
24*b1cdbd2cSJim Jagielski
25*b1cdbd2cSJim Jagielski #include <cppuhelper/factory.hxx>
26*b1cdbd2cSJim Jagielski #include <osl/diagnose.h>
27*b1cdbd2cSJim Jagielski
28*b1cdbd2cSJim Jagielski #include <com/sun/star/drawing/XDrawPageSupplier.hpp>
29*b1cdbd2cSJim Jagielski #include <com/sun/star/drawing/XDrawPage.hpp>
30*b1cdbd2cSJim Jagielski #include <com/sun/star/chart/XChartDataArray.hpp>
31*b1cdbd2cSJim Jagielski #include <com/sun/star/text/XTextRange.hpp>
32*b1cdbd2cSJim Jagielski #include <com/sun/star/chart/X3DDisplay.hpp>
33*b1cdbd2cSJim Jagielski
34*b1cdbd2cSJim Jagielski using namespace com::sun::star;
35*b1cdbd2cSJim Jagielski using namespace rtl;
36*b1cdbd2cSJim Jagielski
37*b1cdbd2cSJim Jagielski // code for creating instances of SampleAddIn
38*b1cdbd2cSJim Jagielski
39*b1cdbd2cSJim Jagielski extern "C" {
40*b1cdbd2cSJim Jagielski
component_getImplementationEnvironment(const sal_Char ** ppEnvTypeName,uno_Environment **)41*b1cdbd2cSJim Jagielski void SAL_CALL component_getImplementationEnvironment(
42*b1cdbd2cSJim Jagielski const sal_Char ** ppEnvTypeName, uno_Environment ** /*ppEnv*/ )
43*b1cdbd2cSJim Jagielski {
44*b1cdbd2cSJim Jagielski *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
45*b1cdbd2cSJim Jagielski }
46*b1cdbd2cSJim Jagielski
component_writeInfo(void *,registry::XRegistryKey * pRegistryKey)47*b1cdbd2cSJim Jagielski sal_Bool SAL_CALL component_writeInfo(
48*b1cdbd2cSJim Jagielski void * /*pServiceManager*/, registry::XRegistryKey * pRegistryKey )
49*b1cdbd2cSJim Jagielski {
50*b1cdbd2cSJim Jagielski if( pRegistryKey )
51*b1cdbd2cSJim Jagielski {
52*b1cdbd2cSJim Jagielski try
53*b1cdbd2cSJim Jagielski {
54*b1cdbd2cSJim Jagielski OUString aImpl = OUString::createFromAscii( "/" );
55*b1cdbd2cSJim Jagielski aImpl += SampleAddIn::getImplementationName_Static();
56*b1cdbd2cSJim Jagielski aImpl += OUString::createFromAscii( "/UNO/SERVICES" );
57*b1cdbd2cSJim Jagielski
58*b1cdbd2cSJim Jagielski uno::Reference< registry::XRegistryKey> xNewKey(
59*b1cdbd2cSJim Jagielski reinterpret_cast<registry::XRegistryKey*>( pRegistryKey )->createKey( aImpl ) );
60*b1cdbd2cSJim Jagielski
61*b1cdbd2cSJim Jagielski uno::Sequence< OUString > aSequ = SampleAddIn::getSupportedServiceNames_Static();
62*b1cdbd2cSJim Jagielski const OUString * pArray = aSequ.getConstArray();
63*b1cdbd2cSJim Jagielski for( sal_Int32 i = 0; i < aSequ.getLength(); i++ )
64*b1cdbd2cSJim Jagielski xNewKey->createKey( pArray[i] );
65*b1cdbd2cSJim Jagielski
66*b1cdbd2cSJim Jagielski return sal_True;
67*b1cdbd2cSJim Jagielski }
68*b1cdbd2cSJim Jagielski catch( registry::InvalidRegistryException& )
69*b1cdbd2cSJim Jagielski {
70*b1cdbd2cSJim Jagielski OSL_ENSURE( sal_False, "### InvalidRegistryException!" );
71*b1cdbd2cSJim Jagielski }
72*b1cdbd2cSJim Jagielski }
73*b1cdbd2cSJim Jagielski return sal_False;
74*b1cdbd2cSJim Jagielski }
75*b1cdbd2cSJim Jagielski
component_getFactory(const sal_Char * pImplName,void * pServiceManager,void *)76*b1cdbd2cSJim Jagielski void * SAL_CALL component_getFactory(
77*b1cdbd2cSJim Jagielski const sal_Char * pImplName, void * pServiceManager, void * /*pRegistryKey*/ )
78*b1cdbd2cSJim Jagielski {
79*b1cdbd2cSJim Jagielski void* pRet = 0;
80*b1cdbd2cSJim Jagielski
81*b1cdbd2cSJim Jagielski if ( pServiceManager &&
82*b1cdbd2cSJim Jagielski OUString::createFromAscii( pImplName ) == SampleAddIn::getImplementationName_Static() )
83*b1cdbd2cSJim Jagielski {
84*b1cdbd2cSJim Jagielski uno::Reference< lang::XSingleServiceFactory> xFactory( cppu::createSingleFactory(
85*b1cdbd2cSJim Jagielski reinterpret_cast<lang::XMultiServiceFactory*>( pServiceManager ),
86*b1cdbd2cSJim Jagielski SampleAddIn::getImplementationName_Static(),
87*b1cdbd2cSJim Jagielski SampleAddIn_CreateInstance,
88*b1cdbd2cSJim Jagielski SampleAddIn::getSupportedServiceNames_Static() ) );
89*b1cdbd2cSJim Jagielski
90*b1cdbd2cSJim Jagielski if( xFactory.is())
91*b1cdbd2cSJim Jagielski {
92*b1cdbd2cSJim Jagielski xFactory->acquire();
93*b1cdbd2cSJim Jagielski pRet = xFactory.get();
94*b1cdbd2cSJim Jagielski }
95*b1cdbd2cSJim Jagielski }
96*b1cdbd2cSJim Jagielski
97*b1cdbd2cSJim Jagielski return pRet;
98*b1cdbd2cSJim Jagielski }
99*b1cdbd2cSJim Jagielski
100*b1cdbd2cSJim Jagielski } // extern C
101*b1cdbd2cSJim Jagielski
102*b1cdbd2cSJim Jagielski
103*b1cdbd2cSJim Jagielski // --------------------
104*b1cdbd2cSJim Jagielski // class SampleAddIn
105*b1cdbd2cSJim Jagielski // --------------------
106*b1cdbd2cSJim Jagielski
SampleAddIn()107*b1cdbd2cSJim Jagielski SampleAddIn::SampleAddIn()
108*b1cdbd2cSJim Jagielski {
109*b1cdbd2cSJim Jagielski
110*b1cdbd2cSJim Jagielski }
111*b1cdbd2cSJim Jagielski
~SampleAddIn()112*b1cdbd2cSJim Jagielski SampleAddIn::~SampleAddIn()
113*b1cdbd2cSJim Jagielski {}
114*b1cdbd2cSJim Jagielski
115*b1cdbd2cSJim Jagielski
116*b1cdbd2cSJim Jagielski // this functionality should be provided by the chart API some day
getLogicalPosition(uno::Reference<drawing::XShape> & xAxis,double fValue,sal_Bool bVertical,awt::Point & aOutPosition)117*b1cdbd2cSJim Jagielski sal_Bool SampleAddIn::getLogicalPosition( uno::Reference< drawing::XShape >& xAxis,
118*b1cdbd2cSJim Jagielski double fValue,
119*b1cdbd2cSJim Jagielski sal_Bool bVertical,
120*b1cdbd2cSJim Jagielski awt::Point& aOutPosition )
121*b1cdbd2cSJim Jagielski {
122*b1cdbd2cSJim Jagielski sal_Bool bRet = sal_False;
123*b1cdbd2cSJim Jagielski
124*b1cdbd2cSJim Jagielski if( xAxis.is())
125*b1cdbd2cSJim Jagielski {
126*b1cdbd2cSJim Jagielski awt::Size aSize = xAxis->getSize();
127*b1cdbd2cSJim Jagielski sal_Int32 nLength = bVertical? aSize.Height: aSize.Width;
128*b1cdbd2cSJim Jagielski
129*b1cdbd2cSJim Jagielski uno::Reference< beans::XPropertySet > xProp( xAxis, uno::UNO_QUERY );
130*b1cdbd2cSJim Jagielski if( xProp.is())
131*b1cdbd2cSJim Jagielski {
132*b1cdbd2cSJim Jagielski try
133*b1cdbd2cSJim Jagielski {
134*b1cdbd2cSJim Jagielski double fMin(0.0), fMax(0.0);
135*b1cdbd2cSJim Jagielski uno::Any aAny = xProp->getPropertyValue( OUString::createFromAscii( "Min" ));
136*b1cdbd2cSJim Jagielski aAny >>= fMin;
137*b1cdbd2cSJim Jagielski aAny = xProp->getPropertyValue( OUString::createFromAscii( "Max" ));
138*b1cdbd2cSJim Jagielski aAny >>= fMax;
139*b1cdbd2cSJim Jagielski
140*b1cdbd2cSJim Jagielski double fRange = fMax - fMin;
141*b1cdbd2cSJim Jagielski if( fMin <= fValue && fValue <= fMax &&
142*b1cdbd2cSJim Jagielski fRange != 0.0 )
143*b1cdbd2cSJim Jagielski {
144*b1cdbd2cSJim Jagielski double fPercentage = (fValue - fMin) / fRange;
145*b1cdbd2cSJim Jagielski awt::Point aPos = xAxis->getPosition();
146*b1cdbd2cSJim Jagielski
147*b1cdbd2cSJim Jagielski if( bVertical )
148*b1cdbd2cSJim Jagielski {
149*b1cdbd2cSJim Jagielski aOutPosition.X = aPos.X;
150*b1cdbd2cSJim Jagielski aOutPosition.Y = static_cast<sal_Int32>(aPos.Y + nLength * (1.0 - fPercentage)); // y scale goes from top to bottom
151*b1cdbd2cSJim Jagielski }
152*b1cdbd2cSJim Jagielski else
153*b1cdbd2cSJim Jagielski {
154*b1cdbd2cSJim Jagielski aOutPosition.X = static_cast<sal_Int32>(aPos.X + nLength * fPercentage);
155*b1cdbd2cSJim Jagielski aOutPosition.Y = aPos.Y;
156*b1cdbd2cSJim Jagielski }
157*b1cdbd2cSJim Jagielski bRet = sal_True;
158*b1cdbd2cSJim Jagielski }
159*b1cdbd2cSJim Jagielski }
160*b1cdbd2cSJim Jagielski catch( beans::UnknownPropertyException )
161*b1cdbd2cSJim Jagielski {
162*b1cdbd2cSJim Jagielski // the shape xAxis was no chart axis
163*b1cdbd2cSJim Jagielski }
164*b1cdbd2cSJim Jagielski }
165*b1cdbd2cSJim Jagielski }
166*b1cdbd2cSJim Jagielski
167*b1cdbd2cSJim Jagielski return bRet;
168*b1cdbd2cSJim Jagielski }
169*b1cdbd2cSJim Jagielski
getImplementationName_Static()170*b1cdbd2cSJim Jagielski OUString SampleAddIn::getImplementationName_Static()
171*b1cdbd2cSJim Jagielski {
172*b1cdbd2cSJim Jagielski return OUString::createFromAscii( "SampleAddIn" );
173*b1cdbd2cSJim Jagielski }
174*b1cdbd2cSJim Jagielski
getSupportedServiceNames_Static()175*b1cdbd2cSJim Jagielski uno::Sequence< ::rtl::OUString > SampleAddIn::getSupportedServiceNames_Static()
176*b1cdbd2cSJim Jagielski {
177*b1cdbd2cSJim Jagielski uno::Sequence< OUString > aSeq( 4 );
178*b1cdbd2cSJim Jagielski
179*b1cdbd2cSJim Jagielski aSeq[ 0 ] = OUString::createFromAscii( "com.sun.star.chart.ChartAxisXSupplier" );
180*b1cdbd2cSJim Jagielski aSeq[ 1 ] = OUString::createFromAscii( "com.sun.star.chart.ChartAxisYSupplier" );
181*b1cdbd2cSJim Jagielski aSeq[ 2 ] = OUString::createFromAscii( "com.sun.star.chart.Diagram" );
182*b1cdbd2cSJim Jagielski aSeq[ 3 ] = OUString::createFromAscii( "com.sun.star.chart.SampleAddIn" );
183*b1cdbd2cSJim Jagielski
184*b1cdbd2cSJim Jagielski return aSeq;
185*b1cdbd2cSJim Jagielski }
186*b1cdbd2cSJim Jagielski
SampleAddIn_CreateInstance(const uno::Reference<lang::XMultiServiceFactory> &)187*b1cdbd2cSJim Jagielski uno::Reference< uno::XInterface > SAL_CALL SampleAddIn_CreateInstance(
188*b1cdbd2cSJim Jagielski const uno::Reference< lang::XMultiServiceFactory >& )
189*b1cdbd2cSJim Jagielski {
190*b1cdbd2cSJim Jagielski uno::Reference< uno::XInterface > xInst = (cppu::OWeakObject*)new SampleAddIn();
191*b1cdbd2cSJim Jagielski
192*b1cdbd2cSJim Jagielski return xInst;
193*b1cdbd2cSJim Jagielski }
194*b1cdbd2cSJim Jagielski
195*b1cdbd2cSJim Jagielski // implementation of interface methods
196*b1cdbd2cSJim Jagielski
197*b1cdbd2cSJim Jagielski // XInitialization
initialize(const uno::Sequence<uno::Any> & aArguments)198*b1cdbd2cSJim Jagielski void SAL_CALL SampleAddIn::initialize( const uno::Sequence< uno::Any >& aArguments )
199*b1cdbd2cSJim Jagielski throw( uno::Exception, uno::RuntimeException )
200*b1cdbd2cSJim Jagielski {
201*b1cdbd2cSJim Jagielski // first argument should be the XChartDocument
202*b1cdbd2cSJim Jagielski OSL_ENSURE( aArguments.getLength() > 0, "Please initialize Chart AddIn with ChartDocument!" );
203*b1cdbd2cSJim Jagielski
204*b1cdbd2cSJim Jagielski if( aArguments.getLength())
205*b1cdbd2cSJim Jagielski {
206*b1cdbd2cSJim Jagielski aArguments[ 0 ] >>= mxChartDoc;
207*b1cdbd2cSJim Jagielski OSL_ENSURE( mxChartDoc.is(), "First argument in initialization is not an XChartDocument!" );
208*b1cdbd2cSJim Jagielski
209*b1cdbd2cSJim Jagielski // set XY chart as base type to be drawn
210*b1cdbd2cSJim Jagielski uno::Reference< beans::XPropertySet > xDocProp( mxChartDoc, uno::UNO_QUERY );
211*b1cdbd2cSJim Jagielski if( xDocProp.is())
212*b1cdbd2cSJim Jagielski {
213*b1cdbd2cSJim Jagielski uno::Any aBaseType;
214*b1cdbd2cSJim Jagielski aBaseType <<= rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.chart.XYDiagram" ));
215*b1cdbd2cSJim Jagielski try
216*b1cdbd2cSJim Jagielski {
217*b1cdbd2cSJim Jagielski xDocProp->setPropertyValue( rtl::OUString::createFromAscii( "BaseDiagram" ), aBaseType );
218*b1cdbd2cSJim Jagielski }
219*b1cdbd2cSJim Jagielski catch( ... )
220*b1cdbd2cSJim Jagielski {}
221*b1cdbd2cSJim Jagielski }
222*b1cdbd2cSJim Jagielski
223*b1cdbd2cSJim Jagielski // change background of plot area to light blue
224*b1cdbd2cSJim Jagielski uno::Reference< chart::X3DDisplay > xWallSupplier( mxChartDoc->getDiagram(), uno::UNO_QUERY );
225*b1cdbd2cSJim Jagielski if( xWallSupplier.is())
226*b1cdbd2cSJim Jagielski {
227*b1cdbd2cSJim Jagielski uno::Reference< beans::XPropertySet > xDiaProp( xWallSupplier->getWall(), uno::UNO_QUERY );
228*b1cdbd2cSJim Jagielski uno::Reference< beans::XPropertySet > xLegendProp( mxChartDoc->getLegend(), uno::UNO_QUERY );
229*b1cdbd2cSJim Jagielski if( xDiaProp.is() &&
230*b1cdbd2cSJim Jagielski xLegendProp.is())
231*b1cdbd2cSJim Jagielski {
232*b1cdbd2cSJim Jagielski uno::Any aAny;
233*b1cdbd2cSJim Jagielski aAny <<= (sal_Int32)( 0xe0e0f0 );
234*b1cdbd2cSJim Jagielski xDiaProp->setPropertyValue( OUString::createFromAscii( "FillColor" ), aAny );
235*b1cdbd2cSJim Jagielski xLegendProp->setPropertyValue( OUString::createFromAscii( "FillColor" ), aAny );
236*b1cdbd2cSJim Jagielski }
237*b1cdbd2cSJim Jagielski }
238*b1cdbd2cSJim Jagielski }
239*b1cdbd2cSJim Jagielski }
240*b1cdbd2cSJim Jagielski
241*b1cdbd2cSJim Jagielski // XRefreshable
242*b1cdbd2cSJim Jagielski /********************************************************************************
243*b1cdbd2cSJim Jagielski *
244*b1cdbd2cSJim Jagielski * The method refresh is the most important method - here all objects that
245*b1cdbd2cSJim Jagielski * are necessary for the chart are created
246*b1cdbd2cSJim Jagielski *
247*b1cdbd2cSJim Jagielski * in the first implementation you will have to insert everything in this
248*b1cdbd2cSJim Jagielski * routine - all old objects are deleted beforehand
249*b1cdbd2cSJim Jagielski *
250*b1cdbd2cSJim Jagielski ********************************************************************************/
refresh()251*b1cdbd2cSJim Jagielski void SAL_CALL SampleAddIn::refresh() throw( uno::RuntimeException )
252*b1cdbd2cSJim Jagielski {
253*b1cdbd2cSJim Jagielski if( ! mxChartDoc.is())
254*b1cdbd2cSJim Jagielski return;
255*b1cdbd2cSJim Jagielski
256*b1cdbd2cSJim Jagielski // first of all get the draw page
257*b1cdbd2cSJim Jagielski uno::Reference< drawing::XDrawPageSupplier > xPageSupp( mxChartDoc, uno::UNO_QUERY );
258*b1cdbd2cSJim Jagielski uno::Reference< lang::XMultiServiceFactory > xFactory( mxChartDoc, uno::UNO_QUERY );
259*b1cdbd2cSJim Jagielski if( xPageSupp.is() &&
260*b1cdbd2cSJim Jagielski xFactory.is() )
261*b1cdbd2cSJim Jagielski {
262*b1cdbd2cSJim Jagielski uno::Reference< drawing::XDrawPage > xPage = xPageSupp->getDrawPage();
263*b1cdbd2cSJim Jagielski if( xPage.is())
264*b1cdbd2cSJim Jagielski {
265*b1cdbd2cSJim Jagielski // now we have the page to insert objects
266*b1cdbd2cSJim Jagielski
267*b1cdbd2cSJim Jagielski // add a horizontal line at the middle value of the first series
268*b1cdbd2cSJim Jagielski // -------------------------------------------------------------
269*b1cdbd2cSJim Jagielski
270*b1cdbd2cSJim Jagielski
271*b1cdbd2cSJim Jagielski // get the logical position from the coordinate
272*b1cdbd2cSJim Jagielski // get x- and y-axis
273*b1cdbd2cSJim Jagielski uno::Reference< drawing::XShape > xYAxisShape( getYAxis(), uno::UNO_QUERY );
274*b1cdbd2cSJim Jagielski uno::Reference< drawing::XShape > xXAxisShape( getXAxis(), uno::UNO_QUERY );
275*b1cdbd2cSJim Jagielski
276*b1cdbd2cSJim Jagielski if( xXAxisShape.is() &&
277*b1cdbd2cSJim Jagielski xYAxisShape.is() )
278*b1cdbd2cSJim Jagielski {
279*b1cdbd2cSJim Jagielski // create line first time
280*b1cdbd2cSJim Jagielski if( ! mxMyRedLine.is())
281*b1cdbd2cSJim Jagielski {
282*b1cdbd2cSJim Jagielski mxMyRedLine = uno::Reference< drawing::XShape >(
283*b1cdbd2cSJim Jagielski xFactory->createInstance( OUString::createFromAscii( "com.sun.star.drawing.LineShape" )),
284*b1cdbd2cSJim Jagielski uno::UNO_QUERY );
285*b1cdbd2cSJim Jagielski xPage->add( mxMyRedLine );
286*b1cdbd2cSJim Jagielski
287*b1cdbd2cSJim Jagielski // make line red and thick
288*b1cdbd2cSJim Jagielski uno::Reference< beans::XPropertySet > xShapeProp( mxMyRedLine, uno::UNO_QUERY );
289*b1cdbd2cSJim Jagielski if( xShapeProp.is())
290*b1cdbd2cSJim Jagielski {
291*b1cdbd2cSJim Jagielski uno::Any aColor, aWidth;
292*b1cdbd2cSJim Jagielski aColor <<= (sal_Int32)(0xe01010);
293*b1cdbd2cSJim Jagielski aWidth <<= (sal_Int32)(50); // 0.5 mm
294*b1cdbd2cSJim Jagielski try
295*b1cdbd2cSJim Jagielski {
296*b1cdbd2cSJim Jagielski xShapeProp->setPropertyValue( OUString::createFromAscii( "LineColor" ), aColor );
297*b1cdbd2cSJim Jagielski xShapeProp->setPropertyValue( OUString::createFromAscii( "LineWidth" ), aWidth );
298*b1cdbd2cSJim Jagielski }
299*b1cdbd2cSJim Jagielski catch( ... )
300*b1cdbd2cSJim Jagielski {}
301*b1cdbd2cSJim Jagielski }
302*b1cdbd2cSJim Jagielski }
303*b1cdbd2cSJim Jagielski // create text object first time
304*b1cdbd2cSJim Jagielski if( ! mxMyText.is())
305*b1cdbd2cSJim Jagielski {
306*b1cdbd2cSJim Jagielski mxMyText = uno::Reference< drawing::XShape >(
307*b1cdbd2cSJim Jagielski xFactory->createInstance( OUString::createFromAscii( "com.sun.star.drawing.TextShape" )),
308*b1cdbd2cSJim Jagielski uno::UNO_QUERY );
309*b1cdbd2cSJim Jagielski xPage->add( mxMyText );
310*b1cdbd2cSJim Jagielski
311*b1cdbd2cSJim Jagielski // change text
312*b1cdbd2cSJim Jagielski OUString aText;
313*b1cdbd2cSJim Jagielski // if( maLocale.Language.equalsIgnoreCase( OUString::createFromAscii("DE")))
314*b1cdbd2cSJim Jagielski // aText = OUString::createFromAscii( "Kleines Beispiel" );
315*b1cdbd2cSJim Jagielski // else
316*b1cdbd2cSJim Jagielski aText = OUString::createFromAscii( "Little Example" );
317*b1cdbd2cSJim Jagielski
318*b1cdbd2cSJim Jagielski uno::Reference< beans::XPropertySet > xTextProp( mxMyText, uno::UNO_QUERY );
319*b1cdbd2cSJim Jagielski if( xTextProp.is())
320*b1cdbd2cSJim Jagielski {
321*b1cdbd2cSJim Jagielski uno::Any aTrueAny;
322*b1cdbd2cSJim Jagielski aTrueAny <<= (sal_Bool)(sal_True);
323*b1cdbd2cSJim Jagielski try
324*b1cdbd2cSJim Jagielski {
325*b1cdbd2cSJim Jagielski xTextProp->setPropertyValue( rtl::OUString::createFromAscii( "TextAutoGrowWidth" ), aTrueAny );
326*b1cdbd2cSJim Jagielski }
327*b1cdbd2cSJim Jagielski catch( ... )
328*b1cdbd2cSJim Jagielski {}
329*b1cdbd2cSJim Jagielski }
330*b1cdbd2cSJim Jagielski
331*b1cdbd2cSJim Jagielski uno::Reference< text::XTextRange > xTextRange( mxMyText, uno::UNO_QUERY );
332*b1cdbd2cSJim Jagielski if( xTextRange.is())
333*b1cdbd2cSJim Jagielski {
334*b1cdbd2cSJim Jagielski xTextRange->setString( aText );
335*b1cdbd2cSJim Jagielski }
336*b1cdbd2cSJim Jagielski }
337*b1cdbd2cSJim Jagielski
338*b1cdbd2cSJim Jagielski
339*b1cdbd2cSJim Jagielski // position line and text
340*b1cdbd2cSJim Jagielski
341*b1cdbd2cSJim Jagielski // get the array. Note: the first dimension is the length
342*b1cdbd2cSJim Jagielski // of each series and the second one is the number of series
343*b1cdbd2cSJim Jagielski // this should be changed in the future
344*b1cdbd2cSJim Jagielski uno::Sequence< uno::Sequence< double > > aData;
345*b1cdbd2cSJim Jagielski uno::Reference< chart::XChartData > xData = mxChartDoc->getData();
346*b1cdbd2cSJim Jagielski uno::Reference< chart::XChartDataArray > xDataArray( xData, uno::UNO_QUERY );
347*b1cdbd2cSJim Jagielski if( xDataArray.is())
348*b1cdbd2cSJim Jagielski aData = xDataArray->getData();
349*b1cdbd2cSJim Jagielski
350*b1cdbd2cSJim Jagielski // get row count == length of each series
351*b1cdbd2cSJim Jagielski sal_Int32 nSize = aData.getLength();
352*b1cdbd2cSJim Jagielski sal_Int32 nMiddle = nSize / 2;
353*b1cdbd2cSJim Jagielski // get value for first series
354*b1cdbd2cSJim Jagielski double fMiddleVal = xData->getNotANumber(); // set to NaN
355*b1cdbd2cSJim Jagielski if( aData[ nMiddle ].getLength()) // we have at least one series
356*b1cdbd2cSJim Jagielski fMiddleVal = aData[ nMiddle ][ 0 ];
357*b1cdbd2cSJim Jagielski
358*b1cdbd2cSJim Jagielski awt::Point aPos;
359*b1cdbd2cSJim Jagielski getLogicalPosition( xYAxisShape, fMiddleVal, sal_True, aPos );
360*b1cdbd2cSJim Jagielski awt::Size aSize = xXAxisShape->getSize();
361*b1cdbd2cSJim Jagielski
362*b1cdbd2cSJim Jagielski if( mxMyRedLine.is())
363*b1cdbd2cSJim Jagielski {
364*b1cdbd2cSJim Jagielski awt::Point aEnd = aPos;
365*b1cdbd2cSJim Jagielski aEnd.X += aSize.Width;
366*b1cdbd2cSJim Jagielski
367*b1cdbd2cSJim Jagielski uno::Sequence< uno::Sequence< awt::Point > > aPtSeq( 1 );
368*b1cdbd2cSJim Jagielski aPtSeq[ 0 ].realloc( 2 );
369*b1cdbd2cSJim Jagielski aPtSeq[ 0 ][ 0 ] = aPos;
370*b1cdbd2cSJim Jagielski aPtSeq[ 0 ][ 1 ] = aEnd;
371*b1cdbd2cSJim Jagielski
372*b1cdbd2cSJim Jagielski uno::Reference< beans::XPropertySet > xShapeProp( mxMyRedLine, uno::UNO_QUERY );
373*b1cdbd2cSJim Jagielski if( xShapeProp.is())
374*b1cdbd2cSJim Jagielski {
375*b1cdbd2cSJim Jagielski uno::Any aAny;
376*b1cdbd2cSJim Jagielski aAny <<= aPtSeq;
377*b1cdbd2cSJim Jagielski xShapeProp->setPropertyValue( rtl::OUString::createFromAscii( "PolyPolygon" ), aAny );
378*b1cdbd2cSJim Jagielski }
379*b1cdbd2cSJim Jagielski }
380*b1cdbd2cSJim Jagielski if( mxMyText.is())
381*b1cdbd2cSJim Jagielski {
382*b1cdbd2cSJim Jagielski // put the text centered below the red line
383*b1cdbd2cSJim Jagielski aPos.X += ( aSize.Width - mxMyRedLine->getPosition().X ) / 2;
384*b1cdbd2cSJim Jagielski aPos.Y += 1000;
385*b1cdbd2cSJim Jagielski aPos.Y += static_cast<sal_Int32>(0.1 * xYAxisShape->getSize().Height);
386*b1cdbd2cSJim Jagielski mxMyText->setPosition( aPos );
387*b1cdbd2cSJim Jagielski }
388*b1cdbd2cSJim Jagielski }
389*b1cdbd2cSJim Jagielski }
390*b1cdbd2cSJim Jagielski }
391*b1cdbd2cSJim Jagielski
392*b1cdbd2cSJim Jagielski // set axis scale to 200
393*b1cdbd2cSJim Jagielski // uno::Reference< beans::XPropertySet > xXAxis( getXAxis(), uno::UNO_QUERY );
394*b1cdbd2cSJim Jagielski // if( xXAxis.is())
395*b1cdbd2cSJim Jagielski // {
396*b1cdbd2cSJim Jagielski // uno::Any aAny;
397*b1cdbd2cSJim Jagielski // aAny <<= (sal_Bool)(sal_False);
398*b1cdbd2cSJim Jagielski // xXAxis->setPropertyValue( rtl::OUString::createFromAscii( "AutoStepMain" ),
399*b1cdbd2cSJim Jagielski // aAny );
400*b1cdbd2cSJim Jagielski // aAny <<= (double)(200.0);
401*b1cdbd2cSJim Jagielski // xXAxis->setPropertyValue( rtl::OUString::createFromAscii( "StepMain" ),
402*b1cdbd2cSJim Jagielski // aAny );
403*b1cdbd2cSJim Jagielski // }
404*b1cdbd2cSJim Jagielski
405*b1cdbd2cSJim Jagielski // try setting symbols
406*b1cdbd2cSJim Jagielski // uno::Reference< beans::XPropertySet > xProp = getDataRowProperties( 0 );
407*b1cdbd2cSJim Jagielski // if( xProp.is())
408*b1cdbd2cSJim Jagielski // {
409*b1cdbd2cSJim Jagielski // uno::Any aAny;
410*b1cdbd2cSJim Jagielski // aAny <<= (sal_Int32)(-1);
411*b1cdbd2cSJim Jagielski // xProp->setPropertyValue( OUString::createFromAscii( "SymbolType" ), aAny );
412*b1cdbd2cSJim Jagielski // aAny <<= rtl::OUString::createFromAscii( "http://mib-1168/www/images/go.gif" );
413*b1cdbd2cSJim Jagielski // xProp->setPropertyValue( OUString::createFromAscii( "SymbolBitmapURL" ), aAny );
414*b1cdbd2cSJim Jagielski // }
415*b1cdbd2cSJim Jagielski }
416*b1cdbd2cSJim Jagielski
addRefreshListener(const uno::Reference<util::XRefreshListener> &)417*b1cdbd2cSJim Jagielski void SAL_CALL SampleAddIn::addRefreshListener( const uno::Reference< util::XRefreshListener >& )
418*b1cdbd2cSJim Jagielski throw( uno::RuntimeException )
419*b1cdbd2cSJim Jagielski {
420*b1cdbd2cSJim Jagielski // not implemented - this is not necessary
421*b1cdbd2cSJim Jagielski // (this method exists just because the interface requires it)
422*b1cdbd2cSJim Jagielski }
423*b1cdbd2cSJim Jagielski
removeRefreshListener(const uno::Reference<util::XRefreshListener> &)424*b1cdbd2cSJim Jagielski void SAL_CALL SampleAddIn::removeRefreshListener( const uno::Reference< util::XRefreshListener >& )
425*b1cdbd2cSJim Jagielski throw( uno::RuntimeException )
426*b1cdbd2cSJim Jagielski {
427*b1cdbd2cSJim Jagielski // not implemented - this is not necessary
428*b1cdbd2cSJim Jagielski // (this method exists just because the interface requires it)
429*b1cdbd2cSJim Jagielski }
430*b1cdbd2cSJim Jagielski
431*b1cdbd2cSJim Jagielski // XDiagram
getDiagramType()432*b1cdbd2cSJim Jagielski OUString SAL_CALL SampleAddIn::getDiagramType() throw( uno::RuntimeException )
433*b1cdbd2cSJim Jagielski {
434*b1cdbd2cSJim Jagielski return OUString::createFromAscii( "com.sun.star.chart.SampleDiagram" );
435*b1cdbd2cSJim Jagielski }
436*b1cdbd2cSJim Jagielski
437*b1cdbd2cSJim Jagielski // the following methods just delegate to the "parent diagram" (which in the future might no longer exist)
438*b1cdbd2cSJim Jagielski
getDataRowProperties(sal_Int32 nRow)439*b1cdbd2cSJim Jagielski uno::Reference< beans::XPropertySet > SAL_CALL SampleAddIn::getDataRowProperties( sal_Int32 nRow )
440*b1cdbd2cSJim Jagielski throw( lang::IndexOutOfBoundsException,
441*b1cdbd2cSJim Jagielski uno::RuntimeException )
442*b1cdbd2cSJim Jagielski {
443*b1cdbd2cSJim Jagielski if( mxChartDoc.is())
444*b1cdbd2cSJim Jagielski {
445*b1cdbd2cSJim Jagielski uno::Reference< chart::XDiagram > xDia = mxChartDoc->getDiagram();
446*b1cdbd2cSJim Jagielski if( xDia.is())
447*b1cdbd2cSJim Jagielski return xDia->getDataRowProperties( nRow );
448*b1cdbd2cSJim Jagielski }
449*b1cdbd2cSJim Jagielski
450*b1cdbd2cSJim Jagielski return uno::Reference< beans::XPropertySet >();
451*b1cdbd2cSJim Jagielski }
452*b1cdbd2cSJim Jagielski
getDataPointProperties(sal_Int32 nCol,sal_Int32 nRow)453*b1cdbd2cSJim Jagielski uno::Reference< beans::XPropertySet > SAL_CALL SampleAddIn::getDataPointProperties( sal_Int32 nCol, sal_Int32 nRow )
454*b1cdbd2cSJim Jagielski throw( lang::IndexOutOfBoundsException,
455*b1cdbd2cSJim Jagielski uno::RuntimeException )
456*b1cdbd2cSJim Jagielski {
457*b1cdbd2cSJim Jagielski if( mxChartDoc.is())
458*b1cdbd2cSJim Jagielski {
459*b1cdbd2cSJim Jagielski uno::Reference< chart::XDiagram > xDia = mxChartDoc->getDiagram();
460*b1cdbd2cSJim Jagielski if( xDia.is())
461*b1cdbd2cSJim Jagielski return xDia->getDataPointProperties( nCol, nRow );
462*b1cdbd2cSJim Jagielski }
463*b1cdbd2cSJim Jagielski
464*b1cdbd2cSJim Jagielski return uno::Reference< beans::XPropertySet >();
465*b1cdbd2cSJim Jagielski }
466*b1cdbd2cSJim Jagielski
467*b1cdbd2cSJim Jagielski // XShape ( ::XDiagram )
getSize()468*b1cdbd2cSJim Jagielski awt::Size SAL_CALL SampleAddIn::getSize()
469*b1cdbd2cSJim Jagielski throw( uno::RuntimeException )
470*b1cdbd2cSJim Jagielski {
471*b1cdbd2cSJim Jagielski if( mxChartDoc.is())
472*b1cdbd2cSJim Jagielski {
473*b1cdbd2cSJim Jagielski uno::Reference< drawing::XShape > xShape( mxChartDoc->getDiagram(), uno::UNO_QUERY );
474*b1cdbd2cSJim Jagielski if( xShape.is())
475*b1cdbd2cSJim Jagielski return xShape->getSize();
476*b1cdbd2cSJim Jagielski }
477*b1cdbd2cSJim Jagielski
478*b1cdbd2cSJim Jagielski return awt::Size();
479*b1cdbd2cSJim Jagielski }
480*b1cdbd2cSJim Jagielski
setSize(const awt::Size & aSize)481*b1cdbd2cSJim Jagielski void SAL_CALL SampleAddIn::setSize( const awt::Size& aSize )
482*b1cdbd2cSJim Jagielski throw( beans::PropertyVetoException, uno::RuntimeException )
483*b1cdbd2cSJim Jagielski {
484*b1cdbd2cSJim Jagielski if( mxChartDoc.is())
485*b1cdbd2cSJim Jagielski {
486*b1cdbd2cSJim Jagielski uno::Reference< drawing::XShape > xShape( mxChartDoc->getDiagram(), uno::UNO_QUERY );
487*b1cdbd2cSJim Jagielski if( xShape.is())
488*b1cdbd2cSJim Jagielski xShape->setSize( aSize );
489*b1cdbd2cSJim Jagielski }
490*b1cdbd2cSJim Jagielski }
491*b1cdbd2cSJim Jagielski
getPosition()492*b1cdbd2cSJim Jagielski awt::Point SAL_CALL SampleAddIn::getPosition()
493*b1cdbd2cSJim Jagielski throw( uno::RuntimeException )
494*b1cdbd2cSJim Jagielski {
495*b1cdbd2cSJim Jagielski if( mxChartDoc.is())
496*b1cdbd2cSJim Jagielski {
497*b1cdbd2cSJim Jagielski uno::Reference< drawing::XShape > xShape( mxChartDoc->getDiagram(), uno::UNO_QUERY );
498*b1cdbd2cSJim Jagielski if( xShape.is())
499*b1cdbd2cSJim Jagielski return xShape->getPosition();
500*b1cdbd2cSJim Jagielski }
501*b1cdbd2cSJim Jagielski
502*b1cdbd2cSJim Jagielski return awt::Point();
503*b1cdbd2cSJim Jagielski }
504*b1cdbd2cSJim Jagielski
setPosition(const awt::Point & aPos)505*b1cdbd2cSJim Jagielski void SAL_CALL SampleAddIn::setPosition( const awt::Point& aPos )
506*b1cdbd2cSJim Jagielski throw( uno::RuntimeException )
507*b1cdbd2cSJim Jagielski {
508*b1cdbd2cSJim Jagielski if( mxChartDoc.is())
509*b1cdbd2cSJim Jagielski {
510*b1cdbd2cSJim Jagielski uno::Reference< drawing::XShape > xShape( mxChartDoc->getDiagram(), uno::UNO_QUERY );
511*b1cdbd2cSJim Jagielski if( xShape.is())
512*b1cdbd2cSJim Jagielski xShape->setPosition( aPos );
513*b1cdbd2cSJim Jagielski }
514*b1cdbd2cSJim Jagielski }
515*b1cdbd2cSJim Jagielski
516*b1cdbd2cSJim Jagielski // XShapeDescriptor ( ::XShape ::XDiagram )
getShapeType()517*b1cdbd2cSJim Jagielski rtl::OUString SAL_CALL SampleAddIn::getShapeType() throw( com::sun::star::uno::RuntimeException )
518*b1cdbd2cSJim Jagielski {
519*b1cdbd2cSJim Jagielski return OUString::createFromAscii( "com.sun.star.chart.SampleAddinShape" );
520*b1cdbd2cSJim Jagielski }
521*b1cdbd2cSJim Jagielski
522*b1cdbd2cSJim Jagielski // XAxisXSupplier
getXAxisTitle()523*b1cdbd2cSJim Jagielski uno::Reference< drawing::XShape > SAL_CALL SampleAddIn::getXAxisTitle()
524*b1cdbd2cSJim Jagielski throw( uno::RuntimeException )
525*b1cdbd2cSJim Jagielski {
526*b1cdbd2cSJim Jagielski if( mxChartDoc.is())
527*b1cdbd2cSJim Jagielski {
528*b1cdbd2cSJim Jagielski uno::Reference< chart::XAxisXSupplier > xAxisSupp( mxChartDoc->getDiagram(), uno::UNO_QUERY );
529*b1cdbd2cSJim Jagielski if( xAxisSupp.is())
530*b1cdbd2cSJim Jagielski return xAxisSupp->getXAxisTitle();
531*b1cdbd2cSJim Jagielski }
532*b1cdbd2cSJim Jagielski
533*b1cdbd2cSJim Jagielski return uno::Reference< drawing::XShape >();
534*b1cdbd2cSJim Jagielski }
535*b1cdbd2cSJim Jagielski
getXAxis()536*b1cdbd2cSJim Jagielski uno::Reference< beans::XPropertySet > SAL_CALL SampleAddIn::getXAxis()
537*b1cdbd2cSJim Jagielski throw( uno::RuntimeException )
538*b1cdbd2cSJim Jagielski {
539*b1cdbd2cSJim Jagielski if( mxChartDoc.is())
540*b1cdbd2cSJim Jagielski {
541*b1cdbd2cSJim Jagielski uno::Reference< chart::XAxisXSupplier > xAxisSupp( mxChartDoc->getDiagram(), uno::UNO_QUERY );
542*b1cdbd2cSJim Jagielski if( xAxisSupp.is())
543*b1cdbd2cSJim Jagielski return xAxisSupp->getXAxis();
544*b1cdbd2cSJim Jagielski }
545*b1cdbd2cSJim Jagielski
546*b1cdbd2cSJim Jagielski return uno::Reference< beans::XPropertySet >();
547*b1cdbd2cSJim Jagielski }
548*b1cdbd2cSJim Jagielski
getXMainGrid()549*b1cdbd2cSJim Jagielski uno::Reference< beans::XPropertySet > SAL_CALL SampleAddIn::getXMainGrid()
550*b1cdbd2cSJim Jagielski throw( uno::RuntimeException )
551*b1cdbd2cSJim Jagielski {
552*b1cdbd2cSJim Jagielski if( mxChartDoc.is())
553*b1cdbd2cSJim Jagielski {
554*b1cdbd2cSJim Jagielski uno::Reference< chart::XAxisXSupplier > xAxisSupp( mxChartDoc->getDiagram(), uno::UNO_QUERY );
555*b1cdbd2cSJim Jagielski if( xAxisSupp.is())
556*b1cdbd2cSJim Jagielski return xAxisSupp->getXMainGrid();
557*b1cdbd2cSJim Jagielski }
558*b1cdbd2cSJim Jagielski
559*b1cdbd2cSJim Jagielski return uno::Reference< beans::XPropertySet >();
560*b1cdbd2cSJim Jagielski }
561*b1cdbd2cSJim Jagielski
getXHelpGrid()562*b1cdbd2cSJim Jagielski uno::Reference< beans::XPropertySet > SAL_CALL SampleAddIn::getXHelpGrid()
563*b1cdbd2cSJim Jagielski throw( uno::RuntimeException )
564*b1cdbd2cSJim Jagielski {
565*b1cdbd2cSJim Jagielski if( mxChartDoc.is())
566*b1cdbd2cSJim Jagielski {
567*b1cdbd2cSJim Jagielski uno::Reference< chart::XAxisXSupplier > xAxisSupp( mxChartDoc->getDiagram(), uno::UNO_QUERY );
568*b1cdbd2cSJim Jagielski if( xAxisSupp.is())
569*b1cdbd2cSJim Jagielski return xAxisSupp->getXHelpGrid();
570*b1cdbd2cSJim Jagielski }
571*b1cdbd2cSJim Jagielski
572*b1cdbd2cSJim Jagielski return uno::Reference< beans::XPropertySet >();
573*b1cdbd2cSJim Jagielski }
574*b1cdbd2cSJim Jagielski
575*b1cdbd2cSJim Jagielski // XAxisYSupplier
getYAxisTitle()576*b1cdbd2cSJim Jagielski uno::Reference< drawing::XShape > SAL_CALL SampleAddIn::getYAxisTitle()
577*b1cdbd2cSJim Jagielski throw( uno::RuntimeException )
578*b1cdbd2cSJim Jagielski {
579*b1cdbd2cSJim Jagielski if( mxChartDoc.is())
580*b1cdbd2cSJim Jagielski {
581*b1cdbd2cSJim Jagielski uno::Reference< chart::XAxisYSupplier > xAxisSupp( mxChartDoc->getDiagram(), uno::UNO_QUERY );
582*b1cdbd2cSJim Jagielski if( xAxisSupp.is())
583*b1cdbd2cSJim Jagielski return xAxisSupp->getYAxisTitle();
584*b1cdbd2cSJim Jagielski }
585*b1cdbd2cSJim Jagielski
586*b1cdbd2cSJim Jagielski return uno::Reference< drawing::XShape >();
587*b1cdbd2cSJim Jagielski }
588*b1cdbd2cSJim Jagielski
getYAxis()589*b1cdbd2cSJim Jagielski uno::Reference< beans::XPropertySet > SAL_CALL SampleAddIn::getYAxis()
590*b1cdbd2cSJim Jagielski throw( uno::RuntimeException )
591*b1cdbd2cSJim Jagielski {
592*b1cdbd2cSJim Jagielski if( mxChartDoc.is())
593*b1cdbd2cSJim Jagielski {
594*b1cdbd2cSJim Jagielski uno::Reference< chart::XAxisYSupplier > xAxisSupp( mxChartDoc->getDiagram(), uno::UNO_QUERY );
595*b1cdbd2cSJim Jagielski if( xAxisSupp.is())
596*b1cdbd2cSJim Jagielski return xAxisSupp->getYAxis();
597*b1cdbd2cSJim Jagielski }
598*b1cdbd2cSJim Jagielski
599*b1cdbd2cSJim Jagielski return uno::Reference< beans::XPropertySet >();
600*b1cdbd2cSJim Jagielski }
601*b1cdbd2cSJim Jagielski
getYMainGrid()602*b1cdbd2cSJim Jagielski uno::Reference< beans::XPropertySet > SAL_CALL SampleAddIn::getYMainGrid()
603*b1cdbd2cSJim Jagielski throw( uno::RuntimeException )
604*b1cdbd2cSJim Jagielski {
605*b1cdbd2cSJim Jagielski if( mxChartDoc.is())
606*b1cdbd2cSJim Jagielski {
607*b1cdbd2cSJim Jagielski uno::Reference< chart::XAxisYSupplier > xAxisSupp( mxChartDoc->getDiagram(), uno::UNO_QUERY );
608*b1cdbd2cSJim Jagielski if( xAxisSupp.is())
609*b1cdbd2cSJim Jagielski return xAxisSupp->getYMainGrid();
610*b1cdbd2cSJim Jagielski }
611*b1cdbd2cSJim Jagielski
612*b1cdbd2cSJim Jagielski return uno::Reference< beans::XPropertySet >();
613*b1cdbd2cSJim Jagielski }
614*b1cdbd2cSJim Jagielski
getYHelpGrid()615*b1cdbd2cSJim Jagielski uno::Reference< beans::XPropertySet > SAL_CALL SampleAddIn::getYHelpGrid()
616*b1cdbd2cSJim Jagielski throw( uno::RuntimeException )
617*b1cdbd2cSJim Jagielski {
618*b1cdbd2cSJim Jagielski if( mxChartDoc.is())
619*b1cdbd2cSJim Jagielski {
620*b1cdbd2cSJim Jagielski uno::Reference< chart::XAxisYSupplier > xAxisSupp( mxChartDoc->getDiagram(), uno::UNO_QUERY );
621*b1cdbd2cSJim Jagielski if( xAxisSupp.is())
622*b1cdbd2cSJim Jagielski return xAxisSupp->getYHelpGrid();
623*b1cdbd2cSJim Jagielski }
624*b1cdbd2cSJim Jagielski
625*b1cdbd2cSJim Jagielski return uno::Reference< beans::XPropertySet >();
626*b1cdbd2cSJim Jagielski }
627*b1cdbd2cSJim Jagielski
628*b1cdbd2cSJim Jagielski // XStatisticDisplay
getUpBar()629*b1cdbd2cSJim Jagielski uno::Reference< beans::XPropertySet > SAL_CALL SampleAddIn::getUpBar()
630*b1cdbd2cSJim Jagielski throw( uno::RuntimeException )
631*b1cdbd2cSJim Jagielski {
632*b1cdbd2cSJim Jagielski if( mxChartDoc.is())
633*b1cdbd2cSJim Jagielski {
634*b1cdbd2cSJim Jagielski uno::Reference< chart::XStatisticDisplay > xStatDisp( mxChartDoc->getDiagram(), uno::UNO_QUERY );
635*b1cdbd2cSJim Jagielski if( xStatDisp.is())
636*b1cdbd2cSJim Jagielski return xStatDisp->getUpBar();
637*b1cdbd2cSJim Jagielski }
638*b1cdbd2cSJim Jagielski
639*b1cdbd2cSJim Jagielski return uno::Reference< beans::XPropertySet >();
640*b1cdbd2cSJim Jagielski }
641*b1cdbd2cSJim Jagielski
getDownBar()642*b1cdbd2cSJim Jagielski uno::Reference< beans::XPropertySet > SAL_CALL SampleAddIn::getDownBar()
643*b1cdbd2cSJim Jagielski throw( uno::RuntimeException )
644*b1cdbd2cSJim Jagielski {
645*b1cdbd2cSJim Jagielski if( mxChartDoc.is())
646*b1cdbd2cSJim Jagielski {
647*b1cdbd2cSJim Jagielski uno::Reference< chart::XStatisticDisplay > xStatDisp( mxChartDoc->getDiagram(), uno::UNO_QUERY );
648*b1cdbd2cSJim Jagielski if( xStatDisp.is())
649*b1cdbd2cSJim Jagielski return xStatDisp->getDownBar();
650*b1cdbd2cSJim Jagielski }
651*b1cdbd2cSJim Jagielski
652*b1cdbd2cSJim Jagielski return uno::Reference< beans::XPropertySet >();
653*b1cdbd2cSJim Jagielski }
654*b1cdbd2cSJim Jagielski
getMinMaxLine()655*b1cdbd2cSJim Jagielski uno::Reference< beans::XPropertySet > SAL_CALL SampleAddIn::getMinMaxLine()
656*b1cdbd2cSJim Jagielski throw( uno::RuntimeException )
657*b1cdbd2cSJim Jagielski {
658*b1cdbd2cSJim Jagielski if( mxChartDoc.is())
659*b1cdbd2cSJim Jagielski {
660*b1cdbd2cSJim Jagielski uno::Reference< chart::XStatisticDisplay > xStatDisp( mxChartDoc->getDiagram(), uno::UNO_QUERY );
661*b1cdbd2cSJim Jagielski if( xStatDisp.is())
662*b1cdbd2cSJim Jagielski return xStatDisp->getMinMaxLine();
663*b1cdbd2cSJim Jagielski }
664*b1cdbd2cSJim Jagielski
665*b1cdbd2cSJim Jagielski return uno::Reference< beans::XPropertySet >();
666*b1cdbd2cSJim Jagielski }
667*b1cdbd2cSJim Jagielski
668*b1cdbd2cSJim Jagielski // XServiceName
getServiceName()669*b1cdbd2cSJim Jagielski OUString SAL_CALL SampleAddIn::getServiceName() throw( uno::RuntimeException )
670*b1cdbd2cSJim Jagielski {
671*b1cdbd2cSJim Jagielski return OUString::createFromAscii( "com.sun.star.chart.SampleAddIn" );
672*b1cdbd2cSJim Jagielski }
673*b1cdbd2cSJim Jagielski
674*b1cdbd2cSJim Jagielski // XServiceInfo
getImplementationName()675*b1cdbd2cSJim Jagielski OUString SAL_CALL SampleAddIn::getImplementationName() throw( uno::RuntimeException )
676*b1cdbd2cSJim Jagielski {
677*b1cdbd2cSJim Jagielski return getImplementationName_Static();
678*b1cdbd2cSJim Jagielski }
679*b1cdbd2cSJim Jagielski
supportsService(const OUString & ServiceName)680*b1cdbd2cSJim Jagielski sal_Bool SAL_CALL SampleAddIn::supportsService( const OUString& ServiceName )
681*b1cdbd2cSJim Jagielski throw( uno::RuntimeException )
682*b1cdbd2cSJim Jagielski {
683*b1cdbd2cSJim Jagielski uno::Sequence< OUString > aServiceSeq = getSupportedServiceNames_Static();
684*b1cdbd2cSJim Jagielski
685*b1cdbd2cSJim Jagielski sal_Int32 nLength = aServiceSeq.getLength();
686*b1cdbd2cSJim Jagielski for( sal_Int32 i=0; i < nLength; i++ )
687*b1cdbd2cSJim Jagielski {
688*b1cdbd2cSJim Jagielski if( ServiceName.equals( aServiceSeq[ i ] ))
689*b1cdbd2cSJim Jagielski return sal_True;
690*b1cdbd2cSJim Jagielski }
691*b1cdbd2cSJim Jagielski
692*b1cdbd2cSJim Jagielski return sal_False;
693*b1cdbd2cSJim Jagielski }
694*b1cdbd2cSJim Jagielski
getSupportedServiceNames()695*b1cdbd2cSJim Jagielski uno::Sequence< OUString > SAL_CALL SampleAddIn::getSupportedServiceNames()
696*b1cdbd2cSJim Jagielski throw( uno::RuntimeException )
697*b1cdbd2cSJim Jagielski {
698*b1cdbd2cSJim Jagielski return getSupportedServiceNames_Static();
699*b1cdbd2cSJim Jagielski }
700*b1cdbd2cSJim Jagielski
701*b1cdbd2cSJim Jagielski // XLocalizable
setLocale(const lang::Locale & eLocale)702*b1cdbd2cSJim Jagielski void SAL_CALL SampleAddIn::setLocale( const lang::Locale& eLocale )
703*b1cdbd2cSJim Jagielski throw( uno::RuntimeException )
704*b1cdbd2cSJim Jagielski {
705*b1cdbd2cSJim Jagielski maLocale = eLocale;
706*b1cdbd2cSJim Jagielski }
707*b1cdbd2cSJim Jagielski
getLocale()708*b1cdbd2cSJim Jagielski lang::Locale SAL_CALL SampleAddIn::getLocale()
709*b1cdbd2cSJim Jagielski throw( uno::RuntimeException )
710*b1cdbd2cSJim Jagielski {
711*b1cdbd2cSJim Jagielski return maLocale;
712*b1cdbd2cSJim Jagielski }
713