xref: /AOO41X/test/testuno/source/fvt/uno/sd/bullet/GraphicBulletFromFile.java (revision 95c33bc250915b2aacbd07437eebf550ab475351)
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 /*
22  * Select a external picture from a file as graphic bullet
23  * */
24 package fvt.uno.sd.bullet;
25 import static org.junit.Assert.*;
26 import static org.openoffice.test.common.Testspace.prepareData;
27 import static testlib.uno.PageUtil.getDrawPageByIndex;
28 import static testlib.uno.ShapeUtil.addPortion;
29 import static testlib.uno.ShapeUtil.getPortion;
30 import static testlib.uno.GraphicUtil.getUniqueIDOfGraphicFile;
31 
32 import java.io.File;
33 
34 import org.junit.After;
35 import org.junit.AfterClass;
36 import org.junit.Before;
37 import org.junit.BeforeClass;
38 import org.junit.Test;
39 import org.openoffice.test.uno.UnoApp;
40 import org.openoffice.test.common.FileUtil;
41 import org.openoffice.test.common.Testspace;
42 
43 import testlib.uno.SDUtil;
44 
45 import com.sun.star.awt.Size;
46 import com.sun.star.beans.PropertyValue;
47 import com.sun.star.beans.XPropertySet;
48 import com.sun.star.container.XIndexReplace;
49 import com.sun.star.drawing.XDrawPage;
50 import com.sun.star.drawing.XShape;
51 import com.sun.star.lang.XComponent;
52 import com.sun.star.style.NumberingType;
53 import com.sun.star.uno.UnoRuntime;
54 
55 public class GraphicBulletFromFile {
56 
57     private static final UnoApp app = new UnoApp();
58 
59     private XComponent m_xSDComponent = null;
60     private String m_filePath = null;
61     private XPropertySet m_xtextProps = null;
62     private String m_GraphicPath = null;
63 
64     @Before
setUpDocument()65     public void setUpDocument() throws Exception {
66         m_filePath = Testspace.getPath("temp/GraphicBulletFromFile.odp");
67         String abslotePath = prepareData("uno/sd/36.gif");
68         m_GraphicPath = FileUtil.getUrl(new File(abslotePath));
69 //      m_GraphicPath = "file:///F:/work/36.gif";
70         if (FileUtil.fileExists(m_filePath)) {//load
71             m_xtextProps = load();
72         } else {//new
73             m_xSDComponent = (XComponent) UnoRuntime.queryInterface(
74                     XComponent.class, app.newDocument("simpress"));
75             Object firstPage = getDrawPageByIndex(m_xSDComponent, 0);
76             Object firstTextBox = SDUtil.getShapeOfPageByIndex(firstPage, 0);
77             XShape xfirstTextBox = (XShape)UnoRuntime.queryInterface(XShape.class, firstTextBox);
78             m_xtextProps = addPortion(xfirstTextBox, "test Graphic Bullet From a File", false);
79         }
80     }
81 
load()82     private XPropertySet load() throws Exception{
83         m_xSDComponent = (XComponent) UnoRuntime.queryInterface(XComponent.class,
84                 app.loadDocument(m_filePath));
85         Object firstPage = getDrawPageByIndex(m_xSDComponent, 0);
86         XDrawPage firstpage = getDrawPageByIndex(m_xSDComponent, 0);
87         Object firstTextBox = SDUtil.getShapeOfPageByIndex(firstPage, 0);
88         XShape xfirstTextBox = (XShape)UnoRuntime.queryInterface(XShape.class, firstTextBox);
89         return getPortion(xfirstTextBox, 0);
90     }
91 
92     @After
tearDownDocument()93     public void tearDownDocument() {
94         app.closeDocument(m_xSDComponent);
95 
96     }
97 
98     @BeforeClass
setUpConnection()99     public static void setUpConnection() throws Exception {
100         app.start();
101     }
102 
103     @AfterClass
tearDownConnection()104     public static void tearDownConnection() throws InterruptedException,
105             Exception {
106         app.close();
107         //remove the temp file
108         FileUtil.deleteFile(Testspace.getPath("temp"));
109     }
110 
111     @Test
testGraphicBulletFromFile()112     public void testGraphicBulletFromFile() throws Exception {
113 
114         Object numberingrules = m_xtextProps.getPropertyValue("NumberingRules");
115 
116         XIndexReplace xReplace = (XIndexReplace) UnoRuntime.queryInterface(
117                  XIndexReplace.class, numberingrules);
118 
119         PropertyValue[] props = new PropertyValue[3];
120         props[0] = new PropertyValue();
121         props[0].Name = "NumberingType";
122         props[0].Value = new Short(NumberingType.BITMAP );
123 
124         props[1] = new PropertyValue();
125         props[1].Name = "GraphicURL";
126         props[1].Value = "vnd.sun.star.GraphicObject:"+getUniqueIDOfGraphicFile(app, m_GraphicPath);
127 
128         props[2] = new PropertyValue();
129         props[2].Name = "GraphicSize";
130         props[2].Value = new Size(1000,1000);
131 
132         xReplace.replaceByIndex(0, props);
133 
134         m_xtextProps.setPropertyValue("NumberingRules", numberingrules);
135           //set numbering level to 0
136         m_xtextProps.setPropertyValue("NumberingLevel", new Short((short)0));
137 
138 
139         app.saveDocument(m_xSDComponent, m_filePath);
140 //          app.closeDocument(m_xSDComponent);
141         m_xSDComponent.dispose();
142             //reopen
143         m_xtextProps = load();
144 
145         Object numberingrules2 = m_xtextProps.getPropertyValue("NumberingRules");
146 
147         XIndexReplace xReplace2 = (XIndexReplace) UnoRuntime.queryInterface(
148                     XIndexReplace.class, numberingrules2);
149 
150         PropertyValue[] proValues2 = (PropertyValue[])xReplace2.getByIndex(0);
151         int nNumTypeItemIndex = -1;
152         int nGraphObjItemIndex = -1;
153         for( int i = 0; i < proValues2.length; ++i) {
154                 final String aPropName = proValues2[i].Name;
155                 if( aPropName.equals( "GraphicURL"))
156                         nGraphObjItemIndex = i;
157                 else if( aPropName.equals( "NumberingType"))
158                         nNumTypeItemIndex = i;
159         }
160         assertEquals("NumberingType should be BITMAP",
161                 NumberingType.BITMAP, proValues2[ nNumTypeItemIndex].Value);
162         String uniqueID = getUniqueIDOfGraphicFile(app, m_GraphicPath);
163         assertEquals("Graphic should be the one with uniqueID"+uniqueID,
164                 "vnd.sun.star.GraphicObject:"+uniqueID, proValues2[ nGraphObjItemIndex].Value);
165     }
166 }
167 
168