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 package fvt.uno.sd.chart;
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski import static org.junit.Assert.assertEquals;
24*b1cdbd2cSJim Jagielski 
25*b1cdbd2cSJim Jagielski import org.junit.After;
26*b1cdbd2cSJim Jagielski import org.junit.Before;
27*b1cdbd2cSJim Jagielski import org.junit.Test;
28*b1cdbd2cSJim Jagielski import org.openoffice.test.common.FileUtil;
29*b1cdbd2cSJim Jagielski import org.openoffice.test.common.Testspace;
30*b1cdbd2cSJim Jagielski import org.openoffice.test.uno.UnoApp;
31*b1cdbd2cSJim Jagielski 
32*b1cdbd2cSJim Jagielski import testlib.uno.ChartUtil;
33*b1cdbd2cSJim Jagielski import testlib.uno.PageUtil;
34*b1cdbd2cSJim Jagielski import testlib.uno.ShapeUtil;
35*b1cdbd2cSJim Jagielski import testlib.uno.TestUtil;
36*b1cdbd2cSJim Jagielski 
37*b1cdbd2cSJim Jagielski import com.sun.star.awt.FontRelief;
38*b1cdbd2cSJim Jagielski import com.sun.star.awt.FontUnderline;
39*b1cdbd2cSJim Jagielski import com.sun.star.awt.FontWeight;
40*b1cdbd2cSJim Jagielski import com.sun.star.awt.Point;
41*b1cdbd2cSJim Jagielski import com.sun.star.awt.Size;
42*b1cdbd2cSJim Jagielski import com.sun.star.beans.PropertyValue;
43*b1cdbd2cSJim Jagielski import com.sun.star.beans.XPropertySet;
44*b1cdbd2cSJim Jagielski import com.sun.star.chart.ChartDataCaption;
45*b1cdbd2cSJim Jagielski import com.sun.star.chart.ChartLegendPosition;
46*b1cdbd2cSJim Jagielski import com.sun.star.chart.XAxisYSupplier;
47*b1cdbd2cSJim Jagielski import com.sun.star.chart.XChartDocument;
48*b1cdbd2cSJim Jagielski import com.sun.star.chart.XDiagram;
49*b1cdbd2cSJim Jagielski import com.sun.star.drawing.FillStyle;
50*b1cdbd2cSJim Jagielski import com.sun.star.drawing.LineStyle;
51*b1cdbd2cSJim Jagielski import com.sun.star.drawing.XDrawPage;
52*b1cdbd2cSJim Jagielski import com.sun.star.drawing.XDrawPages;
53*b1cdbd2cSJim Jagielski import com.sun.star.drawing.XDrawPagesSupplier;
54*b1cdbd2cSJim Jagielski import com.sun.star.drawing.XShape;
55*b1cdbd2cSJim Jagielski import com.sun.star.drawing.XShapes;
56*b1cdbd2cSJim Jagielski import com.sun.star.frame.XStorable;
57*b1cdbd2cSJim Jagielski import com.sun.star.lang.XComponent;
58*b1cdbd2cSJim Jagielski import com.sun.star.presentation.XPresentation;
59*b1cdbd2cSJim Jagielski import com.sun.star.presentation.XPresentationSupplier;
60*b1cdbd2cSJim Jagielski import com.sun.star.uno.UnoRuntime;
61*b1cdbd2cSJim Jagielski import com.sun.star.util.XCloseable;
62*b1cdbd2cSJim Jagielski import com.sun.star.util.XModifiable;
63*b1cdbd2cSJim Jagielski 
64*b1cdbd2cSJim Jagielski public class ChartProperties {
65*b1cdbd2cSJim Jagielski 	UnoApp unoApp = new UnoApp();
66*b1cdbd2cSJim Jagielski 	XPresentationSupplier sdDocument = null;
67*b1cdbd2cSJim Jagielski 	XPresentation pre = null;
68*b1cdbd2cSJim Jagielski 	XComponent precomp = null;
69*b1cdbd2cSJim Jagielski 	XComponent impressDocument = null;
70*b1cdbd2cSJim Jagielski 	XComponent reLoadFile = null;
71*b1cdbd2cSJim Jagielski 	XDrawPagesSupplier drawsupplier = null;
72*b1cdbd2cSJim Jagielski 	XDrawPages drawpages = null;
73*b1cdbd2cSJim Jagielski 	XShapes xShapes = null;
74*b1cdbd2cSJim Jagielski 	XDrawPage xpage = null;
75*b1cdbd2cSJim Jagielski 	String filePath = null;
76*b1cdbd2cSJim Jagielski 	XChartDocument xChartDoc = null;
77*b1cdbd2cSJim Jagielski 	com.sun.star.chart2.XChartDocument xChart2Doc = null;
78*b1cdbd2cSJim Jagielski 
79*b1cdbd2cSJim Jagielski 	@Before
setUp()80*b1cdbd2cSJim Jagielski 	public void setUp() throws Exception {
81*b1cdbd2cSJim Jagielski 		unoApp.start();
82*b1cdbd2cSJim Jagielski 		createDocumentAndSlide();
83*b1cdbd2cSJim Jagielski 	}
84*b1cdbd2cSJim Jagielski 
85*b1cdbd2cSJim Jagielski 	@After
tearDown()86*b1cdbd2cSJim Jagielski 	public void tearDown() throws Exception {
87*b1cdbd2cSJim Jagielski 		unoApp.closeDocument(impressDocument);
88*b1cdbd2cSJim Jagielski 		unoApp.closeDocument(reLoadFile);
89*b1cdbd2cSJim Jagielski 		unoApp.close();
90*b1cdbd2cSJim Jagielski 		 if (filePath != null)
91*b1cdbd2cSJim Jagielski 		 FileUtil.deleteFile(filePath);
92*b1cdbd2cSJim Jagielski 	}
93*b1cdbd2cSJim Jagielski 
94*b1cdbd2cSJim Jagielski 	/**
95*b1cdbd2cSJim Jagielski 	 * create a new presentation document and insert a new slide.
96*b1cdbd2cSJim Jagielski 	 *
97*b1cdbd2cSJim Jagielski 	 * @throws Exception
98*b1cdbd2cSJim Jagielski 	 */
createDocumentAndSlide()99*b1cdbd2cSJim Jagielski 	public void createDocumentAndSlide() throws Exception {
100*b1cdbd2cSJim Jagielski 		impressDocument = (XComponent) UnoRuntime.queryInterface(
101*b1cdbd2cSJim Jagielski 				XComponent.class, unoApp.newDocument("simpress"));
102*b1cdbd2cSJim Jagielski 		drawsupplier = (XDrawPagesSupplier) UnoRuntime.queryInterface(
103*b1cdbd2cSJim Jagielski 				XDrawPagesSupplier.class, impressDocument);
104*b1cdbd2cSJim Jagielski 		drawpages = drawsupplier.getDrawPages();
105*b1cdbd2cSJim Jagielski 		drawpages.insertNewByIndex(1);
106*b1cdbd2cSJim Jagielski 		xpage = PageUtil.getDrawPageByIndex(impressDocument, 1);
107*b1cdbd2cSJim Jagielski 	}
108*b1cdbd2cSJim Jagielski 
109*b1cdbd2cSJim Jagielski 	/**
110*b1cdbd2cSJim Jagielski 	 * Insert default Column Chart to slide.
111*b1cdbd2cSJim Jagielski 	 *
112*b1cdbd2cSJim Jagielski 	 * @return
113*b1cdbd2cSJim Jagielski 	 * @throws Exception
114*b1cdbd2cSJim Jagielski 	 */
insertDefaultChart()115*b1cdbd2cSJim Jagielski 	public XChartDocument insertDefaultChart() throws Exception {
116*b1cdbd2cSJim Jagielski 		Point po = new Point(1000, 1000);
117*b1cdbd2cSJim Jagielski 		xShapes = (XShapes) UnoRuntime.queryInterface(XShapes.class, xpage);
118*b1cdbd2cSJim Jagielski 		XShape xShape = ShapeUtil.createShape(impressDocument, po, new Size(
119*b1cdbd2cSJim Jagielski 				15000, 9271), "com.sun.star.drawing.OLE2Shape");
120*b1cdbd2cSJim Jagielski 		xShapes.add(xShape);
121*b1cdbd2cSJim Jagielski 		xChartDoc = ChartUtil.retrieveChartDocument(xShape);
122*b1cdbd2cSJim Jagielski 		return xChartDoc;
123*b1cdbd2cSJim Jagielski 	}
124*b1cdbd2cSJim Jagielski 
125*b1cdbd2cSJim Jagielski 	/**
126*b1cdbd2cSJim Jagielski 	 * Insert default Column Chart2 to slide.
127*b1cdbd2cSJim Jagielski 	 *
128*b1cdbd2cSJim Jagielski 	 * @return
129*b1cdbd2cSJim Jagielski 	 * @throws Exception
130*b1cdbd2cSJim Jagielski 	 */
insertDefaultChart2()131*b1cdbd2cSJim Jagielski 	public com.sun.star.chart2.XChartDocument insertDefaultChart2()
132*b1cdbd2cSJim Jagielski 			throws Exception {
133*b1cdbd2cSJim Jagielski 		Point po = new Point(1000, 1000);
134*b1cdbd2cSJim Jagielski 		xShapes = (XShapes) UnoRuntime.queryInterface(XShapes.class, xpage);
135*b1cdbd2cSJim Jagielski 		XShape xShape = ShapeUtil.createShape(impressDocument, po, new Size(
136*b1cdbd2cSJim Jagielski 				15000, 9271), "com.sun.star.drawing.OLE2Shape");
137*b1cdbd2cSJim Jagielski 		xShapes.add(xShape);
138*b1cdbd2cSJim Jagielski 		xChart2Doc = ChartUtil.retrieveChart2Document(xShape);
139*b1cdbd2cSJim Jagielski 		return xChart2Doc;
140*b1cdbd2cSJim Jagielski 	}
141*b1cdbd2cSJim Jagielski 
142*b1cdbd2cSJim Jagielski 	// --------------Chart Area----------------------
143*b1cdbd2cSJim Jagielski 	/**
144*b1cdbd2cSJim Jagielski 	 * test Chart Area properties about Border Line
145*b1cdbd2cSJim Jagielski 	 *
146*b1cdbd2cSJim Jagielski 	 * @throws Exception
147*b1cdbd2cSJim Jagielski 	 */
148*b1cdbd2cSJim Jagielski 	@Test
testAreaBordersProperties()149*b1cdbd2cSJim Jagielski 	public void testAreaBordersProperties() throws Exception {
150*b1cdbd2cSJim Jagielski 		XShape xShape = null;
151*b1cdbd2cSJim Jagielski 		insertDefaultChart();
152*b1cdbd2cSJim Jagielski 		XPropertySet aDiaProp = (XPropertySet) UnoRuntime.queryInterface(
153*b1cdbd2cSJim Jagielski 				XPropertySet.class, xChartDoc.getArea());
154*b1cdbd2cSJim Jagielski 		aDiaProp.setPropertyValue("LineStyle", LineStyle.DASH);
155*b1cdbd2cSJim Jagielski 		aDiaProp.setPropertyValue("LineColor", 0x00ff00);
156*b1cdbd2cSJim Jagielski 
157*b1cdbd2cSJim Jagielski 		// --------------------------
158*b1cdbd2cSJim Jagielski 		xShape = saveAndLoadShape(1, 0);
159*b1cdbd2cSJim Jagielski 		xChartDoc = ChartUtil.getChartDocument(xShape);
160*b1cdbd2cSJim Jagielski 		aDiaProp = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class,
161*b1cdbd2cSJim Jagielski 				xChartDoc.getArea());
162*b1cdbd2cSJim Jagielski 		// ----------------------------
163*b1cdbd2cSJim Jagielski 		assertEquals("Not Dash Line Style", LineStyle.DASH,
164*b1cdbd2cSJim Jagielski 				aDiaProp.getPropertyValue("LineStyle"));
165*b1cdbd2cSJim Jagielski 		assertEquals("Not Yellow Line", 0x00ff00,
166*b1cdbd2cSJim Jagielski 				aDiaProp.getPropertyValue("LineColor"));
167*b1cdbd2cSJim Jagielski 
168*b1cdbd2cSJim Jagielski 	}
169*b1cdbd2cSJim Jagielski 
170*b1cdbd2cSJim Jagielski 	/**
171*b1cdbd2cSJim Jagielski 	 * test Area Properties about Gradient Fill
172*b1cdbd2cSJim Jagielski 	 * @throws Exception
173*b1cdbd2cSJim Jagielski 	 */
174*b1cdbd2cSJim Jagielski 	@Test
testAreaFillProperties()175*b1cdbd2cSJim Jagielski 	public void testAreaFillProperties() throws Exception {
176*b1cdbd2cSJim Jagielski 		XShape xShape = null;
177*b1cdbd2cSJim Jagielski 		insertDefaultChart();
178*b1cdbd2cSJim Jagielski 		XPropertySet aDiaProp = (XPropertySet) UnoRuntime.queryInterface(
179*b1cdbd2cSJim Jagielski 				XPropertySet.class, xChartDoc.getArea());
180*b1cdbd2cSJim Jagielski 		aDiaProp.setPropertyValue("FillStyle", FillStyle.GRADIENT);
181*b1cdbd2cSJim Jagielski 		aDiaProp.setPropertyValue("FillGradientName", "Radial red/yellow");
182*b1cdbd2cSJim Jagielski 		// --------------------------
183*b1cdbd2cSJim Jagielski 		xShape = saveAndLoadShape(1, 0);
184*b1cdbd2cSJim Jagielski 		xChartDoc = ChartUtil.getChartDocument(xShape);
185*b1cdbd2cSJim Jagielski 		aDiaProp = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class,
186*b1cdbd2cSJim Jagielski 				xChartDoc.getArea());
187*b1cdbd2cSJim Jagielski 		// ----------------------------
188*b1cdbd2cSJim Jagielski 		assertEquals("Not Gradient Fill Style", FillStyle.GRADIENT,
189*b1cdbd2cSJim Jagielski 				aDiaProp.getPropertyValue("FillStyle"));
190*b1cdbd2cSJim Jagielski 		assertEquals("Not Radial red/yellow Gradient", "Radial red/yellow",
191*b1cdbd2cSJim Jagielski 				aDiaProp.getPropertyValue("FillGradientName"));
192*b1cdbd2cSJim Jagielski 
193*b1cdbd2cSJim Jagielski 	}
194*b1cdbd2cSJim Jagielski 
195*b1cdbd2cSJim Jagielski 	/**
196*b1cdbd2cSJim Jagielski 	 * test Area properties about Transparency
197*b1cdbd2cSJim Jagielski 	 * @throws Exception
198*b1cdbd2cSJim Jagielski 	 */
199*b1cdbd2cSJim Jagielski 	@Test
testAreaTransparencyProperties()200*b1cdbd2cSJim Jagielski 	public void testAreaTransparencyProperties() throws Exception {
201*b1cdbd2cSJim Jagielski 		XShape xShape = null;
202*b1cdbd2cSJim Jagielski 		insertDefaultChart();
203*b1cdbd2cSJim Jagielski 		XPropertySet aDiaProp = (XPropertySet) UnoRuntime.queryInterface(
204*b1cdbd2cSJim Jagielski 				XPropertySet.class, xChartDoc.getArea());
205*b1cdbd2cSJim Jagielski 		aDiaProp.setPropertyValue("FillStyle", FillStyle.SOLID);
206*b1cdbd2cSJim Jagielski 		aDiaProp.setPropertyValue("FillColor", 0xffff00);
207*b1cdbd2cSJim Jagielski 		aDiaProp.setPropertyValue("FillTransparence", 50);
208*b1cdbd2cSJim Jagielski 		// --------------------------
209*b1cdbd2cSJim Jagielski 		xShape = saveAndLoadShape(1, 0);
210*b1cdbd2cSJim Jagielski 		xChartDoc = ChartUtil.getChartDocument(xShape);
211*b1cdbd2cSJim Jagielski 		aDiaProp = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class,
212*b1cdbd2cSJim Jagielski 				xChartDoc.getArea());
213*b1cdbd2cSJim Jagielski 		// ----------------------------
214*b1cdbd2cSJim Jagielski 		assertEquals("Area Fill Transparency is not 50%", new Short("50"),
215*b1cdbd2cSJim Jagielski 				aDiaProp.getPropertyValue("FillTransparence"));
216*b1cdbd2cSJim Jagielski 
217*b1cdbd2cSJim Jagielski 	}
218*b1cdbd2cSJim Jagielski 
219*b1cdbd2cSJim Jagielski 	// ------------Chart Legend-------------------
220*b1cdbd2cSJim Jagielski 	/**
221*b1cdbd2cSJim Jagielski 	 * test Legend Border Line Properties
222*b1cdbd2cSJim Jagielski 	 * @throws Exception
223*b1cdbd2cSJim Jagielski 	 */
224*b1cdbd2cSJim Jagielski 	@Test
testLegendBorderProperties()225*b1cdbd2cSJim Jagielski 	public void testLegendBorderProperties() throws Exception {
226*b1cdbd2cSJim Jagielski 		XShape xShape = null;
227*b1cdbd2cSJim Jagielski 		insertDefaultChart();
228*b1cdbd2cSJim Jagielski 		XPropertySet aDiaProp = (XPropertySet) UnoRuntime.queryInterface(
229*b1cdbd2cSJim Jagielski 				XPropertySet.class, xChartDoc.getLegend());
230*b1cdbd2cSJim Jagielski 		aDiaProp.setPropertyValue("LineStyle", LineStyle.DASH);
231*b1cdbd2cSJim Jagielski 		aDiaProp.setPropertyValue("LineColor", 0x00ff00);
232*b1cdbd2cSJim Jagielski 		// --------------------------
233*b1cdbd2cSJim Jagielski 		xShape = saveAndLoadShape(1, 0);
234*b1cdbd2cSJim Jagielski 		xChartDoc = ChartUtil.getChartDocument(xShape);
235*b1cdbd2cSJim Jagielski 		aDiaProp = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class,
236*b1cdbd2cSJim Jagielski 				xChartDoc.getLegend());
237*b1cdbd2cSJim Jagielski 		// ----------------------------
238*b1cdbd2cSJim Jagielski 		assertEquals("Not Dash Line Style", LineStyle.DASH,
239*b1cdbd2cSJim Jagielski 				aDiaProp.getPropertyValue("LineStyle"));
240*b1cdbd2cSJim Jagielski 		assertEquals("Not Yellow Line", 0x00ff00,
241*b1cdbd2cSJim Jagielski 				aDiaProp.getPropertyValue("LineColor"));
242*b1cdbd2cSJim Jagielski 
243*b1cdbd2cSJim Jagielski 	}
244*b1cdbd2cSJim Jagielski 
245*b1cdbd2cSJim Jagielski 	/**
246*b1cdbd2cSJim Jagielski 	 * test Legend Fill and transparence properties
247*b1cdbd2cSJim Jagielski 	 * @throws Exception
248*b1cdbd2cSJim Jagielski 	 */
249*b1cdbd2cSJim Jagielski 	@Test
testLegendFillAndTransparence()250*b1cdbd2cSJim Jagielski 	public void testLegendFillAndTransparence() throws Exception {
251*b1cdbd2cSJim Jagielski 		XShape xShape = null;
252*b1cdbd2cSJim Jagielski 		insertDefaultChart();
253*b1cdbd2cSJim Jagielski 		XPropertySet aDiaProp = (XPropertySet) UnoRuntime.queryInterface(
254*b1cdbd2cSJim Jagielski 				XPropertySet.class, xChartDoc.getLegend());
255*b1cdbd2cSJim Jagielski 		aDiaProp.setPropertyValue("FillStyle", FillStyle.SOLID);
256*b1cdbd2cSJim Jagielski 		aDiaProp.setPropertyValue("FillColor", 0xffff00);
257*b1cdbd2cSJim Jagielski 		aDiaProp.setPropertyValue("FillTransparence", 50);
258*b1cdbd2cSJim Jagielski 		// --------------------------
259*b1cdbd2cSJim Jagielski 		xShape = saveAndLoadShape(1, 0);
260*b1cdbd2cSJim Jagielski 		xChartDoc = ChartUtil.getChartDocument(xShape);
261*b1cdbd2cSJim Jagielski 		aDiaProp = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class,
262*b1cdbd2cSJim Jagielski 				xChartDoc.getLegend());
263*b1cdbd2cSJim Jagielski 		// ----------------------------
264*b1cdbd2cSJim Jagielski 
265*b1cdbd2cSJim Jagielski 		assertEquals("Area Fill Transparency is not 50%", new Short("50"),
266*b1cdbd2cSJim Jagielski 				aDiaProp.getPropertyValue("FillTransparence"));
267*b1cdbd2cSJim Jagielski 
268*b1cdbd2cSJim Jagielski 	}
269*b1cdbd2cSJim Jagielski 
270*b1cdbd2cSJim Jagielski 	/**
271*b1cdbd2cSJim Jagielski 	 * test Legend Char Font
272*b1cdbd2cSJim Jagielski 	 * @throws Exception
273*b1cdbd2cSJim Jagielski 	 */
274*b1cdbd2cSJim Jagielski 	@Test
testLegendCharFont()275*b1cdbd2cSJim Jagielski 	public void testLegendCharFont() throws Exception {
276*b1cdbd2cSJim Jagielski 		XShape xShape = null;
277*b1cdbd2cSJim Jagielski 		insertDefaultChart();
278*b1cdbd2cSJim Jagielski 		XPropertySet aDiaProp = (XPropertySet) UnoRuntime.queryInterface(
279*b1cdbd2cSJim Jagielski 				XPropertySet.class, xChartDoc.getLegend());
280*b1cdbd2cSJim Jagielski 		aDiaProp.setPropertyValue("CharFontName", "Arial");
281*b1cdbd2cSJim Jagielski 		aDiaProp.setPropertyValue("CharWeight", FontWeight.BOLD);
282*b1cdbd2cSJim Jagielski 		// --------------------------
283*b1cdbd2cSJim Jagielski 		xShape = saveAndLoadShape(1, 0);
284*b1cdbd2cSJim Jagielski 		xChartDoc = ChartUtil.getChartDocument(xShape);
285*b1cdbd2cSJim Jagielski 		aDiaProp = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class,
286*b1cdbd2cSJim Jagielski 				xChartDoc.getLegend());
287*b1cdbd2cSJim Jagielski 		// ----------------------------
288*b1cdbd2cSJim Jagielski 		assertEquals("Legend font name is not Arial", "Arial",
289*b1cdbd2cSJim Jagielski 				aDiaProp.getPropertyValue("CharFontName"));
290*b1cdbd2cSJim Jagielski 		assertEquals("Legend font weight is not BOLD", FontWeight.BOLD,
291*b1cdbd2cSJim Jagielski 				aDiaProp.getPropertyValue("CharWeight"));
292*b1cdbd2cSJim Jagielski 
293*b1cdbd2cSJim Jagielski 	}
294*b1cdbd2cSJim Jagielski 
295*b1cdbd2cSJim Jagielski 	/**
296*b1cdbd2cSJim Jagielski 	 * test Legend Char Font Effects
297*b1cdbd2cSJim Jagielski 	 * @throws Exception
298*b1cdbd2cSJim Jagielski 	 */
299*b1cdbd2cSJim Jagielski 	@Test
testLegendCharFontEffects()300*b1cdbd2cSJim Jagielski 	public void testLegendCharFontEffects() throws Exception {
301*b1cdbd2cSJim Jagielski 		XShape xShape = null;
302*b1cdbd2cSJim Jagielski 		insertDefaultChart();
303*b1cdbd2cSJim Jagielski 		XPropertySet aDiaProp = (XPropertySet) UnoRuntime.queryInterface(
304*b1cdbd2cSJim Jagielski 				XPropertySet.class, xChartDoc.getLegend());
305*b1cdbd2cSJim Jagielski 		aDiaProp.setPropertyValue("CharColor", 0xffff00);
306*b1cdbd2cSJim Jagielski 		aDiaProp.setPropertyValue("CharUnderline", FontUnderline.DOUBLE);
307*b1cdbd2cSJim Jagielski 		aDiaProp.setPropertyValue("CharUnderlineColor", 0xffff00);
308*b1cdbd2cSJim Jagielski 		aDiaProp.setPropertyValue("CharRelief", FontRelief.ENGRAVED);
309*b1cdbd2cSJim Jagielski 
310*b1cdbd2cSJim Jagielski 		// --------------------------
311*b1cdbd2cSJim Jagielski 		xShape = saveAndLoadShape(1, 0);
312*b1cdbd2cSJim Jagielski 		xChartDoc = ChartUtil.getChartDocument(xShape);
313*b1cdbd2cSJim Jagielski 		aDiaProp = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class,
314*b1cdbd2cSJim Jagielski 				xChartDoc.getLegend());
315*b1cdbd2cSJim Jagielski 		// ----------------------------
316*b1cdbd2cSJim Jagielski 		assertEquals("Legend font color is not yellow", 0xffff00,
317*b1cdbd2cSJim Jagielski 				aDiaProp.getPropertyValue("CharColor"));
318*b1cdbd2cSJim Jagielski 		assertEquals("Legend font underline is not DOUBLE",
319*b1cdbd2cSJim Jagielski 				FontUnderline.DOUBLE,
320*b1cdbd2cSJim Jagielski 				aDiaProp.getPropertyValue("CharUnderline"));
321*b1cdbd2cSJim Jagielski 		assertEquals("Legend font underline color is not yellow", 0xffff00,
322*b1cdbd2cSJim Jagielski 				aDiaProp.getPropertyValue("CharUnderlineColor"));
323*b1cdbd2cSJim Jagielski 		assertEquals("Legend font relief is not engraved", FontRelief.ENGRAVED,
324*b1cdbd2cSJim Jagielski 				aDiaProp.getPropertyValue("CharRelief"));
325*b1cdbd2cSJim Jagielski 
326*b1cdbd2cSJim Jagielski 	}
327*b1cdbd2cSJim Jagielski 
328*b1cdbd2cSJim Jagielski 	/**
329*b1cdbd2cSJim Jagielski 	 * test Legend Position in Chart
330*b1cdbd2cSJim Jagielski 	 * @throws Exception
331*b1cdbd2cSJim Jagielski 	 */
332*b1cdbd2cSJim Jagielski 	@Test
testLegendposition()333*b1cdbd2cSJim Jagielski 	public void testLegendposition() throws Exception {
334*b1cdbd2cSJim Jagielski 		XShape xShape = null;
335*b1cdbd2cSJim Jagielski 		insertDefaultChart();
336*b1cdbd2cSJim Jagielski 		XPropertySet aDiaProp = (XPropertySet) UnoRuntime.queryInterface(
337*b1cdbd2cSJim Jagielski 				XPropertySet.class, xChartDoc.getLegend());
338*b1cdbd2cSJim Jagielski 		aDiaProp.setPropertyValue("Alignment", ChartLegendPosition.LEFT);
339*b1cdbd2cSJim Jagielski 
340*b1cdbd2cSJim Jagielski 		// --------------------------
341*b1cdbd2cSJim Jagielski 		xShape = saveAndLoadShape(1, 0);
342*b1cdbd2cSJim Jagielski 		xChartDoc = ChartUtil.getChartDocument(xShape);
343*b1cdbd2cSJim Jagielski 		aDiaProp = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class,
344*b1cdbd2cSJim Jagielski 				xChartDoc.getLegend());
345*b1cdbd2cSJim Jagielski 		// ----------------------------
346*b1cdbd2cSJim Jagielski 		assertEquals("Legend position is not left", ChartLegendPosition.LEFT,
347*b1cdbd2cSJim Jagielski 				aDiaProp.getPropertyValue("Alignment"));
348*b1cdbd2cSJim Jagielski 
349*b1cdbd2cSJim Jagielski 	}
350*b1cdbd2cSJim Jagielski 
351*b1cdbd2cSJim Jagielski 	// --------------Chart Title---------------
352*b1cdbd2cSJim Jagielski 	/**
353*b1cdbd2cSJim Jagielski 	 * test Addition and Modification of Title and subTitle
354*b1cdbd2cSJim Jagielski 	 * @throws Exception
355*b1cdbd2cSJim Jagielski 	 */
356*b1cdbd2cSJim Jagielski 	@Test
testTitleAndSubTitle()357*b1cdbd2cSJim Jagielski 	public void testTitleAndSubTitle() throws Exception {
358*b1cdbd2cSJim Jagielski 		XShape xShape = null;
359*b1cdbd2cSJim Jagielski 		insertDefaultChart();
360*b1cdbd2cSJim Jagielski 		XPropertySet aDiaProp = (XPropertySet) UnoRuntime.queryInterface(
361*b1cdbd2cSJim Jagielski 				XPropertySet.class, xChartDoc.getTitle());
362*b1cdbd2cSJim Jagielski 		aDiaProp.setPropertyValue("String", "TestTitle");
363*b1cdbd2cSJim Jagielski 		XPropertySet aDiaProp2 = (XPropertySet) UnoRuntime.queryInterface(
364*b1cdbd2cSJim Jagielski 				XPropertySet.class, xChartDoc.getSubTitle());
365*b1cdbd2cSJim Jagielski 		aDiaProp2.setPropertyValue("String", "TestSubTitle");
366*b1cdbd2cSJim Jagielski 		// save and load shape
367*b1cdbd2cSJim Jagielski 		xShape = saveAndLoadShape(1, 0);
368*b1cdbd2cSJim Jagielski 		xChartDoc = ChartUtil.getChartDocument(xShape);
369*b1cdbd2cSJim Jagielski 		aDiaProp = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class,
370*b1cdbd2cSJim Jagielski 				xChartDoc.getTitle());
371*b1cdbd2cSJim Jagielski 		aDiaProp2 = (XPropertySet) UnoRuntime.queryInterface(
372*b1cdbd2cSJim Jagielski 				XPropertySet.class, xChartDoc.getSubTitle());
373*b1cdbd2cSJim Jagielski 		assertEquals("Chart title is wrong", "TestTitle",
374*b1cdbd2cSJim Jagielski 				aDiaProp.getPropertyValue("String"));
375*b1cdbd2cSJim Jagielski 		assertEquals("Chart sub title is wrong", "TestSubTitle",
376*b1cdbd2cSJim Jagielski 				aDiaProp2.getPropertyValue("String"));
377*b1cdbd2cSJim Jagielski 		// modify title and subtitle
378*b1cdbd2cSJim Jagielski 		aDiaProp.setPropertyValue("String", "AnotherTestTitle");
379*b1cdbd2cSJim Jagielski 		aDiaProp2.setPropertyValue("String", "AnotherTestSubTitle");
380*b1cdbd2cSJim Jagielski 
381*b1cdbd2cSJim Jagielski 		// close document and save modification.
382*b1cdbd2cSJim Jagielski 		XModifiable modified = (XModifiable) UnoRuntime.queryInterface(
383*b1cdbd2cSJim Jagielski 				XModifiable.class, impressDocument);
384*b1cdbd2cSJim Jagielski 		XCloseable closer = (XCloseable) UnoRuntime.queryInterface(
385*b1cdbd2cSJim Jagielski 				XCloseable.class, impressDocument);
386*b1cdbd2cSJim Jagielski 		if (modified != null)
387*b1cdbd2cSJim Jagielski 			modified.setModified(true);
388*b1cdbd2cSJim Jagielski 		closer.close(true);
389*b1cdbd2cSJim Jagielski 
390*b1cdbd2cSJim Jagielski 		// load and get Chart
391*b1cdbd2cSJim Jagielski 		impressDocument = (XComponent) UnoRuntime.queryInterface(XComponent.class,
392*b1cdbd2cSJim Jagielski 				unoApp.loadDocument(filePath));
393*b1cdbd2cSJim Jagielski 		xShapes = ShapeUtil.getShapes(reLoadFile, 1);
394*b1cdbd2cSJim Jagielski 		xShape = (XShape) UnoRuntime.queryInterface(XShape.class,
395*b1cdbd2cSJim Jagielski 				xShapes.getByIndex(0));
396*b1cdbd2cSJim Jagielski 		xChartDoc = ChartUtil.getChartDocument(xShape);
397*b1cdbd2cSJim Jagielski 		aDiaProp = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class,
398*b1cdbd2cSJim Jagielski 				xChartDoc.getTitle());
399*b1cdbd2cSJim Jagielski 		aDiaProp2 = (XPropertySet) UnoRuntime.queryInterface(
400*b1cdbd2cSJim Jagielski 				XPropertySet.class, xChartDoc.getSubTitle());
401*b1cdbd2cSJim Jagielski 		assertEquals("Chart title is wrong", "AnotherTestTitle",
402*b1cdbd2cSJim Jagielski 				aDiaProp.getPropertyValue("String"));
403*b1cdbd2cSJim Jagielski 		assertEquals("Chart sub title is wrong", "AnotherTestSubTitle",
404*b1cdbd2cSJim Jagielski 				aDiaProp2.getPropertyValue("String"));
405*b1cdbd2cSJim Jagielski 	}
406*b1cdbd2cSJim Jagielski 
407*b1cdbd2cSJim Jagielski 	/**
408*b1cdbd2cSJim Jagielski 	 * test Data label and show it as value
409*b1cdbd2cSJim Jagielski 	 * @throws Exception
410*b1cdbd2cSJim Jagielski 	 */
411*b1cdbd2cSJim Jagielski 	@Test
testDataLabel()412*b1cdbd2cSJim Jagielski 	public void testDataLabel() throws Exception {
413*b1cdbd2cSJim Jagielski 		XShape xShape = null;
414*b1cdbd2cSJim Jagielski 		insertDefaultChart();
415*b1cdbd2cSJim Jagielski 		// set data label to the fourth points, the second series.
416*b1cdbd2cSJim Jagielski 		XPropertySet aDiaProp = (XPropertySet) UnoRuntime.queryInterface(
417*b1cdbd2cSJim Jagielski 				XPropertySet.class, xChartDoc.getDiagram()
418*b1cdbd2cSJim Jagielski 						.getDataPointProperties(3, 1));
419*b1cdbd2cSJim Jagielski 		aDiaProp.setPropertyValue("DataCaption", ChartDataCaption.VALUE);
420*b1cdbd2cSJim Jagielski 
421*b1cdbd2cSJim Jagielski 		// --------------------------
422*b1cdbd2cSJim Jagielski 		xShape = saveAndLoadShape(1, 0);
423*b1cdbd2cSJim Jagielski 		xChartDoc = ChartUtil.getChartDocument(xShape);
424*b1cdbd2cSJim Jagielski 		aDiaProp = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class,
425*b1cdbd2cSJim Jagielski 				xChartDoc.getDiagram().getDataPointProperties(3, 1));
426*b1cdbd2cSJim Jagielski 
427*b1cdbd2cSJim Jagielski 		assertEquals(
428*b1cdbd2cSJim Jagielski 				"Data label of fourth points, the second series not show as value",
429*b1cdbd2cSJim Jagielski 				ChartDataCaption.VALUE,
430*b1cdbd2cSJim Jagielski 				aDiaProp.getPropertyValue("DataCaption"));
431*b1cdbd2cSJim Jagielski 
432*b1cdbd2cSJim Jagielski 	}
433*b1cdbd2cSJim Jagielski 
434*b1cdbd2cSJim Jagielski 	/**
435*b1cdbd2cSJim Jagielski 	 * test GridLine of Y Axis.
436*b1cdbd2cSJim Jagielski 	 * @throws Exception
437*b1cdbd2cSJim Jagielski 	 */
438*b1cdbd2cSJim Jagielski 	@Test
testGridLine()439*b1cdbd2cSJim Jagielski 	public void testGridLine() throws Exception {
440*b1cdbd2cSJim Jagielski 		XShape xShape = null;
441*b1cdbd2cSJim Jagielski 		insertDefaultChart();
442*b1cdbd2cSJim Jagielski 		XDiagram xdiagram = xChartDoc.getDiagram();
443*b1cdbd2cSJim Jagielski 		// get Y axis
444*b1cdbd2cSJim Jagielski 		XAxisYSupplier aYAxisSupplier = (XAxisYSupplier) UnoRuntime
445*b1cdbd2cSJim Jagielski 				.queryInterface(XAxisYSupplier.class, xdiagram);
446*b1cdbd2cSJim Jagielski 		// get Y axis's gridline
447*b1cdbd2cSJim Jagielski 		XPropertySet aDiaProp = (XPropertySet) UnoRuntime.queryInterface(
448*b1cdbd2cSJim Jagielski 				XPropertySet.class, aYAxisSupplier.getYMainGrid());
449*b1cdbd2cSJim Jagielski 		aDiaProp.setPropertyValue("LineColor", 0xffff00);
450*b1cdbd2cSJim Jagielski 
451*b1cdbd2cSJim Jagielski 		// --------------------------
452*b1cdbd2cSJim Jagielski 		xShape = saveAndLoadShape(1, 0);
453*b1cdbd2cSJim Jagielski 		xChartDoc = ChartUtil.getChartDocument(xShape);
454*b1cdbd2cSJim Jagielski 		xdiagram = xChartDoc.getDiagram();
455*b1cdbd2cSJim Jagielski 		aYAxisSupplier = (XAxisYSupplier) UnoRuntime.queryInterface(
456*b1cdbd2cSJim Jagielski 				XAxisYSupplier.class, xdiagram);
457*b1cdbd2cSJim Jagielski 		aDiaProp = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class,
458*b1cdbd2cSJim Jagielski 				aYAxisSupplier.getYMainGrid());
459*b1cdbd2cSJim Jagielski 		assertEquals("the Y grid line color is not yellow", 0xffff00,
460*b1cdbd2cSJim Jagielski 				aDiaProp.getPropertyValue("LineColor"));
461*b1cdbd2cSJim Jagielski 	}
462*b1cdbd2cSJim Jagielski 
463*b1cdbd2cSJim Jagielski 	/**
464*b1cdbd2cSJim Jagielski 	 * test Wall Fill properties
465*b1cdbd2cSJim Jagielski 	 * @throws Exception
466*b1cdbd2cSJim Jagielski 	 */
467*b1cdbd2cSJim Jagielski 	@Test
testWall()468*b1cdbd2cSJim Jagielski 	public void testWall() throws Exception {
469*b1cdbd2cSJim Jagielski 		XShape xShape = null;
470*b1cdbd2cSJim Jagielski 		insertDefaultChart2();
471*b1cdbd2cSJim Jagielski 		com.sun.star.chart2.XDiagram xDiagram2 = xChart2Doc.getFirstDiagram();
472*b1cdbd2cSJim Jagielski 		XPropertySet aDiaProp = (XPropertySet) UnoRuntime.queryInterface(
473*b1cdbd2cSJim Jagielski 				XPropertySet.class, xDiagram2.getWall());
474*b1cdbd2cSJim Jagielski 		aDiaProp.setPropertyValue("FillStyle", FillStyle.SOLID);
475*b1cdbd2cSJim Jagielski 		aDiaProp.setPropertyValue("FillColor", 0xffff00);
476*b1cdbd2cSJim Jagielski 		// --------------------------
477*b1cdbd2cSJim Jagielski 		xShape = saveAndLoadShape(1, 0);
478*b1cdbd2cSJim Jagielski 		xChart2Doc = ChartUtil.getChart2Document(xShape);
479*b1cdbd2cSJim Jagielski 		xDiagram2 = xChart2Doc.getFirstDiagram();
480*b1cdbd2cSJim Jagielski 		aDiaProp = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class,
481*b1cdbd2cSJim Jagielski 				xDiagram2.getWall());
482*b1cdbd2cSJim Jagielski 		assertEquals("the Chart wall is not yellow", 0xffff00,
483*b1cdbd2cSJim Jagielski 				aDiaProp.getPropertyValue("FillColor"));
484*b1cdbd2cSJim Jagielski 	}
485*b1cdbd2cSJim Jagielski 
486*b1cdbd2cSJim Jagielski 	/**
487*b1cdbd2cSJim Jagielski 	 * Save presentation and reLoad the presentation and shape in it.
488*b1cdbd2cSJim Jagielski 	 *
489*b1cdbd2cSJim Jagielski 	 * @param po
490*b1cdbd2cSJim Jagielski 	 * @param shapeType
491*b1cdbd2cSJim Jagielski 	 * @return
492*b1cdbd2cSJim Jagielski 	 * @throws Exception
493*b1cdbd2cSJim Jagielski 	 */
saveAndLoadShape(int pageIndex, int shapeIndex)494*b1cdbd2cSJim Jagielski 	public XShape saveAndLoadShape(int pageIndex, int shapeIndex)
495*b1cdbd2cSJim Jagielski 			throws Exception {
496*b1cdbd2cSJim Jagielski 		reLoadFile = saveAsAndReloadDoc(impressDocument, "impress8", "odp");
497*b1cdbd2cSJim Jagielski 		xShapes = ShapeUtil.getShapes(reLoadFile, pageIndex);
498*b1cdbd2cSJim Jagielski 		return (XShape) UnoRuntime.queryInterface(XShape.class,
499*b1cdbd2cSJim Jagielski 				xShapes.getByIndex(shapeIndex));
500*b1cdbd2cSJim Jagielski 	}
501*b1cdbd2cSJim Jagielski 
502*b1cdbd2cSJim Jagielski 	/**
503*b1cdbd2cSJim Jagielski 	 * save and reload Presentation document.
504*b1cdbd2cSJim Jagielski 	 *
505*b1cdbd2cSJim Jagielski 	 * @param presentationDocument
506*b1cdbd2cSJim Jagielski 	 * @param sFilter
507*b1cdbd2cSJim Jagielski 	 * @param sExtension
508*b1cdbd2cSJim Jagielski 	 * @return
509*b1cdbd2cSJim Jagielski 	 * @throws Exception
510*b1cdbd2cSJim Jagielski 	 */
saveAsAndReloadDoc(XComponent presentationDocument, String sFilter, String sExtension)511*b1cdbd2cSJim Jagielski 	private XComponent saveAsAndReloadDoc(XComponent presentationDocument,
512*b1cdbd2cSJim Jagielski 			String sFilter, String sExtension) throws Exception {
513*b1cdbd2cSJim Jagielski 		filePath = Testspace.getPath("tmp/chartproperties." + sExtension);
514*b1cdbd2cSJim Jagielski 		PropertyValue[] aStoreProperties = new PropertyValue[2];
515*b1cdbd2cSJim Jagielski 		aStoreProperties[0] = new PropertyValue();
516*b1cdbd2cSJim Jagielski 		aStoreProperties[1] = new PropertyValue();
517*b1cdbd2cSJim Jagielski 		aStoreProperties[0].Name = "Override";
518*b1cdbd2cSJim Jagielski 		aStoreProperties[0].Value = true;
519*b1cdbd2cSJim Jagielski 		aStoreProperties[1].Name = "FilterName";
520*b1cdbd2cSJim Jagielski 		aStoreProperties[1].Value = sFilter;
521*b1cdbd2cSJim Jagielski 		XStorable xStorable = (XStorable) UnoRuntime.queryInterface(
522*b1cdbd2cSJim Jagielski 				XStorable.class, presentationDocument);
523*b1cdbd2cSJim Jagielski 		xStorable.storeToURL(FileUtil.getUrl(filePath), aStoreProperties);
524*b1cdbd2cSJim Jagielski 
525*b1cdbd2cSJim Jagielski 		return (XComponent) UnoRuntime.queryInterface(XComponent.class,
526*b1cdbd2cSJim Jagielski 				unoApp.loadDocument(filePath));
527*b1cdbd2cSJim Jagielski 	}
528*b1cdbd2cSJim Jagielski 
529*b1cdbd2cSJim Jagielski }
530