1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 package fvt.uno.sd.shape; 22 23 import static org.junit.Assert.assertEquals; 24 25 import org.junit.After; 26 import org.junit.Before; 27 import org.junit.Test; 28 import org.openoffice.test.common.FileUtil; 29 import org.openoffice.test.common.Testspace; 30 import org.openoffice.test.uno.UnoApp; 31 32 import testlib.uno.PageUtil; 33 import testlib.uno.ShapeUtil; 34 35 import com.sun.star.awt.Point; 36 import com.sun.star.awt.Size; 37 import com.sun.star.beans.PropertyValue; 38 import com.sun.star.beans.XPropertySet; 39 import com.sun.star.drawing.XDrawPage; 40 import com.sun.star.drawing.XDrawPages; 41 import com.sun.star.drawing.XDrawPagesSupplier; 42 import com.sun.star.drawing.XShape; 43 import com.sun.star.drawing.XShapes; 44 import com.sun.star.frame.XStorable; 45 import com.sun.star.lang.XComponent; 46 import com.sun.star.presentation.XPresentation; 47 import com.sun.star.presentation.XPresentationSupplier; 48 import com.sun.star.uno.UnoRuntime; 49 50 public class ShapeTypes { 51 UnoApp unoApp = new UnoApp(); 52 XPresentationSupplier sdDocument = null; 53 XPresentation pre = null; 54 XComponent precomp = null; 55 XComponent impressDocument = null; 56 XComponent reLoadFile = null; 57 XDrawPagesSupplier drawsupplier = null; 58 XDrawPages drawpages = null; 59 XShapes xShapes = null; 60 XDrawPage xpage = null; 61 String filePath = null; 62 63 @Before setUp()64 public void setUp() throws Exception { 65 unoApp.start(); 66 createDocumentAndSlide(); 67 } 68 69 @After tearDown()70 public void tearDown() throws Exception { 71 unoApp.closeDocument(impressDocument); 72 unoApp.closeDocument(reLoadFile); 73 unoApp.close(); 74 if (filePath != null) 75 FileUtil.deleteFile(filePath); 76 } 77 78 @Test testLineShape()79 public void testLineShape() throws Exception { 80 Point po = new Point(1000, 8000); 81 xShapes = (XShapes) UnoRuntime.queryInterface(XShapes.class, xpage); 82 XShape xShape = ShapeUtil.createShape(impressDocument, po, new Size( 83 5000, 5000), "com.sun.star.drawing.LineShape"); 84 xShapes.add(xShape); 85 XPropertySet xPropSet = (XPropertySet) UnoRuntime.queryInterface( 86 XPropertySet.class, xShape); 87 xPropSet.setPropertyValue("Name", "test"); 88 89 xShape = saveAndLoadShape(1, 0); 90 XPropertySet xPropSet2 = (XPropertySet) UnoRuntime.queryInterface( 91 XPropertySet.class, xShape); 92 assertEquals("Not the same shape", "test", 93 xPropSet2.getPropertyValue("Name")); 94 assertEquals("Not LineShape", "com.sun.star.drawing.LineShape", 95 xShape.getShapeType()); 96 } 97 98 @Test testBasicShape()99 public void testBasicShape() throws Exception { 100 Point po = new Point(1000, 8000); 101 xShapes = (XShapes) UnoRuntime.queryInterface(XShapes.class, xpage); 102 XShape xShape = ShapeUtil.createShape(impressDocument, po, new Size( 103 5000, 5000), "com.sun.star.drawing.RectangleShape"); 104 xShapes.add(xShape); 105 XPropertySet xPropSet = (XPropertySet) UnoRuntime.queryInterface( 106 XPropertySet.class, xShape); 107 xPropSet.setPropertyValue("Name", "test"); 108 109 xShape = saveAndLoadShape(1, 0); 110 XPropertySet xPropSet2 = (XPropertySet) UnoRuntime.queryInterface( 111 XPropertySet.class, xShape); 112 assertEquals("Not the same shape", "test", 113 xPropSet2.getPropertyValue("Name")); 114 assertEquals("Not RectangleShape", 115 "com.sun.star.drawing.RectangleShape", xShape.getShapeType()); 116 } 117 118 119 120 /** 121 * create a new presentation document and insert a new slide. 122 * 123 * @throws Exception 124 */ createDocumentAndSlide()125 public void createDocumentAndSlide() throws Exception { 126 impressDocument = (XComponent) UnoRuntime.queryInterface( 127 XComponent.class, unoApp.newDocument("simpress")); 128 drawsupplier = (XDrawPagesSupplier) UnoRuntime.queryInterface( 129 XDrawPagesSupplier.class, impressDocument); 130 drawpages = drawsupplier.getDrawPages(); 131 drawpages.insertNewByIndex(1); 132 xpage = PageUtil.getDrawPageByIndex(impressDocument, 1); 133 } 134 135 /** 136 * Save presentation and reLoad the presentation and shape in it. 137 * 138 * @param po 139 * @param shapeType 140 * @return 141 * @throws Exception 142 */ saveAndLoadShape(int pageIndex, int shapeIndex)143 public XShape saveAndLoadShape(int pageIndex, int shapeIndex) 144 throws Exception { 145 reLoadFile = saveAndReloadDoc(impressDocument, 146 "impress8", "odp"); 147 xShapes = ShapeUtil.getShapes(reLoadFile, pageIndex); 148 return (XShape) UnoRuntime.queryInterface(XShape.class, 149 xShapes.getByIndex(shapeIndex)); 150 } 151 152 /** 153 * save and reload Presentation document. 154 * 155 * @param presentationDocument 156 * @param sFilter 157 * @param sExtension 158 * @return 159 * @throws Exception 160 */ saveAndReloadDoc(XComponent presentationDocument, String sFilter, String sExtension)161 private XComponent saveAndReloadDoc(XComponent presentationDocument, 162 String sFilter, String sExtension) throws Exception { 163 filePath = Testspace.getPath("tmp/presentationtest." + sExtension); 164 PropertyValue[] aStoreProperties = new PropertyValue[2]; 165 aStoreProperties[0] = new PropertyValue(); 166 aStoreProperties[1] = new PropertyValue(); 167 aStoreProperties[0].Name = "Override"; 168 aStoreProperties[0].Value = true; 169 aStoreProperties[1].Name = "FilterName"; 170 aStoreProperties[1].Value = sFilter; 171 XStorable xStorable = (XStorable) UnoRuntime.queryInterface( 172 XStorable.class, presentationDocument); 173 xStorable.storeToURL(FileUtil.getUrl(filePath), aStoreProperties); 174 175 return (XComponent) UnoRuntime.queryInterface(XComponent.class, 176 unoApp.loadDocument(filePath)); 177 } 178 } 179