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 testlib.uno; 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski import java.util.HashMap; 24*b1cdbd2cSJim Jagielski 25*b1cdbd2cSJim Jagielski import org.openoffice.test.common.Testspace; 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski import com.sun.star.beans.PropertyValue; 28*b1cdbd2cSJim Jagielski import com.sun.star.container.XIndexAccess; 29*b1cdbd2cSJim Jagielski import com.sun.star.drawing.XDrawPage; 30*b1cdbd2cSJim Jagielski import com.sun.star.drawing.XDrawPagesSupplier; 31*b1cdbd2cSJim Jagielski import com.sun.star.drawing.XShape; 32*b1cdbd2cSJim Jagielski import com.sun.star.drawing.XShapes; 33*b1cdbd2cSJim Jagielski import com.sun.star.frame.XStorable; 34*b1cdbd2cSJim Jagielski import com.sun.star.lang.XComponent; 35*b1cdbd2cSJim Jagielski import com.sun.star.uno.Exception; 36*b1cdbd2cSJim Jagielski import com.sun.star.uno.UnoRuntime; 37*b1cdbd2cSJim Jagielski 38*b1cdbd2cSJim Jagielski /** 39*b1cdbd2cSJim Jagielski * 40*b1cdbd2cSJim Jagielski * 41*b1cdbd2cSJim Jagielski */ 42*b1cdbd2cSJim Jagielski public class SDUtil { 43*b1cdbd2cSJim Jagielski 44*b1cdbd2cSJim Jagielski private static HashMap filterName = new HashMap(); 45*b1cdbd2cSJim Jagielski SDUtil()46*b1cdbd2cSJim Jagielski private SDUtil() { 47*b1cdbd2cSJim Jagielski 48*b1cdbd2cSJim Jagielski } 49*b1cdbd2cSJim Jagielski getPageByIndex(XComponent doc, int index)50*b1cdbd2cSJim Jagielski public static Object getPageByIndex(XComponent doc, int index) throws Exception { 51*b1cdbd2cSJim Jagielski XDrawPagesSupplier xDrawPagesSupplier = (XDrawPagesSupplier) UnoRuntime.queryInterface(XDrawPagesSupplier.class, doc); 52*b1cdbd2cSJim Jagielski Object drawPages = xDrawPagesSupplier.getDrawPages(); 53*b1cdbd2cSJim Jagielski XIndexAccess xIndexedDrawPages = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, drawPages); 54*b1cdbd2cSJim Jagielski return xIndexedDrawPages.getByIndex(index); 55*b1cdbd2cSJim Jagielski } 56*b1cdbd2cSJim Jagielski getShapeOfPageByIndex(Object page, int index)57*b1cdbd2cSJim Jagielski public static Object getShapeOfPageByIndex(Object page, int index) throws Exception { 58*b1cdbd2cSJim Jagielski XDrawPage xDrawPage = (XDrawPage) UnoRuntime.queryInterface(XDrawPage.class, page); 59*b1cdbd2cSJim Jagielski XShapes m_xdrawShapes = (XShapes) UnoRuntime.queryInterface(XShapes.class, xDrawPage); 60*b1cdbd2cSJim Jagielski return m_xdrawShapes.getByIndex(index); 61*b1cdbd2cSJim Jagielski } 62*b1cdbd2cSJim Jagielski getShapesOfPageByType(XDrawPage xDrawPage, String shapeType)63*b1cdbd2cSJim Jagielski public static Object[] getShapesOfPageByType(XDrawPage xDrawPage, String shapeType) throws Exception { 64*b1cdbd2cSJim Jagielski XShapes m_xdrawShapes = (XShapes) UnoRuntime.queryInterface(XShapes.class, xDrawPage); 65*b1cdbd2cSJim Jagielski int count = m_xdrawShapes.getCount(); 66*b1cdbd2cSJim Jagielski Object[] temp = new Object[count]; 67*b1cdbd2cSJim Jagielski int shapeNum=0; 68*b1cdbd2cSJim Jagielski for(int i=0;i<count; i++) 69*b1cdbd2cSJim Jagielski { 70*b1cdbd2cSJim Jagielski Object shape = m_xdrawShapes.getByIndex(i); 71*b1cdbd2cSJim Jagielski XShape xshape = (XShape)UnoRuntime.queryInterface(XShape.class, shape); 72*b1cdbd2cSJim Jagielski String type = xshape.getShapeType(); 73*b1cdbd2cSJim Jagielski if(type.equals(shapeType)) 74*b1cdbd2cSJim Jagielski { 75*b1cdbd2cSJim Jagielski temp[shapeNum] = shape; 76*b1cdbd2cSJim Jagielski shapeNum++; 77*b1cdbd2cSJim Jagielski } 78*b1cdbd2cSJim Jagielski } 79*b1cdbd2cSJim Jagielski 80*b1cdbd2cSJim Jagielski Object[] shapes = new Object[shapeNum]; 81*b1cdbd2cSJim Jagielski System.arraycopy(temp, 0, shapes, 0, shapeNum); 82*b1cdbd2cSJim Jagielski return shapes; 83*b1cdbd2cSJim Jagielski } 84*b1cdbd2cSJim Jagielski saveFileAs(XComponent sdComponent, String fileName, String extName)85*b1cdbd2cSJim Jagielski public static void saveFileAs(XComponent sdComponent, String fileName, String extName) throws Exception { 86*b1cdbd2cSJim Jagielski 87*b1cdbd2cSJim Jagielski initFilterName(); 88*b1cdbd2cSJim Jagielski 89*b1cdbd2cSJim Jagielski String storeUrl = Testspace.getUrl("temp/" + fileName + "." + extName); 90*b1cdbd2cSJim Jagielski 91*b1cdbd2cSJim Jagielski PropertyValue[] storeProps = new PropertyValue[2]; 92*b1cdbd2cSJim Jagielski storeProps[0] = new PropertyValue(); 93*b1cdbd2cSJim Jagielski storeProps[0].Name = "FilterName"; 94*b1cdbd2cSJim Jagielski storeProps[0].Value = filterName.get(extName); 95*b1cdbd2cSJim Jagielski storeProps[1] = new PropertyValue(); 96*b1cdbd2cSJim Jagielski storeProps[1].Name = "Overwrite"; 97*b1cdbd2cSJim Jagielski storeProps[1].Value = new Boolean(true); 98*b1cdbd2cSJim Jagielski 99*b1cdbd2cSJim Jagielski XStorable sdStorable = 100*b1cdbd2cSJim Jagielski (XStorable) UnoRuntime.queryInterface(XStorable.class, sdComponent); 101*b1cdbd2cSJim Jagielski sdStorable.storeAsURL(storeUrl, storeProps); 102*b1cdbd2cSJim Jagielski } 103*b1cdbd2cSJim Jagielski initFilterName()104*b1cdbd2cSJim Jagielski private static void initFilterName() throws Exception { 105*b1cdbd2cSJim Jagielski if (filterName.size() > 0) { 106*b1cdbd2cSJim Jagielski return; 107*b1cdbd2cSJim Jagielski } 108*b1cdbd2cSJim Jagielski 109*b1cdbd2cSJim Jagielski filterName.put("odp", "impress8"); 110*b1cdbd2cSJim Jagielski filterName.put("ppt", "MS PowerPoint 97"); 111*b1cdbd2cSJim Jagielski } 112*b1cdbd2cSJim Jagielski 113*b1cdbd2cSJim Jagielski } 114