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