xref: /AOO41X/test/testuno/source/fvt/uno/sd/animation/TextAnimation.java (revision 47148b3bc50811ceb41802e4cc50a5db21535900)
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.animation;
22 
23 import junit.framework.Assert;
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.ShapeUtil;
33 
34 import com.sun.star.awt.Point;
35 import com.sun.star.awt.Size;
36 import com.sun.star.beans.PropertyValue;
37 import com.sun.star.beans.XPropertySet;
38 import com.sun.star.container.XIndexContainer;
39 import com.sun.star.container.XNameContainer;
40 import com.sun.star.container.XNamed;
41 import com.sun.star.drawing.XDrawPage;
42 import com.sun.star.drawing.XDrawPages;
43 import com.sun.star.drawing.XDrawPagesSupplier;
44 import com.sun.star.drawing.XShape;
45 import com.sun.star.drawing.XShapes;
46 import com.sun.star.frame.XStorable;
47 import com.sun.star.lang.XComponent;
48 import com.sun.star.lang.XSingleServiceFactory;
49 import com.sun.star.presentation.AnimationEffect;
50 import com.sun.star.presentation.XCustomPresentationSupplier;
51 import com.sun.star.presentation.XPresentation;
52 import com.sun.star.presentation.XPresentationSupplier;
53 import com.sun.star.text.ControlCharacter;
54 import com.sun.star.text.XText;
55 import com.sun.star.text.XTextCursor;
56 import com.sun.star.text.XTextRange;
57 import com.sun.star.uno.UnoRuntime;
58 
59 public class TextAnimation {
60     XPresentationSupplier sdDocument = null;
61     XPresentation pre = null;
62     XComponent precomp = null;
63     XComponent impressDocument = null;
64     XComponent reLoadFile = null;
65     XDrawPagesSupplier drawsupplier = null;
66     XDrawPages drawpages = null;
67 
68     String filePath = null;
69 
70     UnoApp unoApp = new UnoApp();
71 
72     /**
73      * @throws java.lang.Exception
74      */
75     @Before
setUp()76     public void setUp() throws Exception {
77         unoApp.start();
78         createDocumentAndSlide();
79     }
80 
81     @After
tearDown()82     public void tearDown() throws Exception {
83         unoApp.closeDocument(impressDocument);
84         unoApp.closeDocument(reLoadFile);
85         unoApp.close();
86     }
87 
88     @Test
testTextAnimation()89     public void testTextAnimation() throws Exception {
90 
91         XShapes xShapes;
92         XPropertySet xShapePropSet;
93         Point po = new Point(5000, 5000);
94 
95         // create pages, so that three are available
96         drawpages.insertNewByIndex(0);
97         // get the shape container for page one
98         xShapes = (XShapes) UnoRuntime.queryInterface(XShapes.class,
99                 drawpages.getByIndex(0));
100         // create a rectangle that is placed on the top left of the page
101         XShape xRectangle = ShapeUtil.createShape(impressDocument, po,
102                 new Size(21000, 12500), "com.sun.star.drawing.RectangleShape");
103         xShapes.add(xRectangle);
104 
105         XPropertySet xTextPropSet = addPortion(xRectangle, "Text Animation",
106                 false);
107 
108         xTextPropSet.setPropertyValue("TextEffect",
109                 AnimationEffect.MOVE_FROM_RIGHT);
110 
111         saveAndLoadSlide();
112 
113         // assert if Text Animation is set
114         Assert.assertEquals("Text Animation Effect is MOVE_FROM_RIGHT",
115                 AnimationEffect.MOVE_FROM_RIGHT,
116                 xTextPropSet.getPropertyValue("TextEffect"));
117 
118     }
119 
addPortion(XShape xShape, String sText, boolean bNewParagraph)120     public XPropertySet addPortion(XShape xShape, String sText,
121             boolean bNewParagraph)
122             throws com.sun.star.lang.IllegalArgumentException {
123         XText xText = (XText) UnoRuntime.queryInterface(XText.class, xShape);
124 
125         XTextCursor xTextCursor = xText.createTextCursor();
126         xTextCursor.gotoEnd(false);
127         if (bNewParagraph == true) {
128             xText.insertControlCharacter(xTextCursor,
129                     ControlCharacter.PARAGRAPH_BREAK, false);
130             xTextCursor.gotoEnd(false);
131         }
132         XTextRange xTextRange = (XTextRange) UnoRuntime.queryInterface(
133                 XTextRange.class, xTextCursor);
134         xTextRange.setString(sText);
135         xTextCursor.gotoEnd(true);
136         XPropertySet xPropSet = (XPropertySet) UnoRuntime.queryInterface(
137                 XPropertySet.class, xText);
138         return xPropSet;
139     }
140 
141     /**
142      * create a new presentation document and insert a new slide.
143      *
144      * @throws Exception
145      */
createDocumentAndSlide()146     public void createDocumentAndSlide() throws Exception {
147         impressDocument = (XComponent) UnoRuntime.queryInterface(
148                 XComponent.class, unoApp.newDocument("simpress"));
149         drawsupplier = (XDrawPagesSupplier) UnoRuntime.queryInterface(
150                 XDrawPagesSupplier.class, impressDocument);
151         drawpages = drawsupplier.getDrawPages();
152 
153         sdDocument = (XPresentationSupplier) UnoRuntime.queryInterface(
154                 XPresentationSupplier.class, impressDocument);
155         pre = sdDocument.getPresentation();
156     }
157 
158     /**
159      * Save presentation and reLoad the slide.
160      *
161      * @param no
162      * @return void
163      * @throws Exception
164      */
saveAndLoadSlide()165     public void saveAndLoadSlide() throws Exception {
166         reLoadFile = saveAndReloadDoc(impressDocument,
167                 "StarOffice XML (Impress)", "odp");
168         drawsupplier = (XDrawPagesSupplier) UnoRuntime.queryInterface(
169                 XDrawPagesSupplier.class, reLoadFile);
170         drawpages = drawsupplier.getDrawPages();
171 
172         sdDocument = (XPresentationSupplier) UnoRuntime.queryInterface(
173                 XPresentationSupplier.class, reLoadFile);
174         pre = sdDocument.getPresentation();
175     }
176 
177     /**
178      * save and reload Presentation document.
179      *
180      * @param presentationDocument
181      * @param sFilter
182      * @param sExtension
183      * @return
184      * @throws Exception
185      */
saveAndReloadDoc(XComponent presentationDocument, String sFilter, String sExtension)186     private XComponent saveAndReloadDoc(XComponent presentationDocument,
187             String sFilter, String sExtension) throws Exception {
188         filePath = Testspace.getPath("tmp/customshow." + sExtension);
189         PropertyValue[] aStoreProperties = new PropertyValue[2];
190         aStoreProperties[0] = new PropertyValue();
191         aStoreProperties[1] = new PropertyValue();
192         aStoreProperties[0].Name = "Override";
193         aStoreProperties[0].Value = true;
194         aStoreProperties[1].Name = "FilterName";
195         aStoreProperties[1].Value = sFilter;
196         XStorable xStorable = (XStorable) UnoRuntime.queryInterface(
197                 XStorable.class, presentationDocument);
198         xStorable.storeToURL(FileUtil.getUrl(filePath), aStoreProperties);
199 
200         return (XComponent)UnoRuntime.queryInterface(XComponent.class,
201                 unoApp.loadDocument(filePath));
202     }
203 }
204