blob: 8460322a35b00e05b5e6b33f377ec0aed9fcea58 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
package testlib.uno;
import java.util.HashMap;
import org.openoffice.test.common.Testspace;
import com.sun.star.beans.PropertyValue;
import com.sun.star.container.XIndexAccess;
import com.sun.star.drawing.XDrawPage;
import com.sun.star.drawing.XDrawPagesSupplier;
import com.sun.star.drawing.XShape;
import com.sun.star.drawing.XShapes;
import com.sun.star.frame.XStorable;
import com.sun.star.lang.XComponent;
import com.sun.star.uno.Exception;
import com.sun.star.uno.UnoRuntime;
/**
*
*
*/
public class SDUtil {
private static HashMap filterName = new HashMap();
private SDUtil() {
}
public static Object getPageByIndex(XComponent doc, int index) throws Exception {
XDrawPagesSupplier xDrawPagesSupplier = (XDrawPagesSupplier) UnoRuntime.queryInterface(XDrawPagesSupplier.class, doc);
Object drawPages = xDrawPagesSupplier.getDrawPages();
XIndexAccess xIndexedDrawPages = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, drawPages);
return xIndexedDrawPages.getByIndex(index);
}
public static Object getShapeOfPageByIndex(Object page, int index) throws Exception {
XDrawPage xDrawPage = (XDrawPage) UnoRuntime.queryInterface(XDrawPage.class, page);
XShapes m_xdrawShapes = (XShapes) UnoRuntime.queryInterface(XShapes.class, xDrawPage);
return m_xdrawShapes.getByIndex(index);
}
public static Object[] getShapesOfPageByType(XDrawPage xDrawPage, String shapeType) throws Exception {
XShapes m_xdrawShapes = (XShapes) UnoRuntime.queryInterface(XShapes.class, xDrawPage);
int count = m_xdrawShapes.getCount();
Object[] temp = new Object[count];
int shapeNum=0;
for(int i=0;i<count; i++)
{
Object shape = m_xdrawShapes.getByIndex(i);
XShape xshape = (XShape)UnoRuntime.queryInterface(XShape.class, shape);
String type = xshape.getShapeType();
if(type.equals(shapeType))
{
temp[shapeNum] = shape;
shapeNum++;
}
}
Object[] shapes = new Object[shapeNum];
System.arraycopy(temp, 0, shapes, 0, shapeNum);
return shapes;
}
public static void saveFileAs(XComponent sdComponent, String fileName, String extName) throws Exception {
initFilterName();
String storeUrl = Testspace.getUrl("temp/" + fileName + "." + extName);
PropertyValue[] storeProps = new PropertyValue[2];
storeProps[0] = new PropertyValue();
storeProps[0].Name = "FilterName";
storeProps[0].Value = filterName.get(extName);
storeProps[1] = new PropertyValue();
storeProps[1].Name = "Overwrite";
storeProps[1].Value = new Boolean(true);
XStorable sdStorable =
(XStorable) UnoRuntime.queryInterface(XStorable.class, sdComponent);
sdStorable.storeAsURL(storeUrl, storeProps);
}
private static void initFilterName() throws Exception {
if (filterName.size() > 0) {
return;
}
filterName.put("odp", "impress8");
filterName.put("ppt", "MS PowerPoint 97");
}
}